public void Start() { var ipAddress = IpProvider.GetLocalIpAddress(AddressFamily.InterNetwork); var tcpListener = _InitializeListener(IPAddress.Parse(ipAddress)); tcpListener.Start(); while (true) { var message = new StringBuilder(); var tcpClient = tcpListener.AcceptTcpClient(); var bytes = new byte[256]; var stream = tcpClient.GetStream(); if (!stream.DataAvailable) { continue; } var numberOfBytes = stream.Read(bytes, 0, bytes.Length); message.AppendFormat("{0}", Encoding.ASCII.GetString(bytes, 0, numberOfBytes)); if (message.ToString() == string.Empty) { continue; } _windowMessageNotificator.UpdateOrCreateWindowIfNeeded( MessageParser.ParseMessageStringToObject(message.ToString())); } }
private void get_ip_providers() { providers.Clear(); string[] ps = AISSystem.AppSettingHelper.GetAppSetting("IPProviders").SplitWith("$;"); foreach (var p in ps) { string url = p.SubBefore("&provider_name"); string name = p.SubAfter("&provider_name=").SubBefore("&"); string ip_sp = p.SubAfter("&ip_sp=").SubBefore("&"); string port_sp = p.SubAfter("&port_sp=").SubBefore("&"); int? intervals = p.SubAfter("&intervals=").ExInt(); IpProvider pro = new IpProvider { name = name, url = url }; if (intervals.HasValue) { pro.intervals = intervals.Value; } if (!string.IsNullOrEmpty(ip_sp)) { pro.ip_sp = ip_sp; } if (!string.IsNullOrEmpty(port_sp)) { pro.port_sp = port_sp; } providers.Add(pro); log(pro.name + " Initialized"); } }
private void start_get_ips_from_paid_provider(object o) { IpProvider provider = o as IpProvider; while (true) { try { while ((DateTime.Now - provider.lst_get_ip_at).TotalMilliseconds < provider.intervals) { Thread.Sleep(1000); } provider.lst_get_ip_at = DateTime.Now; provider.get_times++; var _ips = get_ip_from_provider(provider.url, provider.ip_sp, provider.port_sp); if (_ips != null && _ips.Count > 0) { provider.total_ips += _ips.Count; _ips.ForEach(x => add_ip_if_pass_test(x, provider.name)); } //else // log(provider.name + " RETRUN EMPTY IP"); } catch (Exception ex) { log(provider.name + " ERROR :" + ex.Message); } } }
/// <summary>获取IP地址的物理地址位置</summary> /// <param name="addr"></param> /// <returns></returns> public static String GetAddress(this IPAddress addr) { if (addr.IsAny()) { return("任意地址"); } else if (IPAddress.IsLoopback(addr)) { return("本地环回地址"); } else if (addr.IsLocal()) { return("本机地址"); } if (_IpProvider == null) { _IpProvider = ObjectContainer.Current.AutoRegister <IpProvider, IpProviderDefault>().Resolve <IpProvider>(); } return(_IpProvider.GetAddress(addr)); }
private async Task <HttpResponseMessage> ValidateRequest(ApiKey key, HttpRequestMessage request, CancellationToken cancellationToken) { if (key.Type == ApiKey.ApplicationType.Browser) { var pattern = new Regex(key.RegexPattern, RegexOptions.IgnoreCase); var referrer = request.Headers.Referrer; var hasOrigin = request.Headers.Where(x => x.Key == Origin).ToList(); if (referrer == null && !hasOrigin.Any()) { return(request.CreateResponse(HttpStatusCode.BadRequest, new ResultContainer { Status = (int)HttpStatusCode.BadRequest, Message = "Referrer http header is missing. " + "Turn off any security solutions that hide this header to use this service." }, new MediaTypeHeaderValue("application/json"))); } if (!referrer.IsAbsoluteUri) { return(request.CreateResponse(HttpStatusCode.BadRequest, new ResultContainer { Status = (int)HttpStatusCode.BadRequest, Message = "Referrer http header is invalid. The value must be a vaid URI. e.g. http://my.url.com" }, new MediaTypeHeaderValue("application/json"))); } var corsOriginHeader = hasOrigin.FirstOrDefault(); var corsOriginValue = ""; if (corsOriginHeader.Key != null) { corsOriginValue = corsOriginHeader.Value.SingleOrDefault(); } if (key.AppStatus == ApiKey.ApplicationStatus.Development && IsLocalDevelopment(referrer, corsOriginValue)) { return(await base.SendAsync(request, cancellationToken)); } if (!ApiKeyPatternMatches(pattern, corsOriginValue, referrer)) { return(_invalidResponse); } } else { var ip = key.Pattern; var userHostAddress = IpProvider.GetIp(request); if (ip != userHostAddress) { return(request.CreateResponse(HttpStatusCode.BadRequest, new ResultContainer { Status = (int)HttpStatusCode.BadRequest, Message = string.Format("Invalid API key. The IP you provided does not match what the API " + "is receiving. Double check your API key or create a new one using `{0}` " + "as the pattern.", userHostAddress) }, new MediaTypeHeaderValue("application/json"))); } } return(null); }
/// <summary>获取IP地址的物理地址位置</summary> /// <param name="addr"></param> /// <returns></returns> public static String GetAddress(this IPAddress addr) { if (addr.IsAny()) return "任意地址"; else if (IPAddress.IsLoopback(addr)) return "本地环回地址"; else if (addr.IsLocal()) return "本机地址"; if (_IpProvider == null) _IpProvider = ObjectContainer.Current.AutoRegister<IpProvider, IpProviderDefault>().Resolve<IpProvider>(); return _IpProvider.GetAddress(addr); }