ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/ftp.h
Revision: 1.2
Committed: Mon Jun 10 14:10:44 2002 UTC (22 years, 5 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Log Message:
Tidy up of files. These are all old things that are not only no longer used
but are also probably useless to anyone other than us. This saves checking
them out all the time, and makes the "cms/source" tree contain only current
stuff. They'll still exist in the attic's though :)

File Contents

# User Rev Content
1 ab11 1.1 // ftp.h
2     // Copyright (C) 1992-1995 Gnanasekaran Swaminathan <gs4t@virginia.edu>
3     //
4     // Permission is granted to use at your own risk and distribute this software
5     // in source and binary forms provided the above copyright
6     // notice and this paragraph are preserved on all copies.
7     // This software is provided "as is" with no express or implied warranty.
8     //
9     // Version: 17Oct95 1.10
10    
11     #ifndef FTP_H
12     #define FTP_H
13    
14     #include <protocol.h>
15     #include <sys/param.h>
16    
17     class ftp: public protocol {
18     public:
19     enum reptype {
20     rt_ascii_nonprint,
21     rt_ascii_telnet,
22     rt_ascii_asa,
23     rt_ebcdic_nonprint,
24     rt_ebcdic_telnet,
25     rt_ebcdic_asa,
26     rt_image,
27     rt_local
28     };
29    
30     enum filestru {
31     fs_file,
32     fs_record,
33     fs_page
34     };
35    
36     enum transmode {
37     tm_stream,
38     tm_block,
39     tm_comp
40     };
41    
42     enum replycodea {
43     rca_posprelim = '1',
44     rca_poscomp = '2',
45     rca_posinter = '3',
46     rca_error = '4',
47     rca_negtranscomp = '4',
48     rca_negpermcomp = '5'
49     };
50    
51     enum replycodeb {
52     rcb_syntax = '0',
53     rcb_info = '1',
54     rcb_conn = '2',
55     rcb_auth = '3',
56     rcb_unspec = '4',
57     rcb_filesys = '5'
58     };
59    
60     class ftpbuf: public protocol::protocolbuf {
61     // the following are used when this is used as a server
62     char* usr;
63     char* password;
64     char* account;
65     char cwd [MAXPATHLEN];
66     char parentdir [MAXPATHLEN];
67     ftp::filestru fs;
68     ftp::transmode tm;
69     sockinetaddr udata; // user will listen at this addr for data conn.
70     int serverportno;
71     char replycode [5];
72    
73     ostream* o;
74    
75     ftp::replycodea send_cmd (const char* cmd, const char* arg=0);
76     ftp::replycodea ftpdata (int portno, istream* i, ostream* out,
77     const char* cmd, const char* arg=0);
78    
79     ftpbuf (ftpbuf&);
80     ftpbuf& operator = (ftpbuf&);
81     public:
82     ftpbuf (ostream* out = 0);
83    
84     ftp::replycodea get_response ();
85     const char* reply_code () const { return replycode; }
86    
87     ftp::replycodea help () { return send_cmd ("HELP"); }
88     ftp::replycodea noop () { return send_cmd ("NOOP"); }
89     ftp::replycodea quit () { return send_cmd ("QUIT"); }
90     ftp::replycodea abort () { return send_cmd ("ABOR"); }
91     ftp::replycodea user (const char* name) {return send_cmd ("USER", name);}
92     ftp::replycodea passwd (const char* pw) {return send_cmd ("PASS", pw); }
93     ftp::replycodea acct (const char* ac) {return send_cmd ("ACCT", ac);}
94     ftp::replycodea cd (const char* dir);
95     ftp::replycodea useraddr (sockinetaddr sa);
96     ftp::replycodea useraddr (const char* host, int portno);
97     ftp::replycodea server_port (int portno);
98     ftp::replycodea rep_type (ftp::reptype rt);
99     ftp::replycodea file_stru (ftp::filestru fs);
100     ftp::replycodea trans_mode (ftp::transmode tm);
101    
102     // service commands
103     ftp::replycodea getfile (const char* rpath, const char* lpath);
104     ftp::replycodea list (const char* lpath=0, int justnames = 0);
105     ftp::replycodea putfile (const char* lpath, const char* rpath);
106     ftp::replycodea putfile (const char* lpath);
107     ftp::replycodea append (const char* lpath, const char* rpath);
108     ftp::replycodea allocate (int numbytes);
109     ftp::replycodea restart (int marker);
110     ftp::replycodea rename (const char* rpath, const char* newrpath);
111     ftp::replycodea rmfile (const char* rpath);
112     ftp::replycodea rmdir (const char* rpath);
113     ftp::replycodea mkdir (const char* rpath);
114     ftp::replycodea pwd () { return send_cmd ("PWD"); }
115     ftp::replycodea system () { return send_cmd ("SYST"); }
116     ftp::replycodea status () { return send_cmd ("STAT"); }
117    
118     virtual void serve_clients (int portno = -1);
119     virtual const char* rfc_name () const { return "ftp"; }
120     virtual const char* rfc_doc () const { return "rfc959"; }
121     };
122    
123     protected:
124     ftp (): ios (0) {}
125    
126     public:
127     ftp (ostream* out);
128     ~ftp () { delete ios::rdbuf (); ios::init (0); }
129    
130    
131     ftpbuf* rdbuf () { return (ftpbuf*) protocol::rdbuf (); }
132     ftpbuf* operator -> () { return rdbuf (); }
133     };
134    
135     #endif // !FTP_H