1 /* Configuration Manager for libwww 2 * CONFIGURATION MANAGER 3 * 4 * Author Tim Berners-Lee/CERN. Public domain. Please mail changes to 5 * timbl@info.cern.ch. 6 * 7 * The configuration information loaded includes tables (file suffixes, 8 * presentation methods) in other modules. The most likely routines needed by 9 * developers will be: 10 * 11 * HTSetConfiguration to load configuration information. 12 * 13 * HTLoadRules to load a whole file of configuration information 14 * 15 * HTTranslate to translate a URL using the rule table. 16 * 17 */ 18 #ifndef HTRULE_H 19 #define HTRULE_H 20 21 #ifndef HTUTILS_H 22 #include <HTUtils.h> 23 #endif 24 25 #ifdef __cplusplus 26 extern "C" { 27 #endif 28 typedef enum { 29 HT_Invalid, 30 HT_Map, 31 HT_Pass, 32 HT_Fail, 33 HT_DefProt, 34 HT_Protect, 35 HT_Progress, 36 HT_InfoMsg, 37 HT_UserMsg, 38 HT_Alert, 39 HT_AlwaysAlert, 40 HT_Redirect, 41 HT_RedirectPerm, 42 HT_PermitRedir, 43 HT_UseProxy 44 } HTRuleOp; 45 46 #ifndef NO_RULES 47 48 /* 49 50 Server Side Script Execution 51 52 If a URL starts with /htbin/ it is understood to mean a script execution request on 53 server. This feature needs to be turned on by setting HTBinDir by the htbin rule. 54 Index searching is enabled by setting HTSearchScript into the name of script in BinDir 55 doing the actual search by search rule (BinDir must also be set in this case, of 56 course). 57 58 */ 59 60 extern char *HTBinDir; /* Physical /htbin location */ 61 extern char *HTSearchScript; /* Search script name */ 62 63 /* 64 65 HTAddRule: Add rule to the list 66 67 ON ENTRY, 68 69 pattern points to 0-terminated string containing a single "*" 70 71 equiv points to the equivalent string with * for the place where the 72 text matched by * goes; or to other 2nd parameter 73 meaning depends on op). 74 75 cond_op, additional condition for applying rule; cond_op should 76 cond be either NULL (no additional condition), or one of 77 the strings "if" or "unless"; if cond_op is not NULL, 78 cond should point to a recognized condition keyword 79 (as a string) such as "userspec", "redirected". 80 81 ON EXIT, 82 83 returns 0 if success, -1 if error. 84 85 Note that if BYTE_ADDRESSING is set, the three blocks required are allocated and 86 deallocated as one. This will save time and storage, when malloc's allocation units are 87 large. 88 89 */ 90 extern int HTAddRule(HTRuleOp op, const char *pattern, 91 const char *equiv, 92 const char *cond_op, 93 const char *cond); 94 95 /* 96 97 HTClearRules: Clear all rules 98 99 ON EXIT, 100 101 Rule file There are no rules 102 103 */ 104 105 extern void HTClearRules(void); 106 107 /* 108 109 HTTranslate: Translate by rules 110 111 */ 112 113 /* 114 115 ON ENTRY, 116 117 required points to a string whose equivalent value is neeed 118 119 ON EXIT, 120 121 returns the address of the equivalent string allocated from the heap 122 which the CALLER MUST FREE. If no translation occurred, then it is 123 a copy of the original. 124 125 */ 126 extern char *HTTranslate(const char *required); 127 128 /* 129 130 HTSetConfiguration: Load one line of configuration information 131 132 ON ENTRY, 133 134 config is a string in the syntax of a rule file line. 135 136 This routine may be used for loading configuration information from sources other than 137 the rule file, for example INI files for X resources. 138 139 */ 140 extern int HTSetConfiguration(char *config); 141 142 /* 143 144 HtLoadRules: Load the rules from a file 145 146 ON ENTRY, 147 148 Rule table Rules can be in any state 149 150 ON EXIT, 151 152 Rule table Any existing rules will have been kept. Any new rules will have 153 been loaded on top, so as to be tried first. 154 155 Returns 0 if no error. 156 157 */ 158 159 extern int HTLoadRules(const char *filename); 160 161 /* 162 163 */ 164 165 #endif /* NO_RULES */ 166 #ifdef __cplusplus 167 } 168 #endif 169 #endif /* HTRULE_H */ 170