X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusers.h;h=fdfa4606bc96d1dac04e14cf227ec347cf075c3d;hb=398e82a1142e8d361b206b4a2b15e3f6325a51b2;hp=59cd6cc6f4b7186141c2f73c1c4a8d46aa4f3bd6;hpb=29237b699f47488962133b54b0b3d1085f3c068d;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/users.h b/include/users.h index 59cd6cc6f..fdfa4606b 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; @@ -716,7 +760,7 @@ class CoreExport User : public connection /** Create a displayable mode string for this users umodes * @param The mode string */ - const char* FormatModes(); + const char* FormatModes(bool showparameters = false); /** Returns true if a specific mode is set * @param m The user mode