#endif\r
\r
#define STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
#include <windows.h>\r
#include <stdio.h>\r
#include <stdlib.h>\r
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
\r
// 暗号化通信対応\r
extern BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20];\r
+extern BYTE SSLRootCAFileHash[20];\r
+// ファイルアイコン表示対応\r
+extern int DispFileIcon;\r
\r
/*----- マスタパスワードの設定 ----------------------------------------------\r
*\r
// 暗号化通信対応\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
\r
WriteMultiStringToReg(hKey4, "DefAttr", DefAttrList);\r
\r
- GetTempPath(FMAX_PATH, Str);\r
+ // 環境依存の不具合対策\r
+// GetTempPath(FMAX_PATH, Str);\r
+ GetAppTempPath(Str);\r
+ SetYenTail(Str);\r
SaveStr(hKey4, "Tmp", TmpPath, Str);\r
\r
WriteBinaryToReg(hKey4, "Hdlg", &HostDlgSize, sizeof(SIZE));\r
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
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
\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
+ WriteIntValueToReg(hKey4, "ListIcon", DispFileIcon);\r
}\r
CloseSubKey(hKey4);\r
}\r
// 暗号化通信対応\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
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
DecodePassword(Str, Host.PrivateKey);\r
// 同時接続対応\r
ReadIntValueFromReg(hKey5, "ThreadCount", &Host.MaxThreadCount);\r
+ ReadIntValueFromReg(hKey5, "ReuseCmdSkt", &Host.ReuseCmdSkt);\r
+ // 1.98d以前で同時接続数が1より大きい場合はソケットの再利用なし\r
+ if(Version < 1985)\r
+ {\r
+ if(Host.MaxThreadCount > 1)\r
+ Host.ReuseCmdSkt = NO;\r
+ }\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
\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
+ ReadIntValueFromReg(hKey4, "ListIcon", &DispFileIcon);\r
\r
CloseSubKey(hKey4);\r
}\r
{\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
{\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
\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
Sts = FFFTP_SUCCESS;\r
if(!CheckStringM(Str))\r
break;\r
- Str = Str;\r
// UTF-8ではない可能性がある\r
// Shift_JISとみなす\r
case KANJI_SJIS:\r
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