/* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License.
*/
/* This should go into APR; perhaps with some nice * caching/locking/flocking of the open dbm file.
*/ staticchar *get_dbm_entry_as_str(apr_pool_t *pool, apr_dbm_t *f, char *key)
{
apr_datum_t d, q;
q.dptr = key;
staticconst command_rec authz_dbm_cmds[] =
{
AP_INIT_TAKE1("AuthDBMGroupFile", ap_set_file_slot,
(void *)APR_OFFSETOF(authz_dbm_config_rec, grpfile),
OR_AUTHCFG, "database file containing group names and member user IDs"),
AP_INIT_TAKE1("AuthzDBMType", ap_set_string_slot,
(void *)APR_OFFSETOF(authz_dbm_config_rec, dbmtype),
OR_AUTHCFG, "what type of DBM file the group file is"),
{NULL}
};
module AP_MODULE_DECLARE_DATA authz_dbm_module;
/* We do something strange with the group file. If the group file * contains any : we assume the format is * key=username value=":"groupname [":"anything here is ignored] * otherwise we now (0.8.14+) assume that the format is * key=username value=groupname * The first allows the password and group files to be the same * physical DBM file; key=username value=password":"groupname[":"anything] * * mark@telescope.org, 22Sep95
*/
if (!conf->grpfile) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01798) "No group file was specified in the configuration"); return AUTHZ_DENIED;
}
/* fetch group data from dbm file only once. */ if (!orig_groups) {
apr_status_t status;
if (status != APR_SUCCESS) { return AUTHZ_GENERAL_ERROR;
}
if (groups == NULL) { /* no groups available, so exit immediately */
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01800) "Authorization of user %s to access %s failed, reason: " "user doesn't appear in DBM group file (%s).",
r->user, r->uri, conf->grpfile); return AUTHZ_DENIED;
}
t = require; while ((w = ap_getword_white(r->pool, &t)) && w[0]) {
groups = orig_groups; while (groups[0]) {
v = ap_getword(r->pool, &groups, ','); if (!strcmp(v, w)) { return AUTHZ_GRANTED;
}
}
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01801) "Authorization of user %s to access %s failed, reason: " "user is not part of the 'require'ed group(s).",
r->user, r->uri);
if (!conf->grpfile) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01802) "No group file was specified in the configuration"); return AUTHZ_DENIED;
}
/* fetch group data from dbm file. */
status = get_dbm_grp(r, apr_pstrcat(r->pool, user, ":", realm, NULL),
user, conf->grpfile, conf->dbmtype, &groups);
if (status != APR_SUCCESS) { return AUTHZ_DENIED;
}
if (groups == NULL) { /* no groups available, so exit immediately */
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01804) "Authorization of user %s to access %s failed, reason: " "user doesn't appear in DBM group file (%s).",
r->user, r->uri, conf->grpfile); return AUTHZ_DENIED;
}
filegroup = authz_owner_get_file_group(r);
if (filegroup) { while (groups[0]) {
v = ap_getword(r->pool, &groups, ','); if (!strcmp(v, filegroup)) { return AUTHZ_GRANTED;
}
}
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01805) "Authorization of user %s to access %s failed, reason: " "user is not part of the 'require'ed group(s).",
r->user, r->uri);
AP_DECLARE_MODULE(authz_dbm) =
{
STANDARD20_MODULE_STUFF,
create_authz_dbm_dir_config, /* dir config creater */
NULL, /* dir merger --- default is to override */
NULL, /* server config */
NULL, /* merge server config */
authz_dbm_cmds, /* command apr_table_t */
register_hooks /* register hooks */
};
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.15Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.