OSDN Git Service

Change the character code of windows into UTF-16 completely.
[ffftp/ffftp.git] / registry.c
index 1bb3b8b..36e8005 100644 (file)
@@ -33,6 +33,8 @@
 #endif\r
 \r
 #define        STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
 #include <windows.h>\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
@@ -84,6 +86,9 @@ static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Siz
 static int WriteMultiStringToReg(void *Handle, char *Name, char *Str);\r
 static int ReadBinaryFromReg(void *Handle, char *Name, void *Bin, DWORD Size);\r
 static int WriteBinaryToReg(void *Handle, char *Name, void *Bin, int Len);\r
+// 暗号化通信対応\r
+static int StrCatOut(char *Src, int Len, char *Dst);\r
+static int StrReadIn(char *Src, int Max, char *Dst);\r
 \r
 int CheckPasswordValidity( char* Password, int length, const char* HashStr );\r
 void CreatePasswordHash( char* Password, int length, char* HashStr );\r
@@ -187,6 +192,7 @@ extern int FolderAttrNum;
 \r
 // 暗号化通信対応\r
 extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];\r
+extern BYTE SSLRootCAFileHash[20];\r
 \r
 /*----- マスタパスワードの設定 ----------------------------------------------\r
 *\r
@@ -293,6 +299,7 @@ void SaveRegistory(void)
        // 暗号化通信対応\r
 //     char Str[FMAX_PATH+1];\r
        char Str[PRIVATE_KEY_LEN*4+1];\r
+       char Buf[FMAX_PATH+1];\r
        int i;\r
        int n;\r
        HOSTDATA DefaultHost;\r
@@ -479,10 +486,16 @@ void SaveRegistory(void)
                                                        SaveStr(hKey5, "PKey", Str, DefaultHist.PrivateKey);\r
                                                        // 同時接続対応\r
                                                        SaveIntNum(hKey5, "ThreadCount", Hist.MaxThreadCount, DefaultHist.MaxThreadCount);\r
+                                                       SaveIntNum(hKey5, "ReuseCmdSkt", Hist.ReuseCmdSkt, DefaultHist.ReuseCmdSkt);\r
                                                        // MLSD対応\r
                                                        SaveIntNum(hKey5, "MLSD", Hist.UseMLSD, DefaultHist.UseMLSD);\r
                                                        // IPv6対応\r
-                                                       SaveIntNum(hKey5, "IPv6", Hist.UseIPv6, DefaultHist.UseIPv6);\r
+                                                       SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType);\r
+                                                       // 自動切断対策\r
+                                                       SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval);\r
+                                                       // 再転送対応\r
+                                                       SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);\r
+                                                       SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);\r
 \r
                                                        CloseSubKey(hKey5);\r
                                                        n++;\r
@@ -560,10 +573,16 @@ void SaveRegistory(void)
                                                        SaveStr(hKey5, "PKey", Str, DefaultHost.PrivateKey);\r
                                                        // 同時接続対応\r
                                                        SaveIntNum(hKey5, "ThreadCount", Host.MaxThreadCount, DefaultHost.MaxThreadCount);\r
+                                                       SaveIntNum(hKey5, "ReuseCmdSkt", Host.ReuseCmdSkt, DefaultHost.ReuseCmdSkt);\r
                                                        // MLSD対応\r
                                                        SaveIntNum(hKey5, "MLSD", Host.UseMLSD, DefaultHost.UseMLSD);\r
                                                        // IPv6対応\r
-                                                       SaveIntNum(hKey5, "IPv6", Host.UseIPv6, DefaultHost.UseIPv6);\r
+                                                       SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType);\r
+                                                       // 自動切断対策\r
+                                                       SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval);\r
+                                                       // 再転送対応\r
+                                                       SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);\r
+                                                       SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);\r
                                                }\r
                                                CloseSubKey(hKey5);\r
                                        }\r
@@ -585,6 +604,10 @@ void SaveRegistory(void)
 \r
                                // 暗号化通信対応\r
                                WriteBinaryToReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash));\r
+                               strcpy(Buf, "");\r
+                               StrCatOut((char*)&SSLRootCAFileHash, sizeof(SSLRootCAFileHash), Buf);\r
+                               EncodePassword(Buf, Str);\r
+                               WriteStringToReg(hKey4, "RootCertHash", Str);\r
                        }\r
                        CloseSubKey(hKey4);\r
                }\r
@@ -615,6 +638,7 @@ int LoadRegistory(void)
        // 暗号化通信対応\r
 //     char Str[256];  /* ASCII_EXT_LENより大きい事 */\r
        char Str[PRIVATE_KEY_LEN*4+1];\r
+       char Buf[FMAX_PATH+1];\r
        char *Pos;\r
        char *Pos2;\r
        HOSTDATA Host;\r
@@ -832,10 +856,16 @@ int LoadRegistory(void)
                                        DecodePassword(Str, Hist.PrivateKey);\r
                                        // 同時接続対応\r
                                        ReadIntValueFromReg(hKey5, "ThreadCount", &Hist.MaxThreadCount);\r
+                                       ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Hist.ReuseCmdSkt);\r
                                        // MLSD対応\r
                                        ReadIntValueFromReg(hKey5, "MLSD", &Hist.UseMLSD);\r
                                        // IPv6対応\r
-                                       ReadIntValueFromReg(hKey5, "IPv6", &Hist.UseIPv6);\r
+                                       ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType);\r
+                                       // 自動切断対策\r
+                                       ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval);\r
+                                       // 再転送対応\r
+                                       ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode);\r
+                                       ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify);\r
 \r
                                        CloseSubKey(hKey5);\r
                                        AddHistoryToHistory(&Hist);\r
@@ -922,10 +952,16 @@ int LoadRegistory(void)
                                        DecodePassword(Str, Host.PrivateKey);\r
                                        // 同時接続対応\r
                                        ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount);\r
+                                       ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt);\r
                                        // MLSD対応\r
                                        ReadIntValueFromReg(hKey5, "MLSD", &Host.UseMLSD);\r
                                        // IPv6対応\r
-                                       ReadIntValueFromReg(hKey5, "IPv6", &Host.UseIPv6);\r
+                                       ReadIntValueFromReg(hKey5, "NetType", &Host.NetType);\r
+                                       // 自動切断対策\r
+                                       ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval);\r
+                                       // 再転送対応\r
+                                       ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);\r
+                                       ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);\r
 \r
                                        CloseSubKey(hKey5);\r
 \r
@@ -938,6 +974,9 @@ int LoadRegistory(void)
 \r
                        // 暗号化通信対応\r
                        ReadBinaryFromReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash));\r
+                       ReadStringFromReg(hKey4, "RootCertHash", Str, PRIVATE_KEY_LEN*4+1);\r
+                       DecodePassword(Str, Buf);\r
+                       StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash);\r
 \r
                        CloseSubKey(hKey4);\r
                }\r
@@ -1104,7 +1143,7 @@ void SaveSettingsToFile(void)
                                {\r
                                        if(SetCurrentDirectory(SysDir))\r
                                        {\r
-                                               if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32)\r
+                                               if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
                                                {\r
                                                        MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
                                                }\r
@@ -1168,7 +1207,7 @@ int LoadSettingsFromFile(void)
                                {\r
                                        if(SetCurrentDirectory(SysDir))\r
                                        {\r
-                                               if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32)\r
+                                               if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32)\r
                                                {\r
                                                        MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK);\r
                                                }\r
@@ -1790,8 +1829,9 @@ typedef struct regdatatbl {
 \r
 static BOOL WriteOutRegToFile(REGDATATBL *Pos);\r
 static int ReadInReg(char *Name, REGDATATBL **Handle);\r
-static int StrCatOut(char *Src, int Len, char *Dst);\r
-static int StrReadIn(char *Src, int Max, char *Dst);\r
+// 暗号化通信対応\r
+//static int StrCatOut(char *Src, int Len, char *Dst);\r
+//static int StrReadIn(char *Src, int Max, char *Dst);\r
 static char *ScanValue(void *Handle, char *Name);\r
 \r
 \r
@@ -2347,7 +2387,6 @@ static int ReadStringFromReg(void *Handle, char *Name, char *Str, DWORD Size)
                                Sts = FFFTP_SUCCESS;\r
                                if(!CheckStringM(Str))\r
                                        break;\r
-                               Str = Str;\r
                                // UTF-8ではない可能性がある\r
                                // Shift_JISとみなす\r
                        case KANJI_SJIS:\r
@@ -2451,9 +2490,10 @@ static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Siz
                        switch(IniKanjiCode)\r
                        {\r
                        case KANJI_NOCNV:\r
-                               TempSize = min1(Size-1, strlen(Pos));\r
+                               TempSize = min1(Size - 2, strlen(Pos));\r
                                TempSize = StrReadIn(Pos, TempSize, Str);\r
                                *(Str + TempSize) = NUL;\r
+                               *(Str + TempSize + 1) = NUL;\r
                                Sts = FFFTP_SUCCESS;\r
                                if(!CheckMultiStringM(Str))\r
                                        break;\r