source: filezilla/trunk/fuentes/src/engine/sftpcontrolsocket.h @ 3185

Last change on this file since 3185 was 3185, checked in by jrpelegrina, 3 years ago

Update new version: 3.15.02

File size: 3.8 KB
Line 
1#ifndef __SFTPCONTROLSOCKET_H__
2#define __SFTPCONTROLSOCKET_H__
3
4#include "ControlSocket.h"
5
6enum class sftpEvent {
7        Unknown = -1,
8        Reply = 0,
9        Done,
10        Error,
11        Verbose,
12        Status,
13        Recv,
14        Send,
15        Close,
16        Request,
17        Listentry,
18        Transfer,
19        RequestPreamble,
20        RequestInstruction,
21        UsedQuotaRecv,
22        UsedQuotaSend,
23        KexAlgorithm,
24        KexHash,
25        KexCurve,
26        CipherClientToServer,
27        CipherServerToClient,
28        MacClientToServer,
29        MacServerToClient,
30        Hostkey,
31
32        max = Hostkey
33};
34
35enum sftpRequestTypes
36{
37        sftpReqPassword,
38        sftpReqHostkey,
39        sftpReqHostkeyChanged,
40        sftpReqUnknown
41};
42
43namespace fz {
44class process;
45}
46
47class CSftpInputThread;
48
49class CSftpControlSocket final : public CControlSocket, public CRateLimiterObject
50{
51public:
52        CSftpControlSocket(CFileZillaEnginePrivate & engine);
53        virtual ~CSftpControlSocket();
54
55        virtual int Connect(const CServer &server);
56
57        virtual int List(CServerPath path = CServerPath(), wxString subDir = _T(""), int flags = 0);
58        virtual int Delete(const CServerPath& path, std::deque<wxString>&& files);
59        virtual int RemoveDir(const CServerPath& path = CServerPath(), const wxString& subDir = _T(""));
60        virtual int Mkdir(const CServerPath& path);
61        virtual int Rename(const CRenameCommand& command);
62        virtual int Chmod(const CChmodCommand& command);
63        virtual void Cancel();
64
65        virtual bool Connected() { return m_pInputThread != 0; }
66
67        virtual bool SetAsyncRequestReply(CAsyncRequestNotification *pNotification);
68
69protected:
70        // Replaces filename"with"quotes with
71        // "filename""with""quotes"
72        wxString QuoteFilename(wxString filename);
73
74        virtual int DoClose(int nErrorCode = FZ_REPLY_DISCONNECTED);
75
76        virtual int ResetOperation(int nErrorCode);
77        virtual int SendNextCommand();
78        virtual int ParseSubcommandResult(int prevResult);
79
80        void ProcessReply(int result, const wxString& reply = _T(""));
81
82        int ConnectParseResponse(bool successful, const wxString& reply);
83        int ConnectSend();
84
85        virtual int FileTransfer(const wxString localFile, const CServerPath &remotePath,
86                                                         const wxString &remoteFile, bool download,
87                                                         const CFileTransferCommand::t_transferSettings& transferSettings);
88        int FileTransferSubcommandResult(int prevResult);
89        int FileTransferSend();
90        int FileTransferParseResponse(int result, const wxString& reply);
91
92        int ListSubcommandResult(int prevResult);
93        int ListSend();
94        int ListParseResponse(bool successful, const wxString& reply);
95        int ListParseEntry(const wxString& entry);
96        int ListCheckTimezoneDetection();
97
98        int ChangeDir(CServerPath path = CServerPath(), wxString subDir = _T(""), bool link_discovery = false);
99        int ChangeDirParseResponse(bool successful, const wxString& reply);
100        int ChangeDirSubcommandResult(int prevResult);
101        int ChangeDirSend();
102
103        int MkdirParseResponse(bool successful, const wxString& reply);
104        int MkdirSend();
105
106        int DeleteParseResponse(bool successful, const wxString& reply);
107        int DeleteSend();
108
109        int RemoveDirParseResponse(bool successful, const wxString& reply);
110
111        int ChmodParseResponse(bool successful, const wxString& reply);
112        int ChmodSubcommandResult(int prevResult);
113        int ChmodSend();
114
115        int RenameParseResponse(bool successful, const wxString& reply);
116        int RenameSubcommandResult(int prevResult);
117        int RenameSend();
118
119        bool SendCommand(wxString const& cmd, const wxString& show = wxString());
120        bool AddToStream(const wxString& cmd, bool force_utf8 = false);
121
122        virtual void OnRateAvailable(CRateLimiter::rate_direction direction);
123        void OnQuotaRequest(CRateLimiter::rate_direction direction);
124
125        // see src/putty/wildcard.c
126        wxString WildcardEscape(const wxString& file);
127
128        fz::process* m_pProcess{};
129        CSftpInputThread* m_pInputThread{};
130
131        virtual void operator()(fz::event_base const& ev);
132        void OnSftpEvent();
133        void OnTerminate();
134
135        wxString m_requestPreamble;
136        wxString m_requestInstruction;
137
138        CSftpEncryptionNotification m_sftpEncryptionDetails;
139};
140
141#endif //__SFTPCONTROLSOCKET_H__
Note: See TracBrowser for help on using the repository browser.