int AutoApplyUpdates = NO;\r
int AutoCheckForUptatesInterval = 7;\r
time_t LastAutoCheckForUpdates = 0;\r
+// ファイル一覧バグ修正\r
+int AbortOnListError = YES;\r
+// ミラーリング設定追加\r
+int MirrorNoTransferContents = NO; \r
\r
\r
\r
MSG Msg;\r
int Ret;\r
BOOL Sts;\r
+ // プロセス保護\r
+ char* pCommand;\r
+ DWORD ProtectLevel;\r
+ char Option[FMAX_PATH+1];\r
// ソフトウェア自動更新\r
+ int ImmediateExit;\r
+ char PrivateKeyFile[FMAX_PATH+1];\r
+ char Password[FMAX_PATH+1];\r
+ char ServerPath[FMAX_PATH+1];\r
+ char HashFile[FMAX_PATH+1];\r
+ char ListFile[FMAX_PATH+1];\r
+ char Description[FMAX_PATH+1];\r
char UpdateDir[FMAX_PATH+1];\r
char Path[FMAX_PATH+1];\r
char Command[FMAX_PATH+1];\r
char* p;\r
\r
- // プロセス保護\r
#ifdef ENABLE_PROCESS_PROTECTION\r
+ ProtectLevel = PROCESS_PROTECTION_NONE;\r
+ pCommand = lpszCmdLine;\r
+ while(pCommand = GetToken(pCommand, Option))\r
{\r
- DWORD ProtectLevel;\r
- char* pCommand;\r
- char Option[FMAX_PATH+1];\r
- ProtectLevel = PROCESS_PROTECTION_NONE;\r
- pCommand = lpszCmdLine;\r
- while(pCommand = GetToken(pCommand, Option))\r
+ if(Option[0] == '-')\r
{\r
- if(Option[0] == '-')\r
+ if(strcmp(&Option[1], "-protect") == 0)\r
{\r
- if(strcmp(&Option[1], "-protect") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
- break;\r
- }\r
- else if(strcmp(&Option[1], "-protect-high") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_HIGH;\r
- break;\r
- }\r
- else if(strcmp(&Option[1], "-protect-medium") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
- break;\r
- }\r
- else if(strcmp(&Option[1], "-protect-low") == 0)\r
- {\r
- ProtectLevel = PROCESS_PROTECTION_LOW;\r
- break;\r
- }\r
+ ProtectLevel = PROCESS_PROTECTION_DEFAULT;\r
+ break;\r
}\r
- }\r
- if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
- {\r
- SetProcessProtectionLevel(ProtectLevel);\r
- if(!InitializeLoadLibraryHook())\r
+ else if(strcmp(&Option[1], "-protect-high") == 0)\r
{\r
- MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
- return 0;\r
+ ProtectLevel = PROCESS_PROTECTION_HIGH;\r
+ break;\r
}\r
-#ifndef _DEBUG\r
- if(IsDebuggerPresent())\r
+ else if(strcmp(&Option[1], "-protect-medium") == 0)\r
{\r
- MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
- return 0;\r
+ ProtectLevel = PROCESS_PROTECTION_MEDIUM;\r
+ break;\r
}\r
-#endif\r
- if(!UnloadUntrustedModule())\r
+ else if(strcmp(&Option[1], "-protect-low") == 0)\r
{\r
- MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
- return 0;\r
+ ProtectLevel = PROCESS_PROTECTION_LOW;\r
+ break;\r
}\r
+ }\r
+ }\r
+ if(ProtectLevel != PROCESS_PROTECTION_NONE)\r
+ {\r
+ SetProcessProtectionLevel(ProtectLevel);\r
+ if(!InitializeLoadLibraryHook())\r
+ {\r
+ MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR);\r
+ return 0;\r
+ }\r
#ifndef _DEBUG\r
- if(RestartProtectedProcess(" --restart"))\r
- return 0;\r
+ if(IsDebuggerPresent())\r
+ {\r
+ MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR);\r
+ return 0;\r
+ }\r
#endif\r
- if(!EnableLoadLibraryHook(TRUE))\r
- {\r
- MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
- return 0;\r
- }\r
+ if(!UnloadUntrustedModule())\r
+ {\r
+ MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR);\r
+ return 0;\r
}\r
- else\r
- InitializeLoadLibraryHook();\r
- }\r
+#ifndef _DEBUG\r
+ if(RestartProtectedProcess(" --restart"))\r
+ return 0;\r
#endif\r
-\r
- // ソフトウェア自動更新\r
- if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "-software-update", "-software-update"))\r
- {\r
- if(!RestartUpdateProcessAsAdministrator(lpszCmdLine, " --restart"))\r
+ if(!EnableLoadLibraryHook(TRUE))\r
{\r
- Sleep(1000);\r
- if(ApplyUpdates(UpdateDir, "updatebackup"))\r
- MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK);\r
- else\r
- MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+ MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR);\r
+ return 0;\r
}\r
- return 0;\r
- }\r
- else if(GetTokenAfterOption(lpszCmdLine, UpdateDir, "-software-cleanup", "-software-cleanup"))\r
- {\r
- CleanupUpdates(UpdateDir);\r
}\r
+ else\r
+ InitializeLoadLibraryHook();\r
+#endif\r
\r
// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
#ifdef DISABLE_MULTI_CPUS\r
LoadOpenSSL();\r
#endif\r
\r
- // SFTP対応\r
- LoadPuTTY();\r
+ // ソフトウェア自動更新\r
+ ImmediateExit = NO;\r
+ pCommand = lpszCmdLine;\r
+ while(pCommand = GetToken(pCommand, Option))\r
+ {\r
+ if(Option[0] == '-')\r
+ {\r
+ if(strcmp(&Option[1], "-build-software-update") == 0)\r
+ {\r
+ if(pCommand = GetToken(pCommand, PrivateKeyFile))\r
+ {\r
+ if(pCommand = GetToken(pCommand, Password))\r
+ {\r
+ if(pCommand = GetToken(pCommand, ServerPath))\r
+ {\r
+ if(pCommand = GetToken(pCommand, HashFile))\r
+ {\r
+ if(pCommand = GetToken(pCommand, ListFile))\r
+ {\r
+ if(pCommand = GetToken(pCommand, Description))\r
+ BuildUpdates(PrivateKeyFile, Password, ServerPath, HashFile, ListFile, RELEASE_VERSION_NUM, VER_STR, Description);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ ImmediateExit = YES;\r
+ break;\r
+ }\r
+ else if(strcmp(&Option[1], "-software-update") == 0)\r
+ {\r
+ if(pCommand = GetToken(pCommand, UpdateDir))\r
+ {\r
+ if(!RestartUpdateProcessAsAdministrator(lpszCmdLine, " --restart"))\r
+ {\r
+ Sleep(1000);\r
+ if(ApplyUpdates(UpdateDir, "updatebackup"))\r
+ MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);\r
+ else\r
+ MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);\r
+ }\r
+ }\r
+ ImmediateExit = YES;\r
+ break;\r
+ }\r
+ else if(strcmp(&Option[1], "-software-cleanup") == 0)\r
+ {\r
+ if(pCommand = GetToken(pCommand, UpdateDir))\r
+ CleanupUpdates(UpdateDir);\r
+ break;\r
+ }\r
+ }\r
+ }\r
\r
Ret = FALSE;\r
hWndFtp = NULL;\r
hInstFtp = hInstance;\r
- if(InitApp(lpszCmdLine, cmdShow) == FFFTP_SUCCESS)\r
+ // ソフトウェア自動更新\r
+// if(InitApp(lpszCmdLine, cmdShow) == FFFTP_SUCCESS)\r
+ if(ImmediateExit == NO && InitApp(lpszCmdLine, cmdShow) == FFFTP_SUCCESS)\r
{\r
for(;;)\r
{\r
#ifdef USE_OPENSSL\r
FreeOpenSSL();\r
#endif\r
- // SFTP対応\r
- FreePuTTY();\r
// タスクバー進捗表示\r
FreeTaskbarList3();\r
// UPnP対応\r
}\r
}\r
if(!Sts)\r
- MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+ MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
return(Ret);\r
}\r
{\r
if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
{\r
- switch(MessageBox(GetMainHwnd(), MSGJPN351, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
+ switch(MessageBox(GetMainHwnd(), MSGJPN350, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
{\r
case IDCANCEL:\r
ReadOnlySettings = YES;\r
\r
if(masterpass != 0)\r
{\r
+ // ホスト共通設定機能\r
+ ResetDefaultHost();\r
+\r
LoadRegistry();\r
\r
// ポータブル版判定\r
DispTransferFiles();\r
\r
// ソフトウェア自動更新\r
- if(AutoCheckForUptatesInterval == 0)\r
+ if(AutoCheckForUpdates == YES && AutoCheckForUptatesInterval == 0)\r
UpdateSoftware(YES, YES, AutoApplyUpdates);\r
\r
StartupProc(lpszCmdLine);\r
switch(AskCryptMode())\r
{\r
case CRYPT_NONE:\r
- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);\r
+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN351);\r
break;\r
case CRYPT_FTPES:\r
- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);\r
+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);\r
break;\r
case CRYPT_FTPIS:\r
- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);\r
+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN353);\r
break;\r
case CRYPT_SFTP:\r
- sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN355);\r
+ sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN354);\r
break;\r
}\r
}\r
case 3:\r
if(AskUserOpeDisabled() == NO && AskTransferNow() == NO)\r
{\r
- if(AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400)\r
+ if(AutoCheckForUpdates == YES && AutoCheckForUptatesInterval > 0 && time(NULL) - LastAutoCheckForUpdates >= AutoCheckForUptatesInterval * 86400)\r
UpdateSoftware(YES, YES, AutoApplyUpdates);\r
}\r
break;\r
// 同時接続対応\r
// 中断後に受信バッファに応答が残っていると次のコマンドの応答が正しく処理できない\r
if(CancelFlg == YES)\r
- RemoveReceivedData(AskCmdCtrlSkt());\r
+ AbortRecoveryProc();\r
switch(LOWORD(wParam))\r
{\r
case MENU_CONNECT :\r
{\r
int Ret;\r
char Tmp[FMAX_PATH+1];\r
+ // ソフトウェア自動更新\r
+ int i;\r
\r
*AutoConnect = -1;\r
*CmdOption = 0;\r
else if((strcmp(&Tmp[1], "u8n") == 0) || (strcmp(&Tmp[1], "-utf8name") == 0))\r
*CmdOption |= OPT_UTF8N_NAME;\r
// ソフトウェア自動更新\r
+ else if(strcmp(&Tmp[1], "-build-software-update") == 0)\r
+ {\r
+ for(i = 0; i < 6; i++)\r
+ {\r
+ if((Str = GetToken(Str, Tmp)) == NULL)\r
+ {\r
+ Ret = -1;\r
+ break;\r
+ }\r
+ }\r
+ }\r
else if(strcmp(&Tmp[1], "-software-update") == 0)\r
{\r
if((Str = GetToken(Str, Tmp)) == NULL)\r
\r
CancelFlg = YES;\r
\r
+ // バグ対策\r
+ DisableUserOpe();\r
+\r
CloseTransferThread();\r
\r
if(SaveExit == YES)\r
for(i = 0; i < 5; i++)\r
Hash[i] = _byteswap_ulong(Hash[i]);\r
// 同梱する"ssl.pem"に合わせてSHA1ハッシュ値を変更すること\r
- if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\xC8\xF6\x0B\x07\x10\x42\x55\xE7\x57\x7F\xE9\x52\xE0\x3F\xA8\xE4\x08\x2B\xB0\xE2", 20) == 0\r
+ if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\xE8\xE7\x94\x39\x27\x66\xCC\xA1\x52\x88\x58\xA2\x29\xAC\x04\x6B\x0F\x5D\x58\x01", 20) == 0\r
|| DialogBox(GetFtpInst(), MAKEINTRESOURCE(updatesslroot_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
{\r
memcpy(&SSLRootCAFileHash, &Hash, 20);\r
return Sts;\r
}\r
\r
-void RestartAndTerminate()\r
+void Terminate()\r
{\r
- Restart();\r
exit(1);\r
}\r
\r
UPDATESOFTWAREDATA* pData;\r
DWORD Version;\r
char VersionString[32];\r
- char Tmp[FMAX_PATH+1];\r
+ char Description[1024];\r
+ char Tmp[2048];\r
if(Async == YES)\r
{\r
if(pData = malloc(sizeof(UPDATESOFTWAREDATA)))\r
{\r
Version = RELEASE_VERSION_NUM;\r
LastAutoCheckForUpdates = time(NULL);\r
- if(CheckForUpdates(FALSE, NULL, &Version, VersionString))\r
+ if(CheckForUpdates(FALSE, NULL, &Version, VersionString, Description))\r
{\r
if(Version > RELEASE_VERSION_NUM)\r
{\r
- sprintf(Tmp, MSGJPN362, VER_STR, VersionString);\r
+ sprintf(Tmp, MSGJPN361, VER_STR, VersionString, Description);\r
if(NoConfirm == YES || MessageBox(GetMainHwnd(), Tmp, "FFFTP", MB_YESNO) == IDYES)\r
{\r
strcpy(Tmp, TmpPath);\r
SetYenTail(Tmp);\r
strcat(Tmp, "update");\r
_mkdir(Tmp);\r
- if(CheckForUpdates(TRUE, Tmp, &Version, VersionString))\r
+ if(CheckForUpdates(TRUE, Tmp, &Version, VersionString, Description))\r
{\r
- MessageBox(GetMainHwnd(), MSGJPN365, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
ApplyUpdatesOnExit = YES;\r
}\r
else if(NoError == NO)\r
- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
+ MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
}\r
else if(NoError == NO)\r
- MessageBox(GetMainHwnd(), MSGJPN364, "FFFTP", MB_OK);\r
+ MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK);\r
}\r
else if(NoError == NO)\r
- MessageBox(GetMainHwnd(), MSGJPN363, "FFFTP", MB_OK | MB_ICONERROR);\r
+ MessageBox(GetMainHwnd(), MSGJPN362, "FFFTP", MB_OK | MB_ICONERROR);\r
}\r
}\r
}\r