OSDN Git Service

End the support for Windows XP and earlier.
[ffftp/ffftp.git] / connect.c
index 434f0a4..a26039d 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -235,6 +235,27 @@ void ConnectProc(int Type, int Num)
                                {\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
@@ -328,6 +349,27 @@ void QuickConnectProc(void)
                                {\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
@@ -516,6 +558,27 @@ void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode)
                        {\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
@@ -606,6 +669,27 @@ void HistoryConnectProc(int MenuCmd)
                                {\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
@@ -1569,7 +1653,7 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
 //                                     ;\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
@@ -1696,7 +1780,7 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
                                                                {\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
@@ -1865,68 +1949,12 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
                        // 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
@@ -1939,12 +1967,6 @@ static SOCKET DoConnect(HOSTDATA* HostData, char *Host, char *User, char *Pass,
        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
@@ -2873,6 +2895,8 @@ SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork)
                        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