X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusers.h;h=2934652540815374f54dd8e865a4a33d3bebfc8a;hb=48103a05e75dc208bcd01b62b19ae01158c01b50;hp=883fbadf8a064cf63728cd95e208173f61b80bf4;hpb=f4ea51671f367d6e473049d52919a3c879329c6f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/users.h b/include/users.h index 883fbadf8..293465254 100644 --- a/include/users.h +++ b/include/users.h @@ -17,17 +17,12 @@ #include "socket.h" #include "connection.h" #include "dns.h" -#include "mode.h" -#include "linebuffer.h" - -#include // XXX XXX XXX this should probably be moved to globals.h, and globals.h should probably be merged in with inspircd.h sometime. -- w00t -#define _GLIBCXX_FORCE_NEW 1 +#include "mode.h" /** Channel status for a user */ -enum ChanStatus -{ +enum ChanStatus { /** Op */ STATUS_OP = 4, /** Halfop */ @@ -40,8 +35,7 @@ enum ChanStatus /** connect class types */ -enum ClassTypes -{ +enum ClassTypes { /** connect:allow */ CC_ALLOW = 0, /** connect:deny */ @@ -50,8 +44,7 @@ enum ClassTypes /** RFC1459 channel modes */ -enum UserModes -{ +enum UserModes { /** +s: Server notices */ UM_SERVERNOTICE = 's' - 65, /** +w: WALLOPS */ @@ -67,17 +60,16 @@ enum UserModes /** Registration state of a user, e.g. * have they sent USER, NICK, PASS yet? */ -enum RegistrationState -{ -#ifndef REG_NONE /* This is already defined in win32, luckily it is still 0. -- Burlex - XXX perhaps we should undef it just in case.. Relying on magic numbers... -- w00t */ +enum RegistrationState { + +#ifndef WIN32 // Burlex: This is already defined in win32, luckily it is still 0. REG_NONE = 0, /* Has sent nothing */ #endif REG_USER = 1, /* Has sent USER */ REG_NICK = 2, /* Has sent NICK */ REG_NICKUSER = 3, /* Bitwise combination of REG_NICK and REG_USER */ - REG_ALL = 7 /* REG_NICKUSER plus next bit along */ + REG_ALL = 7 /* REG_NICKUSER plus next bit along */ }; /* Required forward declaration */ @@ -606,15 +598,10 @@ class CoreExport User : public connection */ std::string recvq; - /** How many bytes are currently in the user's sendq. - */ - unsigned long sendqlength; - /** List of pointers to buffer objects, this is the actual user's sendq. + /** User's send queue. + * Lines waiting to be sent are stored here until their buffer is flushed. */ - std::list > sendq; - /** How far into the current sendq line is the user? - */ - unsigned long sendqpos; + std::string sendq; /** Message user will quit with. Not to be set externally. */ @@ -674,6 +661,15 @@ class CoreExport User : public connection */ const char* GetIPString(bool translate4in6 = true); + /** Get a CIDR mask from the IP of this user, using a static internal buffer. + * e.g., GetCIDRMask(16) for 223.254.214.52 returns 223.254.0.0/16 + * This may be used for CIDR clone detection, etc. + * + * (XXX, brief note: when we do the sockets rewrite, this should move down a + * level so it may be used on more derived objects. -- w00t) + */ + const char *GetCIDRMask(int range); + /* Write error string */ std::string WriteError; @@ -702,9 +698,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 + /** Check if the user matches a G or K line, and disconnect them if they do. + * Returns true if the user matched a ban, false else. */ - void CheckLines(); + bool CheckLines(); /** Returns the full displayed host of the user * This member function returns the hostname of the user as seen by other users @@ -856,13 +853,13 @@ class CoreExport User : public connection */ const char* GetWriteError(); - /** Adds a line buffer to the user's sendq. + /** Adds to the user's write buffer. * You may add any amount of text up to this users sendq value, if you exceed the * sendq value, SetWriteError() will be called to set the users error string to * "SendQ exceeded", and further buffer adds will be dropped. * @param data The data to add to the write buffer */ - void AddWriteBuf(LineBuffer *l); + void AddWriteBuf(const std::string &data); /** Flushes as much of the user's buffer to the file descriptor as possible. * This function may not always flush the entire buffer, rather instead as much of it