mirror of
https://github.com/NishiOwO/tkwww.git
synced 2025-04-21 16:54:40 +00:00
190 lines
4.8 KiB
C
190 lines
4.8 KiB
C
/* Configuration Manager for libwww
|
|
CONFIGURATION MANAGER
|
|
|
|
Author Tim Berners-Lee/CERN. Public domain. Please mail changes to timbl@info.cern.ch.
|
|
|
|
The configuration information loaded includes tables (file suffixes, presentation
|
|
methods) in other modules. The most likely routines needed by developers will be:
|
|
|
|
HTSetConfiguration to load configuration information.
|
|
|
|
HTLoadRules to load a whole file of configuration information
|
|
|
|
HTTranslate to translate a URL using the rule table.
|
|
|
|
*/
|
|
#ifndef HTRULE_H
|
|
#define HTRULE_H
|
|
|
|
#include "HTUtils.h"
|
|
#include "HTAccess.h" /* HTRequest */
|
|
|
|
typedef enum _HTRuleOp {
|
|
HT_Invalid,
|
|
HT_Map,
|
|
HT_Pass,
|
|
HT_Fail,
|
|
HT_DefProt,
|
|
HT_Protect,
|
|
HT_Exec,
|
|
HT_Redirect
|
|
} HTRuleOp;
|
|
|
|
#ifdef SHORT_NAMES
|
|
#define HTSearSc HTSearchScript
|
|
#define HTPutScr HTPutScript
|
|
#define HTPostSc HTPostScript
|
|
#endif /*SHORT_NAMES*/
|
|
|
|
/*
|
|
|
|
Server Side Script Execution
|
|
|
|
If a URL starts with /htbin/ it is understood to mean a script execution request on
|
|
server. This feature needs to be turned on by setting HTBinDir by the htbin rule.
|
|
Index searching is enabled by setting HTSearchScript into the name of script in BinDir
|
|
doing the actual search by search rule (BinDir must also be set in this case, of
|
|
course).
|
|
|
|
*/
|
|
|
|
extern char * HTSearchScript; /* Search script name */
|
|
extern char * HTPutScript; /* Script handling PUT */
|
|
extern char * HTPostScript; /* Script handling POST */
|
|
|
|
/*
|
|
|
|
HTAddRule: Add rule to the list
|
|
|
|
ON ENTRY,
|
|
|
|
pattern points to 0-terminated string containing a single "*"
|
|
|
|
equiv points to the equivalent string with * for the place where the
|
|
text matched by * goes.
|
|
|
|
ON EXIT,
|
|
|
|
returns 0 if success, -1 if error.
|
|
|
|
Note that if BYTE_ADDRESSING is set, the three blocks required are allocated and
|
|
deallocated as one. This will save time and storage, when malloc's allocation units are
|
|
large.
|
|
|
|
*/
|
|
extern int HTAddRule PARAMS((HTRuleOp op, const char * pattern, const char * equiv));
|
|
|
|
|
|
/*
|
|
|
|
HTClearRules: Clear all rules
|
|
|
|
ON EXIT,
|
|
|
|
Rule file There are no rules
|
|
|
|
returns
|
|
0 if success, -1 if error.
|
|
|
|
*/
|
|
|
|
#ifdef __STDC__
|
|
extern int HTClearRules(void);
|
|
#else
|
|
extern int HTClearRules();
|
|
#endif
|
|
|
|
|
|
/*
|
|
|
|
HTTranslate: Translate by rules
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
ON ENTRY,
|
|
|
|
required points to a string whose equivalent value is neeed
|
|
|
|
ON EXIT,
|
|
|
|
returns the address of the equivalent string allocated from the heap
|
|
which the CALLER MUST FREE. If no translation occured, then it is
|
|
a copy of the original.
|
|
|
|
*/
|
|
|
|
PUBLIC char * HTTranslate PARAMS((CONST char * required));
|
|
|
|
/*
|
|
|
|
HTTranslateReq: Translate request by rules
|
|
|
|
ON ENTRY,
|
|
|
|
req request structure.
|
|
|
|
req->simplified simplified pathname (no ..'s etc in it), which will be translated
|
|
by rules.
|
|
|
|
ON EXIT,
|
|
|
|
returns YES on success, NO on failure (Forbidden).
|
|
|
|
req->translated contains the translated filename; NULL if a script call.
|
|
|
|
req->script contains the executable script name; NULL if not a script call.
|
|
|
|
*/
|
|
|
|
PUBLIC BOOL HTTranslateReq PARAMS((HTRequest * req));
|
|
|
|
|
|
/*
|
|
|
|
HTSetConfiguration: Load one line of configuration information
|
|
|
|
ON ENTRY,
|
|
|
|
config is a string in the syntax of a rule file line.
|
|
|
|
This routine may be used for loading configuration information from sources other than
|
|
the rule file, for example INI files for X resources.
|
|
|
|
*/
|
|
extern int HTSetConfiguration PARAMS((CONST char * config));
|
|
|
|
|
|
/*
|
|
|
|
HtLoadRules: Load the rules from a file
|
|
|
|
ON ENTRY,
|
|
|
|
Rule table Rules can be in any state
|
|
|
|
ON EXIT,
|
|
|
|
Rule table Any existing rules will have been kept. Any new rules will have
|
|
been loaded on top, so as to be tried first.
|
|
|
|
Returns 0 if no error.
|
|
|
|
*/
|
|
|
|
#ifdef __STDC__
|
|
extern int HTLoadRules(const char * filename);
|
|
#else
|
|
extern int HTLoadRules();
|
|
#endif
|
|
/*
|
|
|
|
*/
|
|
|
|
|
|
#endif /* HTUtils.h */
|
|
/*
|
|
|
|
end */
|