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

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

First release to xenial

File size: 3.7 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
43class CProcess;
44class CSftpInputThread;
45
46class CSftpControlSocket final : public CControlSocket, public CRateLimiterObject
47{
48public:
49        CSftpControlSocket(CFileZillaEnginePrivate & engine);
50        virtual ~CSftpControlSocket();
51
52        virtual int Connect(const CServer &server);
53
54        virtual int List(CServerPath path = CServerPath(), wxString subDir = _T(""), int flags = 0);
55        virtual int Delete(const CServerPath& path, std::deque<wxString>&& files);
56        virtual int RemoveDir(const CServerPath& path = CServerPath(), const wxString& subDir = _T(""));
57        virtual int Mkdir(const CServerPath& path);
58        virtual int Rename(const CRenameCommand& command);
59        virtual int Chmod(const CChmodCommand& command);
60        virtual void Cancel();
61
62        virtual bool Connected() { return m_pInputThread != 0; }
63
64        virtual bool SetAsyncRequestReply(CAsyncRequestNotification *pNotification);
65
66protected:
67        // Replaces filename"with"quotes with
68        // "filename""with""quotes"
69        wxString QuoteFilename(wxString filename);
70
71        virtual int DoClose(int nErrorCode = FZ_REPLY_DISCONNECTED);
72
73        virtual int ResetOperation(int nErrorCode);
74        virtual int SendNextCommand();
75        virtual int ParseSubcommandResult(int prevResult);
76
77        void ProcessReply(int result, const wxString& reply = _T(""));
78
79        int ConnectParseResponse(bool successful, const wxString& reply);
80        int ConnectSend();
81
82        virtual int FileTransfer(const wxString localFile, const CServerPath &remotePath,
83                                                         const wxString &remoteFile, bool download,
84                                                         const CFileTransferCommand::t_transferSettings& transferSettings);
85        int FileTransferSubcommandResult(int prevResult);
86        int FileTransferSend();
87        int FileTransferParseResponse(int result, const wxString& reply);
88
89        int ListSubcommandResult(int prevResult);
90        int ListSend();
91        int ListParseResponse(bool successful, const wxString& reply);
92        int ListParseEntry(const wxString& entry);
93        int ListCheckTimezoneDetection();
94
95        int ChangeDir(CServerPath path = CServerPath(), wxString subDir = _T(""), bool link_discovery = false);
96        int ChangeDirParseResponse(bool successful, const wxString& reply);
97        int ChangeDirSubcommandResult(int prevResult);
98        int ChangeDirSend();
99
100        int MkdirParseResponse(bool successful, const wxString& reply);
101        int MkdirSend();
102
103        int DeleteParseResponse(bool successful, const wxString& reply);
104        int DeleteSend();
105
106        int RemoveDirParseResponse(bool successful, const wxString& reply);
107
108        int ChmodParseResponse(bool successful, const wxString& reply);
109        int ChmodSubcommandResult(int prevResult);
110        int ChmodSend();
111
112        int RenameParseResponse(bool successful, const wxString& reply);
113        int RenameSubcommandResult(int prevResult);
114        int RenameSend();
115
116        bool SendCommand(wxString const& cmd, const wxString& show = wxString());
117        bool AddToStream(const wxString& cmd, bool force_utf8 = false);
118
119        virtual void OnRateAvailable(CRateLimiter::rate_direction direction);
120        void OnQuotaRequest(CRateLimiter::rate_direction direction);
121
122        // see src/putty/wildcard.c
123        wxString WildcardEscape(const wxString& file);
124
125        CProcess* m_pProcess{};
126        CSftpInputThread* m_pInputThread{};
127
128        virtual void operator()(CEventBase const& ev);
129        void OnSftpEvent();
130        void OnTerminate();
131
132        wxString m_requestPreamble;
133        wxString m_requestInstruction;
134
135        CSftpEncryptionNotification m_sftpEncryptionDetails;
136};
137
138#endif //__SFTPCONTROLSOCKET_H__
Note: See TracBrowser for help on using the repository browser.