ret_t cherokee_validator_file_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) { ret_t ret; cherokee_config_node_t *subconf; cherokee_validator_file_props_t *props = PROP_VFILE(*_props); UNUSED (srv); /* Password file */ ret = cherokee_config_node_get (conf, "passwdfile", &subconf); if (ret == ret_ok) { cherokee_buffer_add_buffer (&props->password_file, &subconf->val); } /* Path type */ ret = cherokee_config_node_get (conf, "passwdfile_path", &subconf); if (ret == ret_ok) { if (equal_buf_str (&subconf->val, "full")) { props->password_path_type = val_path_full; } else if (equal_buf_str (&subconf->val, "local_dir")) { props->password_path_type = val_path_local_dir; } else { LOG_ERROR (CHEROKEE_ERROR_VALIDATOR_FILE, subconf->val.buf); return ret_error; } } /* Final checks */ if (cherokee_buffer_is_empty (&props->password_file)) { LOG_CRITICAL_S (CHEROKEE_ERROR_VALIDATOR_FILE_NO_FILE); return ret_error; } return ret_ok; }
ret_t cherokee_validator_htdigest_configure (cherokee_config_node_t *conf, cherokee_server_t *srv, cherokee_module_props_t **_props) { cherokee_validator_htdigest_props_t *props; UNUSED(srv); if (*_props == NULL) { CHEROKEE_NEW_STRUCT (n, validator_htdigest_props); cherokee_validator_file_props_init_base (PROP_VFILE(n), MODULE_PROPS_FREE(props_free)); *_props = MODULE_PROPS(n); } props = PROP_HTDIGEST(*_props); /* Call the file based validator configure */ return cherokee_validator_file_configure (conf, srv, _props); }
ret_t cherokee_validator_htdigest_new (cherokee_validator_htdigest_t **htdigest, cherokee_module_props_t *props) { CHEROKEE_NEW_STRUCT(n,validator_htdigest); /* Init */ cherokee_validator_file_init_base (VFILE(n), PROP_VFILE(props), PLUGIN_INFO_VALIDATOR_PTR(htdigest)); VALIDATOR(n)->support = http_auth_basic | http_auth_digest; MODULE(n)->free = (module_func_free_t) cherokee_validator_htdigest_free; VALIDATOR(n)->check = (validator_func_check_t) cherokee_validator_htdigest_check; VALIDATOR(n)->add_headers = (validator_func_add_headers_t) cherokee_validator_htdigest_add_headers; /* Return obj */ *htdigest = n; return ret_ok; }
static ret_t props_free (cherokee_validator_htdigest_props_t *props) { return cherokee_validator_file_props_free_base (PROP_VFILE(props)); }