#define FEATURE_EPRT 0x00000004\r
#define FEATURE_EPSV 0x00000008\r
\r
+// IPv6対応\r
+#define NTYPE_AUTO 0 /* 自動 */\r
+#define NTYPE_IPV4 1 /* TCP/IPv4 */\r
+#define NTYPE_IPV6 2 /* TCP/IPv6 */\r
+\r
// 暗号化通信対応\r
// REG_SECT_MAXの値を加味する必要がある\r
#define MAX_CERT_CACHE_HASH 256\r
int KanjiCode; /* ホストの漢字コード (KANJI_xxx) */\r
int KanaCnv; /* 半角カナを全角に変換(YES/NO) */\r
int NameKanjiCode; /* ファイル名の漢字コード (KANJI_xxx) */\r
+ // UTF-8対応\r
+ int CurNameKanjiCode; /* 自動判別後のファイル名の漢字コード (KANJI_xxx) */\r
int NameKanaCnv; /* ファイル名の半角カナを全角に変換(YES/NO) */\r
int Pasv; /* PASVモード (YES/NO) */\r
int FireWall; /* FireWallを使う (YES/NO) */\r
char PrivateKey[PRIVATE_KEY_LEN+1]; /* テキスト形式の秘密鍵 */\r
// 同時接続対応\r
int MaxThreadCount; /* 同時接続数 */\r
+ int ReuseCmdSkt; /* メインウィンドウのソケットを再利用する (YES/NO) */\r
// FEAT対応\r
int Feature; /* 利用可能な機能のフラグ (FEATURE_xxx) */\r
// MLSD対応\r
int UseMLSD; /* "MLSD"コマンドを使用する */\r
// IPv6対応\r
- int UseIPv6; /* IPv6接続を許可しEPRT/EPSVコマンドを使用する */\r
+ int NetType; /* ネットワークの種類 (NTYPE_xxx) */\r
+ int CurNetType; /* 接続中のネットワークの種類 (NTYPE_xxx) */\r
+ // 自動切断対策\r
+ int NoopInterval; /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/\r
+ // 再転送対応\r
+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */\r
+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
} HOSTDATA;\r
\r
\r
char PrivateKey[PRIVATE_KEY_LEN+1]; /* テキスト形式の秘密鍵 */\r
// 同時接続対応\r
int MaxThreadCount; /* 同時接続数 */\r
+ int ReuseCmdSkt; /* メインウィンドウのソケットを再利用する (YES/NO) */\r
// MLSD対応\r
int UseMLSD; /* "MLSD"コマンドを使用する */\r
// IPv6対応\r
- int UseIPv6; /* IPv6接続を許可しEPRT/EPSVコマンドを使用する */\r
+ int NetType; /* ネットワークの種類 (NTYPE_xxx) */\r
+ // 自動切断対策\r
+ int NoopInterval; /* NOOPコマンドを送信する間隔(秒数、0で無効)*/\r
+ // 再転送対応\r
+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */\r
+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
struct historydata *Next;\r
} HISTORYDATA;\r
\r
char Rsv; /* (予約) */\r
char Type; /* アドレスのタイプ */\r
/* 以後(可変長部分) */\r
- ulong AdrsInt; /* アドレス */\r
- ushort Port; /* ポート */\r
- char _dummy[2]; /* dummy */\r
+ // IPv6対応\r
+// ulong AdrsInt; /* アドレス */\r
+// ushort Port; /* ポート */\r
+// char _dummy[2]; /* dummy */\r
+ char _dummy[255+1+2]; /* dummy */\r
} SOCKS5REPLY;\r
\r
#define SOCKS5REPLY_SIZE 4 /* 最初の固定部分のサイズ */\r
// 暗号化通信対応\r
BOOL __stdcall SSLTimeoutCallback(BOOL* pbAborted);\r
BOOL __stdcall SSLConfirmCallback(BOOL* pbAborted, BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName);\r
+BOOL LoadSSLRootCAFile();\r
\r
/*===== filelist.c =====*/\r
\r
void CopyDefaultHost(HOSTDATA *Set);\r
int SearchHostName(char *Name);\r
void ImportFromWSFTP(void);\r
+// 暗号化通信対応\r
+int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
\r
/*===== connect.c =====*/\r
\r
void DisconnectSet(void);\r
int AskConnecting(void);\r
SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
+// IPv6対応\r
+SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
+SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
SOCKET GetFTPListenSocket(SOCKET ctrl_skt, int *CancelCheckWork);\r
+// IPv6対応\r
+SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork);\r
+SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork);\r
int AskTryingConnect(void);\r
// 同時接続対応\r
//int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
char *AskPrivateKey(void);\r
// 同時接続対応\r
int AskMaxThreadCount(void);\r
+int AskReuseCmdSkt(void);\r
// FEAT対応\r
int AskHostFeature(void);\r
// MLSD対応\r
int AskUseMLSD(void);\r
// IPv6対応\r
-int AskUseIPv6(void);\r
+int AskCurNetType(void);\r
+// 自動切断対策\r
+int AskNoopInterval(void);\r
+// 再転送対応\r
+int AskTransferErrorMode(void);\r
+int AskTransferErrorNotify(void);\r
\r
/*===== cache.c =====*/\r
\r
#if defined(HAVE_OPENVMS)\r
void ReformVMSDirName(char *DirName, int Flg);\r
#endif\r
+// 自動切断対策\r
+void NoopProc(void);\r
\r
/*===== local.c =====*/\r
\r
int MoveFileToTrashCan(char *Path);\r
LONGLONG MakeLongLong(DWORD High, DWORD Low);\r
char *MakeNumString(LONGLONG Num, char *Buf, BOOL Comma);\r
+// 異なるファイルが表示されるバグ修正\r
+char* MakeDistinguishableFileName(char* Out, char* In);\r
\r
/*===== dlgsize.c =====*/\r
\r
\r
int MakeSocketWin(HWND hWnd, HINSTANCE hInst);\r
void DeleteSocketWin(void);\r
-struct hostent *do_gethostbyname(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
+// IPv6対応\r
+//struct hostent *do_gethostbyname(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
+struct hostent *do_gethostbynameIPv4(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
+struct hostent *do_gethostbynameIPv6(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
SOCKET do_socket(int af, int type, int protocol);\r
int do_connect(SOCKET s, const struct sockaddr *name, int namelen, int *CancelCheckWork);\r
int do_closesocket(SOCKET s);\r