public void PrintResorceLocation() { foreach (KeyValuePair <string, stWebResourceLocator> pair in this._ResourceLocator) { stWebResourceLocator rl = pair.Value as stWebResourceLocator; stConsole.WriteLine( pair.Key + "\n\t - IPFilter: " + (rl.IPFilter != null).ToString() + "\n\t - CallBack: " + ((rl.ReqCallBack != null) ? rl.ReqCallBack.Method.Name : "*CallBack none") + "\n\t - IpFilterType: " + ((rl.IPFilter != null) ? rl.IPFilter.IpFilterType.ToString() : "*IPFilter is null") + "\n\t - GeoFilterType: " + ((rl.IPFilter != null) ? rl.IPFilter.GeoAsnFilterType.ToString() : "*IPFilter is null") + "\n\t - List.IpRange: " + (rl.IPFilter.IpRange != null).ToString() + ", Count: " + ((rl.IPFilter != null) ? ((rl.IPFilter.IpRange != null) ? rl.IPFilter.IpRange.Count : 0) : 0) + "\n\t - List.GeoDataASN: " + (rl.IPFilter.GeoDataASN != null).ToString() + ", Count: " + ((rl.IPFilter != null) ? ((rl.IPFilter.GeoDataASN != null) ? rl.IPFilter.GeoDataASN.Count : 0) : 0) + "\n\t - List.GeoDataCounry: " + (rl.IPFilter.GeoDataCounry != null).ToString() + ", Count: " + ((rl.IPFilter != null) ? ((rl.IPFilter.GeoDataCounry != null) ? rl.IPFilter.GeoDataCounry.Count : 0) : 0) ); } }
private void _OnRequest(object ctx) { bool isRequestFound = false; HttpListenerContext context = ctx as HttpListenerContext; context.Response.Headers.Add(@"Server", this._httpUa); context.Response.ProtocolVersion = new Version("1.1"); try { int statusCode = 0; string respTxt = String.Empty; WebHandleTypes wht = WebHandleTypes.None; foreach (KeyValuePair <string, stWebResourceLocator> pair in this._ResourceLocator) { if (context.Request.RawUrl.StartsWith(pair.Key)) { stWebResourceLocator rl = pair.Value as stWebResourceLocator; if (rl.IPFilter != null) { if (rl.IPFilter.IpFilterCheck( stWebServerUtil.HttpUtil.GetHttpClientIP(context.Request)) ) { wht = rl.HandleTypes; respTxt = HttpStatusCode.Forbidden.ToString(); statusCode = (int)HttpStatusCode.Forbidden; break; } } rl.ReqCallBack(context.Request.RawUrl, context, this._userData); statusCode = (int)HttpStatusCode.OK; isRequestFound = true; break; } } if (!isRequestFound) { respTxt = ((string.IsNullOrWhiteSpace(respTxt)) ? context.Request.RawUrl : respTxt); context.Response.StatusCode = ((statusCode > 0) ? statusCode : (int)HttpStatusCode.BadRequest); if (this._badReq != null) { this._badReq( respTxt, context.Request, context.Response, this._userData ); } else { switch (wht) { default: case WebHandleTypes.None: case WebHandleTypes.TemplateWebRequest: case WebHandleTypes.FileWebRequest: { this.BadRequestHtml( respTxt, context, statusCode ); break; } case WebHandleTypes.JsonWebRequest: { this.BadRequestJson( respTxt, context, statusCode ); break; } } } } } catch (Exception e) { this._iLog.LogError(Properties.Resources.httpListenerExceptionOnReq + e.Message); } }
private void _AddHandler(WebHandleTypes ht, Action <string, object, object> httpRequestHandler, stIPFilter ipFilter, string path, string dir) { this._Check(); if (httpRequestHandler == null) { throw new ArgumentNullException(Properties.Resources.httpCallbackNull); } if (string.IsNullOrWhiteSpace(path)) { path = httpRequestHandler.ToString(); } path = ((!path.StartsWith("/")) ? "/" + path : path); path = ((!path.EndsWith("/")) ? path + "/" : path); stWebResourceLocator resLocator = new stWebResourceLocator() { IPFilter = ((ipFilter == null) ? new stIPFilter() : ipFilter), ReqCallBack = httpRequestHandler, HandleTypes = ht }; if (!this._ResourceLocator.ContainsKey(path)) { this._ResourceLocator.Add(path, resLocator); } else { this._ResourceLocator[path] = resLocator; } if (!this._listener.Prefixes.Contains(path)) { try { this._listener.Prefixes.Add( string.Format( @"{0}{1}", this._SrvUri, path ) ); } catch (Exception e) { throw new ArgumentException( string.Format( Properties.Resources.httpListenerExceptionAddResource, e.Message ) ); } } if ( ((this._isConcat) || (this._isMinify)) && (!string.IsNullOrWhiteSpace(dir)) ) { path = path.Substring(1, (path.Length - 2)); path = Path.Combine(dir, path); if (Directory.Exists(path)) { stBootStrap minify = null; try { minify = new stBootStrap(this._isConcat, this._isMinify, this._iLog); if (this._WatchChange) { minify.Minify(path, this._AddContentChangeWatch); } else { minify.Minify(path, null); } } catch (Exception e) { throw new ArgumentException(e.Message); } finally { if (minify != null) { minify.Dispose(); } } } } }