Qore Programming Language  0.8.11
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
QoreFtpClient.h
1 /* -*- mode: c++; indent-tabs-mode: nil -*- */
2 /*
3  QoreFtpClient.h
4 
5  thread-safe Qore QoreFtpClient object
6 
7  Qore Programming Language
8 
9  Copyright 2003 - 2014 David Nichols
10 
11  This library is free software; you can redistribute it and/or
12  modify it under the terms of the GNU Lesser General Public
13  License as published by the Free Software Foundation; either
14  version 2.1 of the License, or (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  Lesser General Public License for more details.
20 
21  You should have received a copy of the GNU Lesser General Public
22  License along with this library; if not, write to the Free Software
23  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 */
25 
26 #ifndef _QORE_QOREFTPCLIENT_H
27 
28 #define _QORE_QOREFTPCLIENT_H
29 
30 #define DEFAULT_FTP_CONTROL_PORT 21
31 #define DEFAULT_FTP_DATA_PORT 20
32 
33 #define DEFAULT_USERNAME "anonymous"
34 #define DEFAULT_PASSWORD "qore@nohost.com"
35 
36 class FtpResp;
37 class Queue;
38 
40 
61 protected:
63  struct qore_ftp_private *priv;
64 
66  DLLLOCAL QoreFtpClient(const QoreFtpClient&);
67 
69  DLLLOCAL QoreFtpClient& operator=(const QoreFtpClient&);
70 
71 public:
73 
78  DLLEXPORT QoreFtpClient(const QoreString *url, ExceptionSink *xsink);
79 
81  DLLEXPORT QoreFtpClient();
82 
84  DLLEXPORT ~QoreFtpClient();
85 
87 
91  DLLEXPORT int connect(ExceptionSink *xsink);
92 
94 
97  DLLEXPORT int disconnect();
98 
100 
106  DLLEXPORT int cwd(const char *dir, ExceptionSink *xsink);
107 
109 
113  DLLEXPORT QoreStringNode *pwd(ExceptionSink *xsink);
114 
116 
122  DLLEXPORT int put(const char *localpath, const char *remotename, ExceptionSink *xsink);
123 
125 
134  DLLEXPORT int get(const char *remotepath, const char *localname, ExceptionSink *xsink);
135 
137 
144  DLLEXPORT int putData(const void *data, qore_size_t len, const char *remotename, ExceptionSink *xsink);
145 
147 
152  DLLEXPORT QoreStringNode *getAsString(const char *remotepath, ExceptionSink *xsink);
153 
155 
160  DLLEXPORT BinaryNode *getAsBinary(const char *remotepath, ExceptionSink *xsink);
161 
163 
169  DLLEXPORT int rename(const char *from, const char *to, ExceptionSink *xsink);
170 
172 
178  DLLEXPORT QoreStringNode *list(const char *path, bool long_list, ExceptionSink *xsink);
179 
181 
186  DLLEXPORT int del(const char *file, ExceptionSink *xsink);
187 
189 
194  DLLEXPORT int mkdir(const char *remotepath, ExceptionSink *xsink);
195 
197 
202  DLLEXPORT int rmdir(const char *remotepath, ExceptionSink *xsink);
203 
205  DLLEXPORT int getPort() const;
206 
208  DLLEXPORT const char *getUserName() const;
209 
211  DLLEXPORT const char *getPassword() const;
212 
214  DLLEXPORT const char *getHostName() const;
215 
217 
222  DLLEXPORT void setURL(const QoreString *url, ExceptionSink *xsink);
223 
225 
228  DLLEXPORT QoreStringNode *getURL() const;
229 
231  DLLEXPORT void setPort(int p);
232 
234  DLLEXPORT void setUserName(const char *u);
235 
237  DLLEXPORT void setPassword(const char *p);
238 
240  DLLEXPORT void setHostName(const char *h);
241 
243 
245  DLLEXPORT int setSecure();
246 
248 
250  DLLEXPORT int setInsecure();
251 
253 
257  DLLEXPORT int setInsecureData();
258 
260 
263  DLLEXPORT bool isSecure() const;
264 
266 
269  DLLEXPORT bool isDataSecure() const;
270 
272 
275  DLLEXPORT const char *getSSLCipherName() const;
276 
278 
281  DLLEXPORT const char *getSSLCipherVersion() const;
282 
284  DLLEXPORT long verifyPeerCertificate() const;
285 
287  DLLEXPORT void setModeAuto();
288 
290  DLLEXPORT void setModeEPSV();
291 
293  DLLEXPORT void setModePASV();
294 
296  DLLEXPORT void setModePORT();
297 
298  DLLEXPORT void clearWarningQueue(ExceptionSink* xsink);
299  DLLEXPORT void setWarningQueue(ExceptionSink* xsink, int64 warning_ms, int64 warning_bs, class Queue* wq, AbstractQoreNode* arg, int64 min_ms = 1000);
300  DLLEXPORT QoreHashNode* getUsageInfo() const;
301  DLLEXPORT void clearStats();
302 
304  DLLLOCAL void setEventQueue(Queue *cbq, ExceptionSink *xsink);
305 
307  DLLLOCAL void setDataEventQueue(Queue *cbq, ExceptionSink *xsink);
308 
310  DLLLOCAL void setControlEventQueue(Queue *cbq, ExceptionSink *xsink);
311 
312  DLLLOCAL void cleanup(ExceptionSink *xsink);
313 };
314 
315 #endif // _QORE_OBJECTS_FTPCLIENT_H
DLLLOCAL void setControlEventQueue(Queue *cbq, ExceptionSink *xsink)
sets the event queue for the control socket
DLLEXPORT int mkdir(const char *remotepath, ExceptionSink *xsink)
creates a directory on the remote server
struct qore_ftp_private * priv
private implementation of the object
Definition: QoreFtpClient.h:63
DLLEXPORT QoreStringNode * list(const char *path, bool long_list, ExceptionSink *xsink)
returns a string listing the directory contents on the remote host (caller owns the reference count r...
DLLEXPORT void setModeEPSV()
sets the connection mode for the next connection to "EPSV" (extended passive mode) ...
DLLEXPORT int disconnect()
disconnects from the remote host if connected
This is the hash or associative list container type in Qore, dynamically allocated only...
Definition: QoreHashNode.h:41
DLLEXPORT int setInsecure()
unsets the secure connection parameter flag (to use the FTP protocol)
DLLEXPORT QoreFtpClient()
creates the object with no connection parameters
DLLEXPORT BinaryNode * getAsBinary(const char *remotepath, ExceptionSink *xsink)
gets a file from the remote server and returns it as a binary node
DLLEXPORT ~QoreFtpClient()
disconnects from the host if necessary and frees all memory associated with the object ...
DLLEXPORT QoreStringNode * getAsString(const char *remotepath, ExceptionSink *xsink)
gets a file from the remote server and returns it as a string
DLLEXPORT void setPassword(const char *p)
sets the password connection parameter
The base class for all value and parse types in Qore expression trees.
Definition: AbstractQoreNode.h:47
DLLEXPORT void setModeAuto()
sets the connection mode for the next connection to "auto"
size_t qore_size_t
used for sizes (same range as a pointer)
Definition: common.h:62
provides thread-safe access to FTP servers through Qore data structures
Definition: QoreFtpClient.h:60
DLLEXPORT bool isSecure() const
returns the secure connection parameter flag
DLLEXPORT QoreStringNode * pwd(ExceptionSink *xsink)
returns the working directory on the remote host (caller owns the reference count returned) ...
DLLEXPORT long verifyPeerCertificate() const
returns the peer certificate verification code
DLLEXPORT int putData(const void *data, qore_size_t len, const char *remotename, ExceptionSink *xsink)
sends a file data io the remote server
Qore's string type supported by the QoreEncoding class.
Definition: QoreString.h:42
Qore's string value type, reference counted, dynamically-allocated only.
Definition: QoreStringNode.h:40
DLLEXPORT QoreStringNode * getURL() const
returns a URL string representing the current connection parameters, caller owns the reference count ...
DLLLOCAL void setDataEventQueue(Queue *cbq, ExceptionSink *xsink)
sets the event queue for the data socket
DLLEXPORT void setHostName(const char *h)
sets the host name connection parameter
DLLEXPORT int del(const char *file, ExceptionSink *xsink)
deletes the given file on the remote server
DLLEXPORT int connect(ExceptionSink *xsink)
connects to the remote host and logs in
DLLLOCAL QoreFtpClient & operator=(const QoreFtpClient &)
this function is not implemented; it is here as a private function in order to prohibit it from being...
DLLEXPORT void setModePASV()
sets the connection mode for the next connection to "PASV" (passive mode)
DLLEXPORT int getPort() const
returns the port number connection parameter
DLLEXPORT int setInsecureData()
sets the secure data connection parameter flag
DLLEXPORT int rename(const char *from, const char *to, ExceptionSink *xsink)
renames/moves a file on the remote server
container for holding Qore-language exception information and also for registering a "thread_exit" ca...
Definition: ExceptionSink.h:35
DLLEXPORT const char * getHostName() const
returns the hostname connection parameter
DLLEXPORT const char * getUserName() const
returns the user name connection parameter
DLLEXPORT void setPort(int p)
sets the port connection parameter
DLLEXPORT void setModePORT()
sets the connection mode for the next connection to "PORT"
DLLEXPORT const char * getPassword() const
returns the password connection parameter
DLLEXPORT void setURL(const QoreString *url, ExceptionSink *xsink)
sets the connection parameters from a URL
DLLEXPORT const char * getSSLCipherVersion() const
returns the version string of the SSL Cipher for the currently-connected control connection, or 0 if there is none
DLLEXPORT bool isDataSecure() const
returns the secure data connection parameter flag
DLLEXPORT void setUserName(const char *u)
sets the user name connection parameter
DLLLOCAL void setEventQueue(Queue *cbq, ExceptionSink *xsink)
sets the same event queue for data and control sockets
DLLEXPORT int put(const char *localpath, const char *remotename, ExceptionSink *xsink)
sends a file from the local filesystem to the remote server
DLLEXPORT int setSecure()
sets the secure connection parameter flag (to use the FTPS protocol)
DLLEXPORT int rmdir(const char *remotepath, ExceptionSink *xsink)
removes a directory on the remote server
DLLEXPORT int cwd(const char *dir, ExceptionSink *xsink)
changes the working directory on the remote host
holds arbitrary binary data
Definition: BinaryNode.h:33
DLLEXPORT const char * getSSLCipherName() const
returns the name of the SSL Cipher for the currently-connected control connection, or 0 if there is none