00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _CGIENVIRONMENT_H_
00023 #define _CGIENVIRONMENT_H_ 1
00024
00025 #ifdef __GNUG__
00026 # pragma interface
00027 #endif
00028
00038 #include <string>
00039 #include <vector>
00040 #include <cstdlib>
00041
00042 #include "cgicc/CgiDefs.h"
00043 #include "cgicc/CgiUtils.h"
00044 #include "cgicc/CgiInput.h"
00045 #include "cgicc/HTTPCookie.h"
00046
00047 CGICC_BEGIN_NAMESPACE
00048
00049 #ifdef WIN32
00050 template class CGICC_API STDNS vector<HTTPCookie>;
00051 #endif
00052
00053
00054
00055
00056
00058 typedef STDNS vector<HTTPCookie>::iterator cookie_iterator;
00060 typedef STDNS vector<HTTPCookie>::const_iterator const_cookie_iterator;
00061
00062
00063
00064
00065
00074 class CGICC_API CgiEnvironment
00075 {
00076 public:
00077
00078 friend class Cgicc;
00079
00080
00081
00084
00099 CgiEnvironment(CgiInput *input);
00100
00106 ~CgiEnvironment();
00108
00109
00110
00115
00122 inline STDNS string
00123 getServerSoftware() const
00124 { return fServerSoftware; }
00125
00132 inline STDNS string
00133 getServerName() const
00134 { return fServerName; }
00135
00142 inline STDNS string
00143 getGatewayInterface() const
00144 { return fGatewayInterface;}
00145
00152 inline STDNS string
00153 getServerProtocol() const
00154 { return fServerProtocol; }
00155
00162 inline unsigned long
00163 getServerPort() const
00164 { return fServerPort; }
00165
00172 inline bool
00173 usingHTTPS() const
00174 { return fUsingHTTPS; }
00176
00177
00178
00183
00193 inline STDNS string
00194 getCookies() const
00195 { return fCookie; }
00196
00206 inline const STDNS vector<HTTPCookie>&
00207 getCookieList() const
00208 { return fCookies; }
00209
00216 inline STDNS string
00217 getRequestMethod() const
00218 { return fRequestMethod; }
00219
00228 inline STDNS string
00229 getPathInfo() const
00230 { return fPathInfo; }
00231
00238 inline STDNS string
00239 getPathTranslated() const
00240 { return fPathTranslated; }
00241
00248 inline STDNS string
00249 getScriptName() const
00250 { return fScriptName; }
00251
00261 inline STDNS string
00262 getQueryString() const
00263 { return fQueryString; }
00264
00271 inline unsigned long
00272 getContentLength() const
00273 { return fContentLength; }
00274
00286 inline STDNS string
00287 getContentType() const
00288 { return fContentType; }
00289
00296 inline STDNS string
00297 getPostData() const
00298 { return fPostData; }
00300
00301
00302
00307
00314 inline STDNS string
00315 getReferrer() const
00316 { return fReferrer; }
00318
00319
00320
00325
00332 inline STDNS string
00333 getRemoteHost() const
00334 { return fRemoteHost; }
00335
00342 inline STDNS string
00343 getRemoteAddr() const
00344 { return fRemoteAddr; }
00345
00353 inline STDNS string
00354 getAuthType() const
00355 { return fAuthType; }
00356
00364 inline STDNS string
00365 getRemoteUser() const
00366 { return fRemoteUser; }
00367
00378 inline STDNS string
00379 getRemoteIdent() const
00380 { return fRemoteIdent; }
00381
00388 inline STDNS string
00389 getAccept() const
00390 { return fAccept; }
00391
00399 inline STDNS string
00400 getUserAgent() const
00401 { return fUserAgent; }
00403
00404
00405
00411
00419 inline STDNS string
00420 getRedirectRequest() const
00421 { return fRedirectRequest; }
00422
00431 inline STDNS string
00432 getRedirectURL() const
00433 { return fRedirectURL; }
00434
00442 inline STDNS string
00443 getRedirectStatus() const
00444 { return fRedirectStatus; }
00446
00447 protected:
00448
00449
00450
00455
00462 void
00463 save(const STDNS string& filename) const;
00464
00471
00472 void
00473 restore(const STDNS string& filename);
00475
00476
00477
00478 private:
00479
00480
00481 void
00482 parseCookies();
00483
00484
00485 void
00486 parseCookie(const STDNS string& data);
00487
00488
00489 void
00490 readEnvironmentVariables(CgiInput *input);
00491
00492 unsigned long fServerPort;
00493 unsigned long fContentLength;
00494 bool fUsingHTTPS;
00495 STDNS string fServerSoftware;
00496 STDNS string fServerName;
00497 STDNS string fGatewayInterface;
00498 STDNS string fServerProtocol;
00499 STDNS string fRequestMethod;
00500 STDNS string fPathInfo;
00501 STDNS string fPathTranslated;
00502 STDNS string fScriptName;
00503 STDNS string fQueryString;
00504 STDNS string fRemoteHost;
00505 STDNS string fRemoteAddr;
00506 STDNS string fAuthType;
00507 STDNS string fRemoteUser;
00508 STDNS string fRemoteIdent;
00509 STDNS string fContentType;
00510 STDNS string fAccept;
00511 STDNS string fUserAgent;
00512 STDNS string fPostData;
00513 STDNS string fRedirectRequest;
00514 STDNS string fRedirectURL;
00515 STDNS string fRedirectStatus;
00516 STDNS string fReferrer;
00517 STDNS string fCookie;
00518 STDNS vector<HTTPCookie> fCookies;
00519 };
00520
00521 CGICC_END_NAMESPACE
00522
00523 #endif