29 #include "inspsocket.h"
32 #include "membership.h"
49 UM_SNOMASK =
's' - 65,
51 UM_WALLOPS =
'w' - 65,
53 UM_INVISIBLE =
'i' - 65,
55 UM_OPERATOR =
'o' - 65
61 enum RegistrationState {
63 #ifndef _WIN32 // Burlex: This is already defined in win32, luckily it is still 0.
159 const std::string& GetName() {
return name; }
160 const std::string& GetHost() {
return host; }
166 return (registration_timeout ? registration_timeout : 90);
173 return (pingtime ? pingtime : 120);
181 return (softsendqmax ? softsendqmax : 4096);
188 return (hardsendqmax ? hardsendqmax : 0x100000);
195 return (recvqmax ? recvqmax : 4096);
202 return penaltythreshold ? penaltythreshold : (fakelag ? 10 : 20);
205 unsigned int GetCommandRate()
207 return commandrate ? commandrate : 1000;
235 std::string cached_fullhost;
239 std::string cached_hostip;
243 std::string cached_makehost;
247 std::string cached_fullrealhost;
251 std::string cachedip;
387 const char* GetIPString();
396 virtual bool SetClientIP(
const char* sip,
bool recheck_eline =
true);
403 User(
const std::string &uid,
const std::string& srv,
int objtype);
409 bool CheckLines(
bool doZline =
false);
416 virtual const std::string& GetFullHost();
424 virtual const std::string& GetFullRealHost();
429 void InvalidateCache();
434 const char* FormatNoticeMasks();
442 std::string ProcessNoticeMasks(
const char *sm);
448 bool IsNoticeMaskSet(
unsigned char sm);
454 void SetNoticeMask(
unsigned char sm,
bool value);
459 const char* FormatModes(
bool showparameters =
false);
465 bool IsModeSet(
unsigned char m);
471 void SetMode(
unsigned char m,
bool value);
479 virtual bool HasPermission(
const std::string &command);
489 virtual bool HasPrivPermission(
const std::string &privstr,
bool noisy =
false);
498 virtual bool HasModePermission(
unsigned char mode, ModeType type);
504 char* MakeWildHost();
510 const std::string& MakeHost();
516 const std::string& MakeHostIP();
534 inline bool ForceNickChange(
const char* newnick) {
return ChangeNick(newnick,
true); }
544 virtual void Write(
const std::string &text);
551 virtual void Write(
const char *text, ...) CUSTOM_PRINTF(2, 3);
557 void WriteServ(const std::
string& text);
564 void WriteServ(const
char* text, ...) CUSTOM_PRINTF(2, 3);
566 void WriteNumeric(
unsigned int numeric, const
char* text, ...) CUSTOM_PRINTF(3, 4);
568 void WriteNumeric(
unsigned int numeric, const std::
string &text);
574 void WriteFrom(
User *user, const std::
string &text);
581 void WriteFrom(
User *user, const
char* text, ...) CUSTOM_PRINTF(3, 4);
587 void WriteTo(
User *dest, const std::
string &data);
594 void WriteTo(
User *dest, const
char *data, ...) CUSTOM_PRINTF(3, 4);
600 void WriteCommonRaw(const std::
string &line,
bool include_self = true);
606 void WriteCommon(const
char* text, ...) CUSTOM_PRINTF(2, 3);
612 void WriteCommonExcept(const
char* text, ...) CUSTOM_PRINTF(2, 3);
619 void WriteCommonQuit(const std::
string &normal_text, const std::
string &oper_text);
625 void SendText(const std::
string &LinePrefix, std::stringstream &TextStream);
629 virtual
void SendText(const std::
string& line) = 0;
633 void SendText(const
char* text, ...) CUSTOM_PRINTF(2, 3);
639 bool SharesChannelWith(
User *other);
647 void DoHostCycle(const std::
string &quitline);
657 bool ChangeDisplayedHost(const
char* host);
666 bool ChangeIdent(const
char* newident);
675 bool ChangeName(const
char* gecos);
682 bool ChangeNick(const std::
string& newnick,
bool force = false);
692 void SendAll(const
char* command, const
char* text, ...) CUSTOM_PRINTF(3, 4);
699 std::
string ChannelList(
User* source,
bool spy);
706 void SplitChanList(
User* dest, const std::
string &cl);
711 void PurgeEmptyChannels();
730 void OnError(BufferedSocketError error);
737 void AddWriteBuf(
const std::string &data);
740 typedef unsigned int already_sent_t;
804 static already_sent_t already_sent_id;
805 already_sent_t already_sent;
815 void StartDNSLookup();
826 void SetClass(
const std::string &explicit_name =
"");
828 bool SetClientIP(
const char* sip,
bool recheck_eline =
true);
832 void SendText(
const std::string& line);
833 void Write(
const std::string& text);
834 void Write(
const char*, ...) CUSTOM_PRINTF(2, 3);
839 InviteList& GetInviteList();
845 bool IsInvited(const
irc::
string &channel);
851 void InviteTo(const
irc::
string &channel, time_t timeout);
858 void RemoveInvite(const
irc::
string &channel);
860 void RemoveExpiredInvites();
868 bool HasPermission(const std::
string &command);
878 bool HasPrivPermission(const std::
string &privstr,
bool noisy = false);
887 bool HasModePermission(
unsigned char mode, ModeType type);
893 RemoteUser(
const std::string& uid,
const std::string& srv) :
User(uid, srv, USERTYPE_REMOTE)
896 virtual void SendText(
const std::string& line);
902 FakeUser(
const std::string &uid,
const std::string& srv) :
User(uid, srv, USERTYPE_SERVER)
908 virtual void SendText(
const std::string& line);
930 #define IS_OPER(x) (x->oper)
932 #define IS_AWAY(x) (!x->awaymsg.empty())
958 void OnLookupComplete(
const std::string &result,
unsigned int ttl,
bool cached);
964 void OnError(ResolverError e,
const std::string &errormessage);