X-Git-Url: http://git.sourceforge.jp/view?p=ffftp%2Fffftp.git;a=blobdiff_plain;f=registry.c;h=be28d9cc0e36f481f0125619013473fb5a0f3c8b;hp=368745a54c81087f9162e3fa9788ebb3f49f41a7;hb=1c6203ce6ace264b85ef9b677f75ecad9fb7c862;hpb=79dd2b343ce394098b2f0f9d89e53bd8c28b7401 diff --git a/registry.c b/registry.c index 368745a..be28d9c 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)); @@ -483,7 +495,12 @@ void SaveRegistory(void) // 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++; @@ -565,7 +582,12 @@ void SaveRegistory(void) // 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); } @@ -587,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); } @@ -617,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; @@ -838,7 +867,12 @@ int LoadRegistory(void) // 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); @@ -926,10 +960,21 @@ int LoadRegistory(void) // 同時接続対応 ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount); ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt); + // 1.98d以前で同時接続数が1より大きい場合はソケットの再利用なし + if(Version < 1985) + { + if(Host.MaxThreadCount > 1) + Host.ReuseCmdSkt = NO; + } // 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); @@ -942,6 +987,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); } @@ -1794,8 +1844,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); @@ -2454,9 +2505,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;