OSDN Git Service

Rebuild OpenSSL with backward compatibility options.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index 1a0652e..3cbd826 100644 (file)
--- a/main.c
+++ b/main.c
@@ -132,6 +132,8 @@ TRANSPACKET MainTransPkt;           /* ファイル転送用パケット */
 \r
 char TitleHostName[HOST_ADRS_LEN+1];\r
 char FilterStr[FILTER_EXT_LEN+1] = { "*" };\r
+// タイトルバーにユーザー名表示対応\r
+char TitleUserName[USER_NAME_LEN+1];\r
 \r
 int CancelFlg;\r
 \r
@@ -283,6 +285,12 @@ int AutoCheckForUpdates = YES;
 int AutoApplyUpdates = NO;\r
 int AutoCheckForUptatesInterval = 7;\r
 time_t LastAutoCheckForUpdates = 0;\r
+// ファイル一覧バグ修正\r
+int AbortOnListError = YES;\r
+// ミラーリング設定追加\r
+int MirrorNoTransferContents = NO; \r
+// FireWall設定追加\r
+int FwallNoSaveUser = NO; \r
 \r
 \r
 \r
@@ -413,9 +421,6 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        LoadOpenSSL();\r
 #endif\r
 \r
-       // SFTP対応\r
-       LoadPuTTY();\r
-\r
        // ソフトウェア自動更新\r
        ImmediateExit = NO;\r
        pCommand = lpszCmdLine;\r
@@ -436,7 +441,10 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                                                                if(pCommand = GetToken(pCommand, ListFile))\r
                                                                {\r
                                                                        if(pCommand = GetToken(pCommand, Description))\r
+                                                                       {\r
+                                                                               DecodeLineFeed(Description);\r
                                                                                BuildUpdates(PrivateKeyFile, Password, ServerPath, HashFile, ListFile, RELEASE_VERSION_NUM, VER_STR, Description);\r
+                                                                       }\r
                                                                }\r
                                                        }\r
                                                }\r
@@ -453,9 +461,9 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                                        {\r
                                                Sleep(1000);\r
                                                if(ApplyUpdates(UpdateDir, "updatebackup"))\r
-                                                       MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK);\r
+                                                       MessageBox(NULL, MSGJPN358, "FFFTP", MB_OK);\r
                                                else\r
-                                                       MessageBox(NULL, MSGJPN360, "FFFTP", MB_OK | MB_ICONERROR);\r
+                                                       MessageBox(NULL, MSGJPN359, "FFFTP", MB_OK | MB_ICONERROR);\r
                                        }\r
                                }\r
                                ImmediateExit = YES;\r
@@ -507,8 +515,6 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 #ifdef USE_OPENSSL\r
        FreeOpenSSL();\r
 #endif\r
-       // SFTP対応\r
-       FreePuTTY();\r
        // タスクバー進捗表示\r
        FreeTaskbarList3();\r
        // UPnP対応\r
@@ -533,7 +539,7 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                        }\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
@@ -627,20 +633,23 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                        }\r
                }\r
                // バージョン確認\r
-               if(ReadSettingsVersion() > VER_NUM)\r
+               if(PortableVersion == NO)\r
                {\r
-                       if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
+                       if(ReadSettingsVersion() > VER_NUM)\r
                        {\r
-                               switch(MessageBox(GetMainHwnd(), MSGJPN351, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
+                               if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
                                {\r
-                                       case IDCANCEL:\r
-                                               ReadOnlySettings = YES;\r
-                                               break;\r
-                                       case IDYES:\r
-                                               break;\r
-                                       case IDNO:\r
-                                               ImportPortable = YES;\r
-                                               break;\r
+                                       switch(MessageBox(GetMainHwnd(), MSGJPN350, "FFFTP", MB_YESNOCANCEL | MB_DEFBUTTON2))\r
+                                       {\r
+                                               case IDCANCEL:\r
+                                                       ReadOnlySettings = YES;\r
+                                                       break;\r
+                                               case IDYES:\r
+                                                       break;\r
+                                               case IDNO:\r
+                                                       ImportPortable = YES;\r
+                                                       break;\r
+                                       }\r
                                }\r
                        }\r
                }\r
@@ -701,6 +710,9 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                \r
                if(masterpass != 0)\r
                {\r
+                       // ホスト共通設定機能\r
+                       ResetDefaultHost();\r
+\r
                        LoadRegistry();\r
 \r
                        // ポータブル版判定\r
@@ -756,7 +768,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                                        DispWindowTitle();\r
                                        // SourceForge.JPによるフォーク\r
 //                                     SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.");\r
-                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011-2014 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen).");\r
+                                       SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011-2016 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu, Fu-sen).");\r
 \r
                                        if(ForceIni)\r
                                                SetTaskMsg("%s%s", MSGJPN283, IniPath);\r
@@ -780,7 +792,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                                        DispTransferFiles();\r
 \r
                                        // ソフトウェア自動更新\r
-                                       if(AutoCheckForUptatesInterval == 0)\r
+                                       if(AutoCheckForUpdates == YES && AutoCheckForUptatesInterval == 0)\r
                                                UpdateSoftware(YES, YES, AutoApplyUpdates);\r
 \r
                                        StartupProc(lpszCmdLine);\r
@@ -952,21 +964,22 @@ void DispWindowTitle(void)
 \r
        if(AskConnecting() == YES)\r
        // 暗号化通信対応\r
+       // タイトルバーにユーザー名表示対応\r
 //             sprintf(Tmp, "%s (%s) - FFFTP", TitleHostName, FilterStr);\r
        {\r
                switch(AskCryptMode())\r
                {\r
                case CRYPT_NONE:\r
-                       sprintf(Tmp, "%s (%s) %s - FFFTP", TitleHostName, FilterStr, MSGJPN352);\r
+                       sprintf(Tmp, "%s@%s (%s) %s - FFFTP", TitleUserName, 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) %s - FFFTP", TitleUserName, 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) %s - FFFTP", TitleUserName, 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) %s - FFFTP", TitleUserName, TitleHostName, FilterStr, MSGJPN354);\r
                        break;\r
                }\r
        }\r
@@ -1157,7 +1170,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        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
@@ -1168,7 +1181,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        // 同時接続対応\r
                        // 中断後に受信バッファに応答が残っていると次のコマンドの応答が正しく処理できない\r
                        if(CancelFlg == YES)\r
-                               RemoveReceivedData(AskCmdCtrlSkt());\r
+                               AbortRecoveryProc();\r
                        switch(LOWORD(wParam))\r
                        {\r
                                case MENU_CONNECT :\r
@@ -2054,6 +2067,17 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                PostMessage(hWnd,  WM_COMMAND, MAKEWPARAM(REFRESH_REMOTE, 0), 0);\r
                        break;\r
 \r
+               // UPnP対応\r
+               case WM_ADDPORTMAPPING :\r
+                       ((ADDPORTMAPPINGDATA*)lParam)->r = AddPortMapping(((ADDPORTMAPPINGDATA*)lParam)->Adrs, ((ADDPORTMAPPINGDATA*)lParam)->Port, ((ADDPORTMAPPINGDATA*)lParam)->ExtAdrs);\r
+                       SetEvent(((ADDPORTMAPPINGDATA*)lParam)->h);\r
+                       break;\r
+\r
+               case WM_REMOVEPORTMAPPING :\r
+                       ((REMOVEPORTMAPPINGDATA*)lParam)->r = RemovePortMapping(((REMOVEPORTMAPPINGDATA*)lParam)->Port);\r
+                       SetEvent(((REMOVEPORTMAPPINGDATA*)lParam)->h);\r
+                       break;\r
+\r
                case WM_PAINT :\r
                    BeginPaint(hWnd, (LPPAINTSTRUCT) &ps);\r
                    EndPaint(hWnd, (LPPAINTSTRUCT) &ps);\r
@@ -2513,6 +2537,9 @@ static void ExitProc(HWND hWnd)
 \r
        CancelFlg = YES;\r
 \r
+       // バグ対策\r
+       DisableUserOpe();\r
+\r
        CloseTransferThread();\r
 \r
        if(SaveExit == YES)\r
@@ -2663,6 +2690,8 @@ void DoubleClickProc(int Win, int Mode, int App)
                                                        MainTransPkt.KanjiCodeDesired = AskLocalKanjiCode();\r
                                                        MainTransPkt.KanaCnv = AskHostKanaCnv();\r
                                                        MainTransPkt.Mode = EXIST_OVW;\r
+                                                       // ミラーリング設定追加\r
+                                                       MainTransPkt.NoTransfer = NO;\r
                                                        MainTransPkt.ExistSize = 0;\r
                                                        MainTransPkt.hWndTrans = NULL;\r
                                                        MainTransPkt.Next = NULL;\r
@@ -3567,7 +3596,7 @@ BOOL LoadSSLRootCAFile()
                                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, "\xDF\x8E\xE2\x5A\xC7\x01\x03\x1C\x3A\x61\x00\xA2\x53\xCA\xF8\xDC\xA0\xC1\xA6\x3B", 20) == 0\r
                                        || DialogBox(GetFtpInst(), MAKEINTRESOURCE(updatesslroot_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
                                {\r
                                        memcpy(&SSLRootCAFileHash, &Hash, 20);\r
@@ -3631,9 +3660,8 @@ int Restart()
        return Sts;\r
 }\r
 \r
-void RestartAndTerminate()\r
+void Terminate()\r
 {\r
-       Restart();\r
        exit(1);\r
 }\r
 \r
@@ -3728,7 +3756,7 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
                        {\r
                                if(Version > RELEASE_VERSION_NUM)\r
                                {\r
-                                       sprintf(Tmp, MSGJPN362, VER_STR, VersionString, Description);\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
@@ -3737,18 +3765,18 @@ void UpdateSoftware(int Async, int NoError, int NoConfirm)
                                                _mkdir(Tmp);\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