]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/xline.h
Merge m_restrictchans and m_regonlycreate due to converging functionality (#1541).
[user/henk/code/inspircd.git] / include / xline.h
index c2ede29dfb458c2904761fa8f0734d8d8b615a56..44f16cadfc15818d96cff5ff7c24836dd0f61461 100644 (file)
@@ -49,8 +49,13 @@ class CoreExport XLine : public classbase
         * @param re The reason of the xline
         * @param t The line type, should be set by the derived class constructor
         */
-       XLine(time_t s_time, long d, std::string src, std::string re, const std::string &t)
-               : set_time(s_time), duration(d), source(src), reason(re), type(t)
+       XLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& t)
+               : set_time(s_time)
+               , duration(d)
+               , source(src)
+               , reason(re)
+               , type(t)
+               , from_config(false)
        {
                expiry = set_time + duration;
        }
@@ -121,7 +126,7 @@ class CoreExport XLine : public classbase
 
        /** The duration of the ban, or 0 if permenant
         */
-       long duration;
+       unsigned long duration;
 
        /** Source of the ban. This can be a servername or an oper nickname
         */
@@ -140,6 +145,9 @@ class CoreExport XLine : public classbase
         */
        const std::string type;
 
+       // Whether this XLine was loaded from the server config.
+       bool from_config;
+
        virtual bool IsBurstable();
 };
 
@@ -157,7 +165,7 @@ class CoreExport KLine : public XLine
         * @param ident Ident to match
         * @param host Host to match
         */
-       KLine(time_t s_time, long d, std::string src, std::string re, std::string ident, std::string host)
+       KLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& ident, const std::string& host)
                : XLine(s_time, d, src, re, "K"), identmask(ident), hostmask(host)
        {
                matchtext = this->identmask;
@@ -170,15 +178,15 @@ class CoreExport KLine : public XLine
        {
        }
 
-       virtual bool Matches(User *u);
+       bool Matches(User* u) CXX11_OVERRIDE;
 
-       virtual bool Matches(const std::string &str);
+       bool Matches(const std::string& str) CXX11_OVERRIDE;
 
-       virtual void Apply(User* u);
+       void Apply(User* u) CXX11_OVERRIDE;
 
-       virtual const std::string& Displayable();
+       const std::string& Displayable() CXX11_OVERRIDE;
 
-       virtual bool IsBurstable();
+       bool IsBurstable() CXX11_OVERRIDE;
 
        /** Ident mask (ident part only)
         */
@@ -203,7 +211,7 @@ class CoreExport GLine : public XLine
         * @param ident Ident to match
         * @param host Host to match
         */
-       GLine(time_t s_time, long d, std::string src, std::string re, std::string ident, std::string host)
+       GLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& ident, const std::string& host)
                : XLine(s_time, d, src, re, "G"), identmask(ident), hostmask(host)
        {
                matchtext = this->identmask;
@@ -216,13 +224,13 @@ class CoreExport GLine : public XLine
        {
        }
 
-       virtual bool Matches(User *u);
+       bool Matches(User* u) CXX11_OVERRIDE;
 
-       virtual bool Matches(const std::string &str);
+       bool Matches(const std::string& str) CXX11_OVERRIDE;
 
-       virtual void Apply(User* u);
+       void Apply(User* u)  CXX11_OVERRIDE;
 
-       virtual const std::string& Displayable();
+       const std::string& Displayable() CXX11_OVERRIDE;
 
        /** Ident mask (ident part only)
         */
@@ -247,7 +255,7 @@ class CoreExport ELine : public XLine
         * @param ident Ident to match
         * @param host Host to match
         */
-       ELine(time_t s_time, long d, std::string src, std::string re, std::string ident, std::string host)
+       ELine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& ident, const std::string& host)
                : XLine(s_time, d, src, re, "E"), identmask(ident), hostmask(host)
        {
                matchtext = this->identmask;
@@ -258,15 +266,15 @@ class CoreExport ELine : public XLine
        {
        }
 
-       virtual bool Matches(User *u);
+       bool Matches(User* u) CXX11_OVERRIDE;
 
-       virtual bool Matches(const std::string &str);
+       bool Matches(const std::string& str) CXX11_OVERRIDE;
 
-       virtual void Unset();
+       void Unset() CXX11_OVERRIDE;
 
-       virtual void OnAdd();
+       void OnAdd() CXX11_OVERRIDE;
 
-       virtual const std::string& Displayable();
+       const std::string& Displayable() CXX11_OVERRIDE;
 
        /** Ident mask (ident part only)
         */
@@ -290,7 +298,7 @@ class CoreExport ZLine : public XLine
         * @param re The reason of the xline
         * @param ip IP to match
         */
-       ZLine(time_t s_time, long d, std::string src, std::string re, std::string ip)
+       ZLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& ip)
                : XLine(s_time, d, src, re, "Z"), ipaddr(ip)
        {
        }
@@ -301,13 +309,13 @@ class CoreExport ZLine : public XLine
        {
        }
 
-       virtual bool Matches(User *u);
+       bool Matches(User* u) CXX11_OVERRIDE;
 
-       virtual bool Matches(const std::string &str);
+       bool Matches(const std::string& str) CXX11_OVERRIDE;
 
-       virtual void Apply(User* u);
+       void Apply(User* u) CXX11_OVERRIDE;
 
-       virtual const std::string& Displayable();
+       const std::string& Displayable() CXX11_OVERRIDE;
 
        /** IP mask (no ident part)
         */
@@ -326,7 +334,7 @@ class CoreExport QLine : public XLine
         * @param re The reason of the xline
         * @param nickname Nickname to match
         */
-       QLine(time_t s_time, long d, std::string src, std::string re, std::string nickname)
+       QLine(time_t s_time, unsigned long d, const std::string& src, const std::string& re, const std::string& nickname)
                : XLine(s_time, d, src, re, "Q"), nick(nickname)
        {
        }
@@ -336,13 +344,13 @@ class CoreExport QLine : public XLine
        ~QLine()
        {
        }
-       virtual bool Matches(User *u);
+       bool Matches(User* u) CXX11_OVERRIDE;
 
-       virtual bool Matches(const std::string &str);
+       bool Matches(const std::string& str) CXX11_OVERRIDE;
 
-       virtual void Apply(User* u);
+       void Apply(User* u) CXX11_OVERRIDE;
 
-       virtual const std::string& Displayable();
+       const std::string& Displayable() CXX11_OVERRIDE;
 
        /** Nickname mask
         */
@@ -382,7 +390,7 @@ class CoreExport XLineFactory
         * @param xline_specific_mask The mask string for the line, specific to the XLine type being created.
         * @return A specialized XLine class of the given type for this factory.
         */
-       virtual XLine* Generate(time_t set_time, long duration, std::string source, std::string reason, std::string xline_specific_mask) = 0;
+       virtual XLine* Generate(time_t set_time, unsigned long duration, const std::string& source, const std::string& reason, const std::string& xline_specific_mask) = 0;
 
        virtual bool AutoApplyToUserList(XLine* x) { return true; }
 
@@ -523,4 +531,7 @@ class CoreExport XLineManager
         * @param stats Stats context
         */
        void InvokeStats(const std::string& type, unsigned int numeric, Stats::Context& stats);
+
+       /** Clears any XLines which were added by the server configuration. */
+       void ClearConfigLines();
 };