static void SaveCurrentSetToHistory(void);\r
static int ReConnectSkt(SOCKET *Skt);\r
// 暗号化通信対応\r
+// 同時接続対応\r
//static SOCKET DoConnect(char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security);\r
-static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security);\r
-static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security);\r
+static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security, int *CancelCheckWork);\r
+static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security, int *CancelCheckWork);\r
static int CheckOneTimePassword(char *Pass, char *Reply, int Type);\r
static BOOL CALLBACK BlkHookFnc(void);\r
static int Socks5MakeCmdPacket(SOCKS5REQUEST *Packet, char Cmd, int ValidIP, ulong IP, char *Host, ushort Port);\r
static int SocksSendCmd(SOCKET Socket, void *Data, int Size, int *CancelCheckWork);\r
-static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet);\r
-static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet);\r
+// 同時接続対応\r
+//static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet);\r
+static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet, int *CancelCheckWork);\r
+// 同時接続対応\r
+//static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet);\r
+static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet, int *CancelCheckWork);\r
static int Socks5SelMethod(SOCKET Socket, int *CancelCheckWork);\r
\r
/*===== 外部参照 =====*/\r
static SOCKET CmdCtrlSocket = INVALID_SOCKET;\r
static SOCKET TrnCtrlSocket = INVALID_SOCKET;\r
static HOSTDATA CurHost;\r
+// UTF-8対応\r
+static int TmpNameKanjiCode;\r
\r
/* 接続中の接続先、SOCKSサーバのアドレス情報を保存しておく */\r
/* この情報はlistenソケットを取得する際に用いる */\r
\r
InitPWDcommand();\r
CopyHostFromList(AskCurrentHost(), &CurHost);\r
+ // UTF-8対応\r
+ TmpNameKanjiCode = CurHost.NameKanjiCode;\r
\r
if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
{\r
\r
DisableUserOpe();\r
// 暗号化通信対応\r
+ // 同時接続対応\r
// CmdCtrlSocket = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, Save, CurHost.Security);\r
- CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, Save, CurHost.Security);\r
+ CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, Save, CurHost.Security, &CancelFlg);\r
TrnCtrlSocket = CmdCtrlSocket;\r
\r
+ // UTF-8対応\r
+ if(TmpNameKanjiCode == KANJI_AUTO)\r
+ {\r
+ if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
+ {\r
+ SetCache(999, "");\r
+ TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ }\r
+ }\r
+\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
{\r
strcpy(TitleHostName, CurHost.HostName);\r
\r
InitPWDcommand();\r
CopyDefaultHost(&CurHost);\r
+ // UTF-8対応\r
+ TmpNameKanjiCode = CurHost.NameKanjiCode;\r
if(SplitUNCpath(Tmp, CurHost.HostAdrs, CurHost.RemoteInitDir, File, CurHost.UserName, CurHost.PassWord, &CurHost.Port) == FFFTP_SUCCESS)\r
{\r
if(strlen(CurHost.UserName) == 0)\r
\r
DisableUserOpe();\r
// 暗号化通信対応\r
+ // 同時接続対応\r
// CmdCtrlSocket = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
- CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
+ CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, &CancelFlg);\r
TrnCtrlSocket = CmdCtrlSocket;\r
\r
+ // UTF-8対応\r
+ if(TmpNameKanjiCode == KANJI_AUTO)\r
+ {\r
+ if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
+ {\r
+ SetCache(999, "");\r
+ TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ }\r
+ }\r
+\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
{\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
CurHost.KanaCnv = Kana;\r
CurHost.NameKanjiCode = Fkanji;\r
CurHost.KanaCnv = YES; /* とりあえず */\r
+ // UTF-8対応\r
+ TmpNameKanjiCode = CurHost.NameKanjiCode;\r
\r
SetHostKanaCnvImm(CurHost.KanaCnv);\r
SetHostKanjiCodeImm(CurHost.KanjiCode);\r
\r
DisableUserOpe();\r
// 暗号化通信対応\r
+ // 同時接続対応\r
// CmdCtrlSocket = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
- CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
+ CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, &CancelFlg);\r
TrnCtrlSocket = CmdCtrlSocket;\r
\r
+ // UTF-8対応\r
+ if(TmpNameKanjiCode == KANJI_AUTO)\r
+ {\r
+ if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
+ {\r
+ SetCache(999, "");\r
+ TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ }\r
+ }\r
+\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
{\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
\r
InitPWDcommand();\r
CopyHistoryToHost(&Hist, &CurHost);\r
+ // UTF-8対応\r
+ TmpNameKanjiCode = CurHost.NameKanjiCode;\r
\r
if(ConnectRas(CurHost.Dialup, CurHost.DialupAlways, CurHost.DialupNotify, CurHost.DialEntry) == FFFTP_SUCCESS)\r
{\r
\r
DisableUserOpe();\r
// 暗号化通信対応\r
+ // 同時接続対応\r
// CmdCtrlSocket = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
- CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security);\r
+ CmdCtrlSocket = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, &CancelFlg);\r
TrnCtrlSocket = CmdCtrlSocket;\r
\r
+ // UTF-8対応\r
+ if(TmpNameKanjiCode == KANJI_AUTO)\r
+ {\r
+ if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
+ {\r
+ SetCache(999, "");\r
+ TmpNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ }\r
+ }\r
+\r
if(CmdCtrlSocket != INVALID_SOCKET)\r
{\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
\r
int AskHostNameKanji(void)\r
{\r
- if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
- CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
-\r
- return(CurHost.NameKanjiCode);\r
+ // UTF-8対応\r
+// if(AskCurrentHost() != HOSTNUM_NOENTRY)\r
+// CopyHostFromListInConnect(AskCurrentHost(), &CurHost);\r
+//\r
+// return(CurHost.NameKanjiCode);\r
+ return(TmpNameKanjiCode);\r
}\r
\r
\r
int ReConnectCmdSkt(void)\r
{\r
int Sts;\r
- SOCKET s;\r
\r
\r
// 同時接続対応\r
// if(CmdCtrlSocket != TrnCtrlSocket)\r
-// do_closesocket(TrnCtrlSocket);\r
-// TrnCtrlSocket = INVALID_SOCKET;\r
- s = TrnCtrlSocket;\r
+ if(CmdCtrlSocket != TrnCtrlSocket && TrnCtrlSocket != INVALID_SOCKET)\r
+ do_closesocket(TrnCtrlSocket);\r
TrnCtrlSocket = INVALID_SOCKET;\r
- if(CmdCtrlSocket != s && s != INVALID_SOCKET)\r
- do_closesocket(s);\r
\r
- // 同時接続対応\r
-// Sts = ReConnectSkt(&CmdCtrlSocket);\r
- s = CmdCtrlSocket;\r
- CmdCtrlSocket = INVALID_SOCKET;\r
- Sts = ReConnectSkt(&s);\r
- CmdCtrlSocket = s;\r
+ Sts = ReConnectSkt(&CmdCtrlSocket);\r
\r
TrnCtrlSocket = CmdCtrlSocket;\r
\r
// return(ReConnectSkt(&TrnCtrlSocket));\r
//}\r
// 同時接続対応\r
-int ReConnectTrnSkt(SOCKET *Skt)\r
+int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork)\r
{\r
// char Path[FMAX_PATH+1];\r
int Sts;\r
HostData.UseFTPIS = NO;\r
if(HostData.CryptMode != CRYPT_SFTP)\r
HostData.UseSFTP = NO;\r
+ // 暗号化通信対応\r
+ // 同時接続対応\r
// if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
- if((*Skt = DoConnect(&HostData, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
+ if((*Skt = DoConnect(&HostData, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, CancelCheckWork)) != INVALID_SOCKET)\r
{\r
// AskRemoteCurDir(Path, FMAX_PATH);\r
// DoCWD(Path, YES, YES, YES);\r
do_closesocket(*Skt);\r
/* 再接続 */\r
// 暗号化通信対応\r
+ // 同時接続対応\r
// if((*Skt = DoConnect(CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
- if((*Skt = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security)) != INVALID_SOCKET)\r
+ if((*Skt = DoConnect(&CurHost, CurHost.HostAdrs, CurHost.UserName, CurHost.PassWord, CurHost.Account, CurHost.Port, CurHost.FireWall, NO, CurHost.Security, &CancelFlg)) != INVALID_SOCKET)\r
{\r
AskRemoteCurDir(Path, FMAX_PATH);\r
DoCWD(Path, YES, YES, YES);\r
*----------------------------------------------------------------------------*/\r
\r
// 暗号化通信対応\r
-static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security)\r
+static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security, int *CancelCheckWork)\r
{\r
int Sts;\r
int Flg;\r
Fwall = FWALL_NONE;\r
\r
TryConnect = YES;\r
- CancelFlg = NO;\r
+ // 暗号化通信対応\r
+// CancelFlg = NO;\r
#if 0\r
// WSASetBlockingHook(BlkHookFnc);\r
#endif\r
\r
if(strlen(Tmp) != 0)\r
{\r
- if((ContSock = connectsock(Tmp, Port, "", &CancelFlg)) != INVALID_SOCKET)\r
+ // 同時接続対応\r
+// if((ContSock = connectsock(Tmp, Port, "", &CancelFlg)) != INVALID_SOCKET)\r
+ if((ContSock = connectsock(Tmp, Port, "", CancelCheckWork)) != INVALID_SOCKET)\r
{\r
// バッファを無効\r
#ifdef DISABLE_CONTROL_NETWORK_BUFFERS\r
// ;\r
if(CryptMode == CRYPT_FTPIS)\r
{\r
- if(AttachSSL(ContSock))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
{\r
- while((Sts = ReadReplyMessage(ContSock, Buf, 1024, &CancelFlg, TmpBuf) / 100) == FTP_PRELIM)\r
+ while((Sts = ReadReplyMessage(ContSock, Buf, 1024, CancelCheckWork, TmpBuf) / 100) == FTP_PRELIM)\r
;\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "PBSZ 0")) == 200)\r
- {\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "PROT P")) == 200)\r
- {\r
- }\r
- else\r
- Sts = FTP_ERROR;\r
- }\r
- else\r
- Sts = FTP_ERROR;\r
}\r
else\r
Sts = FTP_ERROR;\r
}\r
else\r
{\r
- while((Sts = ReadReplyMessage(ContSock, Buf, 1024, &CancelFlg, TmpBuf) / 100) == FTP_PRELIM)\r
+ while((Sts = ReadReplyMessage(ContSock, Buf, 1024, CancelCheckWork, TmpBuf) / 100) == FTP_PRELIM)\r
;\r
}\r
\r
(Fwall == FWALL_FU_FP_USER) ||\r
(Fwall == FWALL_FU_FP))\r
{\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "USER %s", FwallUser) / 100) == FTP_CONTINUE)\r
+ // 同時接続対応\r
+// if((Sts = command(ContSock, Reply, &CancelFlg, "USER %s", FwallUser) / 100) == FTP_CONTINUE)\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "USER %s", FwallUser) / 100) == FTP_CONTINUE)\r
{\r
CheckOneTimePassword(FwallPass, Reply, FwallSecurity);\r
- Sts = command(ContSock, NULL, &CancelFlg, "PASS %s", Reply) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, NULL, &CancelFlg, "PASS %s", Reply) / 100;\r
+ Sts = command(ContSock, NULL, CancelCheckWork, "PASS %s", Reply) / 100;\r
}\r
}\r
else if(Fwall == FWALL_SIDEWINDER)\r
{\r
- Sts = command(ContSock, Reply, &CancelFlg, "USER %s:%s%c%s", FwallUser, FwallPass, FwallDelimiter, Host) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, Reply, &CancelFlg, "USER %s:%s%c%s", FwallUser, FwallPass, FwallDelimiter, Host) / 100;\r
+ Sts = command(ContSock, Reply, CancelCheckWork, "USER %s:%s%c%s", FwallUser, FwallPass, FwallDelimiter, Host) / 100;\r
}\r
if((Sts != FTP_COMPLETE) && (Sts != FTP_CONTINUE))\r
{\r
Flg++;\r
\r
if(HostPort == PORT_NOR)\r
- Sts = command(ContSock, NULL, &CancelFlg, "%s %s", SiteTbl[Flg], Host) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, NULL, &CancelFlg, "%s %s", SiteTbl[Flg], Host) / 100;\r
+ Sts = command(ContSock, NULL, CancelCheckWork, "%s %s", SiteTbl[Flg], Host) / 100;\r
else\r
- Sts = command(ContSock, NULL, &CancelFlg, "%s %s %d", SiteTbl[Flg], Host, HostPort) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, NULL, &CancelFlg, "%s %s %d", SiteTbl[Flg], Host, HostPort) / 100;\r
+ Sts = command(ContSock, NULL, CancelCheckWork, "%s %s %d", SiteTbl[Flg], Host, HostPort) / 100;\r
}\r
\r
if((Sts != FTP_COMPLETE) && (Sts != FTP_CONTINUE))\r
// FTPES対応\r
if(CryptMode == CRYPT_FTPES)\r
{\r
- if(IsOpenSSLLoaded() && (Sts = command(ContSock, Reply, &CancelFlg, "AUTH TLS")) == 234)\r
+ if(IsOpenSSLLoaded() && (Sts = command(ContSock, Reply, CancelCheckWork, "AUTH TLS")) == 234)\r
{\r
- if(AttachSSL(ContSock))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
{\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "PBSZ 0")) == 200)\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "PBSZ 0")) == 200)\r
{\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "PROT P")) == 200)\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "PROT P")) == 200)\r
{\r
}\r
else\r
if(Sts == FTP_ERROR)\r
break;\r
Continue = NO;\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "USER %s", Buf) / 100) == FTP_CONTINUE)\r
+ // 同時接続対応\r
+// if((Sts = command(ContSock, Reply, &CancelFlg, "USER %s", Buf) / 100) == FTP_CONTINUE)\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "USER %s", Buf) / 100) == FTP_CONTINUE)\r
{\r
if((strlen(Pass) != 0) || \r
(InputDialogBox(passwd_dlg, GetMainHwnd(), NULL, Pass, PASSWORD_LEN+1, &Anony, IDH_HELP_TOPIC_0000001) == YES))\r
if(strcmp(Reply, " ") == 0)\r
strcpy(Reply, "");\r
\r
- Sts = command(ContSock, NULL, &CancelFlg, "PASS %s", Reply) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, NULL, &CancelFlg, "PASS %s", Reply) / 100;\r
+ Sts = command(ContSock, NULL, CancelCheckWork, "PASS %s", Reply) / 100;\r
if(Sts == FTP_ERROR)\r
{\r
strcpy(Pass, "");\r
if((strlen(Acct) != 0) || \r
(InputDialogBox(account_dlg, GetMainHwnd(), NULL, Acct, ACCOUNT_LEN+1, &Anony, IDH_HELP_TOPIC_0000001) == YES))\r
{\r
- Sts = command(ContSock, NULL, &CancelFlg, "ACCT %s", Acct) / 100;\r
+ // 同時接続対応\r
+// Sts = command(ContSock, NULL, &CancelFlg, "ACCT %s", Acct) / 100;\r
+ Sts = command(ContSock, NULL, CancelCheckWork, "ACCT %s", Acct) / 100;\r
}\r
else\r
DoPrintf("No account specified");\r
// ホストの機能を確認\r
if(ContSock != INVALID_SOCKET)\r
{\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "FEAT")) == 211)\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "FEAT")) == 211)\r
{\r
// 改行文字はReadReplyMessageで消去されるため区切り文字に空白を使用\r
// UTF-8対応\r
HostData->Feature |= FEATURE_EPRT | FEATURE_EPSV;\r
}\r
// UTF-8対応\r
- if(HostData->NameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
+ if(TmpNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
{\r
- if((Sts = command(ContSock, Reply, &CancelFlg, "OPTS UTF8 ON")) == 200)\r
- {\r
- }\r
+ if((Sts = command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON")) == 200)\r
+ TmpNameKanjiCode = KANJI_UTF8N;\r
}\r
}\r
}\r
return(ContSock);\r
}\r
\r
-static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security)\r
+// 同時接続対応\r
+//static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security)\r
+static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass, char *Acct, int Port, int Fwall, int SavePass, int Security, int *CancelCheckWork)\r
{\r
SOCKET ContSock;\r
ContSock = INVALID_SOCKET;\r
- if(ContSock == INVALID_SOCKET && HostData->UseSFTP == YES)\r
+ *CancelCheckWork = NO;\r
+ if(*CancelCheckWork == NO && ContSock == INVALID_SOCKET && HostData->UseSFTP == YES)\r
{\r
SetTaskMsg(MSGJPN317);\r
- if((ContSock = DoConnectCrypt(CRYPT_SFTP, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security)) != INVALID_SOCKET)\r
+ if((ContSock = DoConnectCrypt(CRYPT_SFTP, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security, CancelCheckWork)) != INVALID_SOCKET)\r
HostData->CryptMode = CRYPT_SFTP;\r
}\r
-// if(ContSock == INVALID_SOCKET && HostData->UseFTPIS == YES)\r
-// {\r
-// SetTaskMsg(MSGJPN316);\r
-// if((ContSock = DoConnectCrypt(CRYPT_FTPIS, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security)) != INVALID_SOCKET)\r
-// HostData->CryptMode = CRYPT_FTPIS;\r
-// }\r
- if(ContSock == INVALID_SOCKET && HostData->UseFTPES == YES)\r
+ if(*CancelCheckWork == NO && ContSock == INVALID_SOCKET && HostData->UseFTPIS == YES)\r
+ {\r
+ SetTaskMsg(MSGJPN316);\r
+ if((ContSock = DoConnectCrypt(CRYPT_FTPIS, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security, CancelCheckWork)) != INVALID_SOCKET)\r
+ HostData->CryptMode = CRYPT_FTPIS;\r
+ }\r
+ if(*CancelCheckWork == NO && ContSock == INVALID_SOCKET && HostData->UseFTPES == YES)\r
{\r
SetTaskMsg(MSGJPN315);\r
- if((ContSock = DoConnectCrypt(CRYPT_FTPES, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security)) != INVALID_SOCKET)\r
+ if((ContSock = DoConnectCrypt(CRYPT_FTPES, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security, CancelCheckWork)) != INVALID_SOCKET)\r
HostData->CryptMode = CRYPT_FTPES;\r
}\r
- if(ContSock == INVALID_SOCKET && HostData->UseNoEncryption == YES)\r
+ if(*CancelCheckWork == NO && ContSock == INVALID_SOCKET && HostData->UseNoEncryption == YES)\r
{\r
SetTaskMsg(MSGJPN314);\r
- if((ContSock = DoConnectCrypt(CRYPT_NONE, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security)) != INVALID_SOCKET)\r
+ if((ContSock = DoConnectCrypt(CRYPT_NONE, HostData, Host, User, Pass, Acct, Port, Fwall, SavePass, Security, CancelCheckWork)) != INVALID_SOCKET)\r
HostData->CryptMode = CRYPT_NONE;\r
}\r
return ContSock;\r
if(Fwall == FWALL_SOCKS4)\r
{\r
Socks4Reply.Result = -1;\r
+ // 同時接続対応\r
+// if((SocksSendCmd(sSocket, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (Socks4GetCmdReply(sSocket, &Socks4Reply) != FFFTP_SUCCESS) || \r
+// (Socks4Reply.Result != SOCKS4_RES_OK))\r
if((SocksSendCmd(sSocket, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (Socks4GetCmdReply(sSocket, &Socks4Reply) != FFFTP_SUCCESS) || \r
+ (Socks4GetCmdReply(sSocket, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
SetTaskMsg(MSGJPN023, Socks4Reply.Result);\r
}\r
\r
Socks5Reply.Result = -1;\r
+ // 同時接続対応\r
+// if((SocksSendCmd(sSocket, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (Socks5GetCmdReply(sSocket, &Socks5Reply) != FFFTP_SUCCESS) || \r
+// (Socks5Reply.Result != SOCKS5_RES_OK))\r
if((SocksSendCmd(sSocket, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (Socks5GetCmdReply(sSocket, &Socks5Reply) != FFFTP_SUCCESS) || \r
+ (Socks5GetCmdReply(sSocket, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
SetTaskMsg(MSGJPN024, Socks5Reply.Result);\r
Len = offsetof(SOCKS4CMD, UserID) + strlen(FwallUser) + 1;\r
\r
Socks4Reply.Result = -1;\r
+ // 同時接続対応\r
+// if((SocksSendCmd(listen_skt, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (Socks4GetCmdReply(listen_skt, &Socks4Reply) != FFFTP_SUCCESS) || \r
+// (Socks4Reply.Result != SOCKS4_RES_OK))\r
if((SocksSendCmd(listen_skt, &Socks4Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (Socks4GetCmdReply(listen_skt, &Socks4Reply) != FFFTP_SUCCESS) || \r
+ (Socks4GetCmdReply(listen_skt, &Socks4Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks4Reply.Result != SOCKS4_RES_OK))\r
{\r
SetTaskMsg(MSGJPN028, Socks4Reply.Result);\r
Len = Socks5MakeCmdPacket(&Socks5Cmd, SOCKS5_CMD_BIND, UseIPadrs, CurSockAddr.sin_addr.s_addr, DomainName, CurSockAddr.sin_port);\r
\r
Socks5Reply.Result = -1;\r
+ // 同時接続対応\r
+// if((SocksSendCmd(listen_skt, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (Socks5GetCmdReply(listen_skt, &Socks5Reply) != FFFTP_SUCCESS) || \r
+// (Socks5Reply.Result != SOCKS5_RES_OK))\r
if((SocksSendCmd(listen_skt, &Socks5Cmd, Len, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (Socks5GetCmdReply(listen_skt, &Socks5Reply) != FFFTP_SUCCESS) || \r
+ (Socks5GetCmdReply(listen_skt, &Socks5Reply, CancelCheckWork) != FFFTP_SUCCESS) || \r
(Socks5Reply.Result != SOCKS5_RES_OK))\r
{\r
SetTaskMsg(MSGJPN029, Socks5Reply.Result);\r
if(listen_skt != INVALID_SOCKET)\r
{\r
#define UC(b) (((int)b)&0xff)\r
- if((command(ctrl_skt,NULL, &CancelFlg, "PORT %d,%d,%d,%d,%d,%d",\r
+ // 同時接続対応\r
+// if((command(ctrl_skt,NULL, &CancelFlg, "PORT %d,%d,%d,%d,%d,%d",\r
+// UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),\r
+// UC(p[0]), UC(p[1])) / 100) != FTP_COMPLETE)\r
+ if((command(ctrl_skt,NULL, CancelCheckWork, "PORT %d,%d,%d,%d,%d,%d",\r
UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),\r
UC(p[0]), UC(p[1])) / 100) != FTP_COMPLETE)\r
{\r
* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
-static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet)\r
+// 同時接続対応\r
+//static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet)\r
+static int Socks5GetCmdReply(SOCKET Socket, SOCKS5REPLY *Packet, int *CancelCheckWork)\r
{\r
uchar *Pos;\r
int Len;\r
Pos = (uchar *)Packet;\r
Pos += SOCKS5REPLY_SIZE;\r
\r
- if((Ret = ReadNchar(Socket, (char *)Packet, SOCKS5REPLY_SIZE, &CancelFlg)) == FFFTP_SUCCESS)\r
+ // 同時接続対応\r
+// if((Ret = ReadNchar(Socket, (char *)Packet, SOCKS5REPLY_SIZE, &CancelFlg)) == FFFTP_SUCCESS)\r
+ if((Ret = ReadNchar(Socket, (char *)Packet, SOCKS5REPLY_SIZE, CancelCheckWork)) == FFFTP_SUCCESS)\r
{\r
if(Packet->Type == SOCKS5_ADRS_IPV4)\r
Len = 4 + 2;\r
Len = 6 + 2;\r
else\r
{\r
- if((Ret = ReadNchar(Socket, (char *)Pos, 1, &CancelFlg)) == FFFTP_SUCCESS)\r
+ // 同時接続対応\r
+// if((Ret = ReadNchar(Socket, (char *)Pos, 1, &CancelFlg)) == FFFTP_SUCCESS)\r
+ if((Ret = ReadNchar(Socket, (char *)Pos, 1, CancelCheckWork)) == FFFTP_SUCCESS)\r
{\r
Len = *Pos + 2;\r
Pos++;\r
}\r
\r
if(Ret == FFFTP_SUCCESS)\r
- Ret = ReadNchar(Socket, (char *)Pos, Len, &CancelFlg);\r
+ // 同時接続対応\r
+// Ret = ReadNchar(Socket, (char *)Pos, Len, &CancelFlg);\r
+ Ret = ReadNchar(Socket, (char *)Pos, Len, CancelCheckWork);\r
}\r
\r
if(Ret != FFFTP_SUCCESS)\r
* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
-static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet)\r
+// 同時接続対応\r
+//static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet)\r
+static int Socks4GetCmdReply(SOCKET Socket, SOCKS4REPLY *Packet, int *CancelCheckWork)\r
{\r
int Ret;\r
\r
- Ret = ReadNchar(Socket, (char *)Packet, SOCKS4REPLY_SIZE, &CancelFlg);\r
+ // 同時接続対応\r
+// Ret = ReadNchar(Socket, (char *)Packet, SOCKS4REPLY_SIZE, &CancelFlg);\r
+ Ret = ReadNchar(Socket, (char *)Packet, SOCKS4REPLY_SIZE, CancelCheckWork);\r
\r
if(Ret != FFFTP_SUCCESS)\r
DoPrintf(MSGJPN035);\r
else\r
Socks5Method.Methods[0] = SOCKS5_AUTH_USER;\r
\r
+ // 同時接続対応\r
+// if((SocksSendCmd(Socket, &Socks5Method, SOCKS5METHODREQUEST_SIZE, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (ReadNchar(Socket, (char *)&Socks5MethodReply, SOCKS5METHODREPLY_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
+// (Socks5MethodReply.Method == (uchar)0xFF))\r
if((SocksSendCmd(Socket, &Socks5Method, SOCKS5METHODREQUEST_SIZE, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (ReadNchar(Socket, (char *)&Socks5MethodReply, SOCKS5METHODREPLY_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
+ (ReadNchar(Socket, (char *)&Socks5MethodReply, SOCKS5METHODREPLY_SIZE, CancelCheckWork) != FFFTP_SUCCESS) ||\r
(Socks5MethodReply.Method == (uchar)0xFF))\r
{\r
SetTaskMsg(MSGJPN036);\r
Buf[2 + Len] = Len2;\r
strcpy(Buf+3+Len, FwallPass);\r
\r
+ // 同時接続対応\r
+// if((SocksSendCmd(Socket, &Buf, Len+Len2+3, CancelCheckWork) != FFFTP_SUCCESS) ||\r
+// (ReadNchar(Socket, (char *)&Socks5Status, SOCKS5USERPASSSTATUS_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
+// (Socks5Status.Status != 0))\r
if((SocksSendCmd(Socket, &Buf, Len+Len2+3, CancelCheckWork) != FFFTP_SUCCESS) ||\r
- (ReadNchar(Socket, (char *)&Socks5Status, SOCKS5USERPASSSTATUS_SIZE, &CancelFlg) != FFFTP_SUCCESS) ||\r
+ (ReadNchar(Socket, (char *)&Socks5Status, SOCKS5USERPASSSTATUS_SIZE, CancelCheckWork) != FFFTP_SUCCESS) ||\r
(Socks5Status.Status != 0))\r
{\r
SetTaskMsg(MSGJPN037);\r
* int ステータス (FFFTP_SUCCESS/FFFTP_FAIL)\r
*----------------------------------------------------------------------------*/\r
\r
-int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data)\r
+// 同時接続対応\r
+//int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data)\r
+int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data, int *CancelCheckWork)\r
{\r
int Ret;\r
char Buf[300];\r
Ret = FFFTP_FAIL;\r
if((AskHostFireWall() == YES) && (FwallType == FWALL_SOCKS4))\r
{\r
- Socks4GetCmdReply(Socket, (SOCKS4REPLY *)Buf);\r
+ // 同時接続対応\r
+// Socks4GetCmdReply(Socket, (SOCKS4REPLY *)Buf);\r
+ Socks4GetCmdReply(Socket, (SOCKS4REPLY *)Buf, CancelCheckWork);\r
*Data = Socket;\r
Ret = FFFTP_SUCCESS;\r
}\r
else if((AskHostFireWall() == YES) &&\r
((FwallType == FWALL_SOCKS5_NOAUTH) || (FwallType == FWALL_SOCKS5_USER)))\r
{\r
- Socks5GetCmdReply(Socket, (SOCKS5REPLY *)Buf);\r
+ // 同時接続対応\r
+// Socks5GetCmdReply(Socket, (SOCKS5REPLY *)Buf);\r
+ Socks5GetCmdReply(Socket, (SOCKS5REPLY *)Buf, CancelCheckWork);\r
*Data = Socket;\r
Ret = FFFTP_SUCCESS;\r
}\r
return(CurHost.UseSFTP);\r
}\r
\r
+char *AskPrivateKey(void)\r
+{\r
+ return(CurHost.PrivateKey);\r
+}\r
+\r
// 同時接続対応\r
int AskMaxThreadCount(void)\r
{\r