xrootd
XrdHttpProtocol.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // This file is part of XrdHTTP: A pragmatic implementation of the
3 // HTTP/WebDAV protocol for the Xrootd framework
4 //
5 // Copyright (c) 2013 by European Organization for Nuclear Research (CERN)
6 // Author: Fabrizio Furano <furano@cern.ch>
7 // File Date: Nov 2012
8 //------------------------------------------------------------------------------
9 // XRootD is free software: you can redistribute it and/or modify
10 // it under the terms of the GNU Lesser General Public License as published by
11 // the Free Software Foundation, either version 3 of the License, or
12 // (at your option) any later version.
13 //
14 // XRootD is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU Lesser General Public License
20 // along with XRootD. If not, see <http://www.gnu.org/licenses/>.
21 //------------------------------------------------------------------------------
22 
23 
24 #ifndef __XRDHTTP_PROTOCOL_H__
25 #define __XRDHTTP_PROTOCOL_H__
26 
37 #include <stdlib.h>
38 #include <unistd.h>
39 #include <sys/types.h>
40 
41 #include "XrdSys/XrdSysError.hh"
42 #include "XrdSys/XrdSysPthread.hh"
45 #include "Xrd/XrdObject.hh"
47 #include "XrdOuc/XrdOucStream.hh"
48 #include "Xrd/XrdProtocol.hh"
49 #include "XrdOuc/XrdOucHash.hh"
50 
51 #include <openssl/ssl.h>
52 
53 #include <vector>
54 
55 #include "XrdHttpReq.hh"
56 
57 /******************************************************************************/
58 /* D e f i n e s */
59 /******************************************************************************/
60 
61 
62 #ifndef __GNUC__
63 #define __attribute__(x)
64 #endif
65 
66 class XrdOucTokenizer;
67 class XrdOucTrace;
68 class XrdBuffer;
69 class XrdLink;
70 class XrdXrootdProtocol;
71 class XrdHttpSecXtractor;
72 class XrdHttpExtHandler;
73 struct XrdVersionInfo;
74 class XrdOucGMap;
75 
76 class XrdHttpProtocol : public XrdProtocol {
77 
78  friend class XrdHttpReq;
79  friend class XrdHttpExtReq;
80 
81 public:
82 
84  static int Configure(char *parms, XrdProtocol_Config *pi);
85 
87  void DoIt() {
88  if (Resume) (*this.*Resume)();
89  }
90 
93 
95  int Process(XrdLink *lp); // Sync: Job->Link.DoIt->Process
96 
97 
99  void Recycle(XrdLink *lp, int consec, const char *reason);
100 
102  int Stats(char *buff, int blen, int do_sync = 0);
103 
104 
105 
106 
108  int doStat(char *fname);
109 
111  int doChksum(const XrdOucString &fname);
112 
114  XrdHttpProtocol(const XrdHttpProtocol&) = default;
116  XrdHttpProtocol(bool imhttps);
118  Cleanup();
119  }
120 
123 
124 
127 
129  bool isHTTPS() { return ishttps; }
130 
132  static void PeriodicUpdate();
133 
134 private:
135 
136 
139 
141  static int InitSecurity();
142 
144  static X509_STORE *PrepareStore();
145 
147  int StartSimpleResp(int code, const char *desc, const char *header_to_add, long long bodylen, bool keepalive);
148 
150  int SendData(const char *body, int bodylen);
151 
153  void Cleanup();
154 
156  void Reset();
157 
160  int GetVOMSData(XrdLink *lp);
161 
164  int getDataOneShot(int blen, bool wait=false);
165 
167  static BIO *CreateBIO(XrdLink *lp);
168 
170  static int Config(const char *fn, XrdOucEnv *myEnv);
171  static int xtrace(XrdOucStream &Config);
172  static int xsslcert(XrdOucStream &Config);
173  static int xsslkey(XrdOucStream &Config);
174  static int xsecxtractor(XrdOucStream &Config);
175  static int xexthandler(XrdOucStream & Config, const char *ConfigFN, XrdOucEnv *myEnv);
176  static int xsslcadir(XrdOucStream &Config);
177  static int xsslcipherfilter(XrdOucStream &Config);
178  static int xdesthttps(XrdOucStream &Config);
179  static int xlistdeny(XrdOucStream &Config);
180  static int xlistredir(XrdOucStream &Config);
181  static int xselfhttps2http(XrdOucStream &Config);
182  static int xembeddedstatic(XrdOucStream &Config);
183  static int xstaticredir(XrdOucStream &Config);
184  static int xstaticpreload(XrdOucStream &Config);
185  static int xgmap(XrdOucStream &Config);
186  static int xsslcafile(XrdOucStream &Config);
187  static int xsslverifydepth(XrdOucStream &Config);
188  static int xsecretkey(XrdOucStream &Config);
189  static int xheader2cgi(XrdOucStream &Config);
190 
192 
193  // Loads the SecXtractor plugin, if available
194  static int LoadSecXtractor(XrdSysError *eDest, const char *libName,
195  const char *libParms);
196 
197  // An oldstyle struct array to hold exthandlers
198  #define MAX_XRDHTTPEXTHANDLERS 4
199  static struct XrdHttpExtHandlerInfo {
200  char name[16];
203  static int exthandlercnt;
204 
205  // Loads the ExtHandler plugin, if available
206  static int LoadExtHandler(XrdSysError *eDest, const char *libName,
207  const char *configFN, const char *libParms,
208  XrdOucEnv *myEnv, const char *instName);
209 
210  // Determines whether one of the loaded ExtHandlers are interested in
211  // handling a given request.
212  //
213  // Returns NULL if there is no matching handler.
215 
216  // Tells if an ext handler with the given name has already been loaded
217  static bool ExtHandlerLoaded(const char *handlername);
218 
223 
226 
228  int BuffAvailable();
230  int BuffUsed();
232  int BuffFree();
233 
235  void BuffConsume(int blen);
237  int BuffgetData(int blen, char **data, bool wait);
239  int BuffgetLine(XrdOucString &dest);
240 
242  int SendSimpleResp(int code, const char *desc, const char *header_to_add, const char *body, long long bodylen, bool keepalive);
243 
245  // API.
246  int StartChunkedResp(int code, const char *desc, const char *header_to_add, bool keepalive);
247 
249  // indicates that this is the last chunk in the response.
250  int ChunkResp(const char *body, long long bodylen);
251 
253  char *GetClientIPStr();
254 
257 
260 
262  static SSL_CTX *sslctx;
263 
265  static X509_STORE *verify_store;
267 
269  SSL *ssl;
270 
272  BIO *sbio;
273 
275  static BIO *sslbio_err;
276 
278  bool ishttps;
279 
282  bool ssldone;
283 
285 protected:
286 
287 
288 
289  // Statistical area
290  //
291 // static XrdXrootdStats *SI;
292 // int numReads; // Count for kXR_read
293 // int numReadP; // Count for kXR_read pre-preads
294 // int numReadV; // Count for kR_readv
295 // int numSegsV; // Count for kR_readv segmens
296 // int numWrites; // Count
297 // int numFiles; // Count
298 //
299 // int cumReads; // Count less numReads
300 // int cumReadP; // Count less numReadP
301 // int cumReadV; // Count less numReadV
302 // int cumSegsV; // Count less numSegsV
303 // int cumWrites; // Count less numWrites
304 // long long totReadP; // Bytes
305 
306  static XrdScheduler *Sched; // System scheduler
307  static XrdBuffManager *BPool; // Buffer manager
308  static XrdSysError eDest; // Error message handler
309  static XrdSecService *CIA; // Authentication Server
310 
313 
316  char *Addr_str;
317 
319  static XrdOucGMap *servGMap; // Grid mapping service
320 
323 
324 
328 
329 
330  //
331  // Processing configuration values
332  //
333 
335  static int hailWait;
336 
338  static int readWait;
339 
341  static int Port;
342 
344  static char * Port_str;
345 
347  static int Window;
348 
351 
353  static char *gridmap;// [s] gridmap file [/etc/grid-security/gridmap]
354 
356  static char *secretkey;
357 
359  static int sslverifydepth;
360 
362  static bool isdesthttps;
363 
365  static char *listredir;
366 
368  static bool listdeny;
369 
371  static bool selfhttps2http;
372 
374  static bool embeddedstatic;
375 
376  // Url to redirect to in the case a /static is requested
377  static char *staticredir;
378 
379  // Hash that keeps preloaded files
381  char *data;
382  int len;
383  };
385 
388 
390  static std::map< std::string, std::string > hdr2cgimap;
391 
393  static int m_bio_type;
394 
396  static BIO_METHOD *m_bio_method;
397 };
398 #endif
XrdHttpProtocol::LoadSecXtractor
static int LoadSecXtractor(XrdSysError *eDest, const char *libName, const char *libParms)
kXR_int32
int kXR_int32
Definition: XPtypes.hh:89
XrdHttpProtocol::readWait
static int readWait
Timeout for reading data.
Definition: XrdHttpProtocol.hh:338
XrdSecInterface.hh
XrdHttpProtocol::xlistdeny
static int xlistdeny(XrdOucStream &Config)
XrdHttpProtocol::Configure
static int Configure(char *parms, XrdProtocol_Config *pi)
Read and apply the configuration.
XrdHttpProtocol::PrepareStore
static X509_STORE * PrepareStore()
Generate a new cert store.
XrdHttpProtocol::myBuffEnd
char * myBuffEnd
Definition: XrdHttpProtocol.hh:222
XrdHttpProtocol::BuffgetData
int BuffgetData(int blen, char **data, bool wait)
Get a pointer, valid for up to blen bytes from the buffer. Returns the validity.
XrdHttpProtocol::operator=
XrdHttpProtocol operator=(const XrdHttpProtocol &rhs)
XrdHttpProtocol::ResumeBytes
long ResumeBytes
Tells that we are just waiting to have N bytes in the buffer.
Definition: XrdHttpProtocol.hh:259
XrdHttpProtocol::Link
XrdLink * Link
The link we are bound to.
Definition: XrdHttpProtocol.hh:312
XrdHttpProtocol::doChksum
int doChksum(const XrdOucString &fname)
Perform a checksum request.
XrdHttpProtocol::Reset
void Reset()
Reset values, counters, in order to reutilize an object of this class.
XrdOucGMap
Definition: XrdOucGMap.hh:48
XrdXrootd::Bridge
Definition: XrdXrootdBridge.hh:61
XrdHttpProtocol::exthandler
static struct XrdHttpProtocol::XrdHttpExtHandlerInfo exthandler[MAX_XRDHTTPEXTHANDLERS]
XrdHttpProtocol::SendData
int SendData(const char *body, int bodylen)
Send some generic data to the client.
XrdHttpProtocol::xdesthttps
static int xdesthttps(XrdOucStream &Config)
XrdSysPthread.hh
XrdHttpProtocol::exthandlercnt
static int exthandlercnt
Definition: XrdHttpProtocol.hh:203
XrdHttpProtocol::hdr2cgimap
static std::map< std::string, std::string > hdr2cgimap
Rules that turn HTTP headers to cgi tokens in the URL, for internal comsumption.
Definition: XrdHttpProtocol.hh:390
XrdHttpProtocol::ProtStack
static XrdObjectQ< XrdHttpProtocol > ProtStack
Definition: XrdHttpProtocol.hh:121
XrdHttpProtocol::eDest
static XrdSysError eDest
Definition: XrdHttpProtocol.hh:308
XrdHttpProtocol::m_bio_type
static int m_bio_type
Type identifier for our custom BIO objects.
Definition: XrdHttpProtocol.hh:393
XrdHttpProtocol::listdeny
static bool listdeny
If true, any form of listing is denied.
Definition: XrdHttpProtocol.hh:368
XrdHttpProtocol::StaticPreloadInfo
Definition: XrdHttpProtocol.hh:380
XrdHttpProtocol::embeddedstatic
static bool embeddedstatic
If true, use the embedded css and icons.
Definition: XrdHttpProtocol.hh:374
XrdObject.hh
XrdObject< XrdHttpProtocol >
XrdHttpProtocol::x509_store_lock
static XrdSysRWLock x509_store_lock
Definition: XrdHttpProtocol.hh:266
XrdHttpProtocol::sslcadir
static char * sslcadir
Definition: XrdHttpProtocol.hh:350
XrdHttpProtocol::Cleanup
void Cleanup()
Deallocate resources, in order to reutilize an object of this class.
XrdHttpProtocol::Bridge
XrdXrootd::Bridge * Bridge
The Bridge that we use to exercise the xrootd internals.
Definition: XrdHttpProtocol.hh:322
XrdBuffManager
Definition: XrdBuffer.hh:74
XrdHttpProtocol::Process
int Process(XrdLink *lp)
Process data incoming from the socket.
XrdHttpProtocol::myRole
static kXR_int32 myRole
Our role.
Definition: XrdHttpProtocol.hh:387
XrdSecService
Definition: XrdSecInterface.hh:535
XrdHttpProtocol::ssldone
bool ssldone
Definition: XrdHttpProtocol.hh:282
XrdProtocol_Config
Definition: XrdProtocol.hh:54
XrdHttpProtocol::ExtHandlerLoaded
static bool ExtHandlerLoaded(const char *handlername)
XrdOucHash
Definition: XrdOucHash.hh:127
XrdHttpProtocol::sslbio_err
static BIO * sslbio_err
bio to print SSL errors
Definition: XrdHttpProtocol.hh:275
XrdHttpProtocol::BuffgetLine
int BuffgetLine(XrdOucString &dest)
Copy a full line of text from the buffer into dest. Zero if no line can be found in the buffer.
XrdHttpProtocol::Config
static int Config(const char *fn, XrdOucEnv *myEnv)
Functions related to the configuration.
XrdSysRWLock
Definition: XrdSysPthread.hh:295
XrdHttpProtocol::xstaticredir
static int xstaticredir(XrdOucStream &Config)
XrdHttpExtHandler
Definition: XrdHttpExtHandler.hh:79
XrdHttpProtocol::CurrentReq
XrdHttpReq CurrentReq
Definition: XrdHttpProtocol.hh:327
XrdHttpProtocol::listredir
static char * listredir
Url to redirect to in the case a listing is requested.
Definition: XrdHttpProtocol.hh:365
XrdHttpProtocol::LoadExtHandler
static int LoadExtHandler(XrdSysError *eDest, const char *libName, const char *configFN, const char *libParms, XrdOucEnv *myEnv, const char *instName)
XrdHttpProtocol::sslcipherfilter
static char * sslcipherfilter
Definition: XrdHttpProtocol.hh:350
XrdOucStream
Definition: XrdOucStream.hh:45
XrdHttpProtocol::xselfhttps2http
static int xselfhttps2http(XrdOucStream &Config)
XrdOucHash.hh
XrdHttpProtocol::XrdHttpExtHandlerInfo::ptr
XrdHttpExtHandler * ptr
Definition: XrdHttpProtocol.hh:201
XrdHttpProtocol::ChunkResp
int ChunkResp(const char *body, long long bodylen)
Send a (potentially partial) body in a chunked response; invoking with NULL body.
XrdHttpReq
Definition: XrdHttpReq.hh:77
XrdHttpProtocol::isHTTPS
bool isHTTPS()
called via https
Definition: XrdHttpProtocol.hh:129
XrdHttpProtocol::sslcert
static char * sslcert
OpenSSL stuff.
Definition: XrdHttpProtocol.hh:350
XrdHttpProtocol::sslkey
static char * sslkey
Definition: XrdHttpProtocol.hh:350
XrdProtocol.hh
XrdHttpProtocol::StaticPreloadInfo::data
char * data
Definition: XrdHttpProtocol.hh:381
XrdHttpProtocol::tmpline
XrdOucString tmpline
A nice var to hold the current header line.
Definition: XrdHttpProtocol.hh:225
XrdHttpProtocol::myBuffStart
char * myBuffStart
The circular pointers.
Definition: XrdHttpProtocol.hh:222
XrdHttpProtocol::XrdHttpExtHandlerInfo::name
char name[16]
Definition: XrdHttpProtocol.hh:200
XrdHttpProtocol::CIA
static XrdSecService * CIA
Definition: XrdHttpProtocol.hh:309
XrdHttpProtocol::DoIt
void DoIt()
Override from the base class.
Definition: XrdHttpProtocol.hh:87
XrdHttpProtocol::xsslcert
static int xsslcert(XrdOucStream &Config)
XrdCryptoFactory.hh
XrdObjectQ< XrdHttpProtocol >
XrdHttpProtocol::doStat
int doStat(char *fname)
Perform a Stat request.
XrdHttpProtocol::XrdHttpProtocol
XrdHttpProtocol(const XrdHttpProtocol &)=default
Ctor, dtors and copy ctor.
XrdOucEnv
Definition: XrdOucEnv.hh:41
XrdHttpSecXtractor
Definition: XrdHttpSecXtractor.hh:41
XrdHttpProtocol::Addr_str
char * Addr_str
Definition: XrdHttpProtocol.hh:316
XrdHttpProtocol::CreateBIO
static BIO * CreateBIO(XrdLink *lp)
Create a new BIO object from an XrdLink. Returns NULL on failure.
XrdHttpProtocol::xgmap
static int xgmap(XrdOucStream &Config)
XrdHttpProtocol::Sched
static XrdScheduler * Sched
Definition: XrdHttpProtocol.hh:306
XrdHttpProtocol::sslverifydepth
static int sslverifydepth
Depth of verification of a certificate chain.
Definition: XrdHttpProtocol.hh:359
MAX_XRDHTTPEXTHANDLERS
#define MAX_XRDHTTPEXTHANDLERS
Definition: XrdHttpProtocol.hh:198
XrdScheduler
Definition: XrdScheduler.hh:44
XrdHttpProtocol::xembeddedstatic
static int xembeddedstatic(XrdOucStream &Config)
XrdHttpProtocol::GetVOMSData
int GetVOMSData(XrdLink *lp)
XrdHttpProtocol::StaticPreloadInfo::len
int len
Definition: XrdHttpProtocol.hh:382
XrdHttpProtocol::xtrace
static int xtrace(XrdOucStream &Config)
XrdHttpProtocol::DoingLogin
bool DoingLogin
Tells that we are just logging in.
Definition: XrdHttpProtocol.hh:256
XrdHttpProtocol::selfhttps2http
static bool selfhttps2http
If client is HTTPS, self-redirect with HTTP+token.
Definition: XrdHttpProtocol.hh:371
XrdHttpProtocol::Match
XrdProtocol * Match(XrdLink *lp)
Tells if the oustanding bytes on the socket match this protocol implementation.
XrdHttpProtocol::SendSimpleResp
int SendSimpleResp(int code, const char *desc, const char *header_to_add, const char *body, long long bodylen, bool keepalive)
Sends a basic response. If the length is < 0 then it is calculated internally.
XrdHttpProtocol::secxtractor
static XrdHttpSecXtractor * secxtractor
Definition: XrdHttpProtocol.hh:191
XrdHttpProtocol::FindMatchingExtHandler
static XrdHttpExtHandler * FindMatchingExtHandler(const XrdHttpReq &)
XrdHttpProtocol::xsslcafile
static int xsslcafile(XrdOucStream &Config)
XrdHttpProtocol
Definition: XrdHttpProtocol.hh:76
XrdXrootdBridge.hh
XrdHttpProtocol::Recycle
void Recycle(XrdLink *lp, int consec, const char *reason)
Recycle this instance.
XrdHttpProtocol::sslctx
static SSL_CTX * sslctx
Global, static SSL context.
Definition: XrdHttpProtocol.hh:262
XrdHttpProtocol::servGMap
static XrdOucGMap * servGMap
The instance of the DN mapper. Created only when a valid path is given.
Definition: XrdHttpProtocol.hh:319
XrdHttpProtocol::xsecretkey
static int xsecretkey(XrdOucStream &Config)
XrdHttpProtocol::xsslkey
static int xsslkey(XrdOucStream &Config)
XrdHttpProtocol::staticpreload
static XrdOucHash< StaticPreloadInfo > * staticpreload
Definition: XrdHttpProtocol.hh:384
XrdHttpProtocol::Stats
int Stats(char *buff, int blen, int do_sync=0)
Get activity stats.
XrdHttpProtocol::m_bio_method
static BIO_METHOD * m_bio_method
C-style vptr table for our custom BIO objects.
Definition: XrdHttpProtocol.hh:396
XrdHttpProtocol::myCryptoFactory
static XrdCryptoFactory * myCryptoFactory
Definition: XrdHttpProtocol.hh:284
XrdHttpProtocol::ishttps
bool ishttps
Tells if the client is https.
Definition: XrdHttpProtocol.hh:278
XrdHttpProtocol::xlistredir
static int xlistredir(XrdOucStream &Config)
XrdHttpProtocol::staticredir
static char * staticredir
Definition: XrdHttpProtocol.hh:377
XrdHttpProtocol::xsslcipherfilter
static int xsslcipherfilter(XrdOucStream &Config)
XrdHttpProtocol::gridmap
static char * gridmap
Gridmap file location. The same used by XrdSecGsi.
Definition: XrdHttpProtocol.hh:353
XrdHttpProtocol::getDataOneShot
int getDataOneShot(int blen, bool wait=false)
XrdHttpProtocol::PeriodicUpdate
static void PeriodicUpdate()
Handle periodic refresh of the CRLs.
XrdHttpProtocol::hailWait
static int hailWait
Timeout for reading the handshake.
Definition: XrdHttpProtocol.hh:335
XrdHttpProtocol::myBuff
XrdBuffer * myBuff
Circular Buffer used to read the request.
Definition: XrdHttpProtocol.hh:220
XrdHttpProtocol::sslcafile
static char * sslcafile
Definition: XrdHttpProtocol.hh:350
XrdHttpProtocol::StartSimpleResp
int StartSimpleResp(int code, const char *desc, const char *header_to_add, long long bodylen, bool keepalive)
Start a response back to the client.
XrdHttpProtocol::InitSecurity
static int InitSecurity()
Initialization of the ssl security things.
XrdHttpProtocol::xstaticpreload
static int xstaticpreload(XrdOucStream &Config)
XrdHttpProtocol::Resume
int(XrdHttpProtocol::* Resume)()
The resume function.
Definition: XrdHttpProtocol.hh:138
XrdHttpProtocol::verify_store
static X509_STORE * verify_store
Current X509_STORE and associated locks.
Definition: XrdHttpProtocol.hh:265
XrdHttpProtocol::ProtLink
XrdObject< XrdHttpProtocol > ProtLink
Definition: XrdHttpProtocol.hh:122
XrdProtocol
Definition: XrdProtocol.hh:116
XrdHttpProtocol::GetClientIPStr
char * GetClientIPStr()
Gets a string that represents the IP address of the client. Must be freed.
XrdHttpProtocol::xsslverifydepth
static int xsslverifydepth(XrdOucStream &Config)
XrdSecEntity
Definition: XrdSecEntity.hh:51
XrdHttpProtocol::SecEntity
XrdSecEntity SecEntity
Authentication area.
Definition: XrdHttpProtocol.hh:126
XrdBuffer
Definition: XrdBuffer.hh:41
XrdHttpProtocol::~XrdHttpProtocol
~XrdHttpProtocol()
Definition: XrdHttpProtocol.hh:117
XrdHttpProtocol::Window
static int Window
Windowsize.
Definition: XrdHttpProtocol.hh:347
XrdXrootdProtocol
Definition: XrdXrootdProtocol.hh:93
XrdHttpExtReq
Definition: XrdHttpExtHandler.hh:45
XrdHttpProtocol::BuffConsume
void BuffConsume(int blen)
Consume some bytes from the buffer.
XrdHttpProtocol::BPool
static XrdBuffManager * BPool
Definition: XrdHttpProtocol.hh:307
XrdHttpProtocol::ssl
SSL * ssl
Private SSL context.
Definition: XrdHttpProtocol.hh:269
XrdOucTrace
Definition: XrdOucTrace.hh:35
XrdOucTokenizer
Definition: XrdOucTokenizer.hh:32
XrdHttpProtocol::StartChunkedResp
int StartChunkedResp(int code, const char *desc, const char *header_to_add, bool keepalive)
Starts a chunked response; body of request is sent over multiple parts using the SendChunkResp.
XrdHttpProtocol::BuffUsed
int BuffUsed()
How many bytes in the buffer.
XrdSysError
Definition: XrdSysError.hh:89
XrdHttpProtocol::sbio
BIO * sbio
Private SSL bio.
Definition: XrdHttpProtocol.hh:272
XrdHttpProtocol::BuffAvailable
int BuffAvailable()
How many bytes still fit into the buffer in a contiguous way.
XrdHttpProtocol::secretkey
static char * secretkey
The key used to calculate the url hashes.
Definition: XrdHttpProtocol.hh:356
XrdOucStream.hh
XrdHttpProtocol::BuffFree
int BuffFree()
How many bytes free in the buffer.
XrdHttpReq.hh
Main request/response class, handling the logical status of the communication.
XrdHttpProtocol::Port
static int Port
Our port.
Definition: XrdHttpProtocol.hh:341
XrdOucString
Definition: XrdOucString.hh:254
XrdHttpProtocol::xexthandler
static int xexthandler(XrdOucStream &Config, const char *ConfigFN, XrdOucEnv *myEnv)
XrdCryptoFactory
Definition: XrdCryptoFactory.hh:115
XrdHttpProtocol::isdesthttps
static bool isdesthttps
True if the redirections must be towards https targets.
Definition: XrdHttpProtocol.hh:362
XrdHttpProtocol::xsslcadir
static int xsslcadir(XrdOucStream &Config)
XrdHttpProtocol::xsecxtractor
static int xsecxtractor(XrdOucStream &Config)
XrdHttpProtocol::Port_str
static char * Port_str
Our port, as a string.
Definition: XrdHttpProtocol.hh:344
XrdHttpProtocol::XrdHttpExtHandlerInfo
Definition: XrdHttpProtocol.hh:199
XrdSysError.hh
XrdHttpProtocol::xheader2cgi
static int xheader2cgi(XrdOucStream &Config)