/// <summary>
        /// Creates a new SessionScriptingPipelineCommand.
        /// </summary>
        public SessionScriptingPipelineCommand(ScriptingHttpState state, HttpProxy proxy, Delegate callback)
        {
            Initialize();

            inspectorPipeline.ClientSettings = state.HttpRequestResponseContext.Request.RequestHttpSettings;
            inspectorPipeline.ProxySettings = proxy;
            HttpStateData = state;
            CallbackMethod = callback;
        }
Example #2
0
        private JObject ValidateOAuthTokenCreateUser(string authToken)
        {
            var redirect_url = HttpProxy.GetQueryString(CommonConst.CommonField.REDIRECT_URL_KEY);

            var        URL    = string.Format("https://graph.facebook.com/v2.8/me?access_token={0}&method=get&pretty=0&sdk=joey&suppress_http_code=1", authToken);
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(URL);

            // Add an Accept header for JSON format.
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

            // List data response.
            HttpResponseMessage response = client.GetAsync("").Result;  // Blocking call!

            if (response.IsSuccessStatusCode)
            {
                // Parse the response body. Blocking!
                var     dataObjects  = response.Content.ReadAsStringAsync().Result;
                JObject responseJson = JObject.Parse(dataObjects);
                if (responseJson[CommonConst.CommonField.DISPLAY_ID] == null || responseJson[CommonConst.CommonField.NAME] == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
                }
                else
                {
                    var userId = responseJson[CommonConst.CommonField.DISPLAY_ID].ToString();
                    if (CreateUser(userId, responseJson[CommonConst.CommonField.NAME].ToString(), UserIDType.Facebook))
                    {
                        return(CreateSesssion(authToken, userId, redirect_url));
                    }
                    else
                    {
                        return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
                    }
                }
            }
            else
            {
                return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
            }
        }
Example #3
0
        public void ProxyTest()
        {
            // Arrange
            IHttpProxy httpProxy = new HttpProxy();
            string     resource  = "https://www.domain.com/api/items";
            int        itemId    = 100;

            // Act
            var postResult   = httpProxy.Post($"{resource}", new { ItemId = 100, ItemName = "Item Name" });
            var putResult    = httpProxy.Put($"{resource}/{itemId}", new { ItemName = "Item New Name" });
            var getResult    = httpProxy.Get($"{resource}/{itemId}");
            var deleteResult = httpProxy.Delete($"{resource}/{itemId}");

            // Assert
            Assert.AreEqual(201, postResult.HttpStatusCode);
            Assert.AreEqual(200, putResult.HttpStatusCode);
            Assert.AreEqual(200, getResult.HttpStatusCode);
            Assert.AreEqual(200, deleteResult.HttpStatusCode);
        }
Example #4
0
            /// <summary>
            /// 从IWebProxy实例转换获得
            /// </summary>
            /// <param name="webProxy">IWebProxy</param>
            /// <param name="targetAddress">目标url地址</param>
            /// <exception cref="ArgumentNullException"></exception>
            /// <returns></returns>
            public static HttpProxy FromWebProxy(IWebProxy webProxy, Uri targetAddress)
            {
                if (webProxy == null)
                {
                    throw new ArgumentNullException(nameof(webProxy));
                }

                if (targetAddress == null)
                {
                    throw new ArgumentNullException(nameof(targetAddress));
                }

                var proxyAddress = webProxy.GetProxy(targetAddress);
                var httpProxy    = new HttpProxy(proxyAddress);

                httpProxy.SetCredentialsByInterface(webProxy.Credentials);

                return(httpProxy);
            }
Example #5
0
        public void GivenHttpProxy_WhenUpdated_ThenWebProxyShouldAlsoBeUpdatedToTheSame()
        {
            HttpProxy proxy = new HttpProxy();

            Http.Proxy = proxy;

            proxy.Enabled = true;
            proxy.Server  = "127.0.0.1";
            Assert.AreEqual(Http.WebProxy.Address, new Uri($"http://{proxy.Server}:{proxy.Port}"));
            Assert.IsNull(Http.WebProxy.Credentials);

            proxy.UserName = "******";
            Assert.NotNull(Http.WebProxy.Credentials);
            Assert.AreEqual(Http.WebProxy.Credentials.GetCredential(Http.WebProxy.Address, "Basic").UserName, proxy.UserName);
            Assert.AreEqual(Http.WebProxy.Credentials.GetCredential(Http.WebProxy.Address, "Basic").Password, "");

            proxy.Password = "******";
            Assert.AreEqual(Http.WebProxy.Credentials.GetCredential(Http.WebProxy.Address, "Basic").Password, proxy.Password);
        }
Example #6
0
        public void startProxy(int port)
        {
            if (!im.serverHelper.downloadServerInfo())
            {
                im.uiHelper.setStatusBarText("服务器列表获取失败!");
                return;
            }

            int servernum = im.serverHelper.getServersNumber();

            HttpProxy.Shutdown();

            HttpProxy.AfterSessionComplete += (obj) => Task.Run(() => { processData(obj); });
            HttpProxy.Startup(port, false, false);

            string proxyaddr = String.Format("{0}:{1}", im.serverHelper.getLocalAddress(), port);

            im.uiHelper.setStatusBarText(String.Format("代理在{0}上开启成功,等待连接……已添加{1}个服务器", proxyaddr, servernum));
        }
Example #7
0
        //private List<string> GetCurrentAuthGroups()
        //{
        //    var user = SessionProvider.GetValue<UserModel>(CommonConst.CommonValue.SESSION_USER_KEY);
        //    var auth_users = new List<String> { "*" };
        //    if (user != null)
        //    {
        //        auth_users.Add(user.user_id);
        //        auth_users.AddRange(user.groups);
        //    }
        //    return auth_users;
        //}

        //private bool IsValidaUser(JToken GalleryData)
        //{
        //    var auth_users = GetCurrentAuthGroups();
        //    bool isValid = false;


        //    foreach (var auth in GalleryData[ImageProcessor.AUTH_USERS])
        //    {
        //        if (auth_users.IndexOf(auth.ToString()) != -1)
        //        {
        //            isValid = true;
        //            break;
        //        }
        //    }
        //    return isValid;

        //}

        public JObject Get()
        {
            try
            {
                string fileHash = HttpProxy.GetQueryString(ImageProcessor.FILE_HASH);
                if (string.IsNullOrEmpty(fileHash))
                {
                    return(GetAll());
                }
                else
                {
                    return(GetFileInfo(fileHash));
                }
            }
            catch (Exception ex)
            {
                Logger.Error(GetAllMessages(ex), ex);
                return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
            }
        }
Example #8
0
        public void TestMethod1()
        {
            var port  = 9988;
            var proxy = new HttpProxy(port);

            proxy.OnRequestHeaders += (s, e) =>
            {
                Assert.AreEqual("www.google.com", e.Session.Request.Headers.Host);
            };
            proxy.Start();

            var httpClientHandler = new HttpClientHandler()
            {
                Proxy = new WebProxy(new Uri($"http://127.0.0.1:{port}")),
            };
            var c   = new HttpClient(httpClientHandler);
            var res = c.GetAsync("http://www.google.com").Result;

            proxy.Stop();
        }
Example #9
0
    private void OnRequestErrorHandle(BaseEvent e)
    {
        RequestErrorEvent evt = e as RequestErrorEvent;

        if (evt.type == RequestErrorEvent.Type.AnalysisError)
        {
            if (GameMainManager.instance.uiManager != null)
            {
                Alert.Show("数据解析错误");
                Waiting.Disable();
            }
        }
        else if (evt.type == RequestErrorEvent.Type.TimeOut)
        {
            Debug.Log(string.Format("请求失败:{0} 正在尝试重新请求", evt.request.State.ToString()));
            if (GameMainManager.instance.uiManager != null)
            {
                GameMainManager.instance.uiManager.isWaiting = false;
                Alert.Show("连接失败:" + evt.request.State.ToString(), Alert.OK | Alert.CANCEL, (isOK) => {
                    if (isOK == Alert.OK)
                    {
                        HttpProxy.SendRequest(evt.request);
                    }
                }, "重试");

                Waiting.Disable();
            }
            else
            {
                HttpProxy.SendRequest(evt.request);
            }
        }
        else
        {
            if (GameMainManager.instance.uiManager != null)
            {
                Debug.Log(string.Format("请求失败:{0} |{1}", evt.type.ToString(), evt.request.Uri));
                Waiting.Disable();
            }
        }
    }
Example #10
0
    /// <summary>
    /// Get Store
    /// </summary>
    /// <param name="storeID"></param>
    /// <param name="handlerFile"></param>
    /// <param name="tableName"></param>
    /// <param name="valueField"></param>
    /// <param name="DisplayField"></param>
    /// <returns></returns>
    public Ext.Net.Store GetStore(string storeID, string handlerFile, string tableName, string valueField, string DisplayField)
    {
        Ext.Net.Store store = new Ext.Net.Store()
        {
            AutoLoad = false,
            ID       = storeID,
        };
        store.BaseParams.Add(new Ext.Net.Parameter()
        {
            Name = "Table", Value = tableName
        });
        store.BaseParams.Add(new Ext.Net.Parameter()
        {
            Name = "ValueField", Value = valueField
        });
        store.BaseParams.Add(new Ext.Net.Parameter()
        {
            Name = "DisplayField", Value = DisplayField
        });
        JsonReader jsonReader = new JsonReader();

        jsonReader.IDProperty = "ID";
        jsonReader.Root       = "Data";

        HttpProxy proxy = new HttpProxy()
        {
            Method = HttpMethod.GET,
            Url    = handlerFile,// "~/Modules/Base/ComboHandler.ashx"
        };

        store.Proxy.Add(proxy);
        string[] columnName = { valueField, DisplayField };
        foreach (var item in columnName)
        {
            RecordField field = new RecordField();
            field.Name = item;
            jsonReader.Fields.Add(field);
        }
        store.Reader.Add(jsonReader);
        return(store);
    }
Example #11
0
        /// <summary>
        /// 通信の受信を開始します。
        /// </summary>
        /// <param name="portID">受信に使用するポート番号。</param>
        /// <param name="UIControl">GUI スレッドで実行するためのオブジェクト。中身は何でもいい</param>
        /// <returns>実際に使用されるポート番号。</returns>
        public int Start(int portID, Control UIControl)
        {
            Utility.Configuration.ConfigurationData.ConfigConnection c = Utility.Configuration.Config.Connection;


            this.UIControl = UIControl;


            HttpProxy.Shutdown();
            try
            {
                if (c.UseUpstreamProxy)
                {
                    HttpProxy.UpstreamProxyConfig = new ProxyConfig(ProxyConfigType.SpecificProxy, c.UpstreamProxyAddress, c.UpstreamProxyPort);
                }
                else if (c.UseSystemProxy)
                {
                    HttpProxy.UpstreamProxyConfig = new ProxyConfig(ProxyConfigType.SystemProxy);
                }
                else
                {
                    HttpProxy.UpstreamProxyConfig = new ProxyConfig(ProxyConfigType.DirectAccess);
                }

                HttpProxy.Startup(portID, false, false);
                ProxyPort = portID;


                ProxyStarted();

                Utility.Logger.Add(2, string.Format("APIObserver: ポート {0} 番で受信を開始しました。", portID));
            }
            catch (Exception ex)
            {
                Utility.Logger.Add(3, "APIObserver: 受信開始に失敗しました。" + ex.Message);
                ProxyPort = 0;
            }


            return(ProxyPort);
        }
Example #12
0
        public JObject Create()
        {
            try
            {
                var user = SessionProvider.GetValue <UserModel>(CommonConst.CommonValue.SESSION_USER_KEY);
                if (user == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
                }

                var requestBody = HttpProxy.GetRequestBody <JObject>();
                if (requestBody == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }
                if (requestBody[ImageProcessor.DISPLAY_NAME] == null || requestBody[ImageProcessor.DESCRIPTION] == null || requestBody[ImageProcessor.AUTH_USERS] == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }

                JObject newAblum = new JObject();
                newAblum[CommonConst.CommonField.DISPLAY_ID] = CommonUtility.GetNewID();
                newAblum[CommonConst.CommonField.NAME]       = string.Format("{0}-{1}", user.name, newAblum[CommonConst.CommonField.DISPLAY_ID].ToString());
                newAblum[ImageProcessor.DISPLAY_NAME]        = requestBody[ImageProcessor.DISPLAY_NAME].ToString();
                newAblum[ImageProcessor.FILES_COUNT]         = 0;
                newAblum[ImageProcessor.DESCRIPTION]         = requestBody[ImageProcessor.DESCRIPTION].ToString();
                newAblum[ImageProcessor.AUTH_USERS]          = new JArray();
                foreach (var e in (requestBody[ImageProcessor.AUTH_USERS] as JArray))
                {
                    (newAblum[ImageProcessor.AUTH_USERS] as JArray).Add(e.ToString());
                }
                newAblum[ImageProcessor.OWNER] = user.user_id;
                DBProxy.Write(ImageProcessor.MYPHOTO_GALLERY_COLLECTION, newAblum);
                return(ResponseBuilder.CreateReponse(CommonConst._1_SUCCESS, newAblum));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
            }
        }
Example #13
0
        public bool startProxy(int port)
        {
            try
            {
                HttpProxy.Shutdown();

                HttpProxy.AfterSessionComplete += (obj) => Task.Run(() => { WaitForServerDownload(obj); });
                //HttpProxy.AfterSessionComplete += (obj) => Task.Run(() => { processData(obj); });
                HttpProxy.Startup(port, false, false);
            }
            catch (Exception)
            {
                im.uiHelper.setStatusBarText(String.Format("端口{0}已被占用!请尝试更换端口!", port));
                return(false);
            }

            string proxyaddr = String.Format("{0}:{1}", im.serverHelper.GetLocalAddress(), port);

            im.uiHelper.setStatusBarText(String.Format("代理在{0}上开启成功,等待连接……", proxyaddr));
            return(true);
        }
Example #14
0
        static void Test3()
        {
            //var _server = new NetServer();
            //var _server = new DNSServer();
            var _server = new HttpProxy();

            //_server.Port = 8888;
            _server.Log       = XTrace.Log;
            _server.SocketLog = Logger.Null;
            //_server.SessionLog = Logger.Null;
            _server.SessionLog = XTrace.Log;
            _server.Start();

            while (true)
            {
                //var svr = _server.Servers[0] as TcpServer;
                var svr = _server;
                Console.Title = "会话数:{0} 连接:{1} 发送:{2} 接收:{3}".F(_server.SessionCount, svr.StatSession, svr.StatSend, svr.StatReceive);
                Thread.Sleep(1000);
            }
        }
Example #15
0
        /// <summary>
        /// 扫描代理ip
        /// </summary>
        static async void ScanProxy()
        {
            var timeout = TimeSpan.FromMilliseconds(500d);
            var target  = new Uri("http://www.baidu.com");

            var proxyValidators = HttpProxy
                                  .Range(IPAddress.Parse("221.122.13.1"), 8080, 9999)
                                  .Select(p => p.ToValidator());

            var tasks = proxyValidators.Select(async v =>
            {
                Interlocked.Increment(ref totalProxyCount);
                if (await v.ValidateAsync(target, timeout) == HttpStatusCode.OK)
                {
                    Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss.fff")}:扫描到代理服务:{v}");
                }
                var completed = Interlocked.Increment(ref completedProxyCount);
                Console.Title = $"代理扫描进度:{completed}/{Interlocked.Read(ref totalProxyCount)}";
            });
            await Task.WhenAll(tasks);
        }
Example #16
0
        public JObject AddImage()
        {
            try
            {
                var galleryId = HttpProxy.GetQueryString(ImageProcessor.GALLERY_ID);
                var user      = SessionProvider.GetValue <UserModel>(CommonConst.CommonValue.SESSION_USER_KEY);


                if (string.IsNullOrEmpty(galleryId))
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }
                if (!ImageGalleryHelper.IsOwner(DBProxy, SessionProvider, galleryId))
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
                }
                Logger.Debug(string.Format("File Count {0}", _fileUploader.GetFiles().Count));
                if (_fileUploader.GetFiles().Count > 0)
                {
                    JArray fileHashs = new JArray();
                    foreach (var fileName  in _fileUploader.GetFiles())
                    {
                        fileHashs.Add(UploadFile(galleryId, user, fileName, KeyValueStorage));
                    }
                    JObject responseData = new JObject();
                    responseData[ImageProcessor.FILE_HASHS] = fileHashs;
                    return(ResponseBuilder.CreateReponse(CommonConst._1_SUCCESS, responseData));
                }
                else
                {
                    Logger.Error("no File found");
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
            }
        }
        protected override void OnStart(string[] args)
        {
            _logger = new Logger();

            try
            {
                var contentServers = new List<IPEndPoint>
                    {
                        new IPEndPoint(new IPAddress(new byte[] {127, 0, 0, 1}), 8081),
                        new IPEndPoint(new IPAddress(new byte[] {127, 0, 0, 1}), 8082)
                    };
                var endPoint = new IPEndPoint(new IPAddress(new byte[] {127, 0, 0, 1}), 80);
                var portListener = new PortListener(endPoint);

                _httpProxy = new HttpProxy(contentServers, portListener, new RequestMessageBuilder(), new ResponseStreamWriter());
                _httpProxy.Start();
            }
            catch (Exception ex)
            {
                _logger.LogException(ex);
            }
        }
Example #18
0
 public void Initialize()
 {
     //启动时恢复host
     hostsService.RemoveHostsByTag();
     if (ProxySettings.SupportProxyServicesStatus.Value.Count > 0)
     {
         foreach (var item in ProxyDomains.Value)
         {
             if (ProxySettings.SupportProxyServicesStatus.Value.TryGetValue(item.Index, out bool value))
             {
                 item.IsEnable = value;
             }
         }
     }
     Proxy = new HttpProxy(ProxyDomains.Value, ProductInfo.Product);
     InitJsScript();
     Proxy.IsEnableScript = IsEnableScript;
     if (ProxySettings.ProgramStartupRunProxy.Value)
     {
         ProxyStatus = true;
     }
 }
        private JObject ValidateOAuthTokenCreateUser(string authToken)
        {
            var redirect_url = HttpProxy.GetQueryString(CommonConst.CommonField.REDIRECT_URL_KEY);

            var        URL    = string.Format("https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}", authToken);
            HttpClient client = new HttpClient();

            client.BaseAddress = new Uri(URL);
            HttpResponseMessage response = client.GetAsync("").Result;

            Logger.Debug("Getting data");
            if (response.IsSuccessStatusCode)
            {
                var     dataObjects  = response.Content.ReadAsStringAsync().Result;
                JObject responseJson = JObject.Parse(dataObjects);
                Logger.Debug("Data", responseJson);
                if (responseJson["sub"] != null)
                {
                    var userId = responseJson["sub"].ToString();
                    if (CreateUser(userId, responseJson[CommonConst.CommonField.NAME].ToString(), UserIDType.Google))
                    {
                        return(CreateSesssion(authToken, userId, redirect_url));
                    }
                    else
                    {
                        return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
                    }
                }
                else
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
                }
            }
            else
            {
                Logger.Debug("Http  error " + response.RequestMessage);
                return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
            }
        }
Example #20
0
        private Proxy()
        {
            this.Handlers = new List <ProxyHandler>();
            if (Helper.IsInDesignMode)
            {
                return;
            }

            HttpProxy.Startup(49217, false, true);
            HttpProxy.AfterSessionComplete += (_ =>
            {
                var handlers = this.Handlers.ToArray();
                foreach (var x in handlers)
                {
                    if ((x.Where == null) || (_.Request.PathAndQuery == x.Where))
                    {
                        x.Handler.Invoke(_);
                    }
                }
                ;
            });
        }
Example #21
0
        public JObject Login()
        {
            Logger.Debug("Calling LoginController.Login");
            JObject request = HttpProxy.GetRequestBody <JObject>();

            if (request == null)
            {
                return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
            }

            var user_id           = request[CommonConst.CommonField.USER_ID].ToString();
            var password          = request[CommonConst.CommonField.PASSWORD].ToString();
            var recaptchaResponse = request[ModuleAppConsts.Field.GOOGLE_RECAPTCHA_RESPONSE_KEY].ToString();

            if (!GoogleCaptchaHelper.ValidateResponse(Logger, recaptchaResponse, AppSettingService.GetAppSettingData(ModuleAppConsts.Field.GOOGLE_INVISIBLE_RECAPTCHA_SECRECT_SETTING_KEY), AppSettingService.GetAppSettingData(ModuleAppConsts.Field.GOOGLE_RECAPTCHA_VALIDATE_URL_SETTING_KEY)))
            {
                Logger.Info("Captcha validate fail");
                return(ResponseBuilder.CreateReponse(AppResponseCode._CAPTCHA_VALIDATION_FAIL));
            }
            if (Validate(user_id, password))
            {
                JObject user = DBProxy.FirstOrDefault(CommonConst.Collection.USERS, CommonConst.CommonField.USER_ID, user_id);
                if (user == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED, user));
                }
                else
                {
                    UserModel userModel = JObjectHelper.Deserialize <UserModel>(user);
                    SessionProvider.SetValue <UserModel>(CommonConst.CommonValue.SESSION_USER_KEY, userModel);
                    return(ResponseBuilder.CreateReponse(CommonConst._1_SUCCESS));
                }
            }
            else
            {
                return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
            }
        }
        public JObject Auth()
        {
            try
            {
                var request = HttpProxy.GetRequestBody <JObject>();
                if (request[ModuleAppConsts.Field.AUTH_TOKEN] == null)
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }
                var authToken = request[ModuleAppConsts.Field.AUTH_TOKEN].ToString();
                if (isOauthVerification)
                {
                    return(ValidateOAuthTokenCreateUser(authToken));
                }
                else
                {
                    if (request[CommonConst.CommonField.USER_ID] == null || request[CommonConst.CommonField.NAME] == null)
                    {
                        return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                    }

                    Logger.Debug(string.Format("User id:{0}, Name:{1}, AuthToken:{2}", request[CommonConst.CommonField.USER_ID].ToString(), request[CommonConst.CommonField.NAME].ToString(), authToken));
                    if (CreateUser(request[CommonConst.CommonField.USER_ID].ToString(), request[CommonConst.CommonField.NAME].ToString(), UserIDType.Google))
                    {
                        return(CreateSesssion(authToken, request[CommonConst.CommonField.USER_ID].ToString()));
                    }
                    else
                    {
                        return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
                    }
                }
            }
            catch (Exception)
            {
                return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
            }
        }
Example #23
0
        private JObject GetFileInfo(string fileHash)
        {
            var galleryId = HttpProxy.GetQueryString(ImageProcessor.GALLERY_ID);

            if (string.IsNullOrEmpty(galleryId))
            {
                return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
            }
            var galleryImages = GetGalleryImages(galleryId);

            if (galleryImages[CommonConst.CommonField.HTTP_RESPONE_CODE].ToString() != "1")
            {
                return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
            }

            var data = ImageGalleryHelper.GetImageData(DBProxy, SessionProvider, fileHash, new List <string> {
                ImageProcessor.METADATA, ImageProcessor.TAGS, ImageProcessor.FILE_PATHS
            });

            if (data.Count == 0)
            {
                return(ResponseBuilder.CreateReponse(CommonConst._404_RESOURCE_NOT_FOUND));
            }
            else
            {
                AddToUserView(galleryId, fileHash);
                //JArray files = galleryImages[CommonConst.CommonField.DATA][ImageProcessor.IMAGES] as JArray;
                //data[0][ImageProcessor.RELATED_FILES] = new JArray();
                //for (int i = 0; i < 10 && i < files.Count; i++)
                //{
                //    (data[0][ImageProcessor.RELATED_FILES] as JArray).Add(files[GetRandomNumberInRange(1, (files.Count - 1))]);
                //}

                return(ResponseBuilder.CreateReponse(CommonConst._1_SUCCESS, data[0]));
            }
        }
Example #24
0
 public void Shutdown()
 {
     this.compositeDisposable.Dispose();
     HttpProxy.Shutdown();
 }
        /// <summary>
        /// 通信の受信を停止します。
        /// </summary>
        public void Stop()
        {
            HttpProxy.Shutdown();

            Utility.Logger.Add(2, "APIObserver: 受信を停止しました。");
        }
 public UnitTestSessionProcessor(UnitTestSession uts, HttpProxy proxySettings,HttpProperties httpProperties)
 {
     this.CurrentUnitTestSession = uts;
     this.Proxy = proxySettings;
     this.ProtocolProperties = httpProperties;
 }
Example #27
0
        private void StartConnect()
        {
            try
            {
                CreateRemote();

                // Setting up proxy
                IProxy   remote;
                EndPoint proxyEP  = null;
                EndPoint serverEP = SocketUtil.GetEndPoint(_server.server, _server.server_port);
                EndPoint pluginEP = _controller.GetPluginLocalEndPointIfConfigured(_server);

                if (pluginEP != null)
                {
                    serverEP = pluginEP;
                    remote   = new DirectConnect();
                }
                else if (_config.proxy.useProxy)
                {
                    switch (_config.proxy.proxyType)
                    {
                    case ProxyConfig.PROXY_SOCKS5:
                        remote = new Socks5Proxy();
                        break;

                    case ProxyConfig.PROXY_HTTP:
                        remote = new HttpProxy();
                        break;

                    default:
                        throw new NotSupportedException("Unknown forward proxy.");
                    }
                    proxyEP = SocketUtil.GetEndPoint(_config.proxy.proxyServer, _config.proxy.proxyPort);
                }
                else
                {
                    remote = new DirectConnect();
                }

                var session = new AsyncSession(remote);
                lock (_closeConnLock)
                {
                    if (_closed)
                    {
                        remote.Close();
                        return;
                    }

                    _currentRemoteSession = session;
                }

                ProxyTimer proxyTimer = new ProxyTimer(_proxyTimeout)
                {
                    AutoReset = false
                };
                proxyTimer.Elapsed += ProxyConnectTimer_Elapsed;
                proxyTimer.Enabled  = true;

                proxyTimer.Session      = session;
                proxyTimer.DestEndPoint = serverEP;
                proxyTimer.Server       = _server;

                _proxyConnected = false;

                // Connect to the proxy server.
                remote.BeginConnectProxy(proxyEP, ProxyConnectCallback,
                                         new AsyncSession <ProxyTimer>(remote, proxyTimer));
            }
            catch (Exception e)
            {
                Logger.LogUsefulException(e);
                Close();
            }
        }
Example #28
0
        /// <summary>
        /// Proxies a request inside of a controller's method body from the request on the controller's route.
        /// </summary>
        /// <param name="controller">The ASP.NET <see cref="ControllerBase"/>.</param>
        /// <param name="httpEndpoint">The HTTP endpoint to use.</param>
        /// <param name="httpProxyOptions">The HTTP options.</param>
        /// <returns>A <see cref="Task"/> which completes when the request has been successfully proxied and written to the response.</returns>
        public static Task HttpProxyAsync(this ControllerBase controller, string httpEndpoint, HttpProxyOptions httpProxyOptions = null)
        {
            var httpProxy = new HttpProxy((c, a) => new ValueTask <string>(httpEndpoint), httpProxyOptions);

            return(controller.HttpContext.ExecuteHttpProxyOperationAsync(httpProxy));
        }
Example #29
0
        /// <summary>
        /// 通信の受信を停止します。
        /// </summary>
        public void Stop()
        {
            HttpProxy.Shutdown();

            Utility.Logger.Add(2, LoggerRes.APIObserverStopped);
        }
Example #30
0
        internal static async Task ExecuteHttpProxyOperationAsync(this HttpContext context, HttpProxy httpProxy)
        {
            var uri = await context.GetEndpointFromComputerAsync(httpProxy.EndpointComputer).ConfigureAwait(false);

            var options = httpProxy.Options;

            try
            {
                var httpClient = context.RequestServices
                                 .GetService <IHttpClientFactory>()
                                 .CreateClient(options?.HttpClientName ?? Helpers.HttpProxyClientName);

                // If `true`, this proxy call has been intercepted.
                if (options?.Intercept != null && await options.Intercept(context).ConfigureAwait(false))
                {
                    return;
                }

                if (context.WebSockets.IsWebSocketRequest)
                {
                    throw new InvalidOperationException("A WebSocket request cannot be routed as an HTTP proxy operation.");
                }

                if (!uri.StartsWith("http", StringComparison.OrdinalIgnoreCase))
                {
                    if (httpClient.BaseAddress != null)
                    {
                        uri = $"{httpClient.BaseAddress}{uri}";
                    }
                    else
                    {
                        throw new InvalidOperationException("Only forwarded addresses starting with 'http://' or 'https://' are supported for HTTP requests.");
                    }
                }

                var proxiedRequest = context.CreateProxiedHttpRequest(uri, options?.ShouldAddForwardedHeaders ?? true);

                if (options?.BeforeSend != null)
                {
                    await options.BeforeSend(context, proxiedRequest).ConfigureAwait(false);
                }
                var proxiedResponse = await context
                                      .SendProxiedHttpRequestAsync(proxiedRequest, httpClient)
                                      .ConfigureAwait(false);

                if (options?.AfterReceive != null)
                {
                    await options.AfterReceive(context, proxiedResponse).ConfigureAwait(false);
                }
                await context.WriteProxiedHttpResponseAsync(proxiedResponse).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                if (!context.Response.HasStarted)
                {
                    if (options?.HandleFailure == null)
                    {
                        // If the failures are not caught, then write a generic response.
                        context.Response.StatusCode = 502 /* BAD GATEWAY */;
                        await context.Response.WriteAsync($"Request could not be proxied.\n\n{e.Message}\n\n{e.StackTrace}").ConfigureAwait(false);

                        return;
                    }

                    await options.HandleFailure(context, e).ConfigureAwait(false);
                }
            }
        }
Example #31
0
        public JObject Rotate()
        {
            try
            {
                var fileHash  = HttpProxy.GetQueryString(ImageProcessor.FILE_HASH);
                var galleryId = HttpProxy.GetQueryString(ImageProcessor.GALLERY_ID);

                if (string.IsNullOrEmpty(fileHash) || string.IsNullOrEmpty(galleryId))
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._400_BAD_REQUEST));
                }

                if (!ImageGalleryHelper.IsOwner(DBProxy, SessionProvider, galleryId))
                {
                    return(ResponseBuilder.CreateReponse(CommonConst._401_UNAUTHORIZED));
                }

                var fileData = ImageGalleryHelper.GetImage(DBProxy, fileHash);

                if (fileHash == null)
                {
                    Logger.Error(string.Format("File not found ::{0}", fileHash));
                    return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
                }


                var path           = string.Empty;
                var baseFolderPath = AppSettingService.GetAppSettingData("my_photo_path");
                if (string.IsNullOrEmpty(baseFolderPath))
                {
                    throw new KeyNotFoundException("my_photo_path");
                }
                if (fileData[ImageProcessor.FILE_PATHS] == null)
                {
                    throw new KeyNotFoundException(ImageProcessor.FILE_PATHS);
                }

                Logger.Debug(string.Format("Getting file info BasePath  : {0}", baseFolderPath));
                foreach (var item in fileData[ImageProcessor.FILE_PATHS])
                {
                    if (File.Exists(string.Concat(baseFolderPath, "\\", item.ToString())))
                    {
                        path = string.Concat(baseFolderPath, "\\", item.ToString());
                        break;
                    }
                }
                if (!File.Exists(path))
                {
                    throw new FileNotFoundException(path);
                }

                var changesetNo = 0;
                if (fileData[ImageProcessor.CHANGESET_NO] != null)
                {
                    Logger.Debug(string.Format("changesetNo value from  fileData {0}", fileData[ImageProcessor.CHANGESET_NO].ToString()));
                    int.TryParse(fileData[ImageProcessor.CHANGESET_NO].ToString(), out changesetNo);
                }
                else
                {
                    Logger.Debug(string.Format("changesetNo is null in fileData"));
                }

                Logger.Debug(string.Format("Image  file path info BasePath  : {0} File Name :{1}", baseFolderPath, path));

                using (var image = ImageGalleryHelper.GetImageBitmapFromFile(path))
                {
                    Logger.Debug(string.Format("Processing Image BasePath  : {0} File Name :{1}", baseFolderPath, path));

                    int rotate = 90;
                    if (fileData[ImageProcessor.IMAGE_ROTATE] != null && int.TryParse(fileData[ImageProcessor.IMAGE_ROTATE].ToString(), out rotate))
                    {
                        rotate += 90;
                        if (rotate >= 360)
                        {
                            rotate = 0;
                        }
                    }
                    switch (rotate)
                    {
                    case 90:
                        ImageGalleryHelper.ProcessImage(fileData, image, KeyValueStorage, RotateFlipType.Rotate90FlipNone);
                        Logger.Debug(string.Format("Rotate image to {0}. {1}", rotate, RotateFlipType.Rotate90FlipNone.ToString()));
                        break;

                    case 180:
                        ImageGalleryHelper.ProcessImage(fileData, image, KeyValueStorage, RotateFlipType.Rotate180FlipNone);
                        Logger.Debug(string.Format("Rotate image to {0}. {1}", rotate, RotateFlipType.Rotate180FlipNone.ToString()));
                        break;

                    case 270:
                        ImageGalleryHelper.ProcessImage(fileData, image, KeyValueStorage, RotateFlipType.Rotate270FlipNone);
                        Logger.Debug(string.Format("Rotate image to {0}. {1}", rotate, RotateFlipType.Rotate270FlipNone.ToString()));
                        break;

                    default:
                        ImageGalleryHelper.ProcessImage(fileData, image, KeyValueStorage, RotateFlipType.RotateNoneFlipNone);
                        Logger.Debug(string.Format("Rotate image to {0}. {1}", rotate, RotateFlipType.RotateNoneFlipNone.ToString()));
                        break;
                    }

                    fileData[ImageProcessor.IMAGE_ROTATE] = rotate;
                }

                Logger.Debug(string.Format("changesetNo : {0}. FileHash: {1}", changesetNo, fileHash));

                fileData[ImageProcessor.CHANGESET_NO] = (changesetNo + 1);

                JObject filter = new JObject();
                filter[ImageProcessor.FILE_HASH] = fileHash;
                DBProxy.Update(ImageProcessor.MYPHOTO_COLLECTION, filter.ToString(), fileData, true, MergeArrayHandling.Replace);

                fileData.Remove(ImageProcessor.IMAGE_L_BASE64);
                fileData.Remove(ImageProcessor.IMAGE_M_BASE64);
                fileData.Remove(ImageProcessor.IMAGE_S_BASE64);

                return(ResponseBuilder.CreateReponse(CommonConst._1_SUCCESS, fileData));
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                return(ResponseBuilder.CreateReponse(CommonConst._500_SERVER_ERROR));
            }
        }
Example #32
0
 /// <summary>
 /// http代理描述
 /// </summary>
 /// <param name="host">域名或ip</param>
 /// <param name="port">端口</param>
 /// <exception cref="ArgumentNullException"></exception>
 public ProxyAttribute(string host, int port)
 {
     this.httpProxy = new HttpProxy(host, port);
 }
Example #33
0
 /// <summary>
 /// http代理描述
 /// </summary>
 /// <param name="host">域名或ip</param>
 /// <param name="port">端口</param>
 /// <param name="userName">账号</param>
 /// <param name="password">密码</param>
 /// <exception cref="ArgumentNullException"></exception>
 public ProxyAttribute(string host, int port, string userName, string password)
 {
     this.httpProxy = new HttpProxy(host, port, userName, password);
 }
Example #34
0
 public ConfigSettings()
 {
     runTimeSettings = new RuntimeSettings();
     reportSettings = new ReportSettings();
     httpProxy = new HttpProxy();
     imageCompareSettings = new ImageCompareSettings();
     purpleSettings = new PurpleSettings();
     browserStackSettings = new BrowserStackSettings();
     sauceLabsSettings = new SauceLabsSettings();
 }