]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Remove dummy API_VERSION from Version constructor
[user/henk/code/inspircd.git] / include / users.h
index 884aaceeb7970371d8dc4085c8f34d5610db5f73..ed672450ee00839611cf6f7e0d005fc2a54b53bd 100644 (file)
@@ -59,11 +59,13 @@ enum RegistrationState {
 /* Required forward declaration */
 class Channel;
 class UserResolver;
+class ConfigTag;
 
 /** Holds information relevent to <connect allow> and <connect deny> tags in the config file.
  */
 struct CoreExport ConnectClass : public refcountbase
 {
+       reference<ConfigTag> config;
        /** Type of line, either CC_ALLOW or CC_DENY
         */
        char type;
@@ -129,10 +131,10 @@ struct CoreExport ConnectClass : public refcountbase
 
        /** Create a new connect class with no settings.
         */
-       ConnectClass(char type, const std::string& mask);
+       ConnectClass(ConfigTag* tag, char type, const std::string& mask);
        /** Create a new connect class with inherited settings.
         */
-       ConnectClass(char type, const std::string& mask, const ConnectClass& parent);
+       ConnectClass(ConfigTag* tag, char type, const std::string& mask, const ConnectClass& parent);
        
        /** Update the settings in this block to match the given block */
        void Update(const ConnectClass* newSettings);
@@ -196,19 +198,19 @@ struct CoreExport ConnectClass : public refcountbase
 
 /** Holds a complete list of all channels to which a user has been invited and has not yet joined, and the time at which they'll expire.
  */
-typedef std::vector< std::pair<irc::string, time_t> > InvitedList;
+CoreExport typedef std::vector< std::pair<irc::string, time_t> > InvitedList;
 
 /** Holds a complete list of all allow and deny tags from the configuration file (connection classes)
  */
-typedef std::vector<reference<ConnectClass> > ClassVector;
+CoreExport typedef std::vector<reference<ConnectClass> > ClassVector;
 
 /** Typedef for the list of user-channel records for a user
  */
-typedef std::set<Channel*> UserChanList;
+CoreExport typedef std::set<Channel*> UserChanList;
 
 /** Shorthand for an iterator into a UserChanList
  */
-typedef UserChanList::iterator UCListIter;
+CoreExport typedef UserChanList::iterator UCListIter;
 
 /* Required forward declaration
  */
@@ -289,16 +291,6 @@ class CoreExport User : public StreamSocket
         */
        int cmds_out;
 
-       /** True if user has authenticated, false if otherwise
-        */
-       bool haspassed;
-
-       /** Used by User to indicate the registration status of the connection
-        * It is a bitfield of the REG_NICK, REG_USER and REG_ALL bits to indicate
-        * the connection state.
-        */
-       char registered;
-
        /** Time the connection was last pinged
         */
        time_t lastping;
@@ -398,28 +390,43 @@ class CoreExport User : public StreamSocket
         */
        std::string oper;
 
-       /** True when DNS lookups are completed.
-        * The UserResolver classes res_forward and res_reverse will
-        * set this value once they complete.
-        */
-       bool dns_done;
-
        /** Password specified by the user when they registered.
         * This is stored even if the <connect> block doesnt need a password, so that
         * modules may check it.
         */
        std::string password;
 
+       /** This value contains how far into the penalty threshold the user is. Once its over
+        * the penalty threshold then commands are held and processed on-timer.
+        */
+       int Penalty;
+
+       /** Used by User to indicate the registration status of the connection
+        * It is a bitfield of the REG_NICK, REG_USER and REG_ALL bits to indicate
+        * the connection state.
+        */
+       unsigned int registered:3;
+
+       /** True when DNS lookups are completed.
+        * The UserResolver classes res_forward and res_reverse will
+        * set this value once they complete.
+        */
+       unsigned int dns_done:1;
+
        /** Whether or not to send an snotice about this user's quitting
         */
-       bool quietquit;
+       unsigned int quietquit:1;
 
        /** If this is set to true, then all socket operations for the user
         * are dropped into the bit-bucket.
         * This value is set by QuitUser, and is not needed seperately from that call.
         * Please note that setting this value alone will NOT cause the user to quit.
         */
-       bool quitting;
+       unsigned int quitting:1;
+
+       /** This is true if the user matched an exception (E:Line). It is used to save time on ban checks.
+        */
+       unsigned int exempt:1;
 
        /** Server address and port that this user is connected to.
         * If unknown, address family is AF_UNKNOWN
@@ -456,15 +463,6 @@ class CoreExport User : public StreamSocket
         */
        const char *GetCIDRMask(int range);
 
-       /** This is true if the user matched an exception (E:Line). It is used to save time on ban checks.
-        */
-       bool exempt;
-
-       /** This value contains how far into the penalty threshold the user is. Once its over
-        * the penalty threshold then commands are held and processed on-timer.
-        */
-       int Penalty;
-
        /** Default constructor
         * @throw CoreException if the UID allocated to the user already exists
         * @param Instance Creator instance