source: filezilla/trunk/fuentes/src/include/server.h @ 130

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

First release to xenial

File size: 4.8 KB
Line 
1#ifndef __SERVER_H__
2#define __SERVER_H__
3
4enum ServerProtocol
5{
6        // Never change any existing values or user's saved sites will become
7        // corrupted.
8        UNKNOWN = -1,
9        FTP, // FTP, attempts AUTH TLS
10        SFTP,
11        HTTP,
12        FTPS, // Implicit SSL
13        FTPES, // Explicit SSL
14        HTTPS,
15        INSECURE_FTP, // Insecure, as the name suggests
16
17        MAX_VALUE = INSECURE_FTP
18};
19
20enum ServerType
21{
22        DEFAULT,
23        UNIX,
24        VMS,
25        DOS,
26        MVS,
27        VXWORKS,
28        ZVM,
29        HPNONSTOP,
30        DOS_VIRTUAL,
31        CYGWIN,
32
33        SERVERTYPE_MAX
34};
35
36enum LogonType
37{
38        ANONYMOUS,
39        NORMAL,
40        ASK, // ASK should not be sent to the engine, it's intended to be used by the interface
41        INTERACTIVE,
42        ACCOUNT,
43        KEY,
44
45        LOGONTYPE_MAX
46};
47
48enum PasvMode
49{
50        MODE_DEFAULT,
51        MODE_ACTIVE,
52        MODE_PASSIVE
53};
54
55enum CharsetEncoding
56{
57        ENCODING_AUTO,
58        ENCODING_UTF8,
59        ENCODING_CUSTOM
60};
61
62class CServerPath;
63class CServer final
64{
65public:
66
67        // No error checking is done in the constructors
68        CServer();
69        CServer(wxString host, unsigned int);
70        CServer(wxString host, unsigned int, wxString user, wxString pass = wxString());
71        CServer(ServerProtocol protocol, ServerType type, wxString host, unsigned int);
72        CServer(ServerProtocol protocol, ServerType type, wxString host, unsigned int, wxString user, wxString pass = wxString(), wxString account = wxString());
73
74        void SetType(ServerType type);
75
76        ServerProtocol GetProtocol() const;
77        ServerType GetType() const;
78        wxString GetHost() const;
79        unsigned int GetPort() const;
80        LogonType GetLogonType() const;
81        wxString GetUser() const;
82        wxString GetPass() const;
83        wxString GetAccount() const;
84        wxString GetKeyFile() const;
85        int GetTimezoneOffset() const;
86        PasvMode GetPasvMode() const;
87        int MaximumMultipleConnections() const;
88        bool GetBypassProxy() const;
89
90        // Return true if URL could be parsed correctly, false otherwise.
91        // If parsing fails, pError is filled with the reason and the CServer instance may be left an undefined state.
92        bool ParseUrl(wxString host, unsigned int port, wxString user, wxString pass, wxString &error, CServerPath &path);
93        bool ParseUrl(wxString host, wxString port, wxString user, wxString pass, wxString &error, CServerPath &path);
94
95        void SetProtocol(ServerProtocol serverProtocol);
96        bool SetHost(wxString Host, unsigned int port);
97
98        void SetLogonType(LogonType logonType);
99        bool SetUser(const wxString& user, const wxString& pass = wxString());
100        bool SetAccount(const wxString& account);
101        bool SetKeyFile(const wxString& keyFile);
102
103        CServer& operator=(const CServer &op);
104        bool operator==(const CServer &op) const;
105        bool operator<(const CServer &op) const;
106        bool operator!=(const CServer &op) const;
107        bool EqualsNoPass(const CServer &op) const;
108
109        bool SetTimezoneOffset(int minutes);
110        void SetPasvMode(PasvMode pasvMode);
111        void MaximumMultipleConnections(int maximum);
112
113        wxString FormatHost(bool always_omit_port = false) const;
114        wxString FormatServer(const bool always_include_prefix = false) const;
115
116        bool SetEncodingType(CharsetEncoding type, const wxString& encoding = wxString());
117        bool SetCustomEncoding(const wxString& encoding);
118        CharsetEncoding GetEncodingType() const;
119        wxString GetCustomEncoding() const;
120
121        static unsigned int GetDefaultPort(ServerProtocol protocol);
122        static ServerProtocol GetProtocolFromPort(unsigned int port, bool defaultOnly = false);
123
124        static wxString GetProtocolName(ServerProtocol protocol);
125        static ServerProtocol GetProtocolFromName(const wxString& name);
126
127        static ServerProtocol GetProtocolFromPrefix(const wxString& prefix);
128        static wxString GetPrefixFromProtocol(const ServerProtocol protocol);
129
130        // Some protocol distinguish between ASCII and binary files for line-ending
131        // conversion.
132        static bool ProtocolHasDataTypeConcept(ServerProtocol const protocol);
133
134        // These commands will be executed after a successful login.
135        const std::vector<wxString>& GetPostLoginCommands() const { return m_postLoginCommands; }
136        bool SetPostLoginCommands(const std::vector<wxString>& postLoginCommands);
137        static bool SupportsPostLoginCommands(ServerProtocol const protocol);
138
139        void SetBypassProxy(bool val);
140
141        // Abstract server name.
142        // Not compared in ==, < and related operators
143        void SetName(const wxString& name) { m_name = name; }
144        wxString GetName() const { return m_name; }
145
146        static wxString GetNameFromServerType(ServerType type);
147        static ServerType GetServerTypeFromName(const wxString& name);
148
149        static wxString GetNameFromLogonType(LogonType type);
150        static LogonType GetLogonTypeFromName(const wxString& name);
151
152protected:
153        void Initialize();
154
155        ServerProtocol m_protocol;
156        ServerType m_type;
157        wxString m_host;
158        unsigned int m_port;
159        LogonType m_logonType;
160        wxString m_user;
161        wxString m_pass;
162        wxString m_account;
163        wxString m_keyFile;
164        int m_timezoneOffset;
165        PasvMode m_pasvMode;
166        int m_maximumMultipleConnections;
167        CharsetEncoding m_encodingType;
168        wxString m_customEncoding;
169        wxString m_name;
170
171        std::vector<wxString> m_postLoginCommands;
172        bool m_bypassProxy;
173};
174
175#endif
Note: See TracBrowser for help on using the repository browser.