summaryrefslogtreecommitdiff
path: root/src/users.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/users.cpp')
-rw-r--r--src/users.cpp109
1 files changed, 14 insertions, 95 deletions
diff --git a/src/users.cpp b/src/users.cpp
index f2206be7f..88ab225b6 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -11,6 +11,7 @@
#include "services.h"
#include "modules.h"
+#include "nickserv.h"
Anope::insensitive_map<User *> UserListByNick;
Anope::map<User *> UserListByUID;
@@ -204,9 +205,6 @@ User::~User()
while (!this->chans.empty())
this->chans.front()->chan->DeleteUser(this);
- if (Config->LimitSessions && !this->server->IsULined())
- del_session(this);
-
UserListByNick.erase(this->nick);
if (!this->uid.empty())
UserListByUID.erase(this->uid);
@@ -322,7 +320,7 @@ void User::Collide(NickAlias *na)
guestnick = Config->NSGuestNickPrefix + stringify(getrandom16());
} while (finduser(guestnick));
- this->SendMessage(NickServ, _("Your nickname is now being changed to \002%s\002"), guestnick.c_str());
+ this->SendMessage(nickserv->Bot(), _("Your nickname is now being changed to \002%s\002"), guestnick.c_str());
ircdproto->SendForceNickChange(this, guestnick, Anope::CurTime);
}
else
@@ -354,36 +352,7 @@ void User::Identify(NickAlias *na)
ircdproto->SendAccountLogin(this, this->Account());
ircdproto->SetAutoIdentificationToken(this);
- NickAlias *this_na = findnick(this->nick);
- if (this_na && this_na->nc == na->nc && this_na->nc->HasFlag(NI_UNCONFIRMED) == false)
- this->SetMode(NickServ, UMODE_REGISTERED);
- if (ircd->vhost)
- do_on_id(this);
- if (Config->NSModeOnID)
- do_setmodes(this);
-
FOREACH_MOD(I_OnNickIdentify, OnNickIdentify(this));
-
- if (Config->NSForceEmail && na->nc->email.empty())
- {
- this->SendMessage(NickServ, _("You must now supply an e-mail for your nick.\n"
- "This e-mail will allow you to retrieve your password in\n"
- "case you forget it."));
- this->SendMessage(NickServ, _("Type \002%s%s SET EMAIL \037e-mail\037\002 in order to set your e-mail.\n"
- "Your privacy is respected; this e-mail won't be given to\n"
- "any third-party person."), Config->UseStrictPrivMsgString.c_str(), NickServ->nick.c_str());
- }
-
- if (na->nc->HasFlag(NI_UNCONFIRMED))
- {
- this->SendMessage(NickServ, _("Your email address is not confirmed. To confirm it, follow the instructions that were emailed to you when you registered."));
- time_t time_registered = Anope::CurTime - na->time_registered;
- if (Config->NSUnconfirmedExpire > time_registered)
- this->SendMessage(NickServ, _("Your account will expire, if not confirmed, in %s"), duration(Config->NSUnconfirmedExpire - time_registered).c_str());
- }
-
- check_memos(this);
-
}
@@ -397,7 +366,6 @@ void User::Login(NickCore *core)
core->Users.push_back(this);
this->UpdateHost();
- check_memos(this);
}
/** Logout the user
@@ -698,22 +666,14 @@ void User::SetModesInternal(const char *umodes, ...)
{
case UMODE_OPER:
if (add)
- {
++opcnt;
- if (Config->WallOper)
- ircdproto->SendGlobops(OperServ, "\2%s\2 is now an IRC operator.", this->nick.c_str());
- Log(OperServ) << this->nick << " is now an IRC operator";
- }
else
- {
--opcnt;
- Log(OperServ) << this->nick << " is no longer an IRC operator";
- }
break;
case UMODE_REGISTERED:
- if (add && !this->IsIdentified())
- this->RemoveMode(NickServ, UMODE_REGISTERED);
+ if (add && !this->IsIdentified() && nickserv)
+ this->RemoveMode(nickserv->Bot(), UMODE_REGISTERED);
break;
case UMODE_CLOAK:
case UMODE_VHOST:
@@ -751,32 +711,6 @@ bool User::IsProtected() const
return false;
}
-/*************************************************************************/
-
-void get_user_stats(long &count, long &mem)
-{
- count = mem = 0;
-
- for (Anope::insensitive_map<User *>::const_iterator it = UserListByNick.begin(); it != UserListByNick.end(); ++it)
- {
- User *user = it->second;
-
- ++count;
- mem += sizeof(*user);
- if (!user->host.empty())
- mem += user->host.length() + 1;
- if (ircd->vhost)
- {
- if (!user->vhost.empty())
- mem += user->vhost.length() + 1;
- }
- if (!user->realname.empty())
- mem += user->realname.length() + 1;
- mem += user->server->GetName().length() + 1;
- mem += (sizeof(ChannelContainer) * user->chans.size());
- }
-}
-
User *finduser(const Anope::string &nick)
{
if (isdigit(nick[0]) && ircd->ts6)
@@ -836,28 +770,14 @@ User *do_nick(const Anope::string &source, const Anope::string &nick, const Anop
}
}
- Log(*user, "connect") << (!vhost.empty() ? Anope::string("(") + vhost + ")" : "") << " (" << user->realname << ") " << (user->ip() ? Anope::string("[") + user->ip.addr() + "] " : "") << "connected to the network (" << serv->GetName() << ")";
-
- EventReturn MOD_RESULT;
- FOREACH_RESULT(I_OnPreUserConnect, OnPreUserConnect(*user));
-
- if (user && MOD_RESULT != EVENT_STOP)
- {
- if (Config->LimitSessions && !serv->IsULined())
- add_session(*user);
+ Log(user, "connect") << (!vhost.empty() ? Anope::string("(") + vhost + ")" : "") << " (" << user->realname << ") " << (user->ip() ? Anope::string("[") + user->ip.addr() + "] " : "") << "connected to the network (" << serv->GetName() << ")";
- if (!user)
- return NULL;
-
- XLineManager::CheckAll(*user);
- }
-
- if (!user)
- return NULL;
-
- FOREACH_MOD(I_OnUserConnect, OnUserConnect(*user));
+ bool exempt = false;
+ if (user->server && user->server->IsULined())
+ exempt = true;
+ FOREACH_MOD(I_OnUserConnect, OnUserConnect(user, exempt));
- return user ? *user : NULL;
+ return user;
}
else
{
@@ -898,20 +818,19 @@ User *do_nick(const Anope::string &source, const Anope::string &nick, const Anop
/* If the new nick isnt registerd or its registerd and not yours */
if (!na || na->nc != user->Account())
{
- user->RemoveMode(NickServ, UMODE_REGISTERED);
+ user->RemoveMode(nickserv->Bot(), UMODE_REGISTERED);
ircdproto->SendUnregisteredNick(user);
- validate_user(user);
+ nickserv->Validate(user);
}
else
{
na->last_seen = Anope::CurTime;
user->UpdateHost();
- do_on_id(user);
ircdproto->SetAutoIdentificationToken(user);
if (na->nc->HasFlag(NI_UNCONFIRMED) == false)
- user->SetMode(NickServ, UMODE_REGISTERED);
- Log(NickServ) << user->GetMask() << " automatically identified for group " << user->Account()->display;
+ user->SetMode(nickserv->Bot(), UMODE_REGISTERED);
+ Log(nickserv->Bot()) << user->GetMask() << " automatically identified for group " << user->Account()->display;
}
if (ircd->sqline)