]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Add a module which implements the HAProxy PROXY v2 protocol.
[user/henk/code/inspircd.git] / include / users.h
index 03d94b28baf80b233befc7721c8ca56b8ea13c32..88858b160f9352a6f78d0fa3de0847b1e9541b43 100644 (file)
@@ -244,6 +244,12 @@ class CoreExport User : public Extensible
         */
        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.
@@ -270,11 +276,6 @@ class CoreExport User : public Extensible
         */
        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;
@@ -307,11 +308,6 @@ class CoreExport User : public Extensible
         */
        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;
@@ -357,13 +353,24 @@ class CoreExport User : public Extensible
        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();
@@ -378,7 +385,7 @@ class CoreExport User : public Extensible
        /** 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
@@ -675,16 +682,18 @@ class CoreExport User : public Extensible
         */
        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
@@ -718,7 +727,7 @@ class CoreExport User : public Extensible
        /** Default destructor
         */
        virtual ~User();
-       virtual CullResult cull() CXX11_OVERRIDE;
+       CullResult cull() CXX11_OVERRIDE;
 };
 
 class CoreExport UserIOHandler : public StreamSocket
@@ -726,8 +735,9 @@ 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 OnSetEndPoint(const irc::sockets::sockaddrs& local, const irc::sockets::sockaddrs& remote) 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
@@ -905,9 +915,9 @@ class CoreExport FakeUser : public User
                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 */