summaryrefslogtreecommitdiffabout
path: root/include/sitecing/configuration.h
Unidiff
Diffstat (limited to 'include/sitecing/configuration.h') (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/configuration.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/include/sitecing/configuration.h b/include/sitecing/configuration.h
index 330a5a6..a2bf612 100644
--- a/include/sitecing/configuration.h
+++ b/include/sitecing/configuration.h
@@ -131,34 +131,43 @@ namespace sitecing {
131 * The regexp to check request against. 131 * The regexp to check request against.
132 */ 132 */
133 string s_regex; 133 string s_regex;
134 /** 134 /**
135 * Precompiled regex. 135 * Precompiled regex.
136 */ 136 */
137 pcrepp::Pcre regex; 137 pcrepp::Pcre regex;
138 /** 138 /**
139 * The action handler component. 139 * The action handler component.
140 */ 140 */
141 string action; 141 string action;
142 /** 142 /**
143 * Arguments for the action hander coponent. 143 * Arguments for the action hander coponent.
144 */ 144 */
145 list<string> args; 145 list<string> args;
146 146
147 /**
148 * @param s regex pattern
149 * @param a action handler
150 */
147 action_handler_t(const string& s,const string& a) 151 action_handler_t(const string& s,const string& a)
148 : s_regex(s), regex(s), action(a) { } 152 : s_regex(s), regex(s), action(a) { }
153 /**
154 * Copy constructor
155 *
156 * @param s source object
157 */
149 action_handler_t(const action_handler_t& s) 158 action_handler_t(const action_handler_t& s)
150 : s_regex(s.s_regex), regex(s.regex), action (s.action), args(s.args) { } 159 : s_regex(s.s_regex), regex(s.regex), action (s.action), args(s.args) { }
151 }; 160 };
152 /** 161 /**
153 * Type for the list of action handlers. 162 * Type for the list of action handlers.
154 */ 163 */
155 typedef list<action_handler_t> action_handlers_t; 164 typedef list<action_handler_t> action_handlers_t;
156 /** 165 /**
157 * The list of action handlers. 166 * The list of action handlers.
158 */ 167 */
159 action_handlers_t action_handlers; 168 action_handlers_t action_handlers;
160 /** 169 /**
161 * Type for the map of HTTP status handler components. 170 * Type for the map of HTTP status handler components.
162 */ 171 */
163 typedef map<string,string> http_status_handlers_t; 172 typedef map<string,string> http_status_handlers_t;
164 /** 173 /**
@@ -205,33 +214,33 @@ namespace sitecing {
205 string source_file; 214 string source_file;
206 /** 215 /**
207 * The stat structure for the source file as it was when we have 216 * The stat structure for the source file as it was when we have
208 * loaded it. 217 * loaded it.
209 */ 218 */
210 struct stat st; 219 struct stat st;
211 220
212 /** 221 /**
213 * See if the data is still valid. 222 * See if the data is still valid.
214 * @return true if yes. 223 * @return true if yes.
215 */ 224 */
216 bool is_valid(); 225 bool is_valid();
217 226
218 /** 227 /**
219 * Load the configuration file. 228 * Load the configuration file.
220 * @param config the main configuration container. 229 * @param config the main configuration container.
221 * @param the configuration file. 230 * @param cfile the configuration file.
222 */ 231 */
223 void parse(configuration *config,const string& cfile); 232 void parse(configuration *config,const string& cfile);
224 }; 233 };
225 234
226 /** 235 /**
227 * The main configuration container. 236 * The main configuration container.
228 */ 237 */
229 class configuration { 238 class configuration {
230 public: 239 public:
231 /** 240 /**
232 * @todo TODO:: document me. 241 * @todo TODO:: document me.
233 */ 242 */
234 bool autobuild; 243 bool autobuild;
235 /** 244 /**
236 * The flags enumeration. 245 * The flags enumeration.
237 */ 246 */
@@ -285,33 +294,33 @@ namespace sitecing {
285 * Was the number of requests to handle per child process 294 * Was the number of requests to handle per child process
286 * specified? 295 * specified?
287 * @see requests_per_child 296 * @see requests_per_child
288 */ 297 */
289 flag_requests_per_child = 0x00000200, 298 flag_requests_per_child = 0x00000200,
290 /** 299 /**
291 * Was the multiprocess node (or it's absences) specified? 300 * Was the multiprocess node (or it's absences) specified?
292 * @see multi_process 301 * @see multi_process
293 */ 302 */
294 flag_multi_process = 0x00000400, 303 flag_multi_process = 0x00000400,
295 /** 304 /**
296 * Was the user specified? 305 * Was the user specified?
297 * @see user 306 * @see user
298 */ 307 */
299 flag_user = 0x00000800, 308 flag_user = 0x00000800,
300 /** 309 /**
301 * @Was the group specified? 310 * Was the group specified?
302 * @see group 311 * @see group
303 */ 312 */
304 flag_group = 0x00001000, 313 flag_group = 0x00001000,
305 /** 314 /**
306 * Was the root to change to specified? 315 * Was the root to change to specified?
307 * @see chroot 316 * @see chroot
308 */ 317 */
309 flag_chroot = 0x00002000, 318 flag_chroot = 0x00002000,
310 /** 319 /**
311 * Was the file for storing PID specified? 320 * Was the file for storing PID specified?
312 * @see pidfile 321 * @see pidfile
313 */ 322 */
314 flag_pid_file = 0x00004000, 323 flag_pid_file = 0x00004000,
315 /** 324 /**
316 * Was it specified wether we should daemonize the process? 325 * Was it specified wether we should daemonize the process?
317 * @see daemonize 326 * @see daemonize
@@ -377,48 +386,56 @@ namespace sitecing {
377 * Group to set to. 386 * Group to set to.
378 */ 387 */
379 string group; 388 string group;
380 /** 389 /**
381 * Directory to change root to. 390 * Directory to change root to.
382 */ 391 */
383 string chroot; 392 string chroot;
384 /** 393 /**
385 * The file to store PID into. 394 * The file to store PID into.
386 */ 395 */
387 string pid_file; 396 string pid_file;
388 /** 397 /**
389 * Whether we should fork into background. 398 * Whether we should fork into background.
390 */ 399 */
391 bool daemonize; 400 bool daemonize;
392 401
402 /**
403 * Type for the config options map
404 * @see specs
405 */
393 typedef map<string,config_options> specs_t; 406 typedef map<string,config_options> specs_t;
394 /** 407 /**
395 * The local config options map. 408 * The local config options map.
396 */ 409 */
397 specs_t specs; 410 specs_t specs;
411 /**
412 * Type for the loaded per-dir config map
413 * @see loaded_specs
414 */
398 typedef map<string,loaded_options> loaded_specs_t; 415 typedef map<string,loaded_options> loaded_specs_t;
399 /** 416 /**
400 * The local config options as specified in per-dir config files 417 * The local config options as specified in per-dir config files
401 * map. 418 * map.
402 */ 419 */
403 loaded_specs_t loaded_specs; 420 loaded_specs_t loaded_specs;
404 421
405 configuration(); 422 configuration();
406 /** 423 /**
407 * @param cfile the configuration file. 424 * @param cfile the configuration file.
408 * @param ab @todo TODO:: document me 425 * @param ab document me @todo TODO:: document me
409 */ 426 */
410 configuration(const string& cfile,bool ab=false); 427 configuration(const string& cfile,bool ab=false);
411 428
412 /** 429 /**
413 * Parse the configuration file. 430 * Parse the configuration file.
414 * @param cfile the configuration file. 431 * @param cfile the configuration file.
415 */ 432 */
416 void parse(const string& cfile); 433 void parse(const string& cfile);
417 434
418 /** 435 /**
419 * Fetch the reference to options for the very root. 436 * Fetch the reference to options for the very root.
420 */ 437 */
421 config_options& root_options() { return specs[""]; } 438 config_options& root_options() { return specs[""]; }
422 /** 439 /**
423 * Lookup where the certain config option for the target lies in. 440 * Lookup where the certain config option for the target lies in.
424 * @param target the target component. 441 * @param target the target component.