175 lines
11 KiB
C++
175 lines
11 KiB
C++
// ==========================================================================
|
||
// Class Specification : COXScript
|
||
// ==========================================================================
|
||
|
||
// Header file : oxscript.h
|
||
|
||
// Version: 9.3
|
||
|
||
// This software along with its related components, documentation and files ("The Libraries")
|
||
// is ?1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
|
||
// governed by a software license agreement ("Agreement"). Copies of the Agreement are
|
||
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
|
||
// to obtain this file, or directly from our office. For a copy of the license governing
|
||
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
|
||
|
||
// //////////////////////////////////////////////////////////////////////////
|
||
|
||
// Properties:
|
||
// YES Abstract class (does not have any objects)
|
||
// YES Derived from CObject
|
||
|
||
// NO Is a Cwnd.
|
||
// NO Two stage creation (constructor & Create())
|
||
// NO Has a message map
|
||
// NO Needs a resource (template)
|
||
|
||
// NO Persistent objects (saveable on disk)
|
||
// NO Uses exceptions
|
||
|
||
// //////////////////////////////////////////////////////////////////////////
|
||
|
||
// Desciption :
|
||
// base class for handling CGI scripts called from a WEB server
|
||
//
|
||
|
||
// Remark:
|
||
// ***
|
||
// Prerequisites (necessary conditions):
|
||
// ***
|
||
|
||
/////////////////////////////////////////////////////////////////////////////
|
||
|
||
#ifndef __SCRIPT_H__
|
||
#define __SCRIPT_H__
|
||
|
||
#if _MSC_VER >= 1000
|
||
#pragma once
|
||
#endif // _MSC_VER >= 1000
|
||
|
||
#include "OXDllExt.h"
|
||
|
||
|
||
class OX_CLASS_DECL COXScript : public CObject
|
||
{
|
||
// Data members -------------------------------------------------------------
|
||
public:
|
||
|
||
protected:
|
||
TCHAR InputBuffer[4096];
|
||
|
||
private:
|
||
|
||
// Member functions ---------------------------------------------------------
|
||
public:
|
||
COXScript();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns :
|
||
// --- Effect : Contructor of object
|
||
// It will initialize the internal state
|
||
|
||
int DoMain(int argc, char** argv);
|
||
// --- In : argc : number of commandline arguments
|
||
// argv : the commandline arguments
|
||
// --- Out :
|
||
// --- Returns : exit code of the program
|
||
// --- Effect : Executes the main loop
|
||
|
||
// common attributes to get
|
||
LPCTSTR GetPathInfo();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the path
|
||
// --- Effect : get path part
|
||
|
||
// not so common attributes to get
|
||
LPCTSTR GetScriptName();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the name of the script
|
||
// --- Effect : get script name
|
||
|
||
LPCTSTR GetAccepted();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : list of accepted formats (HTTP_ACCEPT)
|
||
// --- Effect :
|
||
|
||
LPCTSTR GetRemoteAddress();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the IP number of the remote computer
|
||
// --- Effect : get remote IP number
|
||
|
||
// Client Info
|
||
LPCTSTR GetClientInfo(LPCTSTR pszPart);
|
||
// --- In : pszPart
|
||
// --- Out :
|
||
// --- Returns : the client info
|
||
// --- Effect : get the client info
|
||
// such as ACCEPT or USER_AGENT or REFERER
|
||
|
||
// Server info
|
||
LPCTSTR GetServerName();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the name of the server the CGI is running on
|
||
// --- Effect : get name of the server
|
||
|
||
int GetServerPort();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the port the server is using
|
||
// --- Effect : get the port
|
||
|
||
LPCTSTR GetServerProtocol();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the protocol the server is using
|
||
// --- Effect : get protocol
|
||
|
||
LPCTSTR GetServerSoftware();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns : the CGI software the server is using
|
||
// --- Effect : get CGI software
|
||
|
||
virtual ~COXScript();
|
||
// --- In :
|
||
// --- Out :
|
||
// --- Returns :
|
||
// --- Effect : Destructor of object
|
||
|
||
protected:
|
||
virtual void OnGet(LPCTSTR pszParam) = 0;
|
||
virtual void OnPost(LPCTSTR pszType, LPCTSTR pszData) = 0;
|
||
virtual void OnRunCommandLine(int argc, char** argv) = 0;
|
||
|
||
static BOOL Extract(CString& strRet, LPCTSTR pszData, int iArg, LPCTSTR pszLabel);
|
||
static BOOL ExtractSubString(CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep);
|
||
static BOOL FindAndReplace(LPCTSTR pszcFind, LPCTSTR pszcReplace, LPCTSTR pszcSource, LPTSTR& pszDestination);
|
||
|
||
// The following function does not do UUDecoding. It has been named improperly. However,
|
||
// to save legacy code that uses this function we will not rename it but simply provide this
|
||
// information to users who may wish to change it.
|
||
//
|
||
// What this function does is simply parsing out the query sent by the browser to the CGI
|
||
// script
|
||
//
|
||
// ex: Jeff%20Scott%20Webmaster
|
||
// would be converted to
|
||
// Jeff Scott Webmaster
|
||
// through this function
|
||
// A recommended function name is
|
||
// ParseQuery(LPCTSTR pszcSource, LPTSTR& pszDestination);
|
||
// This is a little more representative of its function since it is parseing out the
|
||
// query that was sent from the user's browser to the script.
|
||
static BOOL UUDecode(LPCTSTR pszcSource, LPTSTR& pszDestination);
|
||
|
||
|
||
};
|
||
|
||
#endif // __SCRIPT_H__
|
||
// ==========================================================================
|
||
|