/// <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; }
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)); } }
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); }
/// <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); }
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); }
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)); }
//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)); } }
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(); }
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(); } } }
/// <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); }
/// <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); }
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)); } }
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); }
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); } }
/// <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); }
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); } }
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)); } }
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(_); } } ; }); }
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)); } }
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])); } }
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; }
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(); } }
/// <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)); }
/// <summary> /// 通信の受信を停止します。 /// </summary> public void Stop() { HttpProxy.Shutdown(); Utility.Logger.Add(2, LoggerRes.APIObserverStopped); }
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); } } }
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)); } }
/// <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); }
/// <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); }
public ConfigSettings() { runTimeSettings = new RuntimeSettings(); reportSettings = new ReportSettings(); httpProxy = new HttpProxy(); imageCompareSettings = new ImageCompareSettings(); purpleSettings = new PurpleSettings(); browserStackSettings = new BrowserStackSettings(); sauceLabsSettings = new SauceLabsSettings(); }