-#include "bancache.h"
-#include "commands/cmd_whowas.h"
-
-already_sent_t LocalUser::already_sent_id = 0;
-
-std::string User::ProcessNoticeMasks(const char *sm)
-{
- bool adding = true, oldadding = false;
- const char *c = sm;
- std::string output;
-
- while (c && *c)
- {
- switch (*c)
- {
- case '+':
- adding = true;
- break;
- case '-':
- adding = false;
- break;
- case '*':
- for (unsigned char d = 'a'; d <= 'z'; d++)
- {
- if (!ServerInstance->SNO->masks[d - 'a'].Description.empty())
- {
- if ((!IsNoticeMaskSet(d) && adding) || (IsNoticeMaskSet(d) && !adding))
- {
- if ((oldadding != adding) || (!output.length()))
- output += (adding ? '+' : '-');
-
- this->SetNoticeMask(d, adding);
-
- output += d;
- }
- oldadding = adding;
- char u = toupper(d);
- if ((!IsNoticeMaskSet(u) && adding) || (IsNoticeMaskSet(u) && !adding))
- {
- if ((oldadding != adding) || (!output.length()))
- output += (adding ? '+' : '-');
-
- this->SetNoticeMask(u, adding);
-
- output += u;
- }
- oldadding = adding;
- }
- }
- break;
- default:
- if (isalpha(*c))
- {
- if ((!IsNoticeMaskSet(*c) && adding) || (IsNoticeMaskSet(*c) && !adding))
- {
- if ((oldadding != adding) || (!output.length()))
- output += (adding ? '+' : '-');
-
- this->SetNoticeMask(*c, adding);
-
- output += *c;
- oldadding = adding;
- }
- }
- else
- this->WriteNumeric(ERR_UNKNOWNSNOMASK, "%s %c :is unknown snomask char to me", this->nick.c_str(), *c);
-
- break;
- }
-
- c++;
- }
-
- std::string s = this->FormatNoticeMasks();
- if (s.length() == 0)
- {
- this->modes[UM_SNOMASK] = false;
- }
-
- return output;
-}
-
-void LocalUser::StartDNSLookup()
-{
- try
- {
- bool cached = false;
- const char* sip = this->GetIPString();
- UserResolver *res_reverse;
-
- QueryType resolvtype = this->client_sa.sa.sa_family == AF_INET6 ? DNS_QUERY_PTR6 : DNS_QUERY_PTR4;
- res_reverse = new UserResolver(this, sip, resolvtype, cached);
-
- ServerInstance->AddResolver(res_reverse, cached);
- }
- catch (CoreException& e)
- {
- ServerInstance->Logs->Log("USERS", DEBUG,"Error in resolver: %s",e.GetReason());
- dns_done = true;
- ServerInstance->stats->statsDnsBad++;
- }
-}