OSDN Git Service

Update to b2ca3cbfefb9f644d74e81b6dbb28c759def7249 (1.99a-20171104).
[ffftp/ffftp.git] / tool.c
diff --git a/tool.c b/tool.c
index 2f5fced..3b240b5 100644 (file)
--- a/tool.c
+++ b/tool.c
@@ -1,6 +1,6 @@
-/*=============================================================================\r
+/*=============================================================================\r
 *\r
-*                                                                      \83c\81[\83\8b\r
+*                                                                      ツール\r
 *\r
 ===============================================================================\r
 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
@@ -28,6 +28,8 @@
 /============================================================================*/\r
 \r
 #define        STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
 #include <windows.h>\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <htmlhelp.h>\r
 #include "helpid.h"\r
 \r
+// UTF-8対応\r
+#undef __MBSWRAPPER_H__\r
+#include "mbswrapper.h"\r
 \r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
 \r
-static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+/*===== プロトタイプ =====*/\r
 \r
+// 64ビット対応\r
+//static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
 \r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+\r
+/*===== 外部参照 =====*/\r
 \r
 extern HWND hHelpWin;\r
 \r
 \r
-/*----- \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\8cv\8eZ ----------------------------------------------\r
+/*----- ワンタイムパスワード計算 ----------------------------------------------\r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void OtpCalcTool(void)\r
@@ -68,19 +76,21 @@ void OtpCalcTool(void)
 }\r
 \r
 \r
-/*----- \83\8f\83\93\83^\83C\83\80\83p\83X\83\8f\81[\83h\8cv\8eZ\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ----------------------\r
+/*----- ワンタイムパスワード計算ウインドウのコールバック ----------------------\r
 *\r
 *      Parameter\r
-*              HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-*              UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-*              WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-*              LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+*              HWND hDlg : ウインドウハンドル\r
+*              UINT message : メッセージ番号\r
+*              WPARAM wParam : メッセージの WPARAM 引数\r
+*              LPARAM lParam : メッセージの LPARAM 引数\r
 *\r
 *      Return Value\r
 *              BOOL TRUE/FALSE\r
 *----------------------------------------------------------------------------*/\r
 \r
-static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
 {\r
        char Tmp[41];\r
        char *Pos;\r
@@ -102,7 +112,7 @@ static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPAR
                        SendDlgItemMessage(hDlg, OTPCALC_KEY, EM_LIMITTEXT, 40, 0);\r
                        SendDlgItemMessage(hDlg, OTPCALC_PASS, EM_LIMITTEXT, PASSWORD_LEN, 0);\r
                        SetRadioButtonByValue(hDlg, MD4, AlgoButton, ALGOBUTTONS);\r
-                   return(TRUE);\r
+                       return(TRUE);\r
 \r
                case WM_COMMAND :\r
                        switch(GET_WM_COMMAND_ID(wParam, lParam))\r
@@ -122,7 +132,7 @@ static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPAR
                                                /* Seed */\r
                                                if((Pos = GetNextField(Pos)) != NULL)\r
                                                {\r
-                                                       if(GetOneField(Pos, Seed, MAX_SEED_LEN) == SUCCESS)\r
+                                                       if(GetOneField(Pos, Seed, MAX_SEED_LEN) == FFFTP_SUCCESS)\r
                                                        {\r
                                                                Make6WordPass(Seq, Seed, Pass, Type, Tmp);\r
                                                        }\r
@@ -148,8 +158,34 @@ static BOOL CALLBACK OtpCalcWinProc(HWND hDlg, UINT message, WPARAM wParam, LPAR
                }\r
                        return(TRUE);\r
        }\r
-    return(FALSE);\r
+       return(FALSE);\r
 }\r
 \r
 \r
 \r
+// FTPS対応\r
+void TurnStatefulFTPFilter()\r
+{\r
+       int ID;\r
+       char CurDir[FMAX_PATH+1];\r
+       char SysDir[FMAX_PATH+1];\r
+       ID = MessageBox(GetMainHwnd(), MSGJPN341, "FFFTP", MB_YESNOCANCEL);\r
+       if(ID == IDYES || ID == IDNO)\r
+       {\r
+               if(GetCurrentDirectory(FMAX_PATH, CurDir) > 0)\r
+               {\r
+                       if(GetSystemDirectory(SysDir, FMAX_PATH) > 0)\r
+                       {\r
+                               if(SetCurrentDirectory(SysDir))\r
+                               {\r
+                                       if(ShellExecute(NULL, "runas", "netsh", ID == IDYES ? "advfirewall set global statefulftp enable" : "advfirewall set global statefulftp disable", NULL, SW_SHOW) <= (HINSTANCE)32)\r
+                                       {\r
+                                               MessageBox(GetMainHwnd(), MSGJPN342, "FFFTP", MB_OK | MB_ICONERROR);\r
+                                       }\r
+                                       SetCurrentDirectory(CurDir);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r