1 /***************************************************************************/
2 /*    This code is part of WWW grabber called pavuk                        */
3 /*    Copyright (c) 1997 - 2001 Stefan Ondrejicka                          */
4 /*    Distributed under GPL 2 or later                                     */
5 /***************************************************************************/
6 
7 #ifndef __ftp_h__
8 #define __ftp_h__
9 
10 #include <time.h>
11 #include "doc.h"
12 #include "myssl.h"
13 #include "bufio.h"
14 #include "dllist.h"
15 
16 #define DEFAULT_FTP_PORT 21
17 #define DEFAULT_FTP_PROXY_PORT  22
18 
19 #define FTP_TYPE_F      0
20 #define FTP_TYPE_D      1
21 #define FTP_TYPE_L      2
22 
23 typedef struct
24 {
25   protocol proto;
26   char *user;
27   char *passwd;
28   char *host;
29   unsigned short port;
30   bufio *control;
31 } ftp_connection;
32 
33 typedef struct _ftp_url_extension
34 {
35   char type;                    /*** type of file ***/
36   short int perm;               /*** permisions ***/
37   ssize_t size;                 /*** size of file ***/
38   char *slink;                  /*** where point symlink ***/
39   time_t time;                  /*** last modification time ***/
40 } ftp_url_extension;
41 
42 typedef struct _ftp_handshake_info_data
43 {
44   char *cmd;
45   int response;
46 } ftp_handshake_info_data;
47 
48 typedef struct _ftp_handshake_info
49 {
50   char *host;
51   unsigned short port;
52   dllist *infos;
53 } ftp_handshake_info;
54 
55 extern bufio *ftp_get_data_socket(doc *);
56 extern void ftp_dir_to_html(doc *);
57 extern void ftp_dir_list_to_html(doc *);
58 extern int ftp_get_response(doc *, char **, int);
59 extern int ftp_make_symlink(url *);
60 extern int ftp_remove(doc *);
61 
62 extern ftp_url_extension *ftp_parse_ftpinf_ext(char *);
63 extern ftp_url_extension *ftp_url_ext_new(int, int, ssize_t, char *, time_t);
64 extern ftp_url_extension *ftp_url_ext_dup(ftp_url_extension *);
65 extern void ftp_url_ext_free(ftp_url_extension *);
66 
67 extern void ftp_handshake_info_free(ftp_handshake_info *);
68 extern ftp_handshake_info *ftp_handshake_info_parse(char *, char *);
69 extern char *ftp_handshake_info_data_dump(ftp_handshake_info *);
70 extern ftp_handshake_info *ftp_handshake_info_dup(ftp_handshake_info *);
71 
72 
73 #endif
74