ret_t cherokee_handler_props_init_base (cherokee_handler_props_t *props, module_func_props_free_t free_func) { props->valid_methods = http_unknown; return cherokee_module_props_init_base (MODULE_PROPS(props), free_func); }
/* Properties */ ret_t cherokee_encoder_props_init_base (cherokee_encoder_props_t *props, module_func_props_free_t free_func) { props->perms = cherokee_encoder_unset; props->instance_func = NULL; return cherokee_module_props_init_base (MODULE_PROPS(props), free_func); }
ret_t cherokee_handler_server_info_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) { cherokee_list_t *i; cherokee_handler_server_info_props_t *props; UNUSED(srv); if (*_props == NULL) { CHEROKEE_NEW_STRUCT (n, handler_server_info_props); cherokee_module_props_init_base (MODULE_PROPS(n), MODULE_PROPS_FREE(props_free)); n->just_about = false; n->connection_details = false; *_props = MODULE_PROPS(n); } props = PROP_SRV_INFO(*_props); cherokee_config_node_foreach (i, conf) { cherokee_config_node_t *subconf = CONFIG_NODE(i); if (equal_buf_str (&subconf->key, "type")) { if (equal_buf_str (&subconf->val, "normal")) { } else if (equal_buf_str (&subconf->val, "just_about")) { props->just_about = true; } else if (equal_buf_str (&subconf->val, "connection_details")) { props->connection_details = true; } else { LOG_ERROR (CHEROKEE_ERROR_HANDLER_SRV_INFO_TYPE, subconf->val.buf); return ret_error; } } }
ret_t cherokee_handler_ssi_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) { cherokee_handler_ssi_props_t *props; UNUSED(srv); UNUSED(conf); if (*_props == NULL) { CHEROKEE_NEW_STRUCT (n, handler_ssi_props); cherokee_module_props_init_base (MODULE_PROPS(n), MODULE_PROPS_FREE(props_free)); n->foo = 1; *_props = MODULE_PROPS(n); } props = PROP_SSI(*_props); return ret_ok; }
/* A _configure function will be executed by the webserver * at the moment of 'first' initialisation. Here you do the * start of memory management. The processing of the configuration * parameters. */ ret_t cherokee_handler_xslt_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) { cherokee_list_t *i; cherokee_handler_xslt_props_t *props; ret_t ret; if (*_props == NULL) { CHEROKEE_NEW_STRUCT (n, handler_xslt_props); cherokee_module_props_init_base (MODULE_PROPS(n), MODULE_PROPS_FREE(props_free)); /* Look at handler_xslt.h * This is an xslt of configuration. */ xmlInitMemory(); LIBXML_TEST_VERSION /* * Register the EXSLT extensions and the test module */ exsltRegisterAll(); xsltRegisterTestModule(); cherokee_buffer_init (&n->content_type); cherokee_buffer_init (&n->stylesheet); n->global = NULL; n->globalDoc = NULL; n->xinclude = false; n->xincludestyle = false; // n->sec = xsltNewSecurityPrefs(); // xsltSetDefaultSecurityPrefs(n->sec); n->defaultEntityLoader = xmlGetExternalEntityLoader(); // xmlSetExternalEntityLoader(xsltprocExternalEntityLoader); *_props = MODULE_PROPS(n); } props = PROP_XSLT(*_props); /* processing of the parameters, we only know about xslt_config * it might be a good thing to abort if we found a wrong key, understand * the consequences: your handler will prevent the server startup upon * a wrong configuration. * * You see the for each method is rather creative. Read more code * to see with what nice things Cherokee extended the C syntax. */ cherokee_config_node_foreach (i, conf) { cherokee_config_node_t *subconf = CONFIG_NODE(i); /* Cherokee has a nifty string equal function that allows * lazy programmers to do strcmp without the == 0. */ /*if (equal_buf_str (&subconf->key, "maxdepth")) { cherokee_atoi(subconf->val.buf, &props->xsltMaxDepth); } else if (equal_buf_str (&subconf->key, "maxparserdepth")) { cherokee_atoi(subconf->val.buf, &props->xsltParserMaxDepth); } else */ if (equal_buf_str (&subconf->key, "options")) { if (equal_buf_str (&subconf->val, "novalid")) { props->options |= XML_PARSE_NOENT | XML_PARSE_NOCDATA; } else if (equal_buf_str (&subconf->val, "nodtdattr")) { props->options |= XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_NOCDATA; } else { PRINT_MSG ("ERROR: Handler xslt: Unknown value: '%s'\n", subconf->val.buf); return ret_error; } } else if (equal_buf_str (&subconf->key, "nodict")) { cherokee_boolean_t nodict; ret = cherokee_atob (subconf->val.buf, &nodict); if (ret != ret_ok) return ret; if (nodict) { props->options |= XML_PARSE_NODICT; } #ifdef LIBXML_CATALOG_ENABLED } else if (equal_buf_str (&subconf->key, "catalogs")) { cherokee_boolean_t catalogs; ret = cherokee_atob (subconf->val.buf, &catalogs); if (ret != ret_ok) return ret; if (catalogs) { const char *catalogs = getenv("SGML_CATALOG_FILES"); if (catalogs != NULL) { xmlLoadCatalogs(catalogs); } } #endif #ifdef LIBXML_XINCLUDE_ENABLED } else if (equal_buf_str (&subconf->key, "xinclude")) { ret = cherokee_atob (subconf->val.buf, &props->xinclude); } else if (equal_buf_str (&subconf->key, "xincludestyle")) { ret = cherokee_atob (subconf->val.buf, &props->xincludestyle); if (props->xincludestyle) { xsltSetXIncludeDefault(1); } #endif } else if (equal_buf_str (&subconf->key, "contenttype")) { cherokee_buffer_add(&props->content_type, subconf->val.buf, subconf->val.len); } else if (equal_buf_str (&subconf->key, "stylesheet")) { cherokee_buffer_add(&props->stylesheet, subconf->val.buf, subconf->val.len); } else { PRINT_MSG ("ERROR: Handler xslt: Unknown key: '%s'\n", subconf->key.buf); return ret_error; } }