#include "ConfigParser.h"
#include "Parsing.h"
+ACLFlag
+ACLMaxUserIP::SupportedFlags[] = {ACL_F_STRICT, ACL_F_END};
+
ACL *
ACLMaxUserIP::clone() const
{
return new ACLMaxUserIP(*this);
}
-ACLMaxUserIP::ACLMaxUserIP (char const *theClass) : class_ (theClass), maximum(0)
+ACLMaxUserIP::ACLMaxUserIP (char const *theClass) : ACL(SupportedFlags), class_ (theClass), maximum(0)
{}
-ACLMaxUserIP::ACLMaxUserIP (ACLMaxUserIP const & old) :class_ (old.class_), maximum (old.maximum), flags (old.flags)
-{}
+ACLMaxUserIP::ACLMaxUserIP (ACLMaxUserIP const & old) : class_ (old.class_), maximum (old.maximum)
+{
+ flags = old.flags;
+}
ACLMaxUserIP::~ACLMaxUserIP()
{}
debugs(28, 5, "aclParseUserMaxIP: First token is " << t);
- if (strcmp("-s", t) == 0) {
- debugs(28, 5, "aclParseUserMaxIP: Going strict");
- flags.strict = true;
- t = ConfigParser::strtokFile();
- }
-
- if (!t)
- return;
-
maximum = xatoi(t);
debugs(28, 5, "aclParseUserMaxIP: Max IP address's " << maximum);
debugs(28, DBG_IMPORTANT, "aclMatchUserMaxIP: user '" << auth_user_request->username() << "' tries to use too many IP addresses (max " << maximum << " allowed)!");
/* this is a match */
- if (flags.strict) {
+ if (flags.isSet(ACL_F_STRICT)) {
/*
* simply deny access - the user name is already associated with
* the request
wordlist *W = NULL;
- if (flags.strict)
- wordlistAdd(&W, "-s");
-
char buf[128];
snprintf(buf, sizeof(buf), "%lu", (unsigned long int) maximum);
int getMaximum() const {return maximum;}
- int getStrict() const {return flags.strict;}
+ bool getStrict() const {return flags.isSet(ACL_F_STRICT);}
private:
static Prototype RegistryProtoype;
static ACLMaxUserIP RegistryEntry_;
+ static ACLFlag SupportedFlags[];
int match(Auth::UserRequest::Pointer, Ip::Address const &);
char const *class_;
int maximum;
-
- struct Flags {
- Flags() : strict(false) {}
-
- bool strict;
- } flags;
};
MEMPROXY_CLASS_INLINE(ACLMaxUserIP);
#include "testACLMaxUserIP.h"
#include "auth/AclMaxUserIp.h"
+#include "ConfigParser.h"
#if HAVE_STDEXCEPT
#include <stdexcept>
testACLMaxUserIP::testParseLine()
{
/* a config line to pass with a lead-in token to seed the parser. */
- char * line = xstrdup("token -s 1");
+ char * line = xstrdup("max_user_ip 1");
/* seed the parser */
strtok(line, w_space);
ACLMaxUserIP anACL("max_user_ip");
anACL.parse();
- /* we want a maximum of one, and strict to be true */
+ /* we want a maximum of one */
CPPUNIT_ASSERT(anACL.getMaximum() == 1);
- CPPUNIT_ASSERT(anACL.getStrict() == true);
/* the acl must be vaid */
CPPUNIT_ASSERT(anACL.valid());
xfree(line);