Squid Web Cache
master
Loading...
Searching...
No Matches
Elements.cc
Go to the documentation of this file.
1
/*
2
* Copyright (C) 1996-2025 The Squid Software Foundation and contributors
3
*
4
* Squid software is distributed under GPLv2+ license and includes
5
* contributions from numerous individuals and organizations.
6
* Please see the COPYING and CONTRIBUTORS files for details.
7
*/
8
9
/* DEBUG: section 09 File Transfer Protocol (FTP) */
10
11
#include "
squid.h
"
12
#include "
ftp/Elements.h
"
13
#include "
HttpHdrCc.h
"
14
#include "
HttpReply.h
"
15
#include "
sbuf/SBuf.h
"
16
17
// FTP does not have a notion of a "protocol version" but we need something for
18
// compatibility with the current Http::Message wrapping layer. We use version 1.1:
19
// * some ICAP services probably expect /1.0 or /1.1 when parsing HTTP headers;
20
// * FTP commands are sent on a "persistent by default" connection, just like
21
// HTTP/1.1. Using 1.1 leads to fewer exceptions in current code shared by
22
// HTTP and FTP.
23
AnyP::ProtocolVersion
24
Ftp::ProtocolVersion
()
25
{
26
return
AnyP::ProtocolVersion
(
AnyP::PROTO_FTP
, 1, 1);
27
}
28
29
HttpReply
*
30
Ftp::HttpReplyWrapper
(
const
int
ftpStatus,
const
char
*ftpReason,
const
Http::StatusCode
httpStatus,
const
int64_t clen)
31
{
32
HttpReply
*
const
reply =
new
HttpReply
;
33
34
AnyP::ProtocolVersion
httpVersion =
Http::ProtocolVersion
(
35
Ftp::ProtocolVersion
().major,
Ftp::ProtocolVersion
().minor);
36
reply->
sline
.
set
(httpVersion, httpStatus);
37
38
HttpHeader
&header = reply->
header
;
39
header.
putTime
(
Http::HdrType::DATE
,
squid_curtime
);
40
{
41
HttpHdrCc
cc;
42
cc.
Private
(
String
());
43
header.
putCc
(cc);
44
}
45
if
(ftpStatus > 0)
46
header.
putInt
(
Http::HdrType::FTP_STATUS
, ftpStatus);
47
if
(ftpReason)
48
header.
putStr
(
Http::HdrType::FTP_REASON
, ftpReason);
49
if
(clen >= 0)
50
header.
putInt64
(
Http::HdrType::CONTENT_LENGTH
, clen);
51
reply->
hdrCacheInit
();
52
return
reply;
53
}
54
55
const
SBuf
&
56
Ftp::cmdAppe
()
57
{
58
static
const
SBuf
cmd(
"APPE"
);
59
return
cmd;
60
}
61
62
const
SBuf
&
63
Ftp::cmdAuth
()
64
{
65
static
const
SBuf
cmd(
"AUTH"
);
66
return
cmd;
67
}
68
69
const
SBuf
&
70
Ftp::cmdCwd
()
71
{
72
static
const
SBuf
cmd(
"CWD"
);
73
return
cmd;
74
}
75
76
const
SBuf
&
77
Ftp::cmdDele
()
78
{
79
static
const
SBuf
cmd(
"DELE"
);
80
return
cmd;
81
}
82
83
const
SBuf
&
84
Ftp::cmdEprt
()
85
{
86
static
const
SBuf
cmd(
"EPRT"
);
87
return
cmd;
88
}
89
90
const
SBuf
&
91
Ftp::cmdEpsv
()
92
{
93
static
const
SBuf
cmd(
"EPSV"
);
94
return
cmd;
95
}
96
97
const
SBuf
&
98
Ftp::cmdList
()
99
{
100
static
const
SBuf
cmd(
"LIST"
);
101
return
cmd;
102
}
103
104
const
SBuf
&
105
Ftp::cmdMkd
()
106
{
107
static
const
SBuf
cmd(
"MKD"
);
108
return
cmd;
109
}
110
111
const
SBuf
&
112
Ftp::cmdMlsd
()
113
{
114
static
const
SBuf
cmd(
"MLSD"
);
115
return
cmd;
116
}
117
118
const
SBuf
&
119
Ftp::cmdMlst
()
120
{
121
static
const
SBuf
cmd(
"MLST"
);
122
return
cmd;
123
}
124
125
const
SBuf
&
126
Ftp::cmdNlst
()
127
{
128
static
const
SBuf
cmd(
"NLST"
);
129
return
cmd;
130
}
131
132
const
SBuf
&
133
Ftp::cmdRetr
()
134
{
135
static
const
SBuf
cmd(
"RETR"
);
136
return
cmd;
137
}
138
139
const
SBuf
&
140
Ftp::cmdRmd
()
141
{
142
static
const
SBuf
cmd(
"RMD"
);
143
return
cmd;
144
}
145
146
const
SBuf
&
147
Ftp::cmdRnfr
()
148
{
149
static
const
SBuf
cmd(
"RNFR"
);
150
return
cmd;
151
}
152
153
const
SBuf
&
154
Ftp::cmdRnto
()
155
{
156
static
const
SBuf
cmd(
"RNTO"
);
157
return
cmd;
158
}
159
160
const
SBuf
&
161
Ftp::cmdSmnt
()
162
{
163
static
const
SBuf
cmd(
"SMNT"
);
164
return
cmd;
165
}
166
167
const
SBuf
&
168
Ftp::cmdStat
()
169
{
170
static
const
SBuf
cmd(
"STAT"
);
171
return
cmd;
172
}
173
174
const
SBuf
&
175
Ftp::cmdStor
()
176
{
177
static
const
SBuf
cmd(
"STOR"
);
178
return
cmd;
179
}
180
181
const
SBuf
&
182
Ftp::cmdStou
()
183
{
184
static
const
SBuf
cmd(
"STOU"
);
185
return
cmd;
186
}
187
188
const
SBuf
&
189
Ftp::cmdUser
()
190
{
191
static
const
SBuf
cmd(
"USER"
);
192
return
cmd;
193
}
194
HttpHdrCc.h
HttpReply.h
squid_curtime
time_t squid_curtime
Definition
stub_libtime.cc:20
SBuf.h
AnyP::ProtocolVersion
Definition
ProtocolVersion.h:24
HttpHdrCc
Definition
HttpHdrCc.h:44
HttpHdrCc::Private
void Private(const String &v)
Definition
HttpHdrCc.h:75
HttpHeader
Definition
HttpHeader.h:75
HttpHeader::putStr
void putStr(Http::HdrType id, const char *str)
Definition
HttpHeader.cc:1128
HttpHeader::putCc
void putCc(const HttpHdrCc &cc)
Definition
HttpHeader.cc:1144
HttpHeader::putInt
void putInt(Http::HdrType id, int number)
Definition
HttpHeader.cc:1101
HttpHeader::putInt64
void putInt64(Http::HdrType id, int64_t number)
Definition
HttpHeader.cc:1110
HttpHeader::putTime
void putTime(Http::HdrType id, time_t htime)
Definition
HttpHeader.cc:1119
HttpReply
Definition
HttpReply.h:25
HttpReply::sline
Http::StatusLine sline
Definition
HttpReply.h:56
HttpReply::hdrCacheInit
void hdrCacheInit() override
Definition
HttpReply.cc:321
Http::Message::header
HttpHeader header
Definition
Message.h:74
Http::StatusLine::set
void set(const AnyP::ProtocolVersion &newVersion, Http::StatusCode newStatus, const char *newReason=nullptr)
Definition
StatusLine.cc:35
SBuf
Definition
SBuf.h:94
String
Definition
SquidString.h:27
Elements.h
AnyP::PROTO_FTP
@ PROTO_FTP
Definition
ProtocolType.h:26
Ftp::cmdAppe
const SBuf & cmdAppe()
Definition
Elements.cc:56
Ftp::ProtocolVersion
AnyP::ProtocolVersion ProtocolVersion()
Protocol version to use in Http::Message structures wrapping FTP messages.
Definition
Elements.cc:24
Ftp::cmdDele
const SBuf & cmdDele()
Definition
Elements.cc:77
Ftp::cmdEpsv
const SBuf & cmdEpsv()
Definition
Elements.cc:91
Ftp::cmdSmnt
const SBuf & cmdSmnt()
Definition
Elements.cc:161
Ftp::cmdStou
const SBuf & cmdStou()
Definition
Elements.cc:182
Ftp::cmdStor
const SBuf & cmdStor()
Definition
Elements.cc:175
Ftp::cmdMlsd
const SBuf & cmdMlsd()
Definition
Elements.cc:112
Ftp::cmdList
const SBuf & cmdList()
Definition
Elements.cc:98
Ftp::cmdRetr
const SBuf & cmdRetr()
Definition
Elements.cc:133
Ftp::cmdNlst
const SBuf & cmdNlst()
Definition
Elements.cc:126
Ftp::cmdMlst
const SBuf & cmdMlst()
Definition
Elements.cc:119
Ftp::cmdStat
const SBuf & cmdStat()
Definition
Elements.cc:168
Ftp::cmdAuth
const SBuf & cmdAuth()
Definition
Elements.cc:63
Ftp::cmdCwd
const SBuf & cmdCwd()
Definition
Elements.cc:70
Ftp::cmdEprt
const SBuf & cmdEprt()
Definition
Elements.cc:84
Ftp::cmdRnto
const SBuf & cmdRnto()
Definition
Elements.cc:154
Ftp::cmdMkd
const SBuf & cmdMkd()
Definition
Elements.cc:105
Ftp::cmdUser
const SBuf & cmdUser()
Definition
Elements.cc:189
Ftp::HttpReplyWrapper
HttpReply * HttpReplyWrapper(const int ftpStatus, const char *ftpReason, const Http::StatusCode httpStatus, const int64_t clen)
Create an internal HttpReply structure to house FTP control response info.
Definition
Elements.cc:30
Ftp::cmdRnfr
const SBuf & cmdRnfr()
Definition
Elements.cc:147
Ftp::cmdRmd
const SBuf & cmdRmd()
Definition
Elements.cc:140
Http::StatusCode
StatusCode
Definition
StatusCode.h:20
Http::ProtocolVersion
AnyP::ProtocolVersion ProtocolVersion()
Definition
ProtocolVersion.h:32
Http::DATE
@ DATE
Definition
RegisteredHeaders.h:49
Http::FTP_STATUS
@ FTP_STATUS
Definition
RegisteredHeaders.h:118
Http::FTP_REASON
@ FTP_REASON
Definition
RegisteredHeaders.h:119
Http::CONTENT_LENGTH
@ CONTENT_LENGTH
Definition
RegisteredHeaders.h:42
squid.h
squid
src
ftp
Elements.cc
Generated by
1.9.8