]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/users.h
Merge pull request #550 from Adam-/master+sepstream
[user/henk/code/inspircd.git] / include / users.h
index c5c936c131efe8e725309cfbccfb1ae4cc8c5c08..52f3e4a8897614967fd6f0708034697b9bd0064d 100644 (file)
  */
 
 
-#ifndef USERS_H
-#define USERS_H
+#pragma once
 
 #include "socket.h"
 #include "inspsocket.h"
-#include "dns.h"
 #include "mode.h"
 #include "membership.h"
 
@@ -146,6 +144,10 @@ struct CoreExport ConnectClass : public refcountbase
         */
        unsigned long limit;
 
+       /** If set to true, no user DNS lookups are to be performed
+        */
+       bool nouserdns;
+
        /** Create a new connect class with no settings.
         */
        ConnectClass(ConfigTag* tag, char type, const std::string& mask);
@@ -509,7 +511,7 @@ class CoreExport User : public Extensible
         * @param newnick The nickname to change to
         * @return True if the nickchange was successful.
         */
-       inline bool ForceNickChange(const char* newnick) { return ChangeNick(newnick, true); }
+       bool ForceNickChange(const std::string& newnick) { return ChangeNick(newnick, true); }
 
        /** Oper down.
         * This will clear the +o usermode and unset the user's oper type
@@ -541,6 +543,11 @@ class CoreExport User : public Extensible
         */
        void WriteServ(const char* text, ...) CUSTOM_PRINTF(2, 3);
 
+       /** Sends a server notice to this user.
+        * @param text The contents of the message to send.
+        */
+       void WriteNotice(const std::string& text);
+
        void WriteNumeric(unsigned int numeric, const char* text, ...) CUSTOM_PRINTF(3, 4);
 
        void WriteNumeric(unsigned int numeric, const std::string &text);
@@ -762,12 +769,6 @@ class CoreExport LocalUser : public User, public InviteBase
         */
        unsigned int quitting_sendq:1;
 
-       /** True when DNS lookups are completed.
-        * The UserResolver classes res_forward and res_reverse will
-        * set this value once they complete.
-        */
-       unsigned int dns_done:1;
-
        /** has the user responded to their previous ping?
         */
        unsigned int lastping:1;
@@ -792,16 +793,6 @@ class CoreExport LocalUser : public User, public InviteBase
        static already_sent_t already_sent_id;
        already_sent_t already_sent;
 
-       /** Stored reverse lookup from res_forward. Should not be used after resolution.
-        */
-       std::string stored_host;
-
-       /** Starts a DNS lookup of the user's IP.
-        * This will cause two UserResolver classes to be instantiated.
-        * When complete, these objects set User::dns_done to true.
-        */
-       void StartDNSLookup();
-
        /** Check if the user matches a G or K line, and disconnect them if they do.
         * @param doZline True if ZLines should be checked (if IP has changed since initial connect)
         * Returns true if the user matched a ban, false else.
@@ -833,23 +824,18 @@ class CoreExport LocalUser : public User, public InviteBase
        InviteList& GetInviteList();
 
        /** Returns true if a user is invited to a channel.
-        * @param channel A channel name to look up
+        * @param channel A channel to look up
         * @return True if the user is invited to the given channel
         */
-       bool IsInvited(const irc::string &channel);
-
-       /** Adds a channel to a users invite list (invites them to a channel)
-        * @param channel A channel name to add
-        * @param timeout When the invite should expire (0 == never)
-        */
-       void InviteTo(const irc::string &channel, time_t timeout);
+       bool IsInvited(Channel* chan) { return (Invitation::Find(chan, this) != NULL); }
 
        /** Removes a channel from a users invite list.
         * This member function is called on successfully joining an invite only channel
         * to which the user has previously been invited, to clear the invitation.
         * @param channel The channel to remove the invite to
+        * @return True if the user was invited to the channel and the invite was erased, false if the user wasn't invited
         */
-       void RemoveInvite(const irc::string &channel);
+       bool RemoveInvite(Channel* chan);
 
        void RemoveExpiredInvites();
 
@@ -921,37 +907,3 @@ inline FakeUser* IS_SERVER(User* u)
        return u->usertype == USERTYPE_SERVER ? static_cast<FakeUser*>(u) : NULL;
 }
 
-/** Derived from Resolver, and performs user forward/reverse lookups.
- */
-class CoreExport UserResolver : public Resolver
-{
- private:
-       /** UUID we are looking up */
-       std::string uuid;
-       /** True if the lookup is forward, false if is a reverse lookup
-        */
-       bool fwd;
- public:
-       /** Create a resolver.
-        * @param user The user to begin lookup on
-        * @param to_resolve The IP or host to resolve
-        * @param qt The query type
-        * @param cache Modified by the constructor if the result was cached
-        */
-       UserResolver(LocalUser* user, std::string to_resolve, QueryType qt, bool &cache);
-
-       /** Called on successful lookup
-        * @param result Result string
-        * @param ttl Time to live for result
-        * @param cached True if the result was found in the cache
-        */
-       void OnLookupComplete(const std::string &result, unsigned int ttl, bool cached);
-
-       /** Called on failed lookup
-        * @param e Error code
-        * @param errormessage Error message string
-        */
-       void OnError(ResolverError e, const std::string &errormessage);
-};
-
-#endif