X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusers.h;h=5f066cdd4619235e7100daed8742741b2b0f3bb2;hb=28801718521fa1d07af3678d6ec171e4a95ffd19;hp=269dfd65f2c8925cc04bdf1e7b165d2c3a692465;hpb=db7a49b071134cf3deadf05ce84fa6c7c46d80bf;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/users.h b/include/users.h index 269dfd65f..5f066cdd4 100644 --- a/include/users.h +++ b/include/users.h @@ -15,7 +15,6 @@ #define __USERS_H__ #include "socket.h" -#include "connection.h" #include "dns.h" #include "mode.h" @@ -413,7 +412,7 @@ class CoreExport VisData * by nickname, or the FindDescriptor method of the InspIRCd class to find a specific user by their * file descriptor value. */ -class CoreExport User : public connection +class CoreExport User : public EventHandler { private: /** Pointer to creator. @@ -428,15 +427,15 @@ class CoreExport User : public connection */ InvitedList invites; - /** Cached nick!ident@host value using the real hostname + /** Cached nick!ident@dhost value using the displayed hostname */ std::string cached_fullhost; - /** Cached nick!ident@ip value using the real IP address + /** Cached ident@ip value using the real IP address */ std::string cached_hostip; - /** Cached nick!ident@host value using the masked hostname + /** Cached ident@realhost value using the real hostname */ std::string cached_makehost; @@ -457,16 +456,12 @@ class CoreExport User : public connection std::map* AllowedOperCommands; /** Allowed user modes from oper classes. */ - bool* AllowedUserModes; + std::bitset<64> AllowedUserModes; /** Allowed channel modes from oper classes. */ - bool* AllowedChanModes; + std::bitset<64> AllowedChanModes; public: - /** Module responsible for raw i/o - */ - Module* io; - /** Contains a pointer to the connect class a user is on from - this will be NULL for remote connections. * The pointer is guarenteed to *always* be valid. :) */ @@ -476,7 +471,56 @@ class CoreExport User : public connection */ VisData* Visibility; - /** Stored reverse lookup from res_forward + /** Hostname of connection. + * This should be valid as per RFC1035. + */ + std::string host; + + /** Stats counter for bytes inbound + */ + int bytes_in; + + /** Stats counter for bytes outbound + */ + int bytes_out; + + /** Stats counter for commands inbound + */ + int cmds_in; + + /** Stats counter for commands outbound + */ + 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; + + /** Time the connection was created, set in the constructor. This + * may be different from the time the user's classbase object was + * created. + */ + time_t signon; + + /** Time that the connection last sent a message, used to calculate idle time + */ + time_t idle_lastmsg; + + /** Used by PING checking code + */ + time_t nping; + + /** Stored reverse lookup from res_forward. Should not be used after resolution. */ std::string stored_host; @@ -664,9 +708,10 @@ class CoreExport User : public connection User(InspIRCd* Instance, const std::string &uid = ""); /** Check if the user matches a G or K line, and disconnect them if they do. + * @param doZline True if ZLines should be checked (if IP has changed since initial connect) * Returns true if the user matched a ban, false else. */ - bool CheckLines(); + bool CheckLines(bool doZline = false); /** Returns the full displayed host of the user * This member function returns the hostname of the user as seen by other users