Perform: Also parse stuff like "/msg foo bar" via webmods

Signed-off-by: Uli Schlachter <psychon@znc.in>

git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@2231 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
psychon
2010-12-31 14:42:43 +00:00
parent c8910c4856
commit 89edf703f6

View File

@@ -15,6 +15,26 @@ public:
virtual ~CPerform() {} virtual ~CPerform() {}
CString ParsePerform(const CString& sArg) {
CString sPerf = sArg;
if (sPerf.Left(1) == "/")
sPerf.LeftChomp();
if (sPerf.Token(0).Equals("MSG")) {
sPerf = "PRIVMSG " + sPerf.Token(1, true);
}
if ((sPerf.Token(0).Equals("PRIVMSG") ||
sPerf.Token(0).Equals("NOTICE")) &&
sPerf.Token(2).Left(1) != ":") {
sPerf = sPerf.Token(0) + " " + sPerf.Token(1)
+ " :" + sPerf.Token(2, true);
}
return sPerf;
}
virtual bool OnLoad(const CString& sArgs, CString& sMessage) { virtual bool OnLoad(const CString& sArgs, CString& sMessage) {
GetNV("Perform").Split("\n", m_vPerform, false); GetNV("Perform").Split("\n", m_vPerform, false);
@@ -31,20 +51,7 @@ public:
return; return;
} }
if (sPerf.Left(1) == "/") m_vPerform.push_back(ParsePerform(sPerf));
sPerf.LeftChomp();
if (sPerf.Token(0).Equals("MSG")) {
sPerf = "PRIVMSG " + sPerf.Token(1, true);
}
if ((sPerf.Token(0).Equals("PRIVMSG") ||
sPerf.Token(0).Equals("NOTICE")) &&
sPerf.Token(2).Left(1) != ":") {
sPerf = sPerf.Token(0) + " " + sPerf.Token(1)
+ " :" + sPerf.Token(2, true);
}
m_vPerform.push_back(sPerf);
PutModule("Added!"); PutModule("Added!");
Save(); Save();
} else if (sCmdName == "del") { } else if (sCmdName == "del") {
@@ -98,7 +105,13 @@ public:
virtual bool OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) { virtual bool OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) {
if (WebSock.IsPost()) { if (WebSock.IsPost()) {
WebSock.GetRawParam("perform", true).Split("\n", m_vPerform, false); VCString vsPerf;
WebSock.GetRawParam("perform", true).Split("\n", vsPerf, false);
m_vPerform.clear();
for (VCString::iterator it = vsPerf.begin(); it != vsPerf.end(); ++it)
m_vPerform.push_back(ParsePerform(*it));
Save(); Save();
} }