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, 3 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

# Content
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