extern int FwallType;\r
extern int FwallDefault;\r
extern int FwallSecurity;\r
-extern int FwallResolv;\r
+extern int FwallResolve;\r
extern int FwallLower;\r
extern int FwallDelimiter;\r
extern int PasvDefault;\r
extern int QuickAnonymous;\r
// 切断対策\r
extern int TimeOut;\r
+// UPnP対応\r
+extern int UPnPEnabled;\r
\r
/*===== ローカルなワーク =====*/\r
\r
{\r
if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ switch(CurHost.CurNameKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN345);\r
+ break;\r
+ case KANJI_JIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN346);\r
+ break;\r
+ case KANJI_EUC:\r
+ SetTaskMsg(MSGJPN343, MSGJPN347);\r
+ break;\r
+ case KANJI_UTF8N:\r
+ SetTaskMsg(MSGJPN343, MSGJPN348);\r
+ break;\r
+ case KANJI_UTF8HFSX:\r
+ SetTaskMsg(MSGJPN343, MSGJPN349);\r
+ break;\r
+ default:\r
+ SetTaskMsg(MSGJPN344);\r
+ break;\r
+ }\r
}\r
\r
strcpy(TitleHostName, CurHost.HostName);\r
{\r
if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ switch(CurHost.CurNameKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN345);\r
+ break;\r
+ case KANJI_JIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN346);\r
+ break;\r
+ case KANJI_EUC:\r
+ SetTaskMsg(MSGJPN343, MSGJPN347);\r
+ break;\r
+ case KANJI_UTF8N:\r
+ SetTaskMsg(MSGJPN343, MSGJPN348);\r
+ break;\r
+ case KANJI_UTF8HFSX:\r
+ SetTaskMsg(MSGJPN343, MSGJPN349);\r
+ break;\r
+ default:\r
+ SetTaskMsg(MSGJPN344);\r
+ break;\r
+ }\r
}\r
\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
{\r
if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ switch(CurHost.CurNameKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN345);\r
+ break;\r
+ case KANJI_JIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN346);\r
+ break;\r
+ case KANJI_EUC:\r
+ SetTaskMsg(MSGJPN343, MSGJPN347);\r
+ break;\r
+ case KANJI_UTF8N:\r
+ SetTaskMsg(MSGJPN343, MSGJPN348);\r
+ break;\r
+ case KANJI_UTF8HFSX:\r
+ SetTaskMsg(MSGJPN343, MSGJPN349);\r
+ break;\r
+ default:\r
+ SetTaskMsg(MSGJPN344);\r
+ break;\r
+ }\r
}\r
\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
{\r
if(DoDirListCmdSkt("", "", 999, &CancelFlg) == FTP_COMPLETE)\r
CurHost.CurNameKanjiCode = AnalyzeNameKanjiCode(999);\r
+ switch(CurHost.CurNameKanjiCode)\r
+ {\r
+ case KANJI_SJIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN345);\r
+ break;\r
+ case KANJI_JIS:\r
+ SetTaskMsg(MSGJPN343, MSGJPN346);\r
+ break;\r
+ case KANJI_EUC:\r
+ SetTaskMsg(MSGJPN343, MSGJPN347);\r
+ break;\r
+ case KANJI_UTF8N:\r
+ SetTaskMsg(MSGJPN343, MSGJPN348);\r
+ break;\r
+ case KANJI_UTF8HFSX:\r
+ SetTaskMsg(MSGJPN343, MSGJPN349);\r
+ break;\r
+ default:\r
+ SetTaskMsg(MSGJPN344);\r
+ break;\r
+ }\r
}\r
\r
strcpy(TitleHostName, CurHost.HostAdrs);\r
// ;\r
if(CryptMode == CRYPT_FTPIS)\r
{\r
- if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork, HostData->NoWeakEncryption))\r
{\r
while((Sts = ReadReplyMessage(ContSock, Buf, 1024, CancelCheckWork, TmpBuf) / 100) == FTP_PRELIM)\r
;\r
{\r
if(IsOpenSSLLoaded() && ((Sts = command(ContSock, Reply, CancelCheckWork, "AUTH TLS")) == 234 || (Sts = command(ContSock, Reply, CancelCheckWork, "AUTH SSL")) == 234))\r
{\r
- if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
+ if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork, HostData->NoWeakEncryption))\r
{\r
if((Sts = command(ContSock, Reply, CancelCheckWork, "PBSZ 0")) == 200)\r
{\r
// UTF-8対応\r
if(HostData->CurNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
{\r
- if((Sts = command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON")) == 200)\r
- HostData->CurNameKanjiCode = KANJI_UTF8N;\r
- }\r
- }\r
- }\r
- else if(CryptMode == CRYPT_SFTP)\r
- {\r
- // TODO:\r
- // テストコード\r
- // ログイン成功を確認\r
-#define strrcmp(_Str1, _Str2) (strcmp(strstr(_Str1, _Str2) ? strstr(_Str1, _Str2) : "", _Str2))\r
- size_t r;\r
- ContSock = SFTP_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);\r
- SFTP_SetTimeoutCallback(ContSock, SSLTimeoutCallback);\r
- while(1)\r
- {\r
- r = SFTP_recv(ContSock, Reply, 1024, 0);\r
- if(r == SOCKET_ERROR)\r
- break;\r
- if(r <= 0)\r
- continue;\r
- Reply[r] = '\0';\r
- SetTaskMsg("%s", Reply);\r
- if(strrcmp(Reply, "psftp> ") == 0)\r
- break;\r
- }\r
- r = SFTP_send(ContSock, "open \"", strlen("open \""), 0);\r
- r = SFTP_send(ContSock, Host, strlen(Host), 0);\r
- r = SFTP_send(ContSock, "\"\r\n", strlen("\"\r\n"), 0);\r
- while(1)\r
- {\r
- r = SFTP_recv(ContSock, Reply, 1024, 0);\r
- if(r == SOCKET_ERROR)\r
- break;\r
- if(r <= 0)\r
- continue;\r
- Reply[r] = '\0';\r
- SetTaskMsg("%s", Reply);\r
- if(strrcmp(Reply, "Store key in cache? (y/n) ") == 0)\r
- {\r
- r = SFTP_send(ContSock, "n\r\n", strlen("n\r\n"), 0);\r
- }\r
- if(strrcmp(Reply, "Update cached key? (y/n, Return cancels connection) ") == 0)\r
- {\r
- r = SFTP_send(ContSock, "\r\n", strlen("\r\n"), 0);\r
- }\r
- if(strrcmp(Reply, "login as: ") == 0)\r
- {\r
- r = SFTP_send(ContSock, User, strlen(User), 0);\r
- r = SFTP_send(ContSock, "\r\n", strlen("\r\n"), 0);\r
+ // UTF-8を指定した場合も自動判別を行う\r
+// if((Sts = command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON")) == 200)\r
+// HostData->CurNameKanjiCode = KANJI_UTF8N;\r
+ command(ContSock, Reply, CancelCheckWork, "OPTS UTF8 ON");\r
}\r
- if(strrcmp(Reply, "password: ") == 0)\r
- {\r
- r = SFTP_send(ContSock, Pass, strlen(Pass), 0);\r
- r = SFTP_send(ContSock, "\r\n", strlen("\r\n"), 0);\r
- }\r
- if(strrcmp(Reply, "psftp> ") == 0)\r
- break;\r
- Sleep(1);\r
}\r
- SFTP_closesocket(ContSock);\r
- ContSock = INVALID_SOCKET;\r
}\r
\r
return(ContSock);\r
SOCKET ContSock;\r
ContSock = INVALID_SOCKET;\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, CancelCheckWork)) != INVALID_SOCKET)\r
- HostData->CryptMode = CRYPT_SFTP;\r
- }\r
if(*CancelCheckWork == NO && ContSock == INVALID_SOCKET && HostData->UseFTPIS == YES)\r
{\r
SetTaskMsg(MSGJPN316);\r
if((Type == MD4) || (Type == MD5) || (Type == SHA1))\r
{\r
/* シーケンス番号を見つけるループ */\r
- DoPrintf("Analize OTP");\r
+ DoPrintf("Analyze OTP");\r
DoPrintf("%s", Pos);\r
Sts = FFFTP_FAIL;\r
while((Pos = GetNextField(Pos)) != NULL)\r
// ホスト名が指定された\r
// ホスト名からアドレスを求める\r
if(((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER)) &&\r
- (FwallResolv == YES))\r
+ (FwallResolve == YES))\r
{\r
// ホスト名解決はSOCKSサーバに任せる\r
pHostEntry = NULL;\r
// ホスト名が指定された\r
// ホスト名からアドレスを求める\r
if(((Fwall == FWALL_SOCKS5_NOAUTH) || (Fwall == FWALL_SOCKS5_USER)) &&\r
- (FwallResolv == YES))\r
+ (FwallResolve == YES))\r
{\r
// ホスト名解決はSOCKSサーバに任せる\r
pHostEntry = NULL;\r
a = (char *)&saTmpAddr.sin_addr;\r
p = (char *)&saCtrlAddr.sin_port;\r
// UPnP対応\r
- if(IsUPnPLoaded() == YES)\r
+ if(IsUPnPLoaded() == YES && UPnPEnabled == YES)\r
{\r
if(AddPortMapping(AddressToStringIPv4(Adrs, &saTmpAddr.sin_addr), ntohs(saCtrlAddr.sin_port)) == FFFTP_SUCCESS)\r
SetAsyncTableDataMapPort(listen_skt, ntohs(saCtrlAddr.sin_port));\r
saCtrlAddr.sin6_port = htons(0);\r
saCtrlAddr.sin6_family = AF_INET6;\r
memset(&saCtrlAddr.sin6_addr, 0, 16);\r
+ saCtrlAddr.sin6_flowinfo = 0;\r
+ saCtrlAddr.sin6_scope_id = 0;\r
\r
if(bind(listen_skt, (struct sockaddr *)&saCtrlAddr, sizeof(struct sockaddr_in6)) != SOCKET_ERROR)\r
{\r
a = (char *)&saTmpAddr.sin6_addr;\r
p = (char *)&saCtrlAddr.sin6_port;\r
// UPnP対応\r
- if(IsUPnPLoaded() == YES)\r
+ if(IsUPnPLoaded() == YES && UPnPEnabled == YES)\r
{\r
if(AddPortMapping(AddressToStringIPv6(Adrs, &saTmpAddr.sin6_addr), ntohs(saCtrlAddr.sin6_port)) == FFFTP_SUCCESS)\r
SetAsyncTableDataMapPort(listen_skt, ntohs(saCtrlAddr.sin6_port));\r