private void InvokeAsMene(IHttpRequest request, IHttpResponse response, ScriptExecutor _botClient, string pathd, WriteLineToResponse wrresp) { { { CmdResult res; AddToBody(response, "<xml>"); AddToBody(response, "\n<!-- Begin Response !-->"); // this is our MeNe handler string username = GetVariable(request, "username", GetVariable(request, "ident", null)); string saytext = GetVariable(request, "saytext", "missed the post"); string text = GetVariable(request, "text", GetVariable(request, "entry", pathd.TrimStart('/'))); if (text.Contains("<sapi>")) { // example fragment // <sapi> <silence msec="100" /> <bookmark mark="anim:hello.csv"/> Hi there </sapi> text = text.Replace("<sapi>", " "); text = text.Replace("</sapi>", " ").Trim(); while (text.Contains("<")) { int p1 = text.IndexOf("<"); int p2 = text.IndexOf(">", p1); if (p2 > p1) { string fragment = text.Substring(p1, (p2 + 1) - p1); text = text.Replace(fragment, " "); } } } if (String.IsNullOrEmpty(username)) { //res = _botClient.ExecuteCommand(cmd + " " + text, wrresp.WriteLine); res = _botClient.ExecuteCommand("aiml @withuser " + defaultUser + " - " + text, request, wrresp.WriteLine, CMDFLAGS.Foregrounded); } else { res = _botClient.ExecuteCommand("aiml @withuser " + username + " - " + text, request, wrresp.WriteLine, CMDFLAGS.Foregrounded); } AddToBody(response, ""); AddToBody(response, "\n<!-- End Response !-->"); AddToBody(response, "</xml>"); } } }
public void BlockingHandler(IHttpClientContext context0, IHttpRequest request, IHttpResponse response) { // UUID capsID; bool success; string path = request.Uri.PathAndQuery;//.TrimEnd('/'); if (path.Contains("5580")) { path = path.Replace("?:5580/", ""); } string pathd = HttpUtility.UrlDecode(path);//.TrimEnd('/'); LogInfo("_listener " + path + " from " + request.RemoteEndPoint); if (request.UriPath.EndsWith(".ico")) { response.Status = HttpStatusCode.NotFound; response.Send(); } var wrresp = new WriteLineToResponse(this, response); string botname = GetVariable(request, "bot", GetVariable(request, "botid", null)); ScriptExecutor _botClient = clientManager.GetScriptExecuter(botname); if (_botClient == null) { response.Status = HttpStatusCode.ServiceUnavailable; response.Send(); return; } // Micro-posterboard if (pathd.StartsWith("/posterboard")) { string slot = path; string value = ""; value = _botClient.getPosterBoard(slot) as string; if (value != null) { if (value.Length > 0) { LogInfo(String.Format(" board response: {0} = {1}", slot, value)); } } AddToBody(response, "<xml>"); AddToBody(response, "<slot>"); AddToBody(response, "<path>" + path + "</path>"); AddToBody(response, "<value>" + (value ?? "") + "</value>"); AddToBody(response, "</slot>"); AddToBody(response, "</xml>"); wrresp.response = null; response.Status = HttpStatusCode.OK; response.Send(); return; } bool useHtml = false; if (request.Method == "POST") { var fdp = new FormDecoderProvider(); fdp.Add(new MultipartDecoder()); fdp.Add(new UrlDecoder()); request.DecodeBody(fdp); } if (path.StartsWith("/?") || path.StartsWith("/test")) { useHtml = true; } if (DLRConsole.IsDougsMachine) { useHtml = true; } try { if (OverrideHandlers(request, response)) { return; } if (useHtml) { AddToBody(response, "<html>"); AddToBody(response, "<head>"); botname = GetVariable(request, "bot", _botClient.GetName()); AddToBody(response, "<title>" + botname + "</title>"); AddToBody(response, "</head>"); AddToBody(response, "<body>"); AddToBody(response, "<pre>"); foreach (var p in request.Param.AsEnumerable()) { foreach (var item in p.Values) { AddToBody(response, "" + p.Name + " = " + item); } } AddToBody(response, "</pre>"); AddToBody(response, "<a href='" + request.Uri.PathAndQuery + "'>" + request.Uri.PathAndQuery + "</a>"); AddToBody(response, "<pre>"); } string cmd = GetVariable(request, "cmd", "MeNe"); CmdResult res; // this is our default handler if (cmd != "MeNe") { res = _botClient.ExecuteXmlCommand(cmd + " " + GetVariable(request, "args", ""), request, wrresp.WriteLine); } else { try { InvokeAsMene(request, response, _botClient, pathd, wrresp); } catch (Exception exception) { LogInfo("InvokeAsMene exception: " + exception); } } if (useHtml) { AddToBody(response, "</pre>"); AddToBody(response, "</body>"); AddToBody(response, "</html>"); } } finally { wrresp.response = null; response.Status = HttpStatusCode.OK; try { response.Send(); } catch (Exception e) { LogInfo("Exception sening respose: " + e); } } }
public void BlockingHandler(IHttpClientContext context0, IHttpRequest request, IHttpResponse response) { // UUID capsID; bool success; string path = request.Uri.PathAndQuery;//.TrimEnd('/'); if (path.Contains("5580")) { path = path.Replace("?:5580/", ""); } string pathd = HttpUtility.UrlDecode(path);//.TrimEnd('/'); LogInfo("_listener " + path + " from " + request.RemoteEndPoint); if (request.UriPath.EndsWith(".ico")) { response.Status = HttpStatusCode.NotFound; response.Send(); } var wrresp = new WriteLineToResponse(this, response); string botname = GetVariable(request, "bot", GetVariable(request, "botid", null)); ScriptExecutor _botClient = clientManager.GetScriptExecuter(botname); if (_botClient == null) { response.Status = HttpStatusCode.ServiceUnavailable; response.Send(); return; } // Micro-posterboard if (pathd.StartsWith("/posterboard")) { string slot = path; string value = ""; value = _botClient.getPosterBoard(slot) as string; if (value != null) if (value.Length > 0) { LogInfo(String.Format(" board response: {0} = {1}", slot, value)); } AddToBody(response, "<xml>"); AddToBody(response, "<slot>"); AddToBody(response, "<path>" + path + "</path>"); AddToBody(response, "<value>" + (value ?? "") + "</value>"); AddToBody(response, "</slot>"); AddToBody(response, "</xml>"); wrresp.response = null; response.Status = HttpStatusCode.OK; response.Send(); return; } bool useHtml = false; if (request.Method == "POST") { var fdp = new FormDecoderProvider(); fdp.Add(new MultipartDecoder()); fdp.Add(new UrlDecoder()); request.DecodeBody(fdp); } if (path.StartsWith("/?") || path.StartsWith("/test")) { useHtml = true; } if (DLRConsole.IsDougsMachine) { useHtml = true; } try { if (OverrideHandlers(request, response)) return; if (useHtml) { AddToBody(response, "<html>"); AddToBody(response, "<head>"); botname = GetVariable(request, "bot", _botClient.GetName()); AddToBody(response, "<title>" + botname + "</title>"); AddToBody(response, "</head>"); AddToBody(response, "<body>"); AddToBody(response, "<pre>"); foreach (var p in request.Param.AsEnumerable()) { foreach (var item in p.Values) { AddToBody(response, "" + p.Name + " = " + item); } } AddToBody(response, "</pre>"); AddToBody(response, "<a href='" + request.Uri.PathAndQuery + "'>" + request.Uri.PathAndQuery + "</a>"); AddToBody(response, "<pre>"); } string cmd = GetVariable(request, "cmd", "MeNe"); CmdResult res; // this is our default handler if (cmd != "MeNe") { res = _botClient.ExecuteXmlCommand(cmd + " " + GetVariable(request, "args", ""), request, wrresp.WriteLine); } else { try { InvokeAsMene(request, response, _botClient, pathd, wrresp); } catch (Exception exception) { LogInfo("InvokeAsMene exception: " + exception); } } if (useHtml) { AddToBody(response, "</pre>"); AddToBody(response, "</body>"); AddToBody(response, "</html>"); } } finally { wrresp.response = null; response.Status = HttpStatusCode.OK; try { response.Send(); } catch (Exception e) { LogInfo("Exception sening respose: " + e); } } }