From e3019c886080b08197889f1d230734612e4c237f Mon Sep 17 00:00:00 2001 From: Yee Young Han Date: Thu, 17 Jun 2021 12:35:54 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=EC=93=B0=EB=A0=88?= =?UTF-8?q?=EB=93=9C=20=EB=B2=88=ED=98=B8=EB=A5=BC=2016=EC=A7=84=EC=88=98?= =?UTF-8?q?=EB=A1=9C=20=EC=B6=9C=EB=A0=A5=ED=95=9C=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SipPlatform/FileLog.cpp | 4 ++-- SipPlatform/Log.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SipPlatform/FileLog.cpp b/SipPlatform/FileLog.cpp index 6e82191..c72b3d3 100644 --- a/SipPlatform/FileLog.cpp +++ b/SipPlatform/FileLog.cpp @@ -221,10 +221,10 @@ bool CFileLog::Print( EnumLogLevel iLevel, const char * fmt, ... ) int iWrite; #ifdef WIN32 - iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%u] %s\r\n" + iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%X] %s\r\n" , sttTm.tm_hour, sttTm.tm_min, sttTm.tm_sec, sttTime.tv_usec, szHeader, GetCurrentThreadId(), szBuf ); #else - iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%lu] %s\n" + iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%lX] %s\n" , sttTm.tm_hour, sttTm.tm_min, sttTm.tm_sec, (unsigned int)sttTime.tv_usec, szHeader, (unsigned long)pthread_self(), szBuf ); #endif fflush( m_sttFd ); diff --git a/SipPlatform/Log.cpp b/SipPlatform/Log.cpp index e8a5289..f7d36bc 100644 --- a/SipPlatform/Log.cpp +++ b/SipPlatform/Log.cpp @@ -241,10 +241,10 @@ int CLog::Print( EnumLogLevel iLevel, const char * fmt, ... ) int iWrite; #ifdef WIN32 - iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%u] %s\r\n" + iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%X] %s\r\n" , sttTm.tm_hour, sttTm.tm_min, sttTm.tm_sec, sttTime.tv_usec, szHeader, GetCurrentThreadId(), szBuf ); #else - iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%lu] %s\n" + iWrite = fprintf( m_sttFd, "[%02d:%02d:%02d.%06u] %s[%lX] %s\n" , sttTm.tm_hour, sttTm.tm_min, sttTm.tm_sec, (unsigned int)sttTime.tv_usec, szHeader, (unsigned long)pthread_self(), szBuf ); #endif fflush( m_sttFd ); From 1ebc0289bc3ff088f05b72fa3c4443d29f649a9a Mon Sep 17 00:00:00 2001 From: Yee Young Han Date: Tue, 2 Aug 2022 11:54:52 +0900 Subject: [PATCH 2/4] =?UTF-8?q?VC++=202017=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=ED=99=98=EA=B2=BD=20=EC=B6=94=EA=B0=80=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FtpStack-vs2017.sln | 55 +++++++++++ FtpStack/FtpStack.vcxproj | 100 +++++++++++++++++++ FtpStack/FtpStack.vcxproj.filters | 42 ++++++++ SipPlatform/SipPlatform.vcxproj | 2 +- TestFtpStack/TestFtpStack.vcxproj | 111 ++++++++++++++++++++++ TestFtpStack/TestFtpStack.vcxproj.filters | 19 ++++ 6 files changed, 328 insertions(+), 1 deletion(-) create mode 100644 FtpStack-vs2017.sln create mode 100644 FtpStack/FtpStack.vcxproj create mode 100644 FtpStack/FtpStack.vcxproj.filters create mode 100644 TestFtpStack/TestFtpStack.vcxproj create mode 100644 TestFtpStack/TestFtpStack.vcxproj.filters diff --git a/FtpStack-vs2017.sln b/FtpStack-vs2017.sln new file mode 100644 index 0000000..1ce85f5 --- /dev/null +++ b/FtpStack-vs2017.sln @@ -0,0 +1,55 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2036 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SipPlatform", "SipPlatform\SipPlatform.vcxproj", "{59766094-16E8-4602-9621-6C1E5ED9AF5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FtpStack", "FtpStack\FtpStack.vcxproj", "{43730EBE-33BF-4B5E-A136-CCB4E4E2699D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestFtpStack", "TestFtpStack\TestFtpStack.vcxproj", "{7849B34F-8453-4F75-A1F3-0DF2CDD87987}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestFtpStack2", "TestFtpStack2\TestFtpStack2.vcxproj", "{4F894974-8E06-4756-8558-FFA1BF81F41D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Debug|Win32.ActiveCfg = Debug|Win32 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Debug|Win32.Build.0 = Debug|Win32 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Debug|x64.ActiveCfg = Debug|x64 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Debug|x64.Build.0 = Debug|x64 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Release|Win32.ActiveCfg = Release|Win32 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Release|Win32.Build.0 = Release|Win32 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Release|x64.ActiveCfg = Release|x64 + {59766094-16E8-4602-9621-6C1E5ED9AF5F}.Release|x64.Build.0 = Release|x64 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Debug|Win32.ActiveCfg = Debug|Win32 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Debug|Win32.Build.0 = Debug|Win32 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Debug|x64.ActiveCfg = Debug|Win32 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Release|Win32.ActiveCfg = Release|Win32 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Release|Win32.Build.0 = Release|Win32 + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D}.Release|x64.ActiveCfg = Release|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Debug|Win32.ActiveCfg = Debug|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Debug|Win32.Build.0 = Debug|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Debug|x64.ActiveCfg = Debug|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Release|Win32.ActiveCfg = Release|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Release|Win32.Build.0 = Release|Win32 + {7849B34F-8453-4F75-A1F3-0DF2CDD87987}.Release|x64.ActiveCfg = Release|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Debug|Win32.Build.0 = Debug|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Debug|x64.ActiveCfg = Debug|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Release|Win32.ActiveCfg = Release|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Release|Win32.Build.0 = Release|Win32 + {4F894974-8E06-4756-8558-FFA1BF81F41D}.Release|x64.ActiveCfg = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2B797396-FFBF-4FDF-8610-5356311095D9} + EndGlobalSection +EndGlobal diff --git a/FtpStack/FtpStack.vcxproj b/FtpStack/FtpStack.vcxproj new file mode 100644 index 0000000..3241916 --- /dev/null +++ b/FtpStack/FtpStack.vcxproj @@ -0,0 +1,100 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {43730EBE-33BF-4B5E-A136-CCB4E4E2699D} + FtpStack + Win32Proj + 10.0.16299.0 + + + + StaticLibrary + v141 + MultiByte + true + + + StaticLibrary + v141 + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27130.2020 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + + + + Disabled + ../SipPlatform;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + Level3 + EditAndContinue + + + + + MaxSpeed + true + ../SipPlatform;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + MultiThreaded + true + + Level3 + ProgramDatabase + + + + + + + + + + + + + + + + + + {59766094-16e8-4602-9621-6c1e5ed9af5f} + false + + + + + + \ No newline at end of file diff --git a/FtpStack/FtpStack.vcxproj.filters b/FtpStack/FtpStack.vcxproj.filters new file mode 100644 index 0000000..4a56b04 --- /dev/null +++ b/FtpStack/FtpStack.vcxproj.filters @@ -0,0 +1,42 @@ + + + + + {c25d7c48-a267-426b-baad-d2ef1fa7ed69} + + + {b18bbac0-01f6-4b52-ac43-3e78cdc25532} + + + + + FTP Client + + + FTP + + + FTP + + + + + FTP Client + + + FTP Client + + + FTP Client + + + FTP Client + + + FTP + + + FTP + + + \ No newline at end of file diff --git a/SipPlatform/SipPlatform.vcxproj b/SipPlatform/SipPlatform.vcxproj index 1bb1a5c..1f9a178 100644 --- a/SipPlatform/SipPlatform.vcxproj +++ b/SipPlatform/SipPlatform.vcxproj @@ -64,7 +64,7 @@ - <_ProjectFileVersion>15.0.27130.2010 + <_ProjectFileVersion>15.0.27130.2020 $(SolutionDir)$(Configuration)\ diff --git a/TestFtpStack/TestFtpStack.vcxproj b/TestFtpStack/TestFtpStack.vcxproj new file mode 100644 index 0000000..69550d7 --- /dev/null +++ b/TestFtpStack/TestFtpStack.vcxproj @@ -0,0 +1,111 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {7849B34F-8453-4F75-A1F3-0DF2CDD87987} + TestFtpStack + Win32Proj + 10.0.16299.0 + + + + Application + v141 + MultiByte + true + + + Application + v141 + MultiByte + + + + + + + + + + + + + <_ProjectFileVersion>15.0.27130.2020 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + + Disabled + ../FtpStack;../SipPlatform;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + MaxSpeed + true + ../FtpStack;../SipPlatform;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + MultiThreaded + true + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + + + + + + + {43730ebe-33bf-4b5e-a136-ccb4e4e2699d} + false + + + {59766094-16e8-4602-9621-6c1e5ed9af5f} + false + + + + + + \ No newline at end of file diff --git a/TestFtpStack/TestFtpStack.vcxproj.filters b/TestFtpStack/TestFtpStack.vcxproj.filters new file mode 100644 index 0000000..9163e2b --- /dev/null +++ b/TestFtpStack/TestFtpStack.vcxproj.filters @@ -0,0 +1,19 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + 소스 파일 + + + + + 소스 파일 + + + \ No newline at end of file From 0572fadbea81a215c07c45144b95141c8f955729 Mon Sep 17 00:00:00 2001 From: Yee Young Han Date: Tue, 14 Feb 2023 09:50:40 +0900 Subject: [PATCH 3/4] =?UTF-8?q?FTP=20=ED=8F=AC=ED=8A=B8=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=EB=A5=BC=20=EC=84=A4=EC=A0=95=ED=95=A0=20=EC=88=98=20?= =?UTF-8?q?=EC=9E=88=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TestFtpStack/TestFtpStack.cpp | 64 +++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 26 deletions(-) diff --git a/TestFtpStack/TestFtpStack.cpp b/TestFtpStack/TestFtpStack.cpp index 0c8ec2c..9a212a5 100644 --- a/TestFtpStack/TestFtpStack.cpp +++ b/TestFtpStack/TestFtpStack.cpp @@ -2,13 +2,13 @@ void PrintUsage( const char * pszProgram ) { - printf( "[Usage] %s {ftp IP} {user id} {password} upload {remote folder path} {local file path}\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} upload_folder {remote folder path} {local folder path}\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} download {remote folder path} {remote filename} {local file path}\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} get_folder\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} create_folder {remote folder path}\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} delete_folder {remote folder path}\n", pszProgram ); - printf( " %s {ftp IP} {user id} {password} list\n", pszProgram ); + printf( "[Usage] %s {ftp IP} {ftp port:21} {user id} {password} upload {remote folder path} {local file path}\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} upload_folder {remote folder path} {local folder path}\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} download {remote folder path} {remote filename} {local file path}\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} get_folder\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} create_folder {remote folder path}\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} delete_folder {remote folder path}\n", pszProgram ); + printf( " %s {ftp IP} {ftp port:21} {user id} {password} list\n", pszProgram ); } int main( int argc, char * argv[] ) @@ -17,16 +17,17 @@ int main( int argc, char * argv[] ) _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF ); #endif - if( argc < 5 ) + if( argc < 6 ) { PrintUsage( argv[0] ); return 0; } const char * pszServerIp = argv[1]; - const char * pszUserId = argv[2]; - const char * pszPassWord = argv[3]; - const char * pszCommand = argv[4]; + int iServerPort = atoi( argv[2] ); + const char * pszUserId = argv[3]; + const char * pszPassWord = argv[4]; + const char * pszCommand = argv[5]; CFtpClient clsFtp; @@ -34,7 +35,7 @@ int main( int argc, char * argv[] ) CLog::SetLevel( LOG_DEBUG | LOG_NETWORK ); // FTP α - if( clsFtp.Connect( pszServerIp, 21, true ) == false ) + if( clsFtp.Connect( pszServerIp, iServerPort, true ) == false ) { printf( "clsFtp.Connect(%s) error\n", pszServerIp ); return 0; @@ -49,14 +50,14 @@ int main( int argc, char * argv[] ) if( !strcmp( pszCommand, "upload" ) ) { // FTP ε - if( argc < 7 ) + if( argc < 8 ) { PrintUsage( argv[0] ); return 0; } - const char * pszRemoteFolder = argv[5]; - const char * pszLocalPath = argv[6]; + const char * pszRemoteFolder = argv[6]; + const char * pszLocalPath = argv[7]; if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { @@ -73,14 +74,14 @@ int main( int argc, char * argv[] ) else if( !strcmp( pszCommand, "upload_folder" ) ) { // Ե FTP ε - if( argc < 7 ) + if( argc < 8 ) { PrintUsage( argv[0] ); return 0; } - const char * pszRemoteFolder = argv[5]; - const char * pszLocalFolder = argv[6]; + const char * pszRemoteFolder = argv[6]; + const char * pszLocalFolder = argv[7]; FILE_LIST clsFileList; FILE_LIST::iterator itFL; @@ -107,15 +108,15 @@ int main( int argc, char * argv[] ) else if( !strcmp( pszCommand, "download" ) ) { // FTP ٿε - if( argc < 8 ) + if( argc < 9 ) { PrintUsage( argv[0] ); return 0; } - const char * pszRemoteFolder = argv[5]; - const char * pszRemoteFile = argv[6]; - const char * pszLocalPath = argv[7]; + const char * pszRemoteFolder = argv[6]; + const char * pszRemoteFile = argv[7]; + const char * pszLocalPath = argv[8]; if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { @@ -145,13 +146,13 @@ int main( int argc, char * argv[] ) else if( !strcmp( pszCommand, "create_folder" ) ) { // FTP ϱ - if( argc < 6 ) + if( argc < 7 ) { PrintUsage( argv[0] ); return 0; } - const char * pszRemoteFolder = argv[5]; + const char * pszRemoteFolder = argv[6]; if( clsFtp.CreateFolder( pszRemoteFolder ) == false ) { @@ -178,13 +179,13 @@ int main( int argc, char * argv[] ) else if( !strcmp( pszCommand, "delete_folder" ) ) { // FTP ϱ - if( argc < 6 ) + if( argc < 7 ) { PrintUsage( argv[0] ); return 0; } - const char * pszRemoteFolder = argv[5]; + const char * pszRemoteFolder = argv[6]; if( clsFtp.DeleteFolder( pszRemoteFolder ) == false ) { @@ -194,6 +195,17 @@ int main( int argc, char * argv[] ) } else if( !strcmp( pszCommand, "list" ) ) { + if( argc >= 7 ) + { + const char * pszRemoteFolder = argv[6]; + + if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) + { + printf( "clsFtp.ChangeFolder(%s) error\n", pszRemoteFolder ); + return 0; + } + } + // FTP Ե Ʈ ϱ FTP_FILE_LIST clsList; FTP_FILE_LIST::iterator itFL; From 42b448f5d72abff436c988ea9071a6a9da385588 Mon Sep 17 00:00:00 2001 From: Yee Young Han Date: Fri, 21 Jul 2023 14:48:57 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=A7=91=ED=95=A8=EC=9D=84=20=EB=A9=80?= =?UTF-8?q?=ED=8B=B0=EB=B0=94=EC=9D=B4=ED=8A=B8=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TestFtpStack2/TestFtpStack2.vcproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TestFtpStack2/TestFtpStack2.vcproj b/TestFtpStack2/TestFtpStack2.vcproj index 4578288..333e142 100644 --- a/TestFtpStack2/TestFtpStack2.vcproj +++ b/TestFtpStack2/TestFtpStack2.vcproj @@ -21,7 +21,7 @@ OutputDirectory="$(SolutionDir)$(ConfigurationName)" IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" - CharacterSet="1" + CharacterSet="2" >