diff options
-rw-r--r-- | include/commands.h | 2 | ||||
-rw-r--r-- | modules/webcpanel/pages/chanserv/access.cpp | 8 | ||||
-rw-r--r-- | modules/webcpanel/pages/chanserv/akick.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/pages/chanserv/drop.cpp | 2 | ||||
-rw-r--r-- | modules/webcpanel/pages/chanserv/modes.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/pages/confirm.cpp | 2 | ||||
-rw-r--r-- | modules/webcpanel/pages/hostserv/request.cpp | 2 | ||||
-rw-r--r-- | modules/webcpanel/pages/memoserv/memos.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/pages/nickserv/access.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/pages/nickserv/cert.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/pages/operserv/akill.cpp | 4 | ||||
-rw-r--r-- | modules/webcpanel/webcpanel.cpp | 8 | ||||
-rw-r--r-- | modules/webcpanel/webcpanel.h | 5 | ||||
-rw-r--r-- | src/logger.cpp | 7 |
14 files changed, 36 insertions, 24 deletions
diff --git a/include/commands.h b/include/commands.h index b078b3a7d..2d8fc19f5 100644 --- a/include/commands.h +++ b/include/commands.h @@ -59,6 +59,8 @@ class CoreExport CommandSource public: /* The account executing the command */ Reference<NickCore> nc; + /* for web clients */ + Anope::string ip; /* Where the reply should go */ CommandReply *reply; /* Channel the command was executed on (fantasy) */ diff --git a/modules/webcpanel/pages/chanserv/access.cpp b/modules/webcpanel/pages/chanserv/access.cpp index 38d1c4bd5..abe0621f6 100644 --- a/modules/webcpanel/pages/chanserv/access.cpp +++ b/modules/webcpanel/pages/chanserv/access.cpp @@ -55,7 +55,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/access", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/access", params, replacements); } else if (message.post_data["mask"].empty() == false && message.post_data["access"].empty() == false && message.post_data["provider"].empty() == false) { @@ -69,7 +69,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back(message.post_data["mask"]); params.push_back(message.post_data["access"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/access", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/access", params, replacements); } else if (provider == "chanserv/xop") { @@ -78,7 +78,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("ADD"); params.push_back(message.post_data["mask"]); - WebPanel::RunCommandWithName(na->nc, "ChanServ", "chanserv/xop", message.post_data["access"], params, replacements); + WebPanel::RunCommandWithName(client, na->nc, "ChanServ", "chanserv/xop", message.post_data["access"], params, replacements); } else if (provider == "chanserv/flags") { @@ -88,7 +88,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back(message.post_data["mask"]); params.push_back(message.post_data["access"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/flags", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/flags", params, replacements); } } } diff --git a/modules/webcpanel/pages/chanserv/akick.cpp b/modules/webcpanel/pages/chanserv/akick.cpp index 4c9614fe7..306f99030 100644 --- a/modules/webcpanel/pages/chanserv/akick.cpp +++ b/modules/webcpanel/pages/chanserv/akick.cpp @@ -53,7 +53,7 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); } else if (message.post_data["mask"].empty() == false) { @@ -64,7 +64,7 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st if (message.post_data["reason"].empty() == false) params.push_back(message.post_data["reason"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); } replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); diff --git a/modules/webcpanel/pages/chanserv/drop.cpp b/modules/webcpanel/pages/chanserv/drop.cpp index 8d998de58..e4a394ac6 100644 --- a/modules/webcpanel/pages/chanserv/drop.cpp +++ b/modules/webcpanel/pages/chanserv/drop.cpp @@ -25,7 +25,7 @@ bool WebCPanel::ChanServ::Drop::OnRequest(HTTPProvider *server, const Anope::str params.push_back(channel); params.push_back(channel); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/drop", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/drop", params, replacements); } else replacements["MESSAGES"] = "Invalid Confirmation"; diff --git a/modules/webcpanel/pages/chanserv/modes.cpp b/modules/webcpanel/pages/chanserv/modes.cpp index 1d37d2135..671a9c948 100644 --- a/modules/webcpanel/pages/chanserv/modes.cpp +++ b/modules/webcpanel/pages/chanserv/modes.cpp @@ -82,7 +82,7 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st params.push_back("SET"); params.push_back("-" + Anope::string(cm->mchar)); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); } else if (message.post_data["mask"].empty() == false) { @@ -91,7 +91,7 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st params.push_back("SET"); params.push_back("+" + Anope::string(cm->mchar)); params.push_back(message.post_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); } std::vector<Anope::string> v = c->GetModeList(cm->name); diff --git a/modules/webcpanel/pages/confirm.cpp b/modules/webcpanel/pages/confirm.cpp index c976adfa0..9270d67a8 100644 --- a/modules/webcpanel/pages/confirm.cpp +++ b/modules/webcpanel/pages/confirm.cpp @@ -21,7 +21,7 @@ bool WebCPanel::Confirm::OnRequest(HTTPProvider *server, const Anope::string &pa if (!email.empty()) params.push_back(email); - WebPanel::RunCommand(user, NULL, "NickServ", "nickserv/register", params, replacements); + WebPanel::RunCommand(client, user, NULL, "NickServ", "nickserv/register", params, replacements); } TemplateFileServer page("confirm.html"); diff --git a/modules/webcpanel/pages/hostserv/request.cpp b/modules/webcpanel/pages/hostserv/request.cpp index d26bb4323..56f467a1d 100644 --- a/modules/webcpanel/pages/hostserv/request.cpp +++ b/modules/webcpanel/pages/hostserv/request.cpp @@ -18,7 +18,7 @@ bool WebCPanel::HostServ::Request::OnRequest(HTTPProvider *server, const Anope:: std::vector<Anope::string> params; params.push_back(HTTPUtils::URLDecode(message.post_data["req"])); - WebPanel::RunCommand(na->nc->display, na->nc, "HostServ", "hostserv/request", params, replacements, "CMDR"); + WebPanel::RunCommand(client, na->nc->display, na->nc, "HostServ", "hostserv/request", params, replacements, "CMDR"); } if (na->HasVhost()) diff --git a/modules/webcpanel/pages/memoserv/memos.cpp b/modules/webcpanel/pages/memoserv/memos.cpp index b833fc0a1..76e922949 100644 --- a/modules/webcpanel/pages/memoserv/memos.cpp +++ b/modules/webcpanel/pages/memoserv/memos.cpp @@ -57,7 +57,7 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st params.push_back(HTTPUtils::URLDecode(message.post_data["receiver"])); params.push_back(HTTPUtils::URLDecode(message.post_data["message"])); - WebPanel::RunCommand(na->nc->display, na->nc, "MemoServ", "memoserv/send", params, replacements, "CMDR"); + WebPanel::RunCommand(client, na->nc->display, na->nc, "MemoServ", "memoserv/send", params, replacements, "CMDR"); } if (message.get_data.count("del") > 0 && message.get_data.count("number") > 0) { @@ -66,7 +66,7 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st params.push_back(chname); params.push_back(message.get_data["number"]); - WebPanel::RunCommand(na->nc->display, na->nc, "MemoServ", "memoserv/del", params, replacements, "CMDR"); + WebPanel::RunCommand(client, na->nc->display, na->nc, "MemoServ", "memoserv/del", params, replacements, "CMDR"); } if (message.get_data.count("read") > 0 && message.get_data.count("number") > 0) { diff --git a/modules/webcpanel/pages/nickserv/access.cpp b/modules/webcpanel/pages/nickserv/access.cpp index cb272d3bd..4034e50fb 100644 --- a/modules/webcpanel/pages/nickserv/access.cpp +++ b/modules/webcpanel/pages/nickserv/access.cpp @@ -19,7 +19,7 @@ bool WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("ADD"); params.push_back(message.post_data["access"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); } else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0) { @@ -27,7 +27,7 @@ bool WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); } for (unsigned i = 0; i < na->nc->access.size(); ++i) diff --git a/modules/webcpanel/pages/nickserv/cert.cpp b/modules/webcpanel/pages/nickserv/cert.cpp index f8195e0e1..a6a2ba56b 100644 --- a/modules/webcpanel/pages/nickserv/cert.cpp +++ b/modules/webcpanel/pages/nickserv/cert.cpp @@ -20,7 +20,7 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str params.push_back("ADD"); params.push_back(message.post_data["certfp"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); } else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0) { @@ -28,7 +28,7 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); } NSCertList *cl = na->nc->GetExt<NSCertList>("certificates"); diff --git a/modules/webcpanel/pages/operserv/akill.cpp b/modules/webcpanel/pages/operserv/akill.cpp index c71dc1f49..2308af17d 100644 --- a/modules/webcpanel/pages/operserv/akill.cpp +++ b/modules/webcpanel/pages/operserv/akill.cpp @@ -34,7 +34,7 @@ bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::st cmdstr << " " << HTTPUtils::URLDecode(message.post_data["mask"]); cmdstr << " " << HTTPUtils::URLDecode(message.post_data["reason"]); params.push_back(cmdstr.str()); - WebPanel::RunCommand(na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements); } if (message.get_data["del"] == "1" && message.get_data.count("number") > 0) @@ -42,7 +42,7 @@ bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::st std::vector<Anope::string> params; params.push_back("DEL"); params.push_back(HTTPUtils::URLDecode(message.get_data["number"])); - WebPanel::RunCommand(na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements); + WebPanel::RunCommand(client, na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements); } for (unsigned i = 0, end = akills->GetCount(); i < end; ++i) diff --git a/modules/webcpanel/webcpanel.cpp b/modules/webcpanel/webcpanel.cpp index 947248cb8..14080191e 100644 --- a/modules/webcpanel/webcpanel.cpp +++ b/modules/webcpanel/webcpanel.cpp @@ -231,7 +231,7 @@ class ModuleWebCPanel : public Module namespace WebPanel { - void RunCommand(const Anope::string &user, NickCore *nc, const Anope::string &service, const Anope::string &c, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) + void RunCommand(HTTPClient *client, const Anope::string &user, NickCore *nc, const Anope::string &service, const Anope::string &c, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) { ServiceReference<Command> cmd("Command", c); if (!cmd) @@ -266,12 +266,15 @@ namespace WebPanel my_reply(r, key); CommandSource source(user, NULL, nc, &my_reply, bi); + source.ip = client->clientaddr.addr(); + CommandInfo info; info.name = c; + cmd->Run(source, "", info, params); } - void RunCommandWithName(NickCore *nc, const Anope::string &service, const Anope::string &c, const Anope::string &cmdname, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) + void RunCommandWithName(HTTPClient *client, NickCore *nc, const Anope::string &service, const Anope::string &c, const Anope::string &cmdname, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) { ServiceReference<Command> cmd("Command", c); if (!cmd) @@ -303,6 +306,7 @@ namespace WebPanel my_reply(r, key); CommandSource source(nc->display, NULL, nc, &my_reply, bi); + source.ip = client->clientaddr.addr(); cmd->Run(source, cmdname, *info, params); } diff --git a/modules/webcpanel/webcpanel.h b/modules/webcpanel/webcpanel.h index 3aaf19ef6..50db96c8c 100644 --- a/modules/webcpanel/webcpanel.h +++ b/modules/webcpanel/webcpanel.h @@ -143,6 +143,7 @@ class WebPanelProtectedPage : public WebPanelPage namespace WebPanel { /** Run a command + * @param client HTTP client command is being issued for * @param User name to run command as, probably nc->display unless nc == NULL * @param nc Nick core to run command from * @param service Service for source.owner and source.service @@ -151,9 +152,9 @@ namespace WebPanel * @param r Replacements, reply from command goes back here into key * @param key The key to put the replies into r */ - extern void RunCommand(const Anope::string &user, NickCore *nc, const Anope::string &service, const Anope::string &c, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key = "MESSAGES"); + extern void RunCommand(HTTPClient *client, const Anope::string &user, NickCore *nc, const Anope::string &service, const Anope::string &c, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key = "MESSAGES"); - extern void RunCommandWithName(NickCore *nc, const Anope::string &service, const Anope::string &c, const Anope::string &cmdname, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key = "MESSAGES"); + extern void RunCommandWithName(HTTPClient *client, NickCore *nc, const Anope::string &service, const Anope::string &c, const Anope::string &cmdname, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key = "MESSAGES"); } #include "pages/index.h" diff --git a/src/logger.cpp b/src/logger.cpp index 2667e7ef3..ac030f218 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -146,7 +146,12 @@ Anope::string Log::FormatSource() const else if (nc) return nc->display; else if (source) - return source->GetNick(); + { + Anope::string buf = source->GetNick(); + if (!buf.empty() && !source->ip.empty()) + buf += " (" + source->ip + ")"; + return buf; + } return ""; } |