CC_NAMED = 2
};
-/** RFC1459 channel modes
- */
-enum UserModes {
- /** +s: Server notice mask */
- UM_SNOMASK = 's' - 65,
- /** +w: WALLOPS */
- UM_WALLOPS = 'w' - 65,
- /** +i: Invisible */
- UM_INVISIBLE = 'i' - 65,
- /** +o: Operator */
- UM_OPERATOR = 'o' - 65
-};
-
/** Registration state of a user, e.g.
* have they sent USER, NICK, PASS yet?
*/
/** If set to true, no user DNS lookups are to be performed
*/
- bool nouserdns;
+ bool resolvehostnames;
/** Create a new connect class with no settings.
*/
*/
std::string cachedip;
+ /** The user's mode list.
+ * Much love to the STL for giving us an easy to use bitset, saving us RAM.
+ * if (modes[modeletter-65]) is set, then the mode is
+ * set, for example, to work out if mode +s is set, we check the field
+ * User::modes['s'-65] != 0.
+ */
+ std::bitset<64> modes;
+
public:
/** Hostname of connection.
*/
std::string fullname;
- /** The user's mode list.
- * NOT a null terminated string.
- * Also NOT an array.
- * Much love to the STL for giving us an easy to use bitset, saving us RAM.
- * if (modes[modeletter-65]) is set, then the mode is
- * set, for example, to work out if mode +s is set, we check the field
- * User::modes['s'-65] != 0.
- * The following RFC characters o, w, s, i have constants defined via an
- * enum, such as UM_SERVERNOTICE and UM_OPETATOR.
- */
- std::bitset<64> modes;
-
/** What snomasks are set on this user.
* This functions the same as the above modes.
*/
* @param m The user mode
* @param value On or off setting of the mode
*/
- void SetMode(unsigned char m, bool value);
void SetMode(ModeHandler* mh, bool value);
void SetMode(ModeHandler& mh, bool value) { SetMode(&mh, value); }
*/
bool SharesChannelWith(User *other);
- /** Send fake quit/join messages for host or ident cycle.
- * Run this after the item in question has changed.
- * You should not need to use this function, call ChangeDisplayedHost instead
- *
- * @param quitline The entire QUIT line, including the source using the old value
- */
- void DoHostCycle(const std::string &quitline);
-
/** Change the displayed host of a user.
* ALWAYS use this function, rather than writing User::dhost directly,
* as this triggers module events allowing the change to be syncronized to
- * remote servers. This will also emulate a QUIT and rejoin (where configured)
- * before setting their host field.
+ * remote servers.
* @param host The new hostname to set
* @return True if the change succeeded, false if it didn't
+ * (a module vetoed the change).
*/
- bool ChangeDisplayedHost(const char* host);
+ bool ChangeDisplayedHost(const std::string& host);
/** Change the ident (username) of a user.
* ALWAYS use this function, rather than writing User::ident directly,
- * as this correctly causes the user to seem to quit (where configured)
- * before setting their ident field.
+ * as this triggers module events allowing the change to be syncronized to
+ * remote servers.
* @param newident The new ident to set
* @return True if the change succeeded, false if it didn't
*/
- bool ChangeIdent(const char* newident);
+ bool ChangeIdent(const std::string& newident);
/** Change a users realname field.
* ALWAYS use this function, rather than writing User::fullname directly,
* @param gecos The user's new realname
* @return True if the change succeeded, false if otherwise
*/
- bool ChangeName(const char* gecos);
+ bool ChangeName(const std::string& gecos);
/** Change a user's nick
* @param newnick The new nick
*/
void PurgeEmptyChannels();
- /** Get the connect class which this user belongs to. NULL for remote users.
- * @return A pointer to this user's connect class.
- */
- virtual ConnectClass* GetClass();
-
/** Default destructor
*/
virtual ~User();
*/
reference<ConnectClass> MyClass;
- ConnectClass* GetClass();
+ /** Get the connect class which this user belongs to.
+ * @return A pointer to this user's connect class.
+ */
+ ConnectClass* GetClass() const { return MyClass; }
/** Call this method to find the matching \<connect> for a user, and to check them against it.
*/