summaryrefslogtreecommitdiff
path: root/modules/operserv
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-11-11 12:58:14 -0500
committerAdam <Adam@anope.org>2016-11-11 12:58:14 -0500
commitef5b6919e3508cc9d4c722285d9d56f5a275f650 (patch)
tree56497f0a4f5d1847bae511c72bdb2d3581df58ef /modules/operserv
parent8dd6e3195ed7600e39935e887df2626215733dfb (diff)
Fix opers not really being serializable
Diffstat (limited to 'modules/operserv')
-rw-r--r--modules/operserv/forbid.cpp2
-rw-r--r--modules/operserv/login.cpp6
-rw-r--r--modules/operserv/oper.cpp28
3 files changed, 15 insertions, 21 deletions
diff --git a/modules/operserv/forbid.cpp b/modules/operserv/forbid.cpp
index 36ef12870..1a013ed0d 100644
--- a/modules/operserv/forbid.cpp
+++ b/modules/operserv/forbid.cpp
@@ -247,7 +247,7 @@ class CommandOSForbid : public Command
}
NickServ::Nick *target = NickServ::FindNick(entry);
- if (target != NULL && Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && target->GetAccount()->IsServicesOper())
+ if (target != NULL && Config->GetModule("nickserv/main")->Get<bool>("secureadmins", "yes") && target->GetAccount()->GetOper())
{
source.Reply(_("Access denied."));
return;
diff --git a/modules/operserv/login.cpp b/modules/operserv/login.cpp
index 180024eac..270958875 100644
--- a/modules/operserv/login.cpp
+++ b/modules/operserv/login.cpp
@@ -33,7 +33,7 @@ class CommandOSLogin : public Command
const Anope::string &password = params[0];
User *u = source.GetUser();
- Oper *o = source.nc->o;
+ Oper *o = source.nc->GetOper();
if (o == NULL)
{
source.Reply(_("No oper block for your nickname."));
@@ -87,7 +87,7 @@ class CommandOSLogout : public Command
void Execute(CommandSource &source, const std::vector<Anope::string> &params) override
{
User *u = source.GetUser();
- Oper *o = source.nc->o;
+ Oper *o = source.nc->GetOper();
if (o == NULL)
{
source.Reply(_("No oper block for your nick."));
@@ -142,7 +142,7 @@ class OSLogin : public Module
EventReturn IsServicesOper(User *u) override
{
- if (!u->Account()->o->GetPassword().empty())
+ if (!u->Account()->GetOper()->GetPassword().empty())
{
if (os_login.HasExt(u))
return EVENT_ALLOW;
diff --git a/modules/operserv/oper.cpp b/modules/operserv/oper.cpp
index 34fcb1abc..099cfc286 100644
--- a/modules/operserv/oper.cpp
+++ b/modules/operserv/oper.cpp
@@ -81,18 +81,18 @@ class CommandOSOper : public Command
return;
}
- if (na->GetAccount()->o)
+ Oper *o = na->GetAccount()->GetOper();
+ if (o != nullptr)
{
- na->GetAccount()->o->Delete();
- na->GetAccount()->o = nullptr;
+ o->Delete();
}
- Oper *o = Serialize::New<Oper *>();
+ o = Serialize::New<Oper *>();
o->SetName(na->GetAccount()->GetDisplay());
o->SetType(ot);
o->SetRequireOper(true);
- na->GetAccount()->o = o;
+ na->GetAccount()->SetOper(o);
if (Anope::ReadOnly)
source.Reply(_("Services are in read-only mode. Any changes made may not persist."));
@@ -117,7 +117,7 @@ class CommandOSOper : public Command
return;
}
- Oper *o = na->GetAccount()->o;
+ Oper *o = na->GetAccount()->GetOper();
if (o == nullptr)
{
@@ -131,14 +131,8 @@ class CommandOSOper : public Command
return;
}
- if (o->conf != nullptr)
- {
- source.Reply(_("Oper \002{0}\002 is configured in the configuration file(s) and can not be removed by this command."), na->GetNick());
- return;
- }
- na->GetAccount()->o->Delete();
- na->GetAccount()->o = NULL;
+ o->Delete();
if (Anope::ReadOnly)
source.Reply(_("Services are in read-only mode. Any changes made may not persist."));
@@ -151,12 +145,12 @@ class CommandOSOper : public Command
source.Reply(_("Name Type"));
for (NickServ::Account *nc : NickServ::service->GetAccountList())
{
- if (!nc->o)
+ Oper *oper = nc->GetOper();
+
+ if (oper == nullptr)
continue;
- source.Reply(Anope::printf("%-8s %s", nc->o->GetName().c_str(), nc->o->GetType()->GetName().c_str()));
- if (nc->o->conf)
- source.Reply(_(" This oper is configured in the configuration file."));
+ source.Reply(Anope::printf("%-8s %s", oper->GetName().c_str(), oper->GetType()->GetName().c_str()));
for (User *u : nc->users)
source.Reply(_(" \002{0}\002 is online using this oper block."), u->nick);
}