private bool SendResponse(HttpListenerContext listener) { DesktopRequest req; string[] cmdType = listener.Request.RawUrl.Substring(1).Split('/'); if (cmdType.Length > 1) { _ = int.TryParse(cmdType[0], out int t0); _ = int.TryParse(cmdType[1], out int t1); string postData = ""; using (var reader = new StreamReader(listener.Request.InputStream, listener.Request.ContentEncoding)) { postData = reader.ReadToEnd(); } req = new DesktopRequest(t0, t1, postData.Split('\n'), keyboard, recorder, capabilities, desktop, keyDown); keyDown = t1 == 2; } else { req = new DesktopRequest(-2, listener.Request.UserAgent.Equals(ATS_USER_AGENT), "wrong number of url parameters"); } return(req.Execute(listener)); }
public static Byte[] UploadFiles(String url, String files) { _lastMime = String.Empty; var dr = new DesktopRequest(); var result = dr.UploadFiles(url, files); _lastMime = dr.MimeType; return(result); }
public static Byte[] ProcessRequest(String url, String search, Byte[] post, Boolean postMethod) { _lastContentDisposition = String.Empty; _lastMime = String.Empty; var dr = new DesktopRequest(); var result = dr.ProcessRequest(url, search, post, postMethod); _lastMime = dr.MimeType; _lastContentDisposition = dr.ContentDisposition ?? String.Empty; return(result); }
//------------------------------------------------------------------------- async void c2sPlayerDesktopRequest(DesktopRequest desktop_request) { IRpcSession s = EntityMgr.LastRpcSession; ClientInfo client_info = CoApp.getClientInfo(s); if (client_info == null) { return; } var task = await Task.Factory.StartNew <Task <MethodData> >(async() => { MethodData method_data = new MethodData(); method_data.method_id = MethodType.c2sPlayerDesktopRequest; method_data.param1 = EbTool.protobufSerialize <DesktopRequest>(desktop_request); MethodData r = null; try { var grain_playerproxy = GrainClient.GrainFactory.GetGrain <ICellPlayer>(new Guid(client_info.et_player_guid)); r = await grain_playerproxy.c2sRequest(method_data); } catch (Exception ex) { EbLog.Error(ex.ToString()); } return(r); }); if (task.Status == TaskStatus.Faulted || task.Result == null) { if (task.Exception != null) { EbLog.Error(task.Exception.ToString()); } return; } MethodData result = task.Result; if (result.method_id == MethodType.None) { return; } lock (CoApp.RpcLock) { var desktop_response = EbTool.protobufDeserialize <DesktopResponse>(result.param1); CoApp.rpcBySession(s, (ushort)MethodType.s2cPlayerDesktopResponse, desktop_response); } }
public void Run() { while (isRunning) { _ = ThreadPool.QueueUserWorkItem((c) => { var ctx = c as HttpListenerContext; bool atsAgent = ctx.Request.UserAgent.Equals(ATS_USER_AGENT); try { SendResponse(ctx); } catch (Exception e) { DesktopRequest req = new DesktopRequest(-99, atsAgent, "error -> " + e.StackTrace.ToString()); isRunning = req.Execute(ctx); } }, listener.GetContext()); } }
public static Byte[] UploadFiles(String url, String files, String search) { _lastMime = String.Empty; var dr = new DesktopRequest() { Search = search }; Byte[] result; using (var resp = new DesktopResponse()) { if (url.StartsWith("_image/", StringComparison.OrdinalIgnoreCase)) { result = dr.SaveImage("/" + url, files, resp); } else { result = dr.UploadFiles(url, files, resp); } } _lastMime = dr.MimeType; _lastStatusCode = dr.StatusCode; return(result); }