78
79
{ "cml.extension", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 0 */
79
80
{ "cml.memcache-hosts", NULL, T_CONFIG_ARRAY, T_CONFIG_SCOPE_CONNECTION }, /* 1 */
80
81
{ "cml.memcache-namespace", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 2 */
82
{ "cml.power-magnet", NULL, T_CONFIG_STRING, T_CONFIG_SCOPE_CONNECTION }, /* 3 */
81
83
{ NULL, NULL, T_CONFIG_UNSET, T_CONFIG_SCOPE_UNSET }
293
URIHANDLER_FUNC(mod_cml_is_handled) {
299
int cache_call_lua(server *srv, connection *con, plugin_data *p, buffer *cml_file) {
297
buffer *fn = con->physical.path;
298
plugin_data *p = p_d;
301
if (fn->used == 0) return HANDLER_ERROR;
303
mod_cml_patch_connection(srv, con, p);
305
buffer_reset(p->basedir);
306
buffer_reset(p->baseurl);
307
buffer_reset(p->session_id);
308
buffer_reset(p->trigger_handler);
310
if (buffer_is_empty(p->conf.ext)) return HANDLER_GO_ON;
312
ct_len = p->conf.ext->used - 1;
313
s_len = fn->used - 1;
315
if (s_len < ct_len) return HANDLER_GO_ON;
317
if (0 != strncmp(fn->ptr + s_len - ct_len, p->conf.ext->ptr, ct_len)) {
319
return HANDLER_GO_ON;
322
304
/* cleanup basedir */
324
306
buffer_copy_string_buffer(b, con->uri.path);
347
330
cache_get_session_id(srv, con, p);
349
ret = cache_parse_lua(srv, con, p, fn);
332
return cache_parse_lua(srv, con, p, cml_file);
336
URIHANDLER_FUNC(mod_cml_power_magnet) {
337
plugin_data *p = p_d;
339
mod_cml_patch_connection(srv, con, p);
341
buffer_reset(p->basedir);
342
buffer_reset(p->baseurl);
343
buffer_reset(p->session_id);
344
buffer_reset(p->trigger_handler);
346
if (buffer_is_empty(p->conf.power_magnet)) return HANDLER_GO_ON;
350
* cml.power-magnet = server.docroot + "/rewrite.cml"
352
* is called on EACH request, take the original REQUEST_URI and modifies the
353
* request header as neccesary.
356
* if file_exists("/maintainance.html") {
357
* output_include = ( "/maintainance.html" )
361
* as we only want to rewrite HTML like requests we should cover it in a conditional
365
switch(cache_call_lua(srv, con, p, p->conf.power_magnet)) {
368
if (con->conf.log_request_handling) {
369
log_error_write(srv, __FILE__, __LINE__, "s", "cache-error");
371
con->http_status = 500;
372
return HANDLER_COMEBACK;
374
if (con->conf.log_request_handling) {
375
log_error_write(srv, __FILE__, __LINE__, "s", "cache-hit");
378
buffer_reset(con->physical.path);
379
return HANDLER_FINISHED;
382
return HANDLER_GO_ON;
384
con->http_status = 500;
385
return HANDLER_COMEBACK;
389
URIHANDLER_FUNC(mod_cml_is_handled) {
390
plugin_data *p = p_d;
392
if (buffer_is_empty(con->physical.path)) return HANDLER_ERROR;
394
mod_cml_patch_connection(srv, con, p);
396
buffer_reset(p->basedir);
397
buffer_reset(p->baseurl);
398
buffer_reset(p->session_id);
399
buffer_reset(p->trigger_handler);
401
if (buffer_is_empty(p->conf.ext)) return HANDLER_GO_ON;
403
if (!buffer_is_equal_right_len(con->physical.path, p->conf.ext, p->conf.ext->used - 1)) {
404
return HANDLER_GO_ON;
407
switch(cache_call_lua(srv, con, p, con->physical.path)) {
354
410
if (con->conf.log_request_handling) {