diff options
author | Adam <Adam@anope.org> | 2013-09-03 18:51:18 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-09-03 18:51:18 -0400 |
commit | 46913511677b169f32d55e4fc96a8c236169ddc7 (patch) | |
tree | 170400c6eabe8e18d0a4809f89a46ff239dfc156 | |
parent | 404debf78925f86e94cfd71334433bc1eb423115 (diff) |
Cleanup previous commit
Fix log messages from commands send through webpanel
Don't show OperServ section to non opers
17 files changed, 111 insertions, 68 deletions
diff --git a/modules/commands/ns_register.cpp b/modules/commands/ns_register.cpp index a1c1e7f47..446990aac 100644 --- a/modules/commands/ns_register.cpp +++ b/modules/commands/ns_register.cpp @@ -197,6 +197,8 @@ class CommandNSRegister : public Command na->last_usermask = u->GetIdent() + "@" + u->GetDisplayedHost(); na->last_realname = u->realname; } + else + na->last_realname = source.GetNick(); Log(LOG_COMMAND, source, this) << "to register " << na->nick << " (email: " << (!na->nc->email.empty() ? na->nc->email : "none") << ")"; diff --git a/modules/extra/webcpanel/pages/chanserv/access.cpp b/modules/extra/webcpanel/pages/chanserv/access.cpp index ce36ecae9..e29a0793a 100644 --- a/modules/extra/webcpanel/pages/chanserv/access.cpp +++ b/modules/extra/webcpanel/pages/chanserv/access.cpp @@ -14,36 +14,41 @@ WebCPanel::ChanServ::Access::Access(const Anope::string &cat, const Anope::strin bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements) { + TemplateFileServer Page("chanserv/access.html"); const Anope::string &chname = message.get_data["channel"]; - BuildChanlist(page_name, na, replacements); + BuildChanList(na, replacements); if (chname.empty()) { - replacements["STOP"]; - return ServePage("chanserv/access.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } ChannelInfo *ci = ChannelInfo::Find(chname); if (!ci) { - replacements["STOP"]; replacements["MESSAGES"] = "Channel not registered."; - return ServePage("chanserv/access.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } AccessGroup u_access = ci->AccessFor(na->nc); bool has_priv = na->nc->IsServicesOper() && na->nc->o->ot->HasPriv("chanserv/access/modify"); if (!u_access.HasPriv("ACCESS_LIST") && !has_priv) - { replacements["STOP"]; + { replacements["MESSAGES"] = "Access denied."; + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } + replacements["ACCESS_LIST"] = "YES"; + const ChanAccess *highest = u_access.Highest(); - if (ci->AccessFor(na->nc).HasPriv("ACCESS_CHANGE") || has_priv) + if (u_access.HasPriv("ACCESS_CHANGE") || has_priv) { if (message.get_data["del"].empty() == false && message.get_data["mask"].empty() == false) { @@ -127,7 +132,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s } replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); - replacements["ACCESS_CHANGE"] = ci->AccessFor(na->nc).HasPriv("ACCESS_CHANGE") ? "YES" : "NO"; + replacements["ACCESS_CHANGE"] = u_access.HasPriv("ACCESS_CHANGE") ? "YES" : "NO"; for (unsigned i = 0; i < ci->GetAccessCount(); ++i) { @@ -144,7 +149,8 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s replacements["PROVIDERS"] = a->name; } - return ServePage("chanserv/access.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } std::set<Anope::string> WebCPanel::ChanServ::Access::GetData() diff --git a/modules/extra/webcpanel/pages/chanserv/akick.cpp b/modules/extra/webcpanel/pages/chanserv/akick.cpp index cfcf58b28..d493c6f67 100644 --- a/modules/extra/webcpanel/pages/chanserv/akick.cpp +++ b/modules/extra/webcpanel/pages/chanserv/akick.cpp @@ -15,33 +15,37 @@ WebCPanel::ChanServ::Akick::Akick(const Anope::string &cat, const Anope::string bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements) { const Anope::string &chname = message.get_data["channel"]; + TemplateFileServer Page("chanserv/akick.html"); + + BuildChanList(na, replacements); - BuildChanlist(page_name, na, replacements); if (chname.empty()) { - replacements["STOP"]; - return ServePage("chanserv/akick.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } ChannelInfo *ci = ChannelInfo::Find(chname); if (!ci) { - replacements["STOP"]; replacements["MESSAGES"] = "Channel not registered"; - return ServePage("chanserv/akick.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } AccessGroup u_access = ci->AccessFor(na->nc); bool has_priv = na->nc->IsServicesOper() && na->nc->o->ot->HasPriv("chanserv/access/modify"); - if (!u_access.HasPriv("akick") && !has_priv) + if (!u_access.HasPriv("AKICK") && !has_priv) { - replacements["STOP"]; replacements["MESSAGES"] = "Permission denied."; - return ServePage("chanserv/akick.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } + replacements["AKICK"] = "YES"; + if (message.get_data["del"].empty() == false && message.get_data["mask"].empty() == false) { std::vector<Anope::string> params; @@ -77,7 +81,8 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st replacements["REASONS"] = HTTPUtils::Escape(akick->reason); } - return ServePage("chanserv/akick.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } std::set<Anope::string> WebCPanel::ChanServ::Akick::GetData() diff --git a/modules/extra/webcpanel/pages/chanserv/drop.cpp b/modules/extra/webcpanel/pages/chanserv/drop.cpp index 8f52f7f08..21e968c18 100644 --- a/modules/extra/webcpanel/pages/chanserv/drop.cpp +++ b/modules/extra/webcpanel/pages/chanserv/drop.cpp @@ -18,13 +18,15 @@ bool WebCPanel::ChanServ::Drop::OnRequest(HTTPProvider *server, const Anope::str if (message.post_data.count("channel") > 0 && message.post_data.count("confChan") > 0) { - if (message.post_data["channel"] == message.post_data["confChan"]) { + if (message.post_data["channel"] == message.post_data["confChan"]) + { std::vector<Anope::string> params; params.push_back(HTTPUtils::URLDecode(message.post_data["channel"])); WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/drop", params, replacements); } - else replacements["MESSAGES"] = "Invalid Confirmation"; + else + replacements["MESSAGES"] = "Invalid Confirmation"; } std::deque<ChannelInfo *> queue; @@ -38,11 +40,12 @@ bool WebCPanel::ChanServ::Drop::OnRequest(HTTPProvider *server, const Anope::str replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name); } } - replacements["PAGE"] = page_name; if (message.get_data.count("channel") > 0) replacements["CHANNEL_DROP"] = message.get_data["channel"]; - return ServePage("chanserv/drop.html", server, page_name, client, message, reply, replacements); + TemplateFileServer page("chanserv/drop.html"); + page.Serve(server, page_name, client, message, reply, replacements); + return true; } diff --git a/modules/extra/webcpanel/pages/chanserv/info.cpp b/modules/extra/webcpanel/pages/chanserv/info.cpp index 5338cc4b2..e878024b0 100644 --- a/modules/extra/webcpanel/pages/chanserv/info.cpp +++ b/modules/extra/webcpanel/pages/chanserv/info.cpp @@ -19,8 +19,10 @@ bool WebCPanel::ChanServ::Info::OnRequest(HTTPProvider *server, const Anope::str if (!chname.empty()) replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); - BuildChanlist("/chanserv/set", na, replacements); + BuildChanList(na, replacements); - return ServePage("chanserv/main.html", server, page_name, client, message, reply, replacements); + TemplateFileServer page("chanserv/main.html"); + page.Serve(server, page_name, client, message, reply, replacements); + return true; } diff --git a/modules/extra/webcpanel/pages/chanserv/modes.cpp b/modules/extra/webcpanel/pages/chanserv/modes.cpp index d29fff723..061c64ae0 100644 --- a/modules/extra/webcpanel/pages/chanserv/modes.cpp +++ b/modules/extra/webcpanel/pages/chanserv/modes.cpp @@ -16,30 +16,31 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st { const Anope::string &chname = message.get_data["channel"]; const Anope::string &mode = message.get_data["m"]; + TemplateFileServer Page("chanserv/modes.html"); - BuildChanlist(page_name, na, replacements); + BuildChanList(na, replacements); if (chname.empty()) { - replacements["STOP"]; - return ServePage("chanserv/modes.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } ChannelInfo *ci = ChannelInfo::Find(chname); if (!ci) { - replacements["STOP"]; - return ServePage("chanserv/modes.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } Channel *c = Channel::Find(chname); if (!c) { - replacements["MESSAGES"] = "Channel is empty / does not exist on the network."; - replacements["STOP"]; - return ServePage("chanserv/modes.html", server, page_name, client, message, reply, replacements); + replacements["MESSAGES"] = Anope::printf(CHAN_X_NOT_IN_USE, chname.c_str()); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } AccessGroup u_access = ci->AccessFor(na->nc); @@ -48,10 +49,12 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st if (!u_access.HasPriv("MODE") && !has_priv) { replacements["MESSAGES"] = "Access denied."; - replacements["STOP"]; - return ServePage("chanserv/modes.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } + replacements["MODE"] = "YES"; + /* build a list with the names of all listmodes */ for (std::vector<ChannelMode *>::const_iterator it = ModeManager::GetChannelModes().begin(); it != ModeManager::GetChannelModes().end(); ++it) { @@ -92,7 +95,8 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); replacements["ESCAPED_MODE"] = HTTPUtils::URLEncode(mode); - return ServePage("chanserv/modes.html", server, page_name, client, message, reply, replacements); + Page.Serve(server, page_name, client, message, reply, replacements); + return true; } std::set<Anope::string> WebCPanel::ChanServ::Modes::GetData() diff --git a/modules/extra/webcpanel/pages/chanserv/set.cpp b/modules/extra/webcpanel/pages/chanserv/set.cpp index 42a3fcfe6..35861ad19 100644 --- a/modules/extra/webcpanel/pages/chanserv/set.cpp +++ b/modules/extra/webcpanel/pages/chanserv/set.cpp @@ -16,23 +16,25 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri { const Anope::string &chname = message.get_data["channel"]; bool can_set = false; + TemplateFileServer page("chanserv/set.html"); - BuildChanlist(page_name, na, replacements); + BuildChanList(na, replacements); if (chname.empty()) { - replacements["STOP"]; - return ServePage("chanserv/set.html", server, page_name, client, message, reply, replacements); + page.Serve(server, page_name, client, message, reply, replacements); + return true; } ChannelInfo *ci = ChannelInfo::Find(chname); if (!ci) { - replacements["STOP"]; - return ServePage("chanserv/set.html", server, page_name, client, message, reply, replacements); + page.Serve(server, page_name, client, message, reply, replacements); + return true; } + replacements["OKAY"]; if (ci->AccessFor(na->nc).HasPriv("SET")) { @@ -139,8 +141,8 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri replacements["TOPICLOCK"]; } - return ServePage("chanserv/set.html", server, page_name, client, message, reply, replacements); - + page.Serve(server, page_name, client, message, reply, replacements); + return true; } std::set<Anope::string> WebCPanel::ChanServ::Set::GetData() diff --git a/modules/extra/webcpanel/pages/chanserv/utils.cpp b/modules/extra/webcpanel/pages/chanserv/utils.cpp index d5ca188e4..71d44ef6e 100644 --- a/modules/extra/webcpanel/pages/chanserv/utils.cpp +++ b/modules/extra/webcpanel/pages/chanserv/utils.cpp @@ -7,23 +7,29 @@ #include "../../webcpanel.h" -void BuildChanlist(const Anope::string &page_name, NickAlias *na, TemplateFileServer::Replacements &replacements) +namespace WebCPanel +{ + +namespace ChanServ +{ + +void BuildChanList(NickAlias *na, TemplateFileServer::Replacements &replacements) { std::deque<ChannelInfo *> queue; na->nc->GetChannelReferences(queue); for (unsigned i = 0; i < queue.size(); ++i) { ChannelInfo *ci = queue[i]; + + if (na->nc != ci->GetFounder() && ci->AccessFor(na->nc).empty()) + continue; + replacements["CHANNEL_NAMES"] = ci->name; replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name); } - replacements["PAGE"] = page_name; - return; } -bool ServePage(const Anope::string &page, HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, TemplateFileServer::Replacements &replacements) -{ - TemplateFileServer Page(page); - Page.Serve(server, page_name, client, message, reply, replacements); - return 1; -}
\ No newline at end of file +} + +} + diff --git a/modules/extra/webcpanel/pages/chanserv/utils.h b/modules/extra/webcpanel/pages/chanserv/utils.h index cf4683936..38261db65 100644 --- a/modules/extra/webcpanel/pages/chanserv/utils.h +++ b/modules/extra/webcpanel/pages/chanserv/utils.h @@ -5,6 +5,15 @@ * Please read COPYING and README for further details. */ -void BuildChanlist(const Anope::string &, NickAlias *, TemplateFileServer::Replacements &); +namespace WebCPanel +{ + +namespace ChanServ +{ + +extern void BuildChanList(NickAlias *, TemplateFileServer::Replacements &); + +} + +} -bool ServePage(const Anope::string &, HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, TemplateFileServer::Replacements &); diff --git a/modules/extra/webcpanel/templates/default/chanserv/access.html b/modules/extra/webcpanel/templates/default/chanserv/access.html index 5364a4e94..09bc26d8d 100644 --- a/modules/extra/webcpanel/templates/default/chanserv/access.html +++ b/modules/extra/webcpanel/templates/default/chanserv/access.html @@ -8,8 +8,7 @@ </div> {END FOR} - {IF EXISTS STOP} - {ELSE} + {IF EQ ACCESS_LIST YES} {IF EXISTS ACCESSES} <table id="tableNSAccess" class="table table-hover"> <thead> diff --git a/modules/extra/webcpanel/templates/default/chanserv/akick.html b/modules/extra/webcpanel/templates/default/chanserv/akick.html index 1483cd660..75cf894e2 100644 --- a/modules/extra/webcpanel/templates/default/chanserv/akick.html +++ b/modules/extra/webcpanel/templates/default/chanserv/akick.html @@ -8,8 +8,7 @@ </div> {END FOR} - {IF EXISTS STOP} - {ELSE} + {IF EQ AKICK YES} {IF EXISTS MASKS} <table id="tableNSAccess" class="table table-hover"> <thead> diff --git a/modules/extra/webcpanel/templates/default/chanserv/chanlist.html b/modules/extra/webcpanel/templates/default/chanserv/chanlist.html index 50e3a60f6..4d386f6b0 100644 --- a/modules/extra/webcpanel/templates/default/chanserv/chanlist.html +++ b/modules/extra/webcpanel/templates/default/chanserv/chanlist.html @@ -4,10 +4,10 @@ <div> <h3 style="margin: -12px 0 20px 0;"><small>Choose a channel to access it's Settings, Access or Akick pages.</small></h3> {FOR CH,ECH IN CHANNEL_NAMES,ESCAPED_CHANNEL_NAMES} - <td><a href="{PAGE}?channel={ECH}" class="btn btn-sm btn-primary {IF EQ ECH ESCAPED_CHANNEL}disabled{END IF}">{CH}</a></td> + <td><a href="{PAGE_NAME}?channel={ECH}" class="btn btn-sm btn-primary {IF EQ ECH ESCAPED_CHANNEL}disabled{END IF}">{CH}</a></td> {END FOR} </div> {ELSE} - <em>You don't have access in any channel</em><br> + <em>You don't have access in any channels.</em><br> {END IF} </div><br> diff --git a/modules/extra/webcpanel/templates/default/chanserv/modes.html b/modules/extra/webcpanel/templates/default/chanserv/modes.html index e441797dc..47c50e72a 100644 --- a/modules/extra/webcpanel/templates/default/chanserv/modes.html +++ b/modules/extra/webcpanel/templates/default/chanserv/modes.html @@ -8,8 +8,7 @@ </div> {END FOR} - {IF EXISTS STOP} - {ELSE} + {IF EQ MODE YES} {FOR LM IN LISTMODES} <td><a href="/chanserv/modes?channel={ESCAPED_CHANNEL}&m={LM}" class="btn btn-sm btn-primary {IF EQ LM ESCAPED_MODE}disabled{END IF}">{LM}</a></td> {END FOR} diff --git a/modules/extra/webcpanel/templates/default/chanserv/set.html b/modules/extra/webcpanel/templates/default/chanserv/set.html index e8522cef9..0a26e3d74 100644 --- a/modules/extra/webcpanel/templates/default/chanserv/set.html +++ b/modules/extra/webcpanel/templates/default/chanserv/set.html @@ -8,8 +8,7 @@ </div> {END FOR} - {IF EXISTS STOP} - {ELSE} + {IF EXISTS OKAY} {IF EXISTS CAN_SET}<form method="post" action="/chanserv/set?channel={CHANNEL_ESCAPED}">{END IF} <table id="tableInfo" class="table table-hover"> <tr> diff --git a/modules/extra/webcpanel/templates/default/header.html b/modules/extra/webcpanel/templates/default/header.html index 93d2c31fb..0ccf477c5 100644 --- a/modules/extra/webcpanel/templates/default/header.html +++ b/modules/extra/webcpanel/templates/default/header.html @@ -32,7 +32,13 @@ {IF EQ CATEGORY MemoServ}{IF EQ CATEGORY_NAME MemoServ}class="active"{END IF}{END IF} {IF EQ CATEGORY HostServ}{IF EQ CATEGORY_NAME HostServ}class="active"{END IF}{END IF} {IF EQ CATEGORY OperServ}{IF EQ CATEGORY_NAME OperServ}class="active"{END IF}{END IF}> - <a href="{CATEGORY_URL}">{CATEGORY_NAME}</a> + {IF EQ CATEGORY_NAME OperServ} + {IF EXISTS IS_OPER} + <a href="{CATEGORY_URL}">{CATEGORY_NAME}</a> + {END IF} + {ELSE} + <a href="{CATEGORY_URL}">{CATEGORY_NAME}</a> + {END IF} </li> {END FOR} </ul> @@ -55,4 +61,4 @@ </div> <div class="col-lg-9"> - <div class="panel panel-default">
\ No newline at end of file + <div class="panel panel-default"> diff --git a/modules/extra/webcpanel/webcpanel.h b/modules/extra/webcpanel/webcpanel.h index b04859376..71e9e1e1f 100644 --- a/modules/extra/webcpanel/webcpanel.h +++ b/modules/extra/webcpanel/webcpanel.h @@ -98,6 +98,8 @@ class WebPanelProtectedPage : public WebPanelPage replacements["ACCOUNT"] = na->nc->display; replacements["PAGE_NAME"] = page_name; replacements["CATEGORY"] = category; + if (na->nc->IsServicesOper()) + replacements["IS_OPER"]; Anope::string sections, get; diff --git a/src/logger.cpp b/src/logger.cpp index 02b94f49c..296b22dac 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -148,7 +148,7 @@ Anope::string Log::BuildPrefix() const if (!this->c && !(this->u || this->nc)) break; buffer += "ADMIN: "; - Anope::string cname = source != NULL ? source->command : this->c->name; + Anope::string cname = source != NULL && !source->command.empty() ? source->command : this->c->name; if (this->u) buffer += this->u->GetMask() + " used " + cname + " "; else if (this->nc) @@ -162,7 +162,7 @@ Anope::string Log::BuildPrefix() const if (!this->c && !(this->u || this->nc)) break; buffer += "OVERRIDE: "; - Anope::string cname = source != NULL ? source->command : this->c->name; + Anope::string cname = source != NULL && !source->command.empty() ? source->command : this->c->name; if (this->u) buffer += this->u->GetMask() + " used " + cname + " "; else if (this->nc) @@ -176,7 +176,7 @@ Anope::string Log::BuildPrefix() const if (!this->c) break; buffer += "COMMAND: "; - Anope::string cname = source != NULL ? source->command : this->c->name; + Anope::string cname = source != NULL && !source->command.empty() ? source->command : this->c->name; if (this->u) buffer += this->u->GetMask() + " used " + cname + " "; else if (this->source) |