You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
5.3 KiB
154 lines
5.3 KiB
Index: modules/aaa/mod_authz_owner.c |
|
=================================================================== |
|
--- a/modules/aaa/mod_authz_owner.c (revision 1420183) |
|
+++ b/modules/aaa/mod_authz_owner.c (revision 1420184) |
|
@@ -28,9 +28,8 @@ |
|
#include "http_request.h" |
|
|
|
#include "mod_auth.h" |
|
+#include "mod_authz_owner.h" |
|
|
|
-APR_DECLARE_OPTIONAL_FN(char*, authz_owner_get_file_group, (request_rec *r)); |
|
- |
|
static const command_rec authz_owner_cmds[] = |
|
{ |
|
{NULL} |
|
Index: modules/aaa/mod_authz_owner.h |
|
=================================================================== |
|
--- a/modules/aaa/mod_authz_owner.h (revision 0) |
|
+++ b/modules/aaa/mod_authz_owner.h (revision 1420184) |
|
@@ -0,0 +1,27 @@ |
|
+/* 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. |
|
+ */ |
|
+ |
|
+#ifndef MOD_AUTHZ_OWNER_H |
|
+#define MOD_AUTHZ_OWNER_H |
|
+ |
|
+#include "http_request.h" |
|
+ |
|
+/* mod_authz_owner exports an optional function which retrieves the |
|
+ * group name of the file identified by r->filename, if available, or |
|
+ * else returns NULL. */ |
|
+APR_DECLARE_OPTIONAL_FN(char*, authz_owner_get_file_group, (request_rec *r)); |
|
+ |
|
+#endif /* MOD_AUTHZ_OWNER_H */ |
|
Index: modules/aaa/mod_authz_groupfile.c |
|
=================================================================== |
|
--- a/modules/aaa/mod_authz_groupfile.c (revision 1420183) |
|
+++ b/modules/aaa/mod_authz_groupfile.c (revision 1420184) |
|
@@ -55,13 +55,12 @@ |
|
#include "util_varbuf.h" |
|
|
|
#include "mod_auth.h" |
|
+#include "mod_authz_owner.h" |
|
|
|
typedef struct { |
|
char *groupfile; |
|
} authz_groupfile_config_rec; |
|
|
|
-APR_DECLARE_OPTIONAL_FN(char*, authz_owner_get_file_group, (request_rec *r)); |
|
- |
|
static void *create_authz_groupfile_dir_config(apr_pool_t *p, char *d) |
|
{ |
|
authz_groupfile_config_rec *conf = apr_palloc(p, sizeof(*conf)); |
|
@@ -200,7 +199,7 @@ |
|
return AUTHZ_DENIED; |
|
} |
|
|
|
-APR_OPTIONAL_FN_TYPE(authz_owner_get_file_group) *authz_owner_get_file_group; |
|
+static APR_OPTIONAL_FN_TYPE(authz_owner_get_file_group) *authz_owner_get_file_group; |
|
|
|
static authz_status filegroup_check_authorization(request_rec *r, |
|
const char *require_args, |
|
@@ -279,10 +278,14 @@ |
|
NULL, |
|
}; |
|
|
|
-static void register_hooks(apr_pool_t *p) |
|
+ |
|
+static void authz_groupfile_getfns(void) |
|
{ |
|
authz_owner_get_file_group = APR_RETRIEVE_OPTIONAL_FN(authz_owner_get_file_group); |
|
+} |
|
|
|
+static void register_hooks(apr_pool_t *p) |
|
+{ |
|
ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "group", |
|
AUTHZ_PROVIDER_VERSION, |
|
&authz_group_provider, |
|
@@ -291,6 +294,7 @@ |
|
AUTHZ_PROVIDER_VERSION, |
|
&authz_filegroup_provider, |
|
AP_AUTH_INTERNAL_PER_CONF); |
|
+ ap_hook_optional_fn_retrieve(authz_groupfile_getfns, NULL, NULL, APR_HOOK_MIDDLE); |
|
} |
|
|
|
AP_DECLARE_MODULE(authz_groupfile) = |
|
Index: modules/aaa/mod_authz_dbm.c |
|
=================================================================== |
|
--- a/modules/aaa/mod_authz_dbm.c (revision 1420183) |
|
+++ b/modules/aaa/mod_authz_dbm.c (revision 1420184) |
|
@@ -29,6 +29,7 @@ |
|
#include "http_request.h" /* for ap_hook_(check_user_id | auth_checker)*/ |
|
|
|
#include "mod_auth.h" |
|
+#include "mod_authz_owner.h" |
|
|
|
typedef struct { |
|
const char *grpfile; |
|
@@ -35,9 +36,7 @@ |
|
const char *dbmtype; |
|
} authz_dbm_config_rec; |
|
|
|
-APR_DECLARE_OPTIONAL_FN(char*, authz_owner_get_file_group, (request_rec *r)); |
|
|
|
- |
|
/* This should go into APR; perhaps with some nice |
|
* caching/locking/flocking of the open dbm file. |
|
*/ |
|
@@ -199,7 +198,7 @@ |
|
return AUTHZ_DENIED; |
|
} |
|
|
|
-APR_OPTIONAL_FN_TYPE(authz_owner_get_file_group) *authz_owner_get_file_group; |
|
+static APR_OPTIONAL_FN_TYPE(authz_owner_get_file_group) *authz_owner_get_file_group; |
|
|
|
static authz_status dbmfilegroup_check_authorization(request_rec *r, |
|
const char *require_args, |
|
@@ -279,11 +278,13 @@ |
|
NULL, |
|
}; |
|
|
|
+static void authz_dbm_getfns(void) |
|
+{ |
|
+ authz_owner_get_file_group = APR_RETRIEVE_OPTIONAL_FN(authz_owner_get_file_group); |
|
+} |
|
|
|
static void register_hooks(apr_pool_t *p) |
|
{ |
|
- authz_owner_get_file_group = APR_RETRIEVE_OPTIONAL_FN(authz_owner_get_file_group); |
|
- |
|
ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "dbm-group", |
|
AUTHZ_PROVIDER_VERSION, |
|
&authz_dbmgroup_provider, |
|
@@ -292,6 +293,7 @@ |
|
AUTHZ_PROVIDER_VERSION, |
|
&authz_dbmfilegroup_provider, |
|
AP_AUTH_INTERNAL_PER_CONF); |
|
+ ap_hook_optional_fn_retrieve(authz_dbm_getfns, NULL, NULL, APR_HOOK_MIDDLE); |
|
} |
|
|
|
AP_DECLARE_MODULE(authz_dbm) =
|
|
|