You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ia...@apache.org on 2001/12/27 07:03:14 UTC
cvs commit: httpd-2.0/modules/aaa mod_auth_dbm.c
ianh 01/12/26 22:03:13
Modified: . STATUS CHANGES
docs/manual/mod mod_auth_dbm.html
modules/aaa mod_auth_dbm.c
Log:
add a 'AuthDBMType' so that users can select what type of DBM they want to
use to authenticate users.
I think this removes a 'showstopper' (deprecating mod_auth_db)
Revision Changes Path
1.362 +4 -4 httpd-2.0/STATUS
Index: STATUS
===================================================================
RCS file: /home/cvs/httpd-2.0/STATUS,v
retrieving revision 1.361
retrieving revision 1.362
diff -u -r1.361 -r1.362
--- STATUS 2001/12/26 13:20:02 1.361
+++ STATUS 2001/12/27 06:03:13 1.362
@@ -1,5 +1,5 @@
APACHE 2.0 STATUS: -*-text-*-
-Last modified at [$Date: 2001/12/26 13:20:02 $]
+Last modified at [$Date: 2001/12/27 06:03:13 $]
Release:
@@ -87,9 +87,9 @@
* Fold mod_auth_db features back into mod_auth_dbm, and depricate it.
This can't wait until we have a 2.0-gold release, if folks need
to move over to auth_dbm, we can't do that to them after 2.0 gold.
- Status: Ian says.. now that apr-util can handle multiple DBM types
- we can probably deprecate it completly by adding a directive
- 'AuthDBMType' to mod_auth_dbm.
+ Status: Ian says.. auth_dbm can now handle multiple DBM types,
+ is this still an issue?
+
* Convert all instances of the old apr_lock_t type to the new
types (once they are fully supported in APR).
1.488 +2 -0 httpd-2.0/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/httpd-2.0/CHANGES,v
retrieving revision 1.487
retrieving revision 1.488
diff -u -r1.487 -r1.488
--- CHANGES 2001/12/26 15:51:07 1.487
+++ CHANGES 2001/12/27 06:03:13 1.488
@@ -1,5 +1,7 @@
Changes with Apache 2.0.30-dev
+ *) Allow mod_auth_dbm to handle multiple DBM types [Ian Holsman]
+
*) Fix matching of vhosts by ip address so we find IPv4
vhost address when target address is v4-mapped form of
that address. [Jeff Trawick]
1.25 +22 -0 httpd-2.0/docs/manual/mod/mod_auth_dbm.html
Index: mod_auth_dbm.html
===================================================================
RCS file: /home/cvs/httpd-2.0/docs/manual/mod/mod_auth_dbm.html,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- mod_auth_dbm.html 2001/09/22 19:36:00 1.24
+++ mod_auth_dbm.html 2001/12/27 06:03:13 1.25
@@ -42,6 +42,7 @@
<li><a href="#authdbmgroupfile">AuthDBMGroupFile</a></li>
<li><a href="#authdbmuserfile">AuthDBMUserFile</a></li>
+ <li><a href="#authdbmtype">AuthDBMType</a></li>
<li><a
href="#authdbmauthoritative">AuthDBMAuthoritative</a></li>
@@ -162,6 +163,27 @@
href="#authdbmgroupfile">AuthDBMGroupFile</a>.
<hr />
+ <h2><a id="authdbmtype"
+ name="authdbmtype">AuthDBMType</a></h2>
+ <!--%plaintext <?INDEX {\tt AuthDBMType} directive> -->
+ <a href="directive-dict.html#Syntax"
+ rel="Help"><strong>Syntax:</strong></a> AuthDBMType
+ <em>type of DBM being used</em><br />
+ <a href="directive-dict.html#Default"
+ rel="Help"><strong>Default:</strong></a>
+<code>AuthDBMType default</code>(which sets it to the default DBM compiled in)<br />
+
+ <a href="directive-dict.html#Context"
+ rel="Help"><strong>Context:</strong></a> directory,
+ .htaccess<br />
+ <a href="directive-dict.html#Override"
+ rel="Help"><strong>Override:</strong></a> AuthConfig<br />
+ <a href="directive-dict.html#Status"
+ rel="Help"><strong>Status:</strong></a> Extension<br />
+ <a href="directive-dict.html#Module"
+ rel="Help"><strong>Module:</strong></a> mod_auth_dbm
+<p>Setting this directive allows the user to change the type of DBM file which holds the user data. Current valid values are (SDBM | GDBM | DB) these may not all be available on your system</p>
+ <hr />
<h2><a id="authdbmauthoritative"
name="authdbmauthoritative">AuthDBMAuthoritative</a></h2>
<!--%plaintext <?INDEX {\tt AuthDBMAuthoritative} directive> -->
1.39 +36 -14 httpd-2.0/modules/aaa/mod_auth_dbm.c
Index: mod_auth_dbm.c
===================================================================
RCS file: /home/cvs/httpd-2.0/modules/aaa/mod_auth_dbm.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- mod_auth_dbm.c 2001/11/18 07:49:28 1.38
+++ mod_auth_dbm.c 2001/12/27 06:03:13 1.39
@@ -74,13 +74,13 @@
#define APR_WANT_STRFUNC
#include "apr_want.h"
+#include "apr_strings.h"
#if defined(AP_AUTH_DBM_USE_APR)
#include "apr_dbm.h"
#define DBM apr_dbm_t
#define datum apr_datum_t
-#define dbm_open apr_dbm_open
-#define dbm_fetch apr_dbm_fetch
+
#define dbm_close apr_dbm_close
#else
#include <ndbm.h>
@@ -112,6 +112,7 @@
char *auth_dbmpwfile;
char *auth_dbmgrpfile;
+ char *auth_dbmtype;
int auth_dbmauthoritative;
} dbm_auth_config_rec;
@@ -122,7 +123,8 @@
conf->auth_dbmpwfile = NULL;
conf->auth_dbmgrpfile = NULL;
- conf->auth_dbmauthoritative = 1; /* fortress is secure by default */
+ conf->auth_dbmtype ="default";
+ conf->auth_dbmauthoritative = 1; /* fortress is secure by default */
return conf;
}
@@ -136,6 +138,17 @@
return ap_set_file_slot(cmd, offset, f);
}
+static const char *set_dbm_type(cmd_parms *cmd,
+ void *dir_config,
+ const char *arg)
+{
+ dbm_auth_config_rec *conf = dir_config;
+
+ conf->auth_dbmtype = apr_pstrdup(cmd->pool ,arg);
+ return NULL;
+}
+
+
static const command_rec dbm_auth_cmds[] =
{
AP_INIT_TAKE1("AuthDBMUserFile", ap_set_file_slot,
@@ -150,6 +163,11 @@
AP_INIT_TAKE12("AuthGroupFile", set_dbm_slot,
(void *) APR_XtOffsetOf(dbm_auth_config_rec, auth_dbmgrpfile),
OR_AUTHCFG, NULL),
+
+ AP_INIT_TAKE1("AuthDBMType", set_dbm_type,
+ NULL,
+ OR_AUTHCFG, "what type of DBM file the user file is"),
+
AP_INIT_FLAG("AuthDBMAuthoritative", ap_set_flag_slot,
(void *) APR_XtOffsetOf(dbm_auth_config_rec, auth_dbmauthoritative),
OR_AUTHCFG, "Set to 'no' to allow access control to be passed along to lower modules, if the UserID is not known in this module"),
@@ -158,7 +176,10 @@
module AP_MODULE_DECLARE_DATA auth_dbm_module;
-static char *get_dbm_pw(request_rec *r, char *user, char *auth_dbmpwfile)
+static char *get_dbm_pw(request_rec *r,
+ char *user,
+ char *auth_dbmpwfile,
+ char*dbtype)
{
DBM *f;
datum d, q;
@@ -174,12 +195,13 @@
#endif
#ifdef AP_AUTH_DBM_USE_APR
- if (!(retval = dbm_open(&f, auth_dbmpwfile, APR_DBM_READONLY, APR_OS_DEFAULT, r->pool))) {
+ retval = apr_dbm_open_ex(&f, dbtype, auth_dbmpwfile, APR_DBM_READONLY, APR_OS_DEFAULT, r->pool);
+ if (retval != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, retval, r,
- "could not open sdbm auth file: %s", auth_dbmpwfile);
- return NULL;
+ "could not open dbm (type %s) auth file: %s", dbtype, auth_dbmpwfile);
+ return NULL;
}
- if (dbm_fetch(f, q, &d) == APR_SUCCESS)
+ if (apr_dbm_fetch(f, q, &d) == APR_SUCCESS)
/* sorry for the obscurity ... falls through to the
* if (d.dptr) { block ...
*/
@@ -187,8 +209,8 @@
#else
if (!(f = dbm_open(auth_dbmpwfile, O_RDONLY, 0664))) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, errno, r,
- "could not open dbm auth file: %s", auth_dbmpwfile);
- return NULL;
+ "could not open dbm auth file: %s", auth_dbmpwfile);
+ return NULL;
}
d = dbm_fetch(f, q);
@@ -215,9 +237,9 @@
* mark@telescope.org, 22Sep95
*/
-static char *get_dbm_grp(request_rec *r, char *user, char *auth_dbmgrpfile)
+static char *get_dbm_grp(request_rec *r, char *user, char *auth_dbmgrpfile, char*dbtype)
{
- char *grp_data = get_dbm_pw(r, user, auth_dbmgrpfile);
+ char *grp_data = get_dbm_pw(r, user, auth_dbmgrpfile,dbtype);
char *grp_colon;
char *grp_colon2;
@@ -248,7 +270,7 @@
if (!conf->auth_dbmpwfile)
return DECLINED;
- if (!(real_pw = get_dbm_pw(r, r->user, conf->auth_dbmpwfile))) {
+ if (!(real_pw = get_dbm_pw(r, r->user, conf->auth_dbmpwfile,conf->auth_dbmtype))) {
if (!(conf->auth_dbmauthoritative))
return DECLINED;
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,
@@ -306,7 +328,7 @@
const char *orig_groups, *groups;
char *v;
- if (!(groups = get_dbm_grp(r, user, conf->auth_dbmgrpfile))) {
+ if (!(groups = get_dbm_grp(r, user, conf->auth_dbmgrpfile,conf->auth_dbmtype))) {
if (!(conf->auth_dbmauthoritative))
return DECLINED;
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, 0, r,