X-Git-Url: http://git.sourceforge.jp/view?p=ffftp%2Fffftp.git;a=blobdiff_plain;f=registry.c;h=f51900a78058e9f316be0aa24b5b5233981acf67;hp=1bb3b8bb9aef819de3a6fe99207e21a9d64e8259;hb=39667277c869f8eea15387ba7f30e97710721195;hpb=5a593299024d54015563beafb4a88d946834b276 diff --git a/registry.c b/registry.c index 1bb3b8b..f51900a 100644 --- a/registry.c +++ b/registry.c @@ -33,6 +33,8 @@ #endif #define STRICT +// IPv6対応 +#include #include #include #include @@ -84,6 +86,9 @@ static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Siz static int WriteMultiStringToReg(void *Handle, char *Name, char *Str); static int ReadBinaryFromReg(void *Handle, char *Name, void *Bin, DWORD Size); static int WriteBinaryToReg(void *Handle, char *Name, void *Bin, int Len); +// 暗号化通信対応 +static int StrCatOut(char *Src, int Len, char *Dst); +static int StrReadIn(char *Src, int Max, char *Dst); int CheckPasswordValidity( char* Password, int length, const char* HashStr ); void CreatePasswordHash( char* Password, int length, char* HashStr ); @@ -187,6 +192,9 @@ extern int FolderAttrNum; // 暗号化通信対応 extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20]; +extern BYTE SSLRootCAFileHash[20]; +// ファイルアイコン表示対応 +extern int DispFileIcon; /*----- マスタパスワードの設定 ---------------------------------------------- * @@ -293,6 +301,7 @@ void SaveRegistory(void) // 暗号化通信対応 // char Str[FMAX_PATH+1]; char Str[PRIVATE_KEY_LEN*4+1]; + char Buf[FMAX_PATH+1]; int i; int n; HOSTDATA DefaultHost; @@ -415,7 +424,10 @@ void SaveRegistory(void) WriteMultiStringToReg(hKey4, "DefAttr", DefAttrList); - GetTempPath(FMAX_PATH, Str); + // 環境依存の不具合対策 +// GetTempPath(FMAX_PATH, Str); + GetAppTempPath(Str); + SetYenTail(Str); SaveStr(hKey4, "Tmp", TmpPath, Str); WriteBinaryToReg(hKey4, "Hdlg", &HostDlgSize, sizeof(SIZE)); @@ -479,10 +491,16 @@ void SaveRegistory(void) SaveStr(hKey5, "PKey", Str, DefaultHist.PrivateKey); // 同時接続対応 SaveIntNum(hKey5, "ThreadCount", Hist.MaxThreadCount, DefaultHist.MaxThreadCount); + SaveIntNum(hKey5, "ReuseCmdSkt", Hist.ReuseCmdSkt, DefaultHist.ReuseCmdSkt); // MLSD対応 SaveIntNum(hKey5, "MLSD", Hist.UseMLSD, DefaultHist.UseMLSD); // IPv6対応 - SaveIntNum(hKey5, "IPv6", Hist.UseIPv6, DefaultHist.UseIPv6); + SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType); + // 自動切断対策 + SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval); + // 再転送対応 + SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode); + SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify); CloseSubKey(hKey5); n++; @@ -560,10 +578,16 @@ void SaveRegistory(void) SaveStr(hKey5, "PKey", Str, DefaultHost.PrivateKey); // 同時接続対応 SaveIntNum(hKey5, "ThreadCount", Host.MaxThreadCount, DefaultHost.MaxThreadCount); + SaveIntNum(hKey5, "ReuseCmdSkt", Host.ReuseCmdSkt, DefaultHost.ReuseCmdSkt); // MLSD対応 SaveIntNum(hKey5, "MLSD", Host.UseMLSD, DefaultHost.UseMLSD); // IPv6対応 - SaveIntNum(hKey5, "IPv6", Host.UseIPv6, DefaultHost.UseIPv6); + SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType); + // 自動切断対策 + SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval); + // 再転送対応 + SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode); + SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify); } CloseSubKey(hKey5); } @@ -585,6 +609,12 @@ void SaveRegistory(void) // 暗号化通信対応 WriteBinaryToReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash)); + strcpy(Buf, ""); + StrCatOut((char*)&SSLRootCAFileHash, sizeof(SSLRootCAFileHash), Buf); + EncodePassword(Buf, Str); + WriteStringToReg(hKey4, "RootCertHash", Str); + // ファイルアイコン表示対応 + WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon); } CloseSubKey(hKey4); } @@ -615,6 +645,7 @@ int LoadRegistory(void) // 暗号化通信対応 // char Str[256]; /* ASCII_EXT_LENより大きい事 */ char Str[PRIVATE_KEY_LEN*4+1]; + char Buf[FMAX_PATH+1]; char *Pos; char *Pos2; HOSTDATA Host; @@ -832,10 +863,16 @@ int LoadRegistory(void) DecodePassword(Str, Hist.PrivateKey); // 同時接続対応 ReadIntValueFromReg(hKey5, "ThreadCount", &Hist.MaxThreadCount); + ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Hist.ReuseCmdSkt); // MLSD対応 ReadIntValueFromReg(hKey5, "MLSD", &Hist.UseMLSD); // IPv6対応 - ReadIntValueFromReg(hKey5, "IPv6", &Hist.UseIPv6); + ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType); + // 自動切断対策 + ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval); + // 再転送対応 + ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode); + ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify); CloseSubKey(hKey5); AddHistoryToHistory(&Hist); @@ -922,10 +959,16 @@ int LoadRegistory(void) DecodePassword(Str, Host.PrivateKey); // 同時接続対応 ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount); + ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt); // MLSD対応 ReadIntValueFromReg(hKey5, "MLSD", &Host.UseMLSD); // IPv6対応 - ReadIntValueFromReg(hKey5, "IPv6", &Host.UseIPv6); + ReadIntValueFromReg(hKey5, "NetType", &Host.NetType); + // 自動切断対策 + ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval); + // 再転送対応 + ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode); + ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify); CloseSubKey(hKey5); @@ -938,6 +981,11 @@ int LoadRegistory(void) // 暗号化通信対応 ReadBinaryFromReg(hKey4, "CertCacheHash", &CertificateCacheHash, sizeof(CertificateCacheHash)); + ReadStringFromReg(hKey4, "RootCertHash", Str, PRIVATE_KEY_LEN*4+1); + DecodePassword(Str, Buf); + StrReadIn(Buf, sizeof(SSLRootCAFileHash), (char*)&SSLRootCAFileHash); + // ファイルアイコン表示対応 + ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon); CloseSubKey(hKey4); } @@ -1104,7 +1152,7 @@ void SaveSettingsToFile(void) { if(SetCurrentDirectory(SysDir)) { - if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32) + if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32) { MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK); } @@ -1168,7 +1216,7 @@ int LoadSettingsFromFile(void) { if(SetCurrentDirectory(SysDir)) { - if(ShellExecute(NULL, "open", "regedit", Tmp, ".", SW_SHOW) <= (HINSTANCE)32) + if(ShellExecute(NULL, "open", "regedit", Tmp, NULL, SW_SHOW) <= (HINSTANCE)32) { MessageBox(NULL, MSGJPN285, "FFFTP", MB_OK); } @@ -1790,8 +1838,9 @@ typedef struct regdatatbl { static BOOL WriteOutRegToFile(REGDATATBL *Pos); static int ReadInReg(char *Name, REGDATATBL **Handle); -static int StrCatOut(char *Src, int Len, char *Dst); -static int StrReadIn(char *Src, int Max, char *Dst); +// 暗号化通信対応 +//static int StrCatOut(char *Src, int Len, char *Dst); +//static int StrReadIn(char *Src, int Max, char *Dst); static char *ScanValue(void *Handle, char *Name); @@ -2347,7 +2396,6 @@ static int ReadStringFromReg(void *Handle, char *Name, char *Str, DWORD Size) Sts = FFFTP_SUCCESS; if(!CheckStringM(Str)) break; - Str = Str; // UTF-8ではない可能性がある // Shift_JISとみなす case KANJI_SJIS: @@ -2451,9 +2499,10 @@ static int ReadMultiStringFromReg(void *Handle, char *Name, char *Str, DWORD Siz switch(IniKanjiCode) { case KANJI_NOCNV: - TempSize = min1(Size-1, strlen(Pos)); + TempSize = min1(Size - 2, strlen(Pos)); TempSize = StrReadIn(Pos, TempSize, Str); *(Str + TempSize) = NUL; + *(Str + TempSize + 1) = NUL; Sts = FFFTP_SUCCESS; if(!CheckMultiStringM(Str)) break;