private ResponseCode _handleGet(HttpListenerRequest req, HttpListenerResponse resp, string accesslog, string origin) { if (req.QueryString.Count > 0) { string host = req.QueryString["h"]; if (host == null || string.IsNullOrEmpty(host.Trim())) { return(ResponseCode.NotFound); } string form = "<form method=post onsubmit=\"result = 'submit'\"><h2>Do you want to allow {0} to print?</h2><input type=hidden name=\"host\" value=\"{0}\" /><input type=hidden name=\"status\" value=\"allow\" /><button >Allow</button><button type=button onclick=\"result = 'blocked'; window.close()\">Block</button></form>"; form = string.Format(form, host); string html = "<html><body>"; html += "<script>var result = 'closed'; window.addEventListener('beforeunload', (event) => { if (result !== 'submit') window.opener.postMessage(result, '" + host + "'); });</script>"; html += form; html += "</body></html>"; ServerConfig.appendLog(accesslog); server.responseHTML(resp, html); } else { PermissionResponse json = new PermissionResponse(); json.allowed = server.config.isAllowed(origin); ServerConfig.appendLog(accesslog); server.responseJSON(resp, json); } return(ResponseCode.OK); }
private ResponseCode _handlePost(HttpListenerRequest req, HttpListenerResponse resp, string accesslog) { if (!req.HasEntityBody) { return(ResponseCode.NotFound); } PrintJobResponse printjobresp = new PrintJobResponse(); try { using (Stream body = req.InputStream) { Encoding encoding = req.ContentEncoding; using (StreamReader reader = new StreamReader(body, encoding)) { string json = reader.ReadToEnd(); PrintJobPostBody printjob = ServerConfig.fromJSON <PrintJobPostBody>(json); body.Close(); reader.Close(); byte[] bindata = printjob.DataToByteArray(); bool success = false; if (server.config.testingMode == 1) { success = WritePrintJobFile(printjob.id, bindata); } else if (server.config.testingMode == 0) { success = RawPrintingHelper.SendBytesToPrinter(printjob.printer, bindata, printjob.id); } else { success = RawPrintingHelper.SendBytesToPrinter(printjob.printer, bindata, printjob.id) && WritePrintJobFile(printjob.id, bindata); } accesslog += "\tsuccess\t" + printjob.id + "\t" + printjob.printer; ServerConfig.appendLog(accesslog); printjobresp.success = true; printjobresp.data = printjob.id; } } } catch (Exception e) { ServerConfig.appendLog("Error: " + e.Message + "\n" + e.StackTrace); printjobresp.success = false; printjobresp.data = ""; accesslog += "\tfailed"; ServerConfig.appendLog(accesslog); } server.responseJSON(resp, printjobresp); return(ResponseCode.OK); }
private ResponseCode _handleGet(HttpListenerRequest req, HttpListenerResponse resp, string accesslog) { MachineInfoResponse packet = new MachineInfoResponse { machineName = System.Environment.MachineName }; packet.printers = ServerConfig.listPrinters(); ServerConfig.appendLog(accesslog); server.responseJSON(resp, packet); return(ResponseCode.OK); }
private ResponseCode _handlePost(HttpListenerRequest req, HttpListenerResponse resp, string accesslog) { if (!req.HasEntityBody) { return(ResponseCode.NotFound); } SettingsResponse settingsresp = new SettingsResponse(); try { using (Stream body = req.InputStream) { Encoding encoding = req.ContentEncoding; using (StreamReader reader = new StreamReader(body, encoding)) { string json = reader.ReadToEnd(); SettingsPostBody newSettings = ServerConfig.fromJSON <SettingsPostBody>(json); body.Close(); reader.Close(); if (newSettings.testingMode != server.config.testingMode) { server.config.testingMode = newSettings.testingMode; } accesslog += "\tsuccess"; ServerConfig.appendLog(accesslog); settingsresp.success = true; } } } catch (Exception e) { ServerConfig.appendLog("Error: " + e.Message + "\n" + e.StackTrace); settingsresp.success = false; accesslog += "\tfailed"; ServerConfig.appendLog(accesslog); } server.responseJSON(resp, settingsresp); return(ResponseCode.OK); }