mirror of
git://git.acid.vegas/anope.git
synced 2024-11-15 12:16:41 +00:00
155 lines
4.0 KiB
C++
155 lines
4.0 KiB
C++
|
/*
|
||
|
* (C) 2003-2022 Anope Team
|
||
|
* Contact us at team@anope.org
|
||
|
*
|
||
|
* Please read COPYING and README for further details.
|
||
|
*/
|
||
|
|
||
|
#include "../../webcpanel.h"
|
||
|
#include "utils.h"
|
||
|
|
||
|
WebCPanel::ChanServ::Set::Set(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
bool WebCPanel::ChanServ::Set::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"];
|
||
|
bool can_set = false;
|
||
|
TemplateFileServer page("chanserv/set.html");
|
||
|
|
||
|
BuildChanList(na, replacements);
|
||
|
|
||
|
if (chname.empty())
|
||
|
{
|
||
|
page.Serve(server, page_name, client, message, reply, replacements);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
ChannelInfo *ci = ChannelInfo::Find(chname);
|
||
|
|
||
|
if (!ci)
|
||
|
{
|
||
|
page.Serve(server, page_name, client, message, reply, replacements);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
replacements["OKAY"];
|
||
|
|
||
|
if (ci->AccessFor(na->nc).HasPriv("SET"))
|
||
|
{
|
||
|
replacements["CAN_SET"];
|
||
|
can_set = true;
|
||
|
}
|
||
|
|
||
|
if (can_set && message.post_data.empty() == false)
|
||
|
{
|
||
|
if (ci->HasExt("KEEPTOPIC") != message.post_data.count("keeptopic"))
|
||
|
{
|
||
|
if (!ci->HasExt("KEEPTOPIC"))
|
||
|
ci->Extend<bool>("KEEPTOPIC");
|
||
|
else
|
||
|
ci->Shrink<bool>("KEEPTOPIC");
|
||
|
replacements["MESSAGES"] = "Secure updated";
|
||
|
}
|
||
|
if (ci->HasExt("PEACE") != message.post_data.count("peace"))
|
||
|
{
|
||
|
if (!ci->HasExt("PEACE"))
|
||
|
ci->Extend<bool>("PEACE");
|
||
|
else
|
||
|
ci->Shrink<bool>("PEACE");
|
||
|
replacements["MESSAGES"] = "Peace updated";
|
||
|
}
|
||
|
if (ci->HasExt("CS_PRIVATE") != message.post_data.count("private"))
|
||
|
{
|
||
|
if (!ci->HasExt("CS_PRIVATE"))
|
||
|
ci->Extend<bool>("CS_PRIVATE");
|
||
|
else
|
||
|
ci->Shrink<bool>("CS_PRIVATE");
|
||
|
replacements["MESSAGES"] = "Private updated";
|
||
|
}
|
||
|
if (ci->HasExt("RESTRICTED") != message.post_data.count("restricted"))
|
||
|
{
|
||
|
if (!ci->HasExt("RESTRICTED"))
|
||
|
ci->Extend<bool>("RESTRICTED");
|
||
|
else
|
||
|
ci->Shrink<bool>("RESTRICTED");
|
||
|
replacements["MESSAGES"] = "Restricted updated";
|
||
|
}
|
||
|
if (ci->HasExt("CS_SECURE") != message.post_data.count("secure"))
|
||
|
{
|
||
|
if (!ci->HasExt("CS_SECURE"))
|
||
|
ci->Extend<bool>("CS_SECURE");
|
||
|
else
|
||
|
ci->Shrink<bool>("CS_SECURE");
|
||
|
replacements["MESSAGES"] = "Secure updated";
|
||
|
}
|
||
|
if (ci->HasExt("SECUREOPS") != message.post_data.count("secureops"))
|
||
|
{
|
||
|
if (!ci->HasExt("SECUREOPS"))
|
||
|
ci->Extend<bool>("SECUREOPS");
|
||
|
else
|
||
|
ci->Shrink<bool>("SECUREOPS");
|
||
|
replacements["MESSAGES"] = "Secureops updated";
|
||
|
}
|
||
|
if (ci->HasExt("TOPICLOCK") != message.post_data.count("topiclock"))
|
||
|
{
|
||
|
if (!ci->HasExt("TOPICLOCK"))
|
||
|
ci->Extend<bool>("TOPICLOCK");
|
||
|
else
|
||
|
ci->Shrink<bool>("TOPICLOCK");
|
||
|
replacements["MESSAGES"] = "Topiclock updated";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
replacements["CHANNEL"] = ci->name;
|
||
|
replacements["CHANNEL_ESCAPED"] = HTTPUtils::URLEncode(ci->name);
|
||
|
if (ci->GetFounder())
|
||
|
replacements["FOUNDER"] = ci->GetFounder()->display;
|
||
|
if (ci->GetSuccessor())
|
||
|
replacements["SUCCESSOR"] = ci->GetSuccessor()->display;
|
||
|
replacements["TIME_REGISTERED"] = Anope::strftime(ci->time_registered, na->nc);
|
||
|
replacements["LAST_USED"] = Anope::strftime(ci->last_used, na->nc);
|
||
|
replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname);
|
||
|
|
||
|
if (!ci->last_topic.empty())
|
||
|
{
|
||
|
replacements["LAST_TOPIC"] = ci->last_topic;
|
||
|
replacements["LAST_TOPIC_SETTER"] = ci->last_topic_setter;
|
||
|
}
|
||
|
|
||
|
if (can_set)
|
||
|
{
|
||
|
if (ci->HasExt("KEEPTOPIC"))
|
||
|
replacements["KEEPTOPIC"];
|
||
|
|
||
|
if (ci->HasExt("PEACE"))
|
||
|
replacements["PEACE"];
|
||
|
|
||
|
if (ci->HasExt("CS_PRIVATE"))
|
||
|
replacements["PRIVATE"];
|
||
|
|
||
|
if (ci->HasExt("RESTRICTED"))
|
||
|
replacements["RESTRICTED"];
|
||
|
|
||
|
if (ci->HasExt("CS_SECURE"))
|
||
|
replacements["SECURE"];
|
||
|
|
||
|
if (ci->HasExt("SECUREOPS"))
|
||
|
replacements["SECUREOPS"];
|
||
|
|
||
|
if (ci->HasExt("TOPICLOCK"))
|
||
|
replacements["TOPICLOCK"];
|
||
|
}
|
||
|
|
||
|
page.Serve(server, page_name, client, message, reply, replacements);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
std::set<Anope::string> WebCPanel::ChanServ::Set::GetData()
|
||
|
{
|
||
|
std::set<Anope::string> v;
|
||
|
v.insert("channel");
|
||
|
return v;
|
||
|
}
|