]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Split ACL.{cc,h} and src/acl_noncore.cc into acl/Acl and acl/Gadgets, moving
authorAlex Rousskov <rousskov@measurement-factory.com>
Sun, 8 Mar 2009 19:45:44 +0000 (13:45 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Sun, 8 Mar 2009 19:45:44 +0000 (13:45 -0600)
high-level global functions into Gadgets and leaving basic API types in Acl.

Moved horrific acl_access::containsPURGE into aclPurgeMethodInUse to avoid
exposing basic ACL API to "strategy" templates and HTTP-specific PURGE method.
The aclPurgeMethodInUse global lives in acl/libacls, which is a top-level
library that already contains a lot of data-specific code.

Context: SourceLayout: acl/, take 1

src/acl/Acl.cc [moved from src/acl.cc with 90% similarity]
src/acl/Acl.h [moved from src/ACL.h with 75% similarity]
src/acl/Gadgets.cc [moved from src/acl_noncore.cc with 91% similarity]
src/acl/Gadgets.h [new file with mode: 0644]

similarity index 90%
rename from src/acl.cc
rename to src/acl/Acl.cc
index 2dda02b1b2e212e0c9569dc17a9e6edbaaad77a7..b996c70b8d575efbc065e56e3f6dcbbc35ebba92 100644 (file)
  */
 #include "config.h"
 
-#include "ACL.h"
-#include "ACLChecklist.h"
+#include "acl/Acl.h"
+#include "acl/Checklist.h"
 #include "ConfigParser.h"
 #include "dlink.h"
-/* for special-case PURGE test */
-#include "HttpRequestMethod.h"
 
 const char *AclMatchedName = NULL;
 
@@ -278,12 +276,12 @@ ACL::checklistMatches(ACLChecklist *checklist)
 {
     int rv;
 
-    if (NULL == checklist->request && requiresRequest()) {
+    if (!checklist->hasRequest() && requiresRequest()) {
         debugs(28, 1, "ACL::checklistMatches WARNING: '" << name << "' ACL is used but there is no HTTP request -- not matching.");
         return 0;
     }
 
-    if (NULL == checklist->reply && requiresReply()) {
+    if (!checklist->hasReply() && requiresReply()) {
         debugs(28, 1, "ACL::checklistMatches WARNING: '" << name << "' ACL is used but there is no HTTP reply -- not matching.");
         return 0;
     }
@@ -321,35 +319,6 @@ ACL::~ACL()
     safe_free(cfgline);
 }
 
-#include "ACLStrategised.h"
-bool
-acl_access::containsPURGE() const
-{
-    acl_access const *a = this;
-    ACLList *b;
-
-    debugs(28, 6, "acl_access::containsPURGE: invoked for '" << cfgline << "'");
-
-    for (; a; a = a->next) {
-        for (b = a->aclList; b; b = b->next) {
-            ACLStrategised<HttpRequestMethod> *tempAcl = dynamic_cast<ACLStrategised<HttpRequestMethod> *>(b->_acl);
-
-            if (!tempAcl) {
-                debugs(28, 7, "acl_access::containsPURGE: can't create tempAcl");
-                continue;
-            }
-
-            if (tempAcl->match(METHOD_PURGE)) {
-                debugs(28, 6, "acl_access::containsPURGE:   returning true");
-                return true;
-            }
-        }
-    }
-
-    debugs(28, 6, "acl_access::containsPURGE:   returning false");
-    return false;
-}
-
 /* to be split into separate files in the future */
 
 CBDATA_CLASS_INIT(acl_access);
similarity index 75%
rename from src/ACL.h
rename to src/acl/Acl.h
index 374bca50775a592f0769a173cc6a09518f919cde..cd5834aa33df9744d6bf9312cf0bc985f67a32c7 100644 (file)
--- a/src/ACL.h
 #include "Array.h"
 #include "cbdata.h"
 #include "dlink.h"
-/**
- \todo FIXME: finish splitting out the dependencies here
- *     - typedefs should not be needed to parse this.
- */
-#include "typedefs.h"
 
 class ConfigParser;
-
-/* acl.c */
-
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclDestroyAccessList(acl_access **list);
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclDestroyAcls(ACL **);
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclDestroyAclList(ACLList **);
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclParseAccessLine(ConfigParser &parser, acl_access **);
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclParseAclList(ConfigParser &parser, ACLList **);
-/// \ingroup ACLAPI
-SQUIDCEXTERN int aclIsProxyAuth(const char *name);
-/// \ingroup ACLAPI
-SQUIDCEXTERN err_type aclGetDenyInfoPage(acl_deny_info_list ** head, const char *name, int redirect_allowed);
-
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclParseDenyInfoLine(struct acl_deny_info_list **);
-
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclDestroyDenyInfoList(struct acl_deny_info_list **);
-/// \ingroup ACLAPI
-SQUIDCEXTERN wordlist *aclDumpGeneric(const ACL *);
-/// \ingroup ACLAPI
-SQUIDCEXTERN void aclCacheMatchFlush(dlink_list * cache);
-/// \ingroup ACLAPI
-extern void dump_acl_access(StoreEntry * entry, const char *name, acl_access * head);
-/// \ingroup ACLAPI
-int aclPurgeMethodInUse(acl_access * a);
-/// \ingroup ACLAPI
-extern const char *AclMatchedName;     /* NULL */
+class ACLChecklist;
 
 /// \ingroup ACLAPI
 class ACL
@@ -154,7 +117,6 @@ class acl_access
 public:
     void *operator new(size_t);
     void operator delete(void *);
-    bool containsPURGE() const;
     allow_t allow;
     ACLList *aclList;
     char *cfgline;
@@ -194,4 +156,8 @@ public:
 
 MEMPROXY_CLASS_INLINE(acl_proxy_auth_match_cache);
 
+
+/// \ingroup ACLAPI
+extern const char *AclMatchedName;     /* NULL */
+
 #endif /* SQUID_ACL_H */
similarity index 91%
rename from src/acl_noncore.cc
rename to src/acl/Gadgets.cc
index baa6b3eeaaf21a516ad77623411f74169f835f88..d2b5c5272e2c9a28a4939e314d457429cb393bf3 100644 (file)
  */
 
 #include "squid.h"
-#include "ACL.h"
-#include "ACLChecklist.h"
+#include "acl/Acl.h"
+#include "acl/Checklist.h"
+#include "acl/Strategised.h"
+#include "acl/Gadgets.h"
 #include "ConfigParser.h"
 #include "errorpage.h"
 #include "HttpRequest.h"
@@ -318,5 +320,26 @@ aclDestroyDenyInfoList(acl_deny_info_list ** list)
 int
 aclPurgeMethodInUse(acl_access * a)
 {
-    return a->containsPURGE();
+    ACLList *b;
+
+    debugs(28, 6, "aclPurgeMethodInUse: invoked for '" << a->cfgline << "'");
+
+    for (; a; a = a->next) {
+        for (b = a->aclList; b; b = b->next) {
+            ACLStrategised<HttpRequestMethod> *tempAcl = dynamic_cast<ACLStrategised<HttpRequestMethod> *>(b->_acl);
+
+            if (!tempAcl) {
+                debugs(28, 7, "aclPurgeMethodInUse: can't create tempAcl");
+                continue;
+            }
+
+            if (tempAcl->match(METHOD_PURGE)) {
+                debugs(28, 6, "aclPurgeMethodInUse: returning true");
+                return true;
+            }
+        }
+    }
+
+    debugs(28, 6, "aclPurgeMethodInUse: returning false");
+    return false;
 }
diff --git a/src/acl/Gadgets.h b/src/acl/Gadgets.h
new file mode 100644 (file)
index 0000000..f33bdf4
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef SQUID_ACL_GADGETS_H
+#define SQUID_ACL_GADGETS_H
+
+#include "config.h"
+#include "enums.h" /* for err_type */
+
+struct dlink_list;
+class StoreEntry;
+class ConfigParser;
+class acl_access;
+class ACL;
+class ACLList;
+struct acl_deny_info_list;
+class wordlist;
+
+/// \ingroup ACLAPI
+extern void aclDestroyAccessList(acl_access **list);
+/// \ingroup ACLAPI
+extern void aclDestroyAcls(ACL **);
+/// \ingroup ACLAPI
+extern void aclDestroyAclList(ACLList **);
+/// \ingroup ACLAPI
+extern void aclParseAccessLine(ConfigParser &parser, acl_access **);
+/// \ingroup ACLAPI
+extern void aclParseAclList(ConfigParser &parser, ACLList **);
+/// \ingroup ACLAPI
+extern int aclIsProxyAuth(const char *name);
+/// \ingroup ACLAPI
+extern err_type aclGetDenyInfoPage(acl_deny_info_list ** head, const char *name, int redirect_allowed);
+/// \ingroup ACLAPI
+extern void aclParseDenyInfoLine(acl_deny_info_list **);
+/// \ingroup ACLAPI
+extern void aclDestroyDenyInfoList(acl_deny_info_list **);
+/// \ingroup ACLAPI
+extern wordlist *aclDumpGeneric(const ACL *);
+/// \ingroup ACLAPI
+extern void aclCacheMatchFlush(dlink_list * cache);
+/// \ingroup ACLAPI
+extern void dump_acl_access(StoreEntry * entry, const char *name, acl_access * head);
+/// \ingroup ACLAPI
+int aclPurgeMethodInUse(acl_access * a);
+
+#endif /* SQUID_ACL_GADGETS_H */