X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusers.h;h=4939feb1ea529a8175e23a9fd234ec2e07c7e84b;hb=0c061aff64625799160dadfb09ade008a38eb6c5;hp=8d53197ba048fb000be29ba883ca77254693e990;hpb=78044f849b63c71fb9c741c648415a298c0ed617;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/users.h b/include/users.h index 8d53197ba..4939feb1e 100644 --- a/include/users.h +++ b/include/users.h @@ -135,6 +135,11 @@ struct CoreExport ConnectClass : public refcountbase */ bool resolvehostnames; + /** + * If non-empty the server ports which this user has to be using + */ + insp::flat_set ports; + /** Create a new connect class with no settings. */ ConnectClass(ConfigTag* tag, char type, const std::string& mask); @@ -413,19 +418,21 @@ class CoreExport User : public Extensible */ bool IsNoticeMaskSet(unsigned char sm); - /** Create a displayable mode string for this users umodes - * @param showparameters The mode string + /** Get the mode letters of modes set on the user as a string. + * @param includeparams True to get the parameters of the modes as well. Defaults to false. + * @return Mode letters of modes set on the user and optionally the parameters of those modes, if any. + * The returned string always begins with a '+' character. If the user has no modes set, "+" is returned. */ - const char* FormatModes(bool showparameters = false); + std::string GetModeLetters(bool includeparams = false) const; /** Returns true if a specific mode is set * @param m The user mode * @return True if the mode is set */ - bool IsModeSet(unsigned char m); - bool IsModeSet(ModeHandler* mh); - bool IsModeSet(ModeHandler& mh) { return IsModeSet(&mh); } - bool IsModeSet(UserModeReference& moderef); + bool IsModeSet(unsigned char m) const; + bool IsModeSet(const ModeHandler* mh) const; + bool IsModeSet(const ModeHandler& mh) const { return IsModeSet(&mh); } + bool IsModeSet(UserModeReference& moderef) const; /** Set a specific usermode to on or off * @param m The user mode @@ -455,11 +462,10 @@ class CoreExport User : public Extensible /** Returns true or false if a user can set a privileged user or channel mode. * This is done by looking up their oper type from User::oper, then referencing * this to their oper classes, and checking the modes they can set. - * @param mode The mode the check - * @param type ModeType (MODETYPE_CHANNEL or MODETYPE_USER). + * @param mh Mode to check * @return True if the user can set or unset this mode. */ - virtual bool HasModePermission(unsigned char mode, ModeType type); + virtual bool HasModePermission(const ModeHandler* mh) const; /** Creates a usermask with real host. * Takes a buffer to use and fills the given buffer with the hostmask in the format user\@host @@ -524,7 +530,7 @@ class CoreExport User : public Extensible */ virtual void WriteRemoteNotice(const std::string& text); - void WriteRemoteNumeric(const Numeric::Numeric& numeric); + virtual void WriteRemoteNumeric(const Numeric::Numeric& numeric); template void WriteRemoteNumeric(unsigned int numeric, T1 p1) @@ -663,20 +669,6 @@ class CoreExport User : public Extensible */ void ForEachNeighbor(ForEachNeighborHandler& handler, bool include_self = true); - /** Dump text to a user target, splitting it appropriately to fit - * @param linePrefix text to prefix each complete line with - * @param textStream the text to send to the user - */ - void SendText(const std::string& linePrefix, std::stringstream& textStream); - - /** Write to the user, routing the line if the user is remote. - */ - virtual void SendText(const std::string& line) = 0; - - /** Write to the user, routing the line if the user is remote. - */ - void SendText(const char* text, ...) CUSTOM_PRINTF(2, 3); - /** Return true if the user shares at least one channel with another user * @param other The other user to compare the channel list against * @return True if the given user shares at least one channel with this user @@ -848,7 +840,6 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_nodeusertype == USERTYPE_SERVER ? static_cast(u) : NULL; } -inline bool User::IsModeSet(ModeHandler* mh) +inline bool User::IsModeSet(const ModeHandler* mh) const { return (modes[mh->GetId()]); } -inline bool User::IsModeSet(UserModeReference& moderef) +inline bool User::IsModeSet(UserModeReference& moderef) const { if (!moderef) return false;