summaryrefslogtreecommitdiff
path: root/modules/extra
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-07-01 22:17:52 -0400
committerAdam <Adam@anope.org>2013-07-01 22:17:52 -0400
commit1a3d9a016d3adc49788bbff73aac9b3b5ea85b17 (patch)
treec0ecf92ed768473bc82ff64a7fce827245f37ba9 /modules/extra
parent518182ac9204f815258b0de91b3f884d8efa1502 (diff)
Change extensible keys to require explicitly having a type defined for it. Completely modularize more features like bs_kick, entrymsg, log, mode, etc. Move fantasy to its own module. Move greet to its own module.
Diffstat (limited to 'modules/extra')
-rw-r--r--modules/extra/m_chanstats.cpp16
-rw-r--r--modules/extra/m_ldap_authentication.cpp15
-rw-r--r--modules/extra/webcpanel/pages/chanserv/set.cpp40
-rw-r--r--modules/extra/webcpanel/pages/index.cpp4
-rw-r--r--modules/extra/webcpanel/pages/logout.cpp4
-rw-r--r--modules/extra/webcpanel/pages/nickserv/alist.cpp4
-rw-r--r--modules/extra/webcpanel/pages/nickserv/cert.cpp7
-rw-r--r--modules/extra/webcpanel/pages/nickserv/info.cpp54
-rw-r--r--modules/extra/webcpanel/webcpanel.cpp3
-rw-r--r--modules/extra/webcpanel/webcpanel.h2
10 files changed, 81 insertions, 68 deletions
diff --git a/modules/extra/m_chanstats.cpp b/modules/extra/m_chanstats.cpp
index 9a3c5dfaf..4ff4d55e3 100644
--- a/modules/extra/m_chanstats.cpp
+++ b/modules/extra/m_chanstats.cpp
@@ -56,7 +56,7 @@ class MChanstats : public Module
const Anope::string GetDisplay(User *u)
{
- if (u && u->Account() && u->Account()->HasExt("STATS"))
+ if (u && u->Account() && u->Account()->HasExt("NS_STATS"))
return u->Account()->display;
else
return "";
@@ -357,7 +357,7 @@ class MChanstats : public Module
void OnTopicUpdated(Channel *c, const Anope::string &user, const Anope::string &topic) anope_override
{
User *u = User::Find(user);
- if (!u || !u->Account() || !c->ci || !c->ci->HasExt("STATS"))
+ if (!u || !u->Account() || !c->ci || !c->ci->HasExt("CS_STATS"))
return;
query = "CALL " + prefix + "chanstats_proc_update(@channel@, @nick@, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);";
query.SetValue("channel", c->name);
@@ -365,13 +365,13 @@ class MChanstats : public Module
this->RunQuery(query);
}
- EventReturn OnChannelModeSet(Channel *c, MessageSource &setter, const Anope::string &, const Anope::string &param) anope_override
+ EventReturn OnChannelModeSet(Channel *c, MessageSource &setter, ChannelMode *mode, const Anope::string &param) anope_override
{
this->OnModeChange(c, setter.GetUser());
return EVENT_CONTINUE;
}
- EventReturn OnChannelModeUnset(Channel *c, MessageSource &setter, const Anope::string &, const Anope::string &param) anope_override
+ EventReturn OnChannelModeUnset(Channel *c, MessageSource &setter, ChannelMode *, const Anope::string &param) anope_override
{
this->OnModeChange(c, setter.GetUser());
return EVENT_CONTINUE;
@@ -380,7 +380,7 @@ class MChanstats : public Module
private:
void OnModeChange(Channel *c, User *u)
{
- if (!u || !u->Account() || !c->ci || !c->ci->HasExt("STATS"))
+ if (!u || !u->Account() || !c->ci || !c->ci->HasExt("CS_STATS"))
return;
query = "CALL " + prefix + "chanstats_proc_update(@channel@, @nick@, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0);";
@@ -391,7 +391,7 @@ class MChanstats : public Module
public:
void OnPreUserKicked(MessageSource &source, ChanUserContainer *cu, const Anope::string &kickmsg) anope_override
{
- if (!cu->chan->ci || !cu->chan->ci->HasExt("STATS"))
+ if (!cu->chan->ci || !cu->chan->ci->HasExt("CS_STATS"))
return;
query = "CALL " + prefix + "chanstats_proc_update(@channel@, @nick@, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0);";
@@ -406,7 +406,7 @@ class MChanstats : public Module
}
void OnPrivmsg(User *u, Channel *c, Anope::string &msg) anope_override
{
- if (!c->ci || !c->ci->HasExt("STATS"))
+ if (!c->ci || !c->ci->HasExt("CS_STATS"))
return;
size_t letters = msg.length();
@@ -452,7 +452,7 @@ class MChanstats : public Module
query.SetValue("new_display", newdisplay);
this->RunQuery(query);
}
- void OnChanDrop(ChannelInfo *ci) anope_override
+ void OnDelChan(ChannelInfo *ci) anope_override
{
query = "DELETE FROM `" + prefix + "chanstats` WHERE `chan` = @channel@;";
query.SetValue("channel", ci->name);
diff --git a/modules/extra/m_ldap_authentication.cpp b/modules/extra/m_ldap_authentication.cpp
index d64987ed6..7fe44b8e0 100644
--- a/modules/extra/m_ldap_authentication.cpp
+++ b/modules/extra/m_ldap_authentication.cpp
@@ -111,7 +111,7 @@ class IdentifyInterface : public LDAPInterface
// encrypt and store the password in the nickcore
Anope::Encrypt(ii->req->GetPassword(), na->nc->pass);
- na->nc->Extend("m_ldap_authentication_dn", new ExtensibleItemClass<Anope::string>(ii->dn));
+ na->nc->Extend<Anope::string>("m_ldap_authentication_dn", ii->dn);
ii->req->Success(me);
}
break;
@@ -207,12 +207,15 @@ class NSIdentifyLDAP : public Module
OnIdentifyInterface oninterface;
OnRegisterInterface orinterface;
+ PrimitiveExtensibleItem<Anope::string> dn;
+
Anope::string password_attribute;
Anope::string disable_register_reason;
Anope::string disable_email_reason;
public:
NSIdentifyLDAP(const Anope::string &modname, const Anope::string &creator) :
- Module(modname, creator, EXTRA | VENDOR), ldap("LDAPProvider", "ldap/main"), iinterface(this), oninterface(this), orinterface(this)
+ Module(modname, creator, EXTRA | VENDOR), ldap("LDAPProvider", "ldap/main"), iinterface(this), oninterface(this), orinterface(this),
+ dn(this, "m_ldap_authentication_dn")
{
me = this;
@@ -274,16 +277,16 @@ class NSIdentifyLDAP : public Module
void OnNickIdentify(User *u) anope_override
{
- if (email_attribute.empty() || !this->ldap || !u->Account()->HasExt("m_ldap_authentication_dn"))
+ if (email_attribute.empty() || !this->ldap)
return;
- Anope::string *dn = u->Account()->GetExt<ExtensibleItemClass<Anope::string> *>("m_ldap_authentication_dn");
- if (!dn || dn->empty())
+ Anope::string *d = dn.Get(u->Account());
+ if (!d || d->empty())
return;
try
{
- LDAPQuery id = this->ldap->Search(&this->oninterface, *dn, "(" + email_attribute + "=*)");
+ LDAPQuery id = this->ldap->Search(&this->oninterface, *d, "(" + email_attribute + "=*)");
this->oninterface.Add(id, u->nick);
}
catch (const LDAPException &ex)
diff --git a/modules/extra/webcpanel/pages/chanserv/set.cpp b/modules/extra/webcpanel/pages/chanserv/set.cpp
index 20026a08a..cf3784d62 100644
--- a/modules/extra/webcpanel/pages/chanserv/set.cpp
+++ b/modules/extra/webcpanel/pages/chanserv/set.cpp
@@ -32,57 +32,57 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri
if (ci->HasExt("KEEPTOPIC") != message.post_data.count("keeptopic"))
{
if (!ci->HasExt("KEEPTOPIC"))
- ci->ExtendMetadata("KEEPTOPIC");
+ ci->Extend<bool>("KEEPTOPIC");
else
- ci->Shrink("KEEPTOPIC");
+ ci->Shrink<bool>("KEEPTOPIC");
replacements["MESSAGES"] = "Secure updated";
}
if (ci->HasExt("PEACE") != message.post_data.count("peace"))
{
if (!ci->HasExt("PEACE"))
- ci->ExtendMetadata("PEACE");
+ ci->Extend<bool>("PEACE");
else
- ci->Shrink("PEACE");
+ ci->Shrink<bool>("PEACE");
replacements["MESSAGES"] = "Peace updated";
}
- if (ci->HasExt("PRIVATE") != message.post_data.count("private"))
+ if (ci->HasExt("CS_PRIVATE") != message.post_data.count("private"))
{
- if (!ci->HasExt("PRIVATE"))
- ci->ExtendMetadata("PRIVATE");
+ if (!ci->HasExt("CS_PRIVATE"))
+ ci->Extend<bool>("CS_PRIVATE");
else
- ci->Shrink("PRIVATE");
+ ci->Shrink<bool>("CS_PRIVATE");
replacements["MESSAGES"] = "Private updated";
}
if (ci->HasExt("RESTRICTED") != message.post_data.count("restricted"))
{
if (!ci->HasExt("RESTRICTED"))
- ci->ExtendMetadata("RESTRICTED");
+ ci->Extend<bool>("RESTRICTED");
else
- ci->Shrink("RESTRICTED");
+ ci->Shrink<bool>("RESTRICTED");
replacements["MESSAGES"] = "Restricted updated";
}
- if (ci->HasExt("SECURE") != message.post_data.count("secure"))
+ if (ci->HasExt("CS_SECURE") != message.post_data.count("secure"))
{
- if (!ci->HasExt("SECURE"))
- ci->ExtendMetadata("SECURE");
+ if (!ci->HasExt("CS_SECURE"))
+ ci->Extend<bool>("CS_SECURE");
else
- ci->Shrink("SECURE");
+ ci->Shrink<bool>("CS_SECURE");
replacements["MESSAGES"] = "Secure updated";
}
if (ci->HasExt("SECUREOPS") != message.post_data.count("secureops"))
{
if (!ci->HasExt("SECUREOPS"))
- ci->ExtendMetadata("SECUREOPS");
+ ci->Extend<bool>("SECUREOPS");
else
- ci->Shrink("SECUREOPS");
+ ci->Shrink<bool>("SECUREOPS");
replacements["MESSAGES"] = "Secureops updated";
}
if (ci->HasExt("TOPICLOCK") != message.post_data.count("topiclock"))
{
if (!ci->HasExt("TOPICLOCK"))
- ci->ExtendMetadata("TOPICLOCK");
+ ci->Extend<bool>("TOPICLOCK");
else
- ci->Shrink("TOPICLOCK");
+ ci->Shrink<bool>("TOPICLOCK");
replacements["MESSAGES"] = "Topiclock updated";
}
}
@@ -108,13 +108,13 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri
if (ci->HasExt("PEACE"))
replacements["PEACE"];
- if (ci->HasExt("PRIVATE"))
+ if (ci->HasExt("CS_PRIVATE"))
replacements["PRIVATE"];
if (ci->HasExt("RESTRICTED"))
replacements["RESTRICTED"];
- if (ci->HasExt("SECURE"))
+ if (ci->HasExt("CS_SECURE"))
replacements["SECURE"];
if (ci->HasExt("SECUREOPS"))
diff --git a/modules/extra/webcpanel/pages/index.cpp b/modules/extra/webcpanel/pages/index.cpp
index 51b908b13..be4bbbc6d 100644
--- a/modules/extra/webcpanel/pages/index.cpp
+++ b/modules/extra/webcpanel/pages/index.cpp
@@ -40,8 +40,8 @@ class WebpanelRequest : public IdentifyRequest
id += c;
}
- na->Extend("webcpanel_id", new ExtensibleItemClass<Anope::string>(id));
- na->Extend("webcpanel_ip", new ExtensibleItemClass<Anope::string>(client->GetIP()));
+ na->Extend<Anope::string>("webcpanel_id", id);
+ na->Extend<Anope::string>("webcpanel_ip", client->GetIP());
{
HTTPReply::cookie c;
diff --git a/modules/extra/webcpanel/pages/logout.cpp b/modules/extra/webcpanel/pages/logout.cpp
index 14e1c24b5..8fafdcd4e 100644
--- a/modules/extra/webcpanel/pages/logout.cpp
+++ b/modules/extra/webcpanel/pages/logout.cpp
@@ -13,8 +13,8 @@ WebCPanel::Logout::Logout(const Anope::string &u) : WebPanelProtectedPage("", u)
bool WebCPanel::Logout::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements)
{
- na->Shrink("webcpanel_id");
- na->Shrink("webcpanel_ip");
+ na->Shrink<Anope::string>("webcpanel_id");
+ na->Shrink<Anope::string>("webcpanel_ip");
reply.error = HTTP_FOUND;
reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/";
diff --git a/modules/extra/webcpanel/pages/nickserv/alist.cpp b/modules/extra/webcpanel/pages/nickserv/alist.cpp
index 0afe2a4f3..a0568f5b4 100644
--- a/modules/extra/webcpanel/pages/nickserv/alist.cpp
+++ b/modules/extra/webcpanel/pages/nickserv/alist.cpp
@@ -24,7 +24,7 @@ bool WebCPanel::NickServ::Alist::OnRequest(HTTPProvider *server, const Anope::st
++chan_count;
replacements["NUMBERS"] = stringify(chan_count);
- replacements["CHANNELS"] = (ci->HasExt("NO_EXPIRE") ? "!" : "") + ci->name;
+ replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name;
replacements["ACCESSES"] = "Founder";
continue;
}
@@ -36,7 +36,7 @@ bool WebCPanel::NickServ::Alist::OnRequest(HTTPProvider *server, const Anope::st
++chan_count;
replacements["NUMBERS"] = stringify(chan_count);
- replacements["CHANNELS"] = (ci->HasExt("NO_EXPIRE") ? "!" : "") + ci->name;
+ replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name;
Anope::string access_str;
for (unsigned i = 0; i < access.size(); ++i)
access_str += ", " + access[i]->AccessSerialize();
diff --git a/modules/extra/webcpanel/pages/nickserv/cert.cpp b/modules/extra/webcpanel/pages/nickserv/cert.cpp
index 9ac95453a..ff9885405 100644
--- a/modules/extra/webcpanel/pages/nickserv/cert.cpp
+++ b/modules/extra/webcpanel/pages/nickserv/cert.cpp
@@ -6,6 +6,7 @@
*/
#include "../../webcpanel.h"
+#include "modules/ns_cert.h"
WebCPanel::NickServ::Cert::Cert(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
{
@@ -30,8 +31,10 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str
WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements);
}
- for (unsigned i = 0; i < na->nc->cert.size(); ++i)
- replacements["CERTS"] = na->nc->cert[i];
+ NSCertList *cl = na->nc->GetExt<NSCertList>("certificates");
+ if (cl)
+ for (unsigned i = 0; i < cl->GetCertCount(); ++i)
+ replacements["CERTS"] = cl->GetCert(i);
TemplateFileServer page("nickserv/cert.html");
page.Serve(server, page_name, client, message, reply, replacements);
diff --git a/modules/extra/webcpanel/pages/nickserv/info.cpp b/modules/extra/webcpanel/pages/nickserv/info.cpp
index 35a4a8a0a..65f0e4c8a 100644
--- a/modules/extra/webcpanel/pages/nickserv/info.cpp
+++ b/modules/extra/webcpanel/pages/nickserv/info.cpp
@@ -30,52 +30,56 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str
}
if (message.post_data.count("greet") > 0)
{
- if (message.post_data["greet"].replace_all_cs("+", " ") != na->nc->greet)
- {
- na->nc->greet = HTTPUtils::URLDecode(message.post_data["greet"]);
- replacements["MESSAGES"] = "Greet updated";
- }
+ Anope::string *greet = na->nc->GetExt<Anope::string>("greet");
+ const Anope::string &post_greet = HTTPUtils::URLDecode(message.post_data["greet"].replace_all_cs("+", " "));
+
+ if (post_greet.empty())
+ na->nc->Shrink<Anope::string>("greet");
+ else if (!greet || post_greet != *greet)
+ na->nc->Extend<Anope::string>("greet", post_greet);
+
+ replacements["MESSAGES"] = "Greet updated";
}
if (na->nc->HasExt("AUTOOP") != message.post_data.count("autoop"))
{
if (!na->nc->HasExt("AUTOOP"))
- na->nc->ExtendMetadata("AUTOOP");
+ na->nc->Extend<bool>("AUTOOP");
else
- na->nc->Shrink("AUTOOP");
+ na->nc->Shrink<bool>("AUTOOP");
replacements["MESSAGES"] = "Autoop updated";
}
- if (na->nc->HasExt("PRIVATE") != message.post_data.count("private"))
+ if (na->nc->HasExt("NS_PRIVATE") != message.post_data.count("private"))
{
- if (!na->nc->HasExt("PRIVATE"))
- na->nc->ExtendMetadata("PRIVATE");
+ if (!na->nc->HasExt("NS_PRIVATE"))
+ na->nc->Extend<bool>("NS_PRIVATE");
else
- na->nc->Shrink("PRIVATE");
+ na->nc->Shrink<bool>("NS_PRIVATE");
replacements["MESSAGES"] = "Private updated";
}
- if (na->nc->HasExt("SECURE") != message.post_data.count("secure"))
+ if (na->nc->HasExt("NS_SECURE") != message.post_data.count("secure"))
{
- if (!na->nc->HasExt("SECURE"))
- na->nc->ExtendMetadata("SECURE");
+ if (!na->nc->HasExt("NS_SECURE"))
+ na->nc->Extend<bool>("NS_SECURE");
else
- na->nc->Shrink("SECURE");
+ na->nc->Shrink<bool>("NS_SECURE");
replacements["MESSAGES"] = "Secure updated";
}
if (message.post_data["kill"] == "on" && !na->nc->HasExt("KILLPROTECT"))
{
- na->nc->ExtendMetadata("KILLPROTECT");
- na->nc->Shrink("KILL_QUICK");
+ na->nc->Extend<bool>("KILLPROTECT");
+ na->nc->Shrink<bool>("KILL_QUICK");
replacements["MESSAGES"] = "Kill updated";
}
else if (message.post_data["kill"] == "quick" && !na->nc->HasExt("KILL_QUICK"))
{
- na->nc->Shrink("KILLPROTECT");
- na->nc->ExtendMetadata("KILL_QUICK");
+ na->nc->Shrink<bool>("KILLPROTECT");
+ na->nc->Extend<bool>("KILL_QUICK");
replacements["MESSAGES"] = "Kill updated";
}
else if (message.post_data["kill"] == "off" && (na->nc->HasExt("KILLPROTECT") || na->nc->HasExt("KILL_QUICK")))
{
- na->nc->Shrink("KILLPROTECT");
- na->nc->Shrink("KILL_QUICK");
+ na->nc->Shrink<bool>("KILLPROTECT");
+ na->nc->Shrink<bool>("KILL_QUICK");
replacements["MESSAGES"] = "Kill updated";
}
}
@@ -91,12 +95,14 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str
else
replacements["VHOST"] = na->GetVhostHost();
}
- replacements["GREET"] = HTTPUtils::Escape(na->nc->greet);
+ Anope::string *greet = na->nc->GetExt<Anope::string>("greet");
+ if (greet)
+ replacements["GREET"] = HTTPUtils::Escape(*greet);
if (na->nc->HasExt("AUTOOP"))
replacements["AUTOOP"];
- if (na->nc->HasExt("PRIVATE"))
+ if (na->nc->HasExt("NS_PRIVATE"))
replacements["PRIVATE"];
- if (na->nc->HasExt("SECURE"))
+ if (na->nc->HasExt("NS_SECURE"))
replacements["SECURE"];
if (na->nc->HasExt("KILLPROTECT"))
replacements["KILL_ON"];
diff --git a/modules/extra/webcpanel/webcpanel.cpp b/modules/extra/webcpanel/webcpanel.cpp
index 4610c6235..c8926a150 100644
--- a/modules/extra/webcpanel/webcpanel.cpp
+++ b/modules/extra/webcpanel/webcpanel.cpp
@@ -15,6 +15,7 @@ class ModuleWebCPanel : public Module
{
ServiceReference<HTTPProvider> provider;
Panel panel;
+ PrimitiveExtensibleItem<Anope::string> id, ip;
StaticFileServer style_css, logo_png, favicon_ico;
@@ -43,7 +44,7 @@ class ModuleWebCPanel : public Module
public:
ModuleWebCPanel(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, EXTRA | VENDOR),
- panel(this, "webcpanel"),
+ panel(this, "webcpanel"), id(this, "webcpanel_id"), ip(this, "webcpanel_ip"),
style_css("style.css", "/static/style.css", "text/css"), logo_png("logo.png", "/static/logo.png", "image/png"), favicon_ico("favicon.ico", "/favicon.ico", "image/x-icon"),
index("/"), logout("/logout"), _register("/register"), confirm("/confirm"),
nickserv_info("NickServ", "/nickserv/info"), nickserv_cert("NickServ", "/nickserv/cert"), nickserv_access("NickServ", "/nickserv/access"), nickserv_alist("NickServ", "/nickserv/alist"),
diff --git a/modules/extra/webcpanel/webcpanel.h b/modules/extra/webcpanel/webcpanel.h
index 359bde32b..638a7c1c9 100644
--- a/modules/extra/webcpanel/webcpanel.h
+++ b/modules/extra/webcpanel/webcpanel.h
@@ -50,7 +50,7 @@ class Panel : public Section, public Service
if (na == NULL)
return NULL;
- Anope::string *n_id = na->GetExt<ExtensibleItemClass<Anope::string> *>("webcpanel_id"), *n_ip = na->GetExt<ExtensibleItemClass<Anope::string> *>("webcpanel_ip");
+ Anope::string *n_id = na->GetExt<Anope::string>("webcpanel_id"), *n_ip = na->GetExt<Anope::string>("webcpanel_ip");
if (n_id == NULL || n_ip == NULL)
return NULL;
else if (id != *n_id)