Ejemplo n.º 1
0
    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));
    }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
    //-------------------------------------------------------------------------
    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);
        }
    }
Ejemplo n.º 5
0
 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());
     }
 }
Ejemplo n.º 6
0
        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);
        }