summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-03-05 17:23:22 -0500
committerAdam <Adam@anope.org>2011-03-05 17:23:22 -0500
commit6fe2d8af973dfb0c81f513e56488e39a4eea2fbf (patch)
tree432b93053ef56d1ff98b3193d5768a4ca16d3785 /src
parent90e5d0feaa1646c28cfce45dbde1a914a6f1d62c (diff)
Removed nickrequests, instead have unconfirmed registrations. Also made ns_resetpass allow remote-id to get past things such as kill immed.
Diffstat (limited to 'src')
-rw-r--r--src/commands.cpp2
-rw-r--r--src/config.cpp5
-rw-r--r--src/mail.cpp21
-rw-r--r--src/main.cpp1
-rw-r--r--src/misc.cpp43
-rw-r--r--src/nickalias.cpp19
-rw-r--r--src/nickserv.cpp32
-rw-r--r--src/users.cpp3
8 files changed, 9 insertions, 117 deletions
diff --git a/src/commands.cpp b/src/commands.cpp
index 425c72671..00fe6574c 100644
--- a/src/commands.cpp
+++ b/src/commands.cpp
@@ -65,7 +65,7 @@ void mod_run_cmd(BotInfo *bi, User *u, ChannelInfo *ci, Command *c, const Anope:
// Command requires registered users only
if (!c->HasFlag(CFLAG_ALLOW_UNREGISTERED) && !u->IsIdentified())
{
- u->SendMessage(bi, _(_(NICK_IDENTIFY_REQUIRED)), Config->s_NickServ.c_str());
+ u->SendMessage(bi, _(NICK_IDENTIFY_REQUIRED), Config->s_NickServ.c_str());
Log(LOG_COMMAND, "denied", bi) << "Access denied for unregistered user " << u->GetMask() << " with command " << command;
PopLanguage();
return;
diff --git a/src/config.cpp b/src/config.cpp
index cc0879936..ae8ccfc8c 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -480,7 +480,7 @@ bool ValidateEmailReg(ServerConfig *config, const Anope::string &tag, const Anop
{
if (config->NSEmailReg)
{
- if (value.equals_ci("preregexpire"))
+ if (value.equals_ci("unconfirmedexpire"))
{
if (!data.GetInteger() && !dotime(data.GetValue()))
throw ConfigException("The value for <" + tag + ":" + value + "> must be non-zero when e-mail registration are enabled!");
@@ -1070,6 +1070,7 @@ void ServerConfig::Read()
{"nickserv", "emailregistration", "no", new ValueContainerBool(&this->NSEmailReg), DT_BOOLEAN, NoValidation},
{"nickserv", "modules", "", new ValueContainerString(&NickCoreModules), DT_STRING, NoValidation},
{"nickserv", "forceemail", "no", new ValueContainerBool(&this->NSForceEmail), DT_BOOLEAN, ValidateEmailReg},
+ {"nickserv", "confirmemailchanges", "no", new ValueContainerBool(&this->NSConfirmEmailChanges), DT_BOOLEAN, NoValidation},
{"nickserv", "defaults", "secure memosignon memoreceive", new ValueContainerString(&NSDefaults), DT_STRING, NoValidation},
{"nickserv", "languages", "", new ValueContainerString(&this->Languages), DT_STRING, NoValidation},
{"nickserv", "defaultlanguage", "0", new ValueContainerString(&this->NSDefLanguage), DT_STRING, NoValidation},
@@ -1078,7 +1079,7 @@ void ServerConfig::Read()
{"nickserv", "expire", "21d", new ValueContainerTime(&this->NSExpire), DT_TIME, NoValidation},
{"nickserv", "suspendexpire", "0", new ValueContainerTime(&this->NSSuspendExpire), DT_TIME, NoValidation},
{"nickserv", "forbidexpire", "0", new ValueContainerTime(&this->NSForbidExpire), DT_TIME, NoValidation},
- {"nickserv", "preregexpire", "0", new ValueContainerTime(&this->NSRExpire), DT_TIME, ValidateEmailReg},
+ {"nickserv", "unconfirmedexpire", "0", new ValueContainerTime(&this->NSUnconfirmedExpire), DT_TIME, ValidateEmailReg},
{"nickserv", "maxaliases", "0", new ValueContainerUInt(&this->NSMaxAliases), DT_UINTEGER, NoValidation},
{"nickserv", "accessmax", "0", new ValueContainerUInt(&this->NSAccessMax), DT_UINTEGER, ValidateNotZero},
{"nickserv", "enforceruser", "", new ValueContainerString(&temp_nsuserhost), DT_STRING, ValidateNotEmpty},
diff --git a/src/mail.cpp b/src/mail.cpp
index 3a07f7e49..58a0ddac8 100644
--- a/src/mail.cpp
+++ b/src/mail.cpp
@@ -37,27 +37,6 @@ void MailThread::Run()
SetExitState();
}
-bool Mail(User *u, NickRequest *nr, BotInfo *service, const Anope::string &subject, const Anope::string &message)
-{
- if (!u || !nr || !service || subject.empty() || message.empty())
- return false;
-
- if (!Config->UseMail)
- u->SendMessage(service, _("Services have been configured to not send mail."));
- else if (Anope::CurTime - u->lastmail < Config->MailDelay)
- u->SendMessage(service, _("Please wait \002%d\002 seconds and retry."), Config->MailDelay - Anope::CurTime - u->lastmail);
- else if (nr->email.empty())
- u->SendMessage(service, _("E-mail for \002%s\002 is invalid."), nr->nick.c_str());
- else
- {
- u->lastmail = nr->lastmail = Anope::CurTime;
- threadEngine.Start(new MailThread(nr->nick, nr->email, subject, message));
- return true;
- }
-
- return false;
-}
-
bool Mail(User *u, NickCore *nc, BotInfo *service, const Anope::string &subject, const Anope::string &message)
{
if (!u || !nc || !service || subject.empty() || message.empty())
diff --git a/src/main.cpp b/src/main.cpp
index c59fe7829..563262195 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -137,7 +137,6 @@ extern void expire_all()
Log(LOG_DEBUG) << "Running expire routines";
expire_nicks();
expire_chans();
- expire_requests();
expire_exceptions();
FOREACH_MOD(I_OnDatabaseExpire, OnDatabaseExpire());
diff --git a/src/misc.cpp b/src/misc.cpp
index 9efacf314..0ad233402 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -69,43 +69,6 @@ int tolower(char c)
/*************************************************************************/
-/**
- * merge_args: Take an argument count and argument vector and merge them
- * into a single string in which each argument is separated by
- * a space.
- * @param int Number of Args
- * @param argv Array
- * @return string of the merged array
- */
-const char *merge_args(int argc, const char **argv)
-{
- int i;
- static char s[4096];
- char *t;
-
- t = s;
- for (i = 0; i < argc; ++i)
- t += snprintf(t, sizeof(s) - (t - s), "%s%s", *argv++, i < argc - 1 ? " " : "");
- return s;
-}
-
-/*
- * XXX: temporary "safe" version to avoid casting, it's still ugly.
- */
-const char *merge_args(int argc, char **argv)
-{
- int i;
- static char s[4096];
- char *t;
-
- t = s;
- for (i = 0; i < argc; ++i)
- t += snprintf(t, sizeof(s) - (t - s), "%s%s", *argv++, i < argc - 1 ? " " : "");
- return s;
-}
-
-/*************************************************************************/
-
NumberList::NumberList(const Anope::string &list, bool descending) : is_valid(true), desc(descending)
{
Anope::string error;
@@ -839,12 +802,12 @@ bool Anope::Match(const Anope::string &str, const Anope::string &mask, bool case
* @param ... any number of parameters
* @return a Anope::string
*/
-Anope::string Anope::printf(const char *fmt, ...)
+Anope::string Anope::printf(const Anope::string &fmt, ...)
{
va_list args;
char buf[1024];
- va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
+ va_start(args, fmt.c_str());
+ vsnprintf(buf, sizeof(buf), fmt.c_str(), args);
va_end(args);
return buf;
}
diff --git a/src/nickalias.cpp b/src/nickalias.cpp
index 258e46a07..b82e27ce6 100644
--- a/src/nickalias.cpp
+++ b/src/nickalias.cpp
@@ -1,25 +1,6 @@
#include "services.h"
#include "modules.h"
-NickRequest::NickRequest(const Anope::string &nickname)
-{
- if (nickname.empty())
- throw CoreException("Empty nick passed to NickRequest constructor");
-
- this->requested = this->lastmail = 0;
-
- this->nick = nickname;
-
- NickRequestList[this->nick] = this;
-}
-
-NickRequest::~NickRequest()
-{
- FOREACH_MOD(I_OnDelNickRequest, OnDelNickRequest(this));
-
- NickRequestList.erase(this->nick);
-}
-
/** Default constructor
* @param nick The nick
* @param nickcore The nickcofe for this nick
diff --git a/src/nickserv.cpp b/src/nickserv.cpp
index 4a45e6ce2..e12673d08 100644
--- a/src/nickserv.cpp
+++ b/src/nickserv.cpp
@@ -14,7 +14,6 @@
nickalias_map NickAliasList;
nickcore_map NickCoreList;
-nickrequest_map NickRequestList;
typedef std::map<Anope::string, NickServCollide *> nickservcollides_map;
typedef std::map<Anope::string, NickServRelease *> nickservreleases_map;
@@ -169,13 +168,6 @@ void ns_init()
int validate_user(User *u)
{
- NickRequest *nr = findrequestnick(u->nick);
- if (nr)
- {
- u->SendMessage(NickServ, _(NICK_IS_PREREG));
- return 0;
- }
-
NickAlias *na = findnick(u->nick);
if (!na)
return 0;
@@ -291,32 +283,8 @@ void expire_nicks()
}
}
-void expire_requests()
-{
- for (nickrequest_map::const_iterator it = NickRequestList.begin(), it_end = NickRequestList.end(); it != it_end; )
- {
- NickRequest *nr = it->second;
- ++it;
-
- if (Config->NSRExpire && Anope::CurTime - nr->requested >= Config->NSRExpire)
- {
- Log(LOG_NORMAL, "expire") << "Request for nick " << nr->nick << " expiring";
- delete nr;
- }
- }
-}
-
/*************************************************************************/
-NickRequest *findrequestnick(const Anope::string &nick)
-{
- nickrequest_map::const_iterator it = NickRequestList.find(nick);
-
- if (it != NickRequestList.end())
- return it->second;
- return NULL;
-}
-
NickAlias *findnick(const Anope::string &nick)
{
FOREACH_MOD(I_OnFindNick, OnFindNick(nick));
diff --git a/src/users.cpp b/src/users.cpp
index fa486935f..a11e1b5ce 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -806,7 +806,8 @@ User *do_nick(const Anope::string &source, const Anope::string &nick, const Anop
user->UpdateHost();
do_on_id(user);
ircdproto->SetAutoIdentificationToken(user);
- user->SetMode(NickServ, UMODE_REGISTERED);
+ if (na->nc->HasFlag(NI_UNCONFIRMED) == false)
+ user->SetMode(NickServ, UMODE_REGISTERED);
Log(NickServ) << user->GetMask() << " automatically identified for group " << user->Account()->display;
}