*/
std::string cachedip;
+ /** If set then the hostname which is displayed to users. */
+ std::string displayhost;
+
+ /** The real hostname of this user. */
+ std::string realhost;
+
/** The user's mode list.
* Much love to the STL for giving us an easy to use bitset, saving us RAM.
* if (modes[modeid]) is set, then the mode is set.
*/
typedef insp::intrusive_list<Membership> ChanList;
- /** Hostname of connection.
- * This should be valid as per RFC1035.
- */
- std::string host;
-
/** Time that the object was instantiated (used for TS calculation etc)
*/
time_t age;
*/
std::string ident;
- /** The host displayed to non-opers (used for cloaking etc).
- * This usually matches the value of User::host.
- */
- std::string dhost;
-
/** The users full name (GECOS).
*/
std::string fullname;
unsigned int quitting:1;
/** What type of user is this? */
- const unsigned int usertype:2;
+ const UserType usertype:2;
/** Get client IP string from sockaddr, using static internal buffer
* @return The IP string
*/
const std::string& GetIPString();
+ /** Retrieves this user's hostname.
+ * @param uncloak If true then return the real host; otherwise, the display host.
+ */
+ const std::string& GetHost(bool uncloak) const;
+
+ /** Retrieves this user's displayed hostname. */
+ const std::string& GetDisplayedHost() const;
+
+ /** Retrieves this user's real hostname. */
+ const std::string& GetRealHost() const;
+
/** Get CIDR mask, using default range, for this user
*/
irc::sockets::cidr_mask GetCIDRMask();
/** Sets the client IP for this user
* @return true if the conversion was successful
*/
- virtual bool SetClientIP(const char* sip, bool recheck_eline = true);
+ virtual bool SetClientIP(const std::string& address, bool recheck_eline = true);
virtual void SetClientIP(const irc::sockets::sockaddrs& sa, bool recheck_eline = true);
/** Constructor
* @throw CoreException if the UID allocated to the user already exists
*/
- User(const std::string& uid, Server* srv, int objtype);
+ User(const std::string& uid, Server* srv, UserType objtype);
/** Returns the full displayed host of the user
* This member function returns the hostname of the user as seen by other users
*/
bool SharesChannelWith(User *other);
- /** 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.
- * @param host The new hostname to set
- * @return True if the change succeeded, false if it didn't
- * (a module vetoed the change).
+ /** Change the displayed hostname of this user.
+ * @param host The new displayed hostname of this user.
+ * @return True if the hostname was changed successfully; otherwise, false.
*/
bool ChangeDisplayedHost(const std::string& host);
+ /** Change the real hostname of this user.
+ * @param host The new real hostname of this user.
+ * @param resetdisplay Whether to reset the display host to this value.
+ */
+ void ChangeRealHost(const std::string& host, bool resetdisplay);
+
/** Change the ident (username) of a user.
* ALWAYS use this function, rather than writing User::ident directly,
* as this triggers module events allowing the change to be syncronized to
/** Default destructor
*/
virtual ~User();
- virtual CullResult cull() CXX11_OVERRIDE;
+ CullResult cull() CXX11_OVERRIDE;
};
class CoreExport UserIOHandler : public StreamSocket
public:
LocalUser* const user;
UserIOHandler(LocalUser* me) : user(me) {}
- void OnDataReady();
- void OnError(BufferedSocketError error);
+ void OnDataReady() CXX11_OVERRIDE;
+ void OnError(BufferedSocketError error) CXX11_OVERRIDE;
/** Adds to the user's write buffer.
* You may add any amount of text up to this users sendq value, if you exceed the
*/
void SetClass(const std::string &explicit_name = "");
- bool SetClientIP(const char* sip, bool recheck_eline = true) CXX11_OVERRIDE;
+ bool SetClientIP(const std::string& address, bool recheck_eline = true) CXX11_OVERRIDE;
void SetClientIP(const irc::sockets::sockaddrs& sa, bool recheck_eline = true) CXX11_OVERRIDE;
nick = sname;
}
- virtual CullResult cull() CXX11_OVERRIDE;
- virtual const std::string& GetFullHost() CXX11_OVERRIDE;
- virtual const std::string& GetFullRealHost() CXX11_OVERRIDE;
+ CullResult cull() CXX11_OVERRIDE;
+ const std::string& GetFullHost() CXX11_OVERRIDE;
+ const std::string& GetFullRealHost() CXX11_OVERRIDE;
};
/* Faster than dynamic_cast */