]> granicus.if.org Git - apache/commitdiff
* modules/aaa/mod_authz_owner.h: Add header file with optional hook
authorJoe Orton <jorton@apache.org>
Tue, 11 Dec 2012 14:13:44 +0000 (14:13 +0000)
committerJoe Orton <jorton@apache.org>
Tue, 11 Dec 2012 14:13:44 +0000 (14:13 +0000)
  declaration for "authz_owner_get_file_group".

* modules/aaa/mod_authz_dbm.c, modules/aaa/mod_authz_groupfile.c: Use
  the header to pick up the above declaration; retrieve the optional
  function in a hook; use a static variable to store the function
  pointer.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1420184 13f79535-47bb-0310-9956-ffa450edef68

modules/aaa/mod_authz_dbm.c
modules/aaa/mod_authz_groupfile.c
modules/aaa/mod_authz_owner.c
modules/aaa/mod_authz_owner.h [new file with mode: 0644]

index 4f13caeab5f1d66b16b15fdc22c9298fd721437c..561c1558aa8e61ef885f1be5643bc5c52513e5b4 100644 (file)
 #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;
     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 @@ static authz_status dbmgroup_check_authorization(request_rec *r,
     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 @@ static const authz_provider authz_dbmfilegroup_provider =
     NULL,
 };
 
-
-static void register_hooks(apr_pool_t *p)
+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)
+{
     ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "dbm-group",
                               AUTHZ_PROVIDER_VERSION,
                               &authz_dbmgroup_provider,
@@ -292,6 +293,7 @@ static void register_hooks(apr_pool_t *p)
                               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) =
index 15bb60ffe1d359844b02bb97489679adfcead269..ee0616d3d2b5b32f5c4bc5f79075150269c8f05d 100644 (file)
 #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 @@ static authz_status group_check_authorization(request_rec *r,
     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 @@ static const authz_provider authz_filegroup_provider =
     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 @@ static void register_hooks(apr_pool_t *p)
                               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 66b31d6a502fa8ba58cbfb3122fda5306d3035cc..4fd0b2a015d460832cb3c1e245272db2be35db6d 100644 (file)
@@ -28,8 +28,7 @@
 #include "http_request.h"
 
 #include "mod_auth.h"
-
-APR_DECLARE_OPTIONAL_FN(char*, authz_owner_get_file_group, (request_rec *r));
+#include "mod_authz_owner.h"
 
 static const command_rec authz_owner_cmds[] =
 {
diff --git a/modules/aaa/mod_authz_owner.h b/modules/aaa/mod_authz_owner.h
new file mode 100644 (file)
index 0000000..799f336
--- /dev/null
@@ -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 */