]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Remove redundant null pointer check from m_ldapauth
[user/henk/code/inspircd.git] / include / users.h
index 503357348c782dbabe5e8369831db6fe2355aacb..c699ebab7551cc83ce17521c833c0edc3912b920 100644 (file)
@@ -133,7 +133,7 @@ struct CoreExport ConnectClass : public refcountbase
 
        /** If set to true, no user DNS lookups are to be performed
         */
-       bool nouserdns;
+       bool resolvehostnames;
 
        /** Create a new connect class with no settings.
         */
@@ -306,7 +306,7 @@ class CoreExport User : public Extensible
 
        /** The server the user is connected to.
         */
-       const std::string server;
+       Server* server;
 
        /** The user's away message.
         * If this string is empty, the user is not marked as away.
@@ -328,10 +328,6 @@ class CoreExport User : public Extensible
         */
        unsigned int registered:3;
 
-       /** Whether or not to send an snotice about this user's quitting
-        */
-       unsigned int quietquit:1;
-
        /** If this is set to true, then all socket operations for the user
         * are dropped into the bit-bucket.
         * This value is set by QuitUser, and is not needed seperately from that call.
@@ -361,7 +357,7 @@ class CoreExport User : public Extensible
        /** Constructor
         * @throw CoreException if the UID allocated to the user already exists
         */
-       User(const std::string &uid, const std::string& srv, int objtype);
+       User(const std::string& uid, Server* srv, int objtype);
 
        /** Returns the full displayed host of the user
         * This member function returns the hostname of the user as seen by other users
@@ -505,10 +501,16 @@ class CoreExport User : public Extensible
         */
        void WriteServ(const char* text, ...) CUSTOM_PRINTF(2, 3);
 
+       /** Sends a command to this user.
+        * @param command The command to be sent.
+        * @param text The message to send.
+        */
+       void WriteCommand(const char* command, const std::string& text);
+
        /** Sends a server notice to this user.
         * @param text The contents of the message to send.
         */
-       void WriteNotice(const std::string& text);
+       void WriteNotice(const std::string& text) { this->WriteCommand("NOTICE", ":" + text); }
 
        void WriteNumeric(unsigned int numeric, const char* text, ...) CUSTOM_PRINTF(3, 4);
 
@@ -585,32 +587,24 @@ class CoreExport User : public Extensible
         */
        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,
@@ -619,7 +613,7 @@ class CoreExport User : public Extensible
         * @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
@@ -643,11 +637,6 @@ class CoreExport User : public Extensible
         */
        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();
@@ -672,7 +661,7 @@ class CoreExport UserIOHandler : public StreamSocket
 
 typedef unsigned int already_sent_t;
 
-class CoreExport LocalUser : public User, public InviteBase
+class CoreExport LocalUser : public User, public InviteBase<LocalUser>, public intrusive_list_node<LocalUser>
 {
  public:
        LocalUser(int fd, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server);
@@ -680,10 +669,6 @@ class CoreExport LocalUser : public User, public InviteBase
 
        UserIOHandler eh;
 
-       /** Position in UserManager::local_users
-        */
-       LocalUserList::iterator localuseriter;
-
        /** Stats counter for bytes inbound
         */
        unsigned int bytes_in;
@@ -710,7 +695,10 @@ class CoreExport LocalUser : public User, public InviteBase
         */
        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.
         */
@@ -832,7 +820,7 @@ class CoreExport LocalUser : public User, public InviteBase
 class CoreExport RemoteUser : public User
 {
  public:
-       RemoteUser(const std::string& uid, const std::string& srv) : User(uid, srv, USERTYPE_REMOTE)
+       RemoteUser(const std::string& uid, Server* srv) : User(uid, srv, USERTYPE_REMOTE)
        {
        }
        virtual void SendText(const std::string& line);
@@ -841,9 +829,15 @@ class CoreExport RemoteUser : public User
 class CoreExport FakeUser : public User
 {
  public:
-       FakeUser(const std::string &uid, const std::string& srv) : User(uid, srv, USERTYPE_SERVER)
+       FakeUser(const std::string& uid, Server* srv) : User(uid, srv, USERTYPE_SERVER)
+       {
+               nick = srv->GetName();
+       }
+
+       FakeUser(const std::string& uid, const std::string& sname, const std::string& sdesc)
+               : User(uid, new Server(sname, sdesc), USERTYPE_SERVER)
        {
-               nick = srv;
+               nick = sname;
        }
 
        virtual CullResult cull();