send_raw: Add a web interface

This commit is contained in:
Kyle Fuller
2011-01-02 00:34:22 +00:00
parent 3c2e103aad
commit d8b181718c
2 changed files with 72 additions and 0 deletions

View File

@@ -25,6 +25,39 @@ public:
return true;
}
virtual CString GetWebMenuTitle() { return "Send Raw"; }
virtual bool WebRequiresAdmin() { return true; }
virtual bool OnWebRequest(CWebSock& WebSock, const CString& sPageName, CTemplate& Tmpl) {
if (sPageName == "index") {
if (WebSock.IsPost()) {
CUser *pUser = CZNC::Get().FindUser(WebSock.GetParam("user"));
bool bOutgoing = WebSock.GetParam("direction") == "out";
const CString sLine = WebSock.GetParam("line");
if (!pUser) {
Tmpl["user"] = WebSock.GetParam("user");
Tmpl[bOutgoing ? "direction_out" : "direction_in"] = "true";
Tmpl["line"] = sLine;
WebSock.GetSession()->AddError("User not found");
return true;
}
if (bOutgoing) {
pUser->PutIRC(sLine);
} else {
pUser->PutUser(sLine);
}
WebSock.GetSession()->AddSuccess("Line sent");
}
return true;
}
return false;
}
virtual void OnModCommand(const CString& sLine) {
const CString sUser = sLine.Token(0);
const CString sDirection = sLine.Token(1);

View File

@@ -0,0 +1,39 @@
<? INC Header.tmpl ?>
<form method="post" action="/mods/send_raw/">
<? INC _csrf_check.tmpl ?>
<div class="section">
<h3>Send a raw IRC line</h3>
<div class="sectionbg">
<div class="sectionbody">
<div class="subsection third">
<div class="inputlabel">User:</div>
<div><input type="text" name="user" value="<? VAR user ?>" /></div>
</div>
<div class="subsection third">
<div class="inputlabel">Direction:</div>
<div>
<select name="direction">
<option value="in"<? IF direction_in ?> selected="yes"<? ENDIF ?>>in</option>
<option value="out"<? IF direction_out ?> selected="yes"<? ENDIF ?>>out</option>
</select>
</div>
</div>
<div class="subsection full">
<div class="inputlabel">Line:</div>
<div><input type="text" name="line" value="<? VAR line ?>" /></div>
</div>
<div class="subsection submitline">
<input type="submit" value="Send">
</div>
</div>
</div>
</div>
</form>
<? INC Footer.tmpl ?>