diff options
| author | Adam <Adam@anope.org> | 2013-07-01 22:17:52 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2013-07-01 22:17:52 -0400 |
| commit | 1a3d9a016d3adc49788bbff73aac9b3b5ea85b17 (patch) | |
| tree | c0ecf92ed768473bc82ff64a7fce827245f37ba9 /modules/extra | |
| parent | 518182ac9204f815258b0de91b3f884d8efa1502 (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.cpp | 16 | ||||
| -rw-r--r-- | modules/extra/m_ldap_authentication.cpp | 15 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/chanserv/set.cpp | 40 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/index.cpp | 4 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/logout.cpp | 4 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/nickserv/alist.cpp | 4 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/nickserv/cert.cpp | 7 | ||||
| -rw-r--r-- | modules/extra/webcpanel/pages/nickserv/info.cpp | 54 | ||||
| -rw-r--r-- | modules/extra/webcpanel/webcpanel.cpp | 3 | ||||
| -rw-r--r-- | modules/extra/webcpanel/webcpanel.h | 2 |
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 ¶m) anope_override + EventReturn OnChannelModeSet(Channel *c, MessageSource &setter, ChannelMode *mode, const Anope::string ¶m) anope_override { this->OnModeChange(c, setter.GetUser()); return EVENT_CONTINUE; } - EventReturn OnChannelModeUnset(Channel *c, MessageSource &setter, const Anope::string &, const Anope::string ¶m) anope_override + EventReturn OnChannelModeUnset(Channel *c, MessageSource &setter, ChannelMode *, const Anope::string ¶m) 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) |
