public HTTPMessage(string HTTPInput) { string[] MessageParts = HTTPInput.Split(new string[] { "\r\n\r\n" }, 2, StringSplitOptions.RemoveEmptyEntries); if (MessageParts.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } MessageParts[0] += "\r\n"; string[] HeaderArray = MessageParts[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (HeaderArray.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } FirstHeader = HeaderArray[0]; if (FirstHeader.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } HeaderArray[0] = ""; Headers = new HeaderParameters(HeaderArray); if (MessageParts.Length == 2) { HasBody = true; BodyString = MessageParts[1]; } }
public HTTPMessage(string HTTPInput) { int EndOfHeaders = HTTPInput.IndexOf("\r\n\r\n"); if (EndOfHeaders < 0) { EndOfHeaders = HTTPInput.Length - 1; } string[] MessageParts = new string[] { "", "" }; MessageParts[0] = HTTPInput.Substring(0, EndOfHeaders); try { MessageParts[1] = HTTPInput.Substring(EndOfHeaders + 4); } catch { } //string[] MessageParts = HTTPInput.Split(new string[] { "\r\n\r\n" }, 2, StringSplitOptions.RemoveEmptyEntries); if (MessageParts.Length == 0) throw new Exception("Invalid HTTP Message Header"); MessageParts[0] += "\r\n"; string[] HeaderArray = MessageParts[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (HeaderArray.Length == 0) throw new Exception("Invalid HTTP Message Header"); FirstHeader = HeaderArray[0]; if (FirstHeader.Length == 0) throw new Exception("Invalid HTTP Message Header"); HeaderArray[0] = ""; Headers = new HeaderParameters(HeaderArray); if (MessageParts.Length == 2) { HasBody = true; BodyString = MessageParts[1]; } }
public static string GetResponseTriggerHighlighting(string Trigg, Response Res) { StringBuilder SB = new StringBuilder(); string ResHeader = Res.GetHeadersAsString(); string ResBody = Res.BodyString; List <string> AllTriggerVariations = new List <string>(); AllTriggerVariations.Add(Trigg); if (!AllTriggerVariations.Contains(CookieParameters.Encode(Trigg))) { AllTriggerVariations.Add(CookieParameters.Encode(Trigg)); } if (!AllTriggerVariations.Contains(HeaderParameters.Encode(Trigg))) { AllTriggerVariations.Add(HeaderParameters.Encode(Trigg)); } try { List <string> HeaderAdjustments = GetHeaderVariations(Trigg, Res.Headers, ResHeader); foreach (string HA in HeaderAdjustments) { if (!AllTriggerVariations.Contains(HA)) { AllTriggerVariations.Add(HA); } } } catch { } List <string> HeaderTriggerVariations = new List <string>(); foreach (string CurrentVariation in AllTriggerVariations) { if (!HeaderTriggerVariations.Contains(CurrentVariation) && ResHeader.Contains(CurrentVariation)) { HeaderTriggerVariations.Add(CurrentVariation); } } ResHeader = Highlighter.InsertHighlights(ResHeader, HeaderTriggerVariations); ResBody = GetResponseBodyHighlighting(ResBody, Trigg); if (!ResHeader.Contains("<i<hlg>>") && !ResBody.Contains("<i<hlg>>")) { foreach (string TriggLine in Tools.SplitLines(Trigg)) { ResBody = GetResponseBodyHighlighting(ResBody, TriggLine); } } SB.Append(Highlighter.SnipHeaderSection(ResHeader).TrimEnd()); SB.AppendLine(); SB.AppendLine(); SB.Append(Highlighter.SnipBodySection(ResBody)); return(SB.ToString().Replace("\n", "<i<br>>")); }
internal void CreateSetCookieListFromParameters(HeaderParameters Headers) { this.setCookies = new List <SetCookie>(); if (Headers.Has("Set-Cookie")) { foreach (string SCString in Headers.GetAll("Set-Cookie")) { SetCookie SC = new SetCookie(SCString); this.SetCookies.Add(SC); } } }
public HTTPMessage(string HTTPInput) { string[] MessageParts = HTTPInput.Split(new string[] { "\r\n\r\n" }, 2, StringSplitOptions.RemoveEmptyEntries); if (MessageParts.Length == 0) throw new Exception("Invalid HTTP Message Header"); MessageParts[0] += "\r\n"; string[] HeaderArray = MessageParts[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (HeaderArray.Length == 0) throw new Exception("Invalid HTTP Message Header"); FirstHeader = HeaderArray[0]; if (FirstHeader.Length == 0) throw new Exception("Invalid HTTP Message Header"); HeaderArray[0] = ""; Headers = new HeaderParameters(HeaderArray); if (MessageParts.Length == 2) { HasBody = true; BodyString = MessageParts[1]; } }
public HTTPMessage(string HTTPInput) { int EndOfHeaders = HTTPInput.IndexOf("\r\n\r\n"); if (EndOfHeaders < 0) { EndOfHeaders = HTTPInput.Length; } string[] MessageParts = new string[] { "", "" }; MessageParts[0] = HTTPInput.Substring(0, EndOfHeaders); try { MessageParts[1] = HTTPInput.Substring(EndOfHeaders + 4); } catch { } //string[] MessageParts = HTTPInput.Split(new string[] { "\r\n\r\n" }, 2, StringSplitOptions.RemoveEmptyEntries); if (MessageParts.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } MessageParts[0] += "\r\n"; string[] HeaderArray = MessageParts[0].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); if (HeaderArray.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } FirstHeader = HeaderArray[0]; if (FirstHeader.Length == 0) { throw new Exception("Invalid HTTP Message Header"); } HeaderArray[0] = ""; Headers = new HeaderParameters(HeaderArray); if (MessageParts.Length == 2) { HasBody = true; BodyString = MessageParts[1]; } }
internal HeaderParameters(HeaderParameters Headers) { this.ParameterStore = Headers.ParameterStore; }
internal void CreateSetCookieListFromParameters(HeaderParameters Headers) { this.setCookies = new List<SetCookie>(); if (Headers.Has("Set-Cookie")) { foreach (string SCString in Headers.GetAll("Set-Cookie")) { SetCookie SC = new SetCookie(SCString); this.SetCookies.Add(SC); } } }
internal ResponseHeaderParameters(Response Response, HeaderParameters ResponseHeaders) : base(ResponseHeaders) { this.Response = Response; this.Response.CreateSetCookieListFromParameters(ResponseHeaders); }
internal RequestHeaderParameters(Request Request, HeaderParameters RequestHeaders) : base(RequestHeaders) { this.Request = Request; }
public static List<string> GetHeaderVariations(string Trigg, HeaderParameters Headers, string HeaderString) { List<string> FinalMatches = new List<string>(); if (Trigg.Contains(":")) { string[] Parts = Trigg.Split(new char[] { ':' }, 2); string TrimmedName = Parts[0].Trim(); string TrimmedValue = Parts[1].Trim(); if (TrimmedName.Length > 0) { List<string[]> Matches = new List<string[]>(); foreach (string Name in Headers.GetNames()) { if (Name.Trim().Equals(TrimmedName, StringComparison.OrdinalIgnoreCase)) { foreach (string Value in Headers.GetAll(Name)) { if (Value.Trim().Equals(TrimmedValue)) { Matches.Add(new string[] { Name, Value }); } } } } List<string> Lines = Tools.SplitLines(HeaderString); foreach (string Line in Lines) { foreach (string[] Match in Matches) { string EncodedName = ""; string EncodedValue = ""; if (Line.StartsWith(Match[0])) { EncodedName = Match[0]; } else if (Line.StartsWith(RequestHeaderParameters.Encode(Match[0]))) { EncodedName = RequestHeaderParameters.Encode(Match[0]); } else if (Line.StartsWith(ResponseHeaderParameters.Encode(Match[0]))) { EncodedName = ResponseHeaderParameters.Encode(Match[0]); } if (Line.EndsWith(Match[1])) { EncodedValue = Match[1]; } else if (Line.EndsWith(RequestHeaderParameters.Encode(Match[1]))) { EncodedValue = RequestHeaderParameters.Encode(Match[1]); } else if (Line.EndsWith(ResponseHeaderParameters.Encode(Match[1]))) { EncodedValue = ResponseHeaderParameters.Encode(Match[1]); } if (EncodedValue.Length > 0)//If EncodedValue is empty then .Replace(EncodedValue, "") throws an exception, as empty value cannot be replaced { if (Line.Substring(EncodedName.Length).Replace(EncodedValue, "").Trim().Equals(":")) { FinalMatches.Add(Line); } } else { if (Line.Substring(EncodedName.Length).Trim().Equals(":")) { FinalMatches.Add(Line); } } } } } } return FinalMatches; }
public static List <string> GetHeaderVariations(string Trigg, HeaderParameters Headers, string HeaderString) { List <string> FinalMatches = new List <string>(); if (Trigg.Contains(":")) { string[] Parts = Trigg.Split(new char[] { ':' }, 2); string TrimmedName = Parts[0].Trim(); string TrimmedValue = Parts[1].Trim(); if (TrimmedName.Length > 0) { List <string[]> Matches = new List <string[]>(); foreach (string Name in Headers.GetNames()) { if (Name.Trim().Equals(TrimmedName, StringComparison.OrdinalIgnoreCase)) { foreach (string Value in Headers.GetAll(Name)) { if (Value.Trim().Equals(TrimmedValue)) { Matches.Add(new string[] { Name, Value }); } } } } List <string> Lines = Tools.SplitLines(HeaderString); foreach (string Line in Lines) { foreach (string[] Match in Matches) { string EncodedName = ""; string EncodedValue = ""; if (Line.StartsWith(Match[0])) { EncodedName = Match[0]; } else if (Line.StartsWith(RequestHeaderParameters.Encode(Match[0]))) { EncodedName = RequestHeaderParameters.Encode(Match[0]); } else if (Line.StartsWith(ResponseHeaderParameters.Encode(Match[0]))) { EncodedName = ResponseHeaderParameters.Encode(Match[0]); } if (Line.EndsWith(Match[1])) { EncodedValue = Match[1]; } else if (Line.EndsWith(RequestHeaderParameters.Encode(Match[1]))) { EncodedValue = RequestHeaderParameters.Encode(Match[1]); } else if (Line.EndsWith(ResponseHeaderParameters.Encode(Match[1]))) { EncodedValue = ResponseHeaderParameters.Encode(Match[1]); } if (EncodedValue.Length > 0)//If EncodedValue is empty then .Replace(EncodedValue, "") throws an exception, as empty value cannot be replaced { if (Line.Substring(EncodedName.Length).Replace(EncodedValue, "").Trim().Equals(":")) { FinalMatches.Add(Line); } } else { if (Line.Substring(EncodedName.Length).Trim().Equals(":")) { FinalMatches.Add(Line); } } } } } } return(FinalMatches); }