diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-08-19 20:14:05 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-08-19 20:14:05 +0000 |
commit | cf4439ac5c5e5f57aba2c998ee63b9b27ec17d69 (patch) | |
tree | 3e95ffda5801a7344c1f9fc47119fe3c3a810496 /include | |
parent | c61fac32bc7559e3d6f7534919f115266eee5917 (diff) |
Add <connect:maxchans> as per feature bug #338 - combined with the last feature, this allows per-oper specific maxchans values, and even the same for non-opers!
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7761 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r-- | include/configreader.h | 6 | ||||
-rw-r--r-- | include/users.h | 29 |
2 files changed, 27 insertions, 8 deletions
diff --git a/include/configreader.h b/include/configreader.h index 7c5592432..648b02eb1 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -182,11 +182,11 @@ struct MultiConfig /** Tag name */ const char* tag; /** One or more items within tag */ - char* items[15]; + char* items[17]; /** One or more defaults for items within tags */ - char* items_default[15]; + char* items_default[17]; /** One or more data types */ - int datatype[15]; + int datatype[17]; /** Initialization function */ MultiNotify init_function; /** Validation function */ diff --git a/include/users.h b/include/users.h index 8628e2c21..66ca2b9cc 100644 --- a/include/users.h +++ b/include/users.h @@ -164,6 +164,11 @@ class CoreExport ConnectClass : public classbase /** Global max when connecting by this connection class */ unsigned long maxglobal; + + /** Max channels for this class + */ + unsigned int maxchans; + /** Port number this connect class applies to */ int port; @@ -190,16 +195,16 @@ public: */ ConnectClass(const std::string &thename, unsigned int timeout, unsigned int fld, const std::string &hst, unsigned int ping, const std::string &pas, unsigned int thres, unsigned long sendq, unsigned long recvq, - unsigned long maxl, unsigned long maxg, int p = 0) : + unsigned long maxl, unsigned long maxg, unsigned int maxc, int p = 0) : type(CC_ALLOW), name(thename), registration_timeout(timeout), flood(fld), host(hst), pingtime(ping), pass(pas), - threshold(thres), sendqmax(sendq), recvqmax(recvq), maxlocal(maxl), maxglobal(maxg), port(p) { } + threshold(thres), sendqmax(sendq), recvqmax(recvq), maxlocal(maxl), maxglobal(maxg), maxchans(maxc), port(p) { } /** Create a new connect class to DENY connections * @param thename Name of the connect class * @param hst The IP mask to deny */ ConnectClass(const std::string &thename, const std::string &hst) : type(CC_DENY), name(thename), registration_timeout(0), - flood(0), host(hst), pingtime(0), pass(""), threshold(0), sendqmax(0), recvqmax(0), maxlocal(0), maxglobal(0), port(0) { } + flood(0), host(hst), pingtime(0), pass(""), threshold(0), sendqmax(0), recvqmax(0), maxlocal(0), maxglobal(0), maxchans(0), port(0) { } /* Create a new connect class based on another class * @param thename The name of the connect class @@ -208,7 +213,8 @@ public: ConnectClass(const std::string &thename, const ConnectClass &source) : type(source.type), name(thename), registration_timeout(source.registration_timeout), flood(source.flood), host(source.host), pingtime(source.pingtime), pass(source.pass), threshold(source.threshold), sendqmax(source.sendqmax), - recvqmax(source.recvqmax), maxlocal(source.maxlocal), maxglobal(source.maxglobal), port(source.port) + recvqmax(source.recvqmax), maxlocal(source.maxlocal), maxglobal(source.maxglobal), maxchans(source.maxchans), + port(source.port) { } @@ -216,7 +222,7 @@ public: */ void Update(unsigned int timeout, unsigned int fld, const std::string &hst, unsigned int ping, const std::string &pas, unsigned int thres, unsigned long sendq, unsigned long recvq, - unsigned long maxl, unsigned long maxg, int p) + unsigned long maxl, unsigned long maxg, unsigned int maxc, int p) { if (timeout) registration_timeout = timeout; @@ -238,10 +244,17 @@ public: maxlocal = maxl; if (maxg) maxglobal = maxg; + if (maxc) + maxchans = maxc; if (p) port = p; } + int GetMaxChans() + { + return maxchans; + } + /** Returns the type, CC_ALLOW or CC_DENY */ char GetType() @@ -437,6 +450,10 @@ class CoreExport userrec : public connection */ char* operquit; + /** Max channels for this user + */ + unsigned int MaxChans; + public: /** Resolvers for looking up this users IP address * This will occur if and when res_reverse completes. @@ -465,6 +482,8 @@ class CoreExport userrec : public connection */ void StartDNSLookup(); + unsigned int GetMaxChans(); + /** The users nickname. * An invalid nickname indicates an unregistered connection prior to the NICK command. * Use InspIRCd::IsNick() to validate nicknames. |