public async Task <bool> ForgotPassword(ForgotPasswordViewModel forgotPasswordViewModel) { var forgotPasswordRequest = new ForgotPasswordRequest(forgotPasswordViewModel.EmailAddress); var getUserByEmailRequest = new GetUserByEmailRequest { EmailAddress = forgotPasswordViewModel.EmailAddress }; var clientInfo = UserAgentParser.Extract(_userAgent); var userResponse = await _bus.RequestAsync(getUserByEmailRequest); var name = Helpers.GetUserName(userResponse.User); var forgotPasswordResponse = await _bus.RequestAsync(forgotPasswordRequest); var actionurl = $"{_baseUrl}/Account/ChangePassword/{forgotPasswordResponse.Secret}"; var emailTemplateRequest = new EmailTemplateRequest(EmailType.ForgotPassword); var response = await _bus.RequestAsync(emailTemplateRequest); var template = TemplateContentBuilder.Build(response.Template, TemplateContentBuilder.CreateForgotPasswordTemplateContent(name, actionurl, clientInfo.OperatingSystem, clientInfo.BrowserName)); var email = new EmailEvent(new EmailAddress("noreply", "*****@*****.**"), new EmailAddress(name, forgotPasswordViewModel.EmailAddress), "Wachtwoord vergeten ikdoneer.nu", template, true); await _bus.PublishAsync(email); return(true); }
public ActionResult <SearchResource> GrabReleases(List <SearchResource> releases) { var source = UserAgentParser.ParseSource(Request.Headers["User-Agent"]); var host = Request.GetHostName(); var groupedReleases = releases.GroupBy(r => r.IndexerId); foreach (var indexerReleases in groupedReleases) { var indexerDef = _indexerFactory.Get(indexerReleases.Key); foreach (var release in indexerReleases) { ValidateResource(release); var releaseInfo = _remoteReleaseCache.Find(GetCacheKey(release)); try { _downloadService.SendReportToClient(releaseInfo, source, host, indexerDef.Redirect); } catch (ReleaseDownloadException ex) { _logger.Error(ex, "Getting release from indexer failed"); } } } return(Ok(releases)); }
public static CommandResource ToResource(this CommandModel model) { if (model == null) { return(null); } return(new CommandResource { Id = model.Id, Name = model.Name, CommandName = model.Name.SplitCamelCase(), Message = model.Message, Body = model.Body, Priority = model.Priority, Status = model.Status, Queued = model.QueuedAt, Started = model.StartedAt, Ended = model.EndedAt, Duration = model.Duration, Exception = model.Exception, Trigger = model.Trigger, ClientUserAgent = UserAgentParser.SimplifyUserAgent(model.Body.ClientUserAgent), CompletionMessage = model.Body.CompletionMessage, LastExecutionTime = model.Body.LastExecutionTime }); }
public static BrowserType GetBrowserType(string userAgent) { if (userAgent == null) { return(BrowserType.Other); } string a = null; string text = null; UserAgentParser.UserAgentVersion userAgentVersion; UserAgentParser.Parse(userAgent, out a, out userAgentVersion, out text); if (string.Equals(a, "MSIE", StringComparison.OrdinalIgnoreCase)) { return(BrowserType.IE); } if (string.Equals(a, "Opera", StringComparison.OrdinalIgnoreCase)) { return(BrowserType.Opera); } if (string.Equals(a, "Safari", StringComparison.OrdinalIgnoreCase)) { return(BrowserType.Safari); } if (string.Equals(a, "Firefox", StringComparison.OrdinalIgnoreCase)) { return(BrowserType.Firefox); } if (string.Equals(a, "Chrome", StringComparison.OrdinalIgnoreCase)) { return(BrowserType.Chrome); } return(BrowserType.Other); }
protected void Page_Load(object sender, EventArgs e) { try { logDataBase = DataContextConfiguration.ContextCollection["Baase"]; } catch (Exception) { } string ua = Request.QueryString["ua"]; TerminalModel tm = new TerminalModel(); if (ua != null && ua.Length > 0) { UserAgentParser uap = new UserAgentParser(); uap.OnProcessUnknowUa += new ProcessUnknowUaEventHandler(uap_OnProcessUnknowUa); tm = uap.ParseUserAgent(ua); //Response.Write("tm.Browser=" + tm.Browser); //Response.Write("tm.Brand=" + tm.Brand); //Response.Write("tm.Model=" + tm.Model); //Response.Write("tm.Platform=" + tm.Platform); } else { } JavaScriptSerializer ser = new JavaScriptSerializer(); String jsonStr = ser.Serialize(tm); Response.Write(jsonStr); }
public async Task <object> GetDownload(int id, string link, string file) { var indexerDef = _indexerFactory.Get(id); var indexer = _indexerFactory.GetInstance(indexerDef); if (_indexerLimitService.AtDownloadLimit(indexerDef)) { throw new BadRequestException("Grab limit reached"); } if (link.IsNullOrWhiteSpace() || file.IsNullOrWhiteSpace()) { throw new BadRequestException("Invalid Prowlarr link"); } file = WebUtility.UrlDecode(file); if (indexerDef == null) { throw new NotFoundException("Indexer Not Found"); } var source = UserAgentParser.ParseSource(Request.Headers["User-Agent"]); var host = Request.GetHostName(); var unprotectedlLink = _downloadMappingService.ConvertToNormalLink(link); // If Indexer is set to download via Redirect then just redirect to the link if (indexer.SupportsRedirect && indexerDef.Redirect) { _downloadService.RecordRedirect(unprotectedlLink, id, source, host, file); return(RedirectPermanent(unprotectedlLink)); } var downloadBytes = Array.Empty <byte>(); downloadBytes = await _downloadService.DownloadReport(unprotectedlLink, id, source, host, file); // handle magnet URLs if (downloadBytes.Length >= 7 && downloadBytes[0] == 0x6d && downloadBytes[1] == 0x61 && downloadBytes[2] == 0x67 && downloadBytes[3] == 0x6e && downloadBytes[4] == 0x65 && downloadBytes[5] == 0x74 && downloadBytes[6] == 0x3a) { var magnetUrl = Encoding.UTF8.GetString(downloadBytes); return(RedirectPermanent(magnetUrl)); } var contentType = indexer.Protocol == DownloadProtocol.Torrent ? "application/x-bittorrent" : "application/x-nzb"; var extension = indexer.Protocol == DownloadProtocol.Torrent ? "torrent" : "nzb"; var filename = $"{file}.{extension}"; return(File(downloadBytes, contentType, filename)); }
public EventNotificationsJob(IQueue <EventNotificationWorkItem> queue, IMailer mailer, IProjectRepository projectRepository, IUserRepository userRepository, IEventRepository eventRepository, ICacheClient cacheClient, UserAgentParser parser, ILoggerFactory loggerFactory = null) : base(queue, loggerFactory) { _mailer = mailer; _projectRepository = projectRepository; _userRepository = userRepository; _eventRepository = eventRepository; _cache = cacheClient; _parser = parser; }
public async Task <IActionResult> Login([FromBody] LoginModel model) { var connectionInfo = new ConnectionInfo { IpAddress = Request.HttpContext.Connection.RemoteIpAddress, BrowserInfo = UserAgentParser.FromUserAgent(Request.Headers["User-Agent"]) }; var loginResponse = await _userService.LoginUser(new Email(model.Email), model.Password, model.TwoFactorCode, connectionInfo); if (!loginResponse.Success) { switch (loginResponse.Error) { case LoginError.InvalidLoginDetails: return(StatusCode(401, new ErrorResult <string> { Error = StrResource.UsernameOfPasswordInvalid })); case LoginError.NotValidatedEmail: return(StatusCode(403, new ErrorResult <string> { Error = StrResource.EmailNotVerified })); case LoginError.NotWhitelistedIp: return(StatusCode(403, new ErrorResult <string> { Error = StrResource.EmailWhitelistIpAddress })); case LoginError.TwoFactorRequiered: return(StatusCode(403, new ErrorResult <string> { Error = StrResource.TwoFactorCodeRequiered })); case LoginError.TwoFactorInvalid: return(StatusCode(401, new ErrorResult <string> { Error = StrResource.TwoFactorCodeInvalid })); default: throw new ArgumentOutOfRangeException(); } } var response = new OAuthTokenResponse { AccessToken = loginResponse.OAuthToken.AccessToken, Expires = loginResponse.OAuthToken.Expires.ToUnixTimeSeconds(), Type = loginResponse.OAuthToken.Type.ToString(), RefreshToken = loginResponse.OAuthToken.RefreshToken, }; return(Ok(new SuccessResult <OAuthTokenResponse> { Data = response })); }
public EventNotificationsJob(IQueue <EventNotification> queue, SlackService slackService, IMailer mailer, IProjectRepository projectRepository, AppOptions appOptions, EmailOptions emailOptions, IUserRepository userRepository, IEventRepository eventRepository, ICacheClient cacheClient, UserAgentParser parser, ILoggerFactory loggerFactory = null) : base(queue, loggerFactory) { _slackService = slackService; _mailer = mailer; _projectRepository = projectRepository; _appOptions = appOptions; _emailOptions = emailOptions; _userRepository = userRepository; _eventRepository = eventRepository; _cache = cacheClient; _parser = parser; }
public EventNotificationsJob(IQueue <EventNotificationWorkItem> queue, IMailer mailer, IOrganizationRepository organizationRepository, IProjectRepository projectRepository, IStackRepository stackRepository, IUserRepository userRepository, IEventRepository eventRepository, ICacheClient cacheClient, UserAgentParser parser) : base(queue) { _mailer = mailer; _organizationRepository = organizationRepository; _projectRepository = projectRepository; _stackRepository = stackRepository; _userRepository = userRepository; _eventRepository = eventRepository; _cacheClient = cacheClient; _parser = parser; }
public void Agents() { var userAgentParser = new UserAgentParser(this.xml); var chrome = userAgentParser.Parse("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2"); Assert.AreEqual("Chrome", chrome.ClientName); Assert.AreEqual(15, chrome.ClientMajorVersion); var ios = userAgentParser.Parse("Mozilla/5.0 (iPhone; U; XXXXX like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/241 Safari/419.3"); Assert.AreEqual("Mobile Safari", ios.ClientName); var wp7 = userAgentParser.Parse("Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0) Asus;Galaxy6"); Assert.AreEqual("IE Mobile", wp7.ClientName); }
private void Init( Provider devices, string deviceId, string userAgent) { if (userAgent == null) { throw new ArgumentNullException("userAgent"); } _userAgent = UserAgentParser.Parse(userAgent); Init(devices, deviceId); }
public static bool IsDownLevelClient(this HttpRequest request) { if (request == null) { throw new ArgumentNullException("request"); } ExTraceGlobals.VerboseTracer.TraceDebug <string>(0L, "Extensions.IsDownLevelClient. user-agent = {0}", (request.UserAgent == null) ? string.Empty : request.UserAgent); string a; UserAgentParser.UserAgentVersion userAgentVersion; string a2; UserAgentParser.Parse(request.UserAgent, out a, out userAgentVersion, out a2); return((!string.Equals(a, "rv:", StringComparison.OrdinalIgnoreCase) || userAgentVersion.Build < 11 || !string.Equals(a2, "Windows NT", StringComparison.OrdinalIgnoreCase)) && (!string.Equals(a, "MSIE", StringComparison.OrdinalIgnoreCase) || userAgentVersion.Build < 7 || (!string.Equals(a2, "Windows NT", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Windows 98; Win 9x 4.90", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Windows 2000", StringComparison.OrdinalIgnoreCase))) && (!string.Equals(a, "Safari", StringComparison.OrdinalIgnoreCase) || userAgentVersion.Build < 3 || !string.Equals(a2, "Macintosh", StringComparison.OrdinalIgnoreCase)) && (!string.Equals(a, "Firefox", StringComparison.OrdinalIgnoreCase) || userAgentVersion.Build < 3 || (!string.Equals(a2, "Windows NT", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Windows 98; Win 9x 4.90", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Windows 2000", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Macintosh", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Linux", StringComparison.OrdinalIgnoreCase))) && (!string.Equals(a, "Chrome", StringComparison.OrdinalIgnoreCase) || userAgentVersion.Build < 1 || (!string.Equals(a2, "Windows NT", StringComparison.OrdinalIgnoreCase) && !string.Equals(a2, "Macintosh", StringComparison.OrdinalIgnoreCase)))); }
public async Task Invoke(HttpContext context) { var parser = new UserAgentParser(context.Request.Headers["User-Agent"]); parser.Determine(); var browserName = parser.BrowserName; var forbittenBrowsers = new List <string> { "Edge", "Internet Explorer", "EdgeChromium" }; if (forbittenBrowsers.Any(browserName.Contains)) { await context.Response.WriteAsync("Nielegalnia przeglądarka"); } else { await _next(context); } }
public void TestWithACollectionData() { var error = string.Empty; // Arrange var expectedUserAgents = GetExpectedOutput(); // Act foreach (var expectedAgent in expectedUserAgents) { var userAgentNet = new UserAgentParser(expectedAgent.RawUserAgent); userAgentNet.Determine(); // Assert if (expectedAgent.Browser != userAgentNet.BrowserName || expectedAgent.AolVersion != userAgentNet.AolVersion || expectedAgent.IsAol != userAgentNet.IsAol || expectedAgent.IsFacebook != userAgentNet.IsFacebook || expectedAgent.IsMobile != userAgentNet.IsMobile || expectedAgent.IsRobot != userAgentNet.IsRobot || expectedAgent.IsTablet != userAgentNet.IsTablet || expectedAgent.Platform != userAgentNet.Platform || expectedAgent.Version != userAgentNet.Version) { error += expectedAgent.Browser + "--" + expectedAgent.Version + "-------" + userAgentNet.BrowserName + "--" + userAgentNet.Version + "-------" + expectedAgent.RawUserAgent + Environment.NewLine; } Assert.AreEqual(expectedAgent.Browser, userAgentNet.BrowserName); Assert.AreEqual(expectedAgent.Version, userAgentNet.Version); Assert.AreEqual(expectedAgent.AolVersion, userAgentNet.AolVersion); Assert.AreEqual(expectedAgent.IsAol, userAgentNet.IsAol); Assert.AreEqual(expectedAgent.IsChromeFrame, userAgentNet.IsChromeFrame); Assert.AreEqual(expectedAgent.IsFacebook, userAgentNet.IsFacebook); Assert.AreEqual(expectedAgent.IsMobile, userAgentNet.IsMobile); Assert.AreEqual(expectedAgent.IsRobot, userAgentNet.IsRobot); Assert.AreEqual(expectedAgent.IsTablet, userAgentNet.IsTablet); Assert.AreEqual(expectedAgent.Platform, userAgentNet.Platform); } File.WriteAllText(@"error.txt", error); }
public ActionResult <SearchResource> GrabRelease(SearchResource release) { ValidateResource(release); var releaseInfo = _remoteReleaseCache.Find(GetCacheKey(release)); var indexerDef = _indexerFactory.Get(release.IndexerId); var source = UserAgentParser.ParseSource(Request.Headers["User-Agent"]); var host = Request.GetHostName(); try { _downloadService.SendReportToClient(releaseInfo, source, host, indexerDef.Redirect); } catch (ReleaseDownloadException ex) { _logger.Error(ex, "Getting release from indexer failed"); throw new NzbDroneClientException(HttpStatusCode.Conflict, "Getting release from indexer failed"); } return(Ok(release)); }
/// <summary> /// Parse the <see cref="UserAgent"/>. /// </summary> /// <param name="userAgent">The <see cref="UserAgent"/> to parse.</param> /// <returns>The parsing context.</returns> private UserAgentParser.UserAgentContext ParseUserAgent(UserAgent userAgent) { var userAgentString = EvilManualUseragentStringHacks.FixIt(userAgent.UserAgentString); var input = new AntlrInputStream(userAgentString); var lexer = new UserAgentLexer(input); var tokens = new CommonTokenStream(lexer); var parser = new UserAgentParser(tokens); if (!this.verbose) { lexer.RemoveErrorListeners(); parser.RemoveErrorListeners(); } lexer.AddErrorListener(userAgent); parser.AddErrorListener(userAgent); return(parser.userAgent()); }
static void Main(string[] args) { // Dalvlk/l.6.0 (Llnux; U; Androld 4.2.l; M353 Bulld/JOP40D) // Console.WriteLine("^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); UserAgentParser uap = new UserAgentParser(); uap.OnProcessUnknowUa += new ProcessUnknowUaEventHandler(uap_OnProcessUnknowUa); TerminalModel tm = uap.ParseUserAgent("w2(mt6589/4); 4.3.1; s530w2p05v05; zh-cn"); Console.WriteLine("tm.Browser=" + tm.Browser); Console.WriteLine("tm.Brand=" + tm.Brand); Console.WriteLine("tm.Model=" + tm.Model); Console.WriteLine("tm.Platform=" + tm.Platform); Console.WriteLine("^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); uap.Clear(); Console.ReadKey(); // string strReadFilePath = @"aa.txt"; // StreamReader srReadFile = new StreamReader(strReadFilePath); // while (!srReadFile.EndOfStream) // { // string strReadLine = srReadFile.ReadLine(); //读取每行数据 // if (strReadLine != null) // { // TerminalModel tm = uap.ParseUserAgent(strReadLine); // if (tm.Platform != null && tm.Platform.Length > 1) { //// Console.WriteLine(strReadLine); //屏幕打印每行数据 //// Console.WriteLine ("tm.Browser=" + tm.Browser); //// Console.WriteLine ("tm.Brand=" + tm.Brand); //// Console.WriteLine ("tm.Model=" + tm.Model); //// Console.WriteLine ("tm.Platform=" + tm.Platform); // } else { //// Console.WriteLine(strReadLine); //屏幕打印每行数据 // } // } // } // srReadFile.Close(); //string strReadFilePath = @"../../uaa.txt"; // StreamReader srReadFile = new StreamReader(strReadFilePath); //float total = 0; //float haveNum = 0; //float ucUser = 0; //int ucnum = 0; //int allnum = 0; //while (!srReadFile.EndOfStream) //{ // string strReadLine = srReadFile.ReadLine(); //读取每行数据 // if (strReadLine != null) // { // total++; // Stopwatch sw = new Stopwatch(); // sw.Start(); // TerminalModel tm = uap.ParseUserAgent(strReadLine); // sw.Stop(); // if (tm.Platform != null && tm.Platform.Length > 1) // { // haveNum++; // Console.WriteLine(strReadLine); //屏幕打印每行数据 // string[] sArray = strReadLine.Split('\t'); // if (sArray[1].Length > 0) // { // int result = int.Parse(sArray[1].ToString()); // Console.WriteLine("ALL+" + result); // allnum += result; // } // if (tm.Browser.Equals("UCBrowser")) // { // ucUser++; // Console.WriteLine(strReadLine); //屏幕打印每行数据 // sArray = strReadLine.Split('\t'); // if (sArray[1].Length > 0) // { // int result = int.Parse(sArray[1].ToString()); // Console.WriteLine("UC+" + result); // ucnum += result; // } // } // Console.WriteLine (strReadLine); //屏幕打印每行数据 // Console.WriteLine ("tm.Browser=" + tm.Browser); // Console.WriteLine ("tm.Brand=" + tm.Brand); // Console.WriteLine ("tm.Model=" + tm.Model); // Console.WriteLine ("tm.Platform=" + tm.Platform); // Console.WriteLine ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^"); // Console.WriteLine("++++>" + sw.ElapsedMilliseconds); // } // else // { // Console.WriteLine (strReadLine); //屏幕打印每行数据 // Console.WriteLine("---->" + sw.ElapsedMilliseconds); // } // } //} //关闭读取流文件 //srReadFile.Close(); //Console.WriteLine("total:" + total); //Console.WriteLine("haveNum:" + haveNum); //Console.WriteLine("PER:" + haveNum / total * 100 + "%"); //Console.WriteLine("ucUser:"******"UC:" + ucnum); //Console.WriteLine("总:" + allnum); }
public RequestInfoPlugin(UserAgentParser parser, ILoggerFactory loggerFactory = null) : base(loggerFactory) { _parser = parser; }
private void HandleFbaFormPost(BackEndServer backEndServer) { HttpContext httpContext = base.HttpContext; HttpResponse response = httpContext.Response; Uri uri = null; string text = httpContext.Items["destination"] as string; bool flag = false; bool flag2 = false; bool flag3 = true; string fqdn = backEndServer.Fqdn; int version = backEndServer.Version; OwaServerVersion owaServerVersion = null; bool flag4 = false; ServiceTopology currentServiceTopology = ServiceTopology.GetCurrentServiceTopology("f:\\15.00.1497\\sources\\dev\\cafe\\src\\HttpProxy\\RequestHandlers\\FbaFormPostProxyRequestHandler.cs", "HandleFbaFormPost", 780); Site site = currentServiceTopology.GetSite(fqdn, "f:\\15.00.1497\\sources\\dev\\cafe\\src\\HttpProxy\\RequestHandlers\\FbaFormPostProxyRequestHandler.cs", "HandleFbaFormPost", 781); if (site != null && !site.Equals(HttpProxyGlobals.LocalSite.Member)) { flag3 = false; } if (!FbaFormPostProxyRequestHandler.DisableSSORedirects) { owaServerVersion = OwaServerVersion.CreateFromVersionNumber(version); if (UrlUtilities.IsEcpUrl(text) && owaServerVersion.Major < (int)ExchangeObjectVersion.Exchange2010.ExchangeBuild.Major) { flag = false; flag2 = false; } else if (!flag3 && !UserAgentParser.IsMonitoringRequest(base.ClientRequest.UserAgent)) { if (owaServerVersion.Major >= (int)ExchangeObjectVersion.Exchange2007.ExchangeBuild.Major) { FbaFormPostProxyRequestHandler.LegacyRedirectFailureCause legacyRedirectFailureCause = FbaFormPostProxyRequestHandler.NeedCrossSiteRedirect(backEndServer, site, HttpProxyGlobals.LocalSite.Member, owaServerVersion, UrlUtilities.IsEcpUrl(text), out uri, out flag4); string authority = base.ClientRequest.Url.Authority; string b = (uri == null) ? string.Empty : uri.Authority; flag2 = (legacyRedirectFailureCause != FbaFormPostProxyRequestHandler.LegacyRedirectFailureCause.NoCasFound && !string.Equals(authority, b, StringComparison.OrdinalIgnoreCase) && (legacyRedirectFailureCause != FbaFormPostProxyRequestHandler.LegacyRedirectFailureCause.None || uri != null)); if (uri == null && owaServerVersion.Major == (int)ExchangeObjectVersion.Exchange2007.ExchangeBuild.Major) { flag = (FbaFormPostProxyRequestHandler.NeedOnSiteLegacyRedirect(backEndServer, null, HttpProxyGlobals.LocalSite.Member, owaServerVersion, out uri, out flag4) != FbaFormPostProxyRequestHandler.LegacyRedirectFailureCause.None || uri != null); } } } else { flag = (FbaFormPostProxyRequestHandler.NeedOnSiteLegacyRedirect(backEndServer, site, HttpProxyGlobals.LocalSite.Member, owaServerVersion, out uri, out flag4) != FbaFormPostProxyRequestHandler.LegacyRedirectFailureCause.None || uri != null); } } if (flag2 || flag) { if (uri != null) { string authority2 = base.ClientRequest.Url.Authority; string authority3 = uri.Authority; if (string.Compare(authority2, authority3, StringComparison.OrdinalIgnoreCase) == 0) { throw new HttpException(403, "Redirect loop detected"); } } using (SecureNameValueCollection secureNameValueCollection = new SecureNameValueCollection()) { int num = (int)base.HttpContext.Items["flags"]; secureNameValueCollection.AddUnsecureNameValue("destination", base.HttpContext.Items["destination"] as string); secureNameValueCollection.AddUnsecureNameValue("username", base.HttpContext.Items["username"] as string); secureNameValueCollection.AddUnsecureNameValue("flags", num.ToString(CultureInfo.InvariantCulture)); using (SecureString secureString = base.HttpContext.Items["password"] as SecureString) { secureNameValueCollection.AddSecureNameValue("password", secureString); if (flag) { if (uri == null) { AspNetHelper.TransferToErrorPage(httpContext, ErrorFE.FEErrorCodes.NoLegacyCAS); } else if (flag4) { if (uri.Scheme == Uri.UriSchemeHttps) { ExTraceGlobals.VerboseTracer.TraceDebug <string>((long)this.GetHashCode(), "FbaFormPostProxyRequestHandler - SSO redirecting to {0}", uri.ToString()); this.RedirectUsingSSOFBA(secureNameValueCollection, uri, response, owaServerVersion.Major); response.End(); } else { AspNetHelper.TransferToErrorPage(httpContext, ErrorFE.FEErrorCodes.NoFbaSSL); } } else { ExTraceGlobals.VerboseTracer.TraceDebug <string>((long)this.GetHashCode(), "FbaFormPostProxyRequestHandler - redirecting to {0}", uri.ToString()); base.PfdTracer.TraceRedirect("FbaAuth", uri.ToString()); response.Redirect(FbaFormPostProxyRequestHandler.CheckRedirectUrlForNewline(uri.ToString())); } } else if (flag2) { if (uri == null) { AspNetHelper.TransferToErrorPage(httpContext, ErrorFE.FEErrorCodes.NoLegacyCAS); } else { Uri uri2 = uri; if (this.explicitLogonUser != null) { uri2 = FbaFormPostProxyRequestHandler.AppendSmtpAddressToUrl(uri, this.explicitLogonUser); } if (flag4) { if (uri.Scheme == Uri.UriSchemeHttps) { ExTraceGlobals.VerboseTracer.TraceDebug <string>((long)this.GetHashCode(), "FbaFormPostProxyRequestHandler - SSO redirecting to {0}", uri.ToString()); this.RedirectUsingSSOFBA(secureNameValueCollection, uri, response, owaServerVersion.Major); response.End(); } else { AspNetHelper.TransferToErrorPage(httpContext, ErrorFE.FEErrorCodes.NoFbaSSL); } } else { ExTraceGlobals.VerboseTracer.TraceDebug <string>((long)this.GetHashCode(), "FbaFormPostProxyRequestHandler - redirecting to {0}", uri2.ToString()); base.PfdTracer.TraceRedirect("FbaAuth", uri2.ToString()); response.Redirect(FbaFormPostProxyRequestHandler.CheckRedirectUrlForNewline(uri2.ToString())); } } } } return; } } try { FbaModule.SetCadataCookies(base.HttpApplication); } catch (MissingSslCertificateException) { AspNetHelper.TransferToErrorPage(httpContext, ErrorFE.FEErrorCodes.NoFbaSSL); } ExTraceGlobals.VerboseTracer.TraceDebug <string>((long)this.GetHashCode(), "FbaFormPostProxyRequestHandler - redirecting to {0}", text); base.PfdTracer.TraceRedirect("FbaAuth", text); response.Redirect(FbaFormPostProxyRequestHandler.CheckRedirectUrlForNewline(text), false); }
public void UserAgentParsesOs(string userAgent, string expectedOs) { Assert.AreEqual(expectedOs, UserAgentParser.GetOperatingSystem(userAgent)); }
public TheFromPackageStatisticMethod(ITestOutputHelper testOutputHelper) { _testOutputHelper = testOutputHelper; _parser = new UserAgentParser(); }
public async Task <IActionResult> GetNewznabResponse(int id, [FromQuery] NewznabRequest request) { var requestType = request.t; request.source = UserAgentParser.ParseSource(Request.Headers["User-Agent"]); request.server = Request.GetServerUrl(); request.host = Request.GetHostName(); if (requestType.IsNullOrWhiteSpace()) { return(Content(CreateErrorXML(200, "Missing parameter (t)"), "application/rss+xml")); } request.imdbid = request.imdbid?.TrimStart('t') ?? null; if (request.imdbid.IsNotNullOrWhiteSpace()) { if (!int.TryParse(request.imdbid, out var imdb) || imdb == 0) { return(Content(CreateErrorXML(201, "Incorrect parameter (imdbid)"), "application/rss+xml")); } } if (id == 0) { switch (requestType) { case "caps": var caps = new IndexerCapabilities { TvSearchParams = new List <TvSearchParam> { TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep }, MovieSearchParams = new List <MovieSearchParam> { MovieSearchParam.Q }, MusicSearchParams = new List <MusicSearchParam> { MusicSearchParam.Q }, BookSearchParams = new List <BookSearchParam> { BookSearchParam.Q } }; foreach (var cat in NewznabStandardCategory.AllCats) { caps.Categories.AddCategoryMapping(1, cat); } return(Content(caps.ToXml(), "application/rss+xml")); case "search": case "tvsearch": case "music": case "book": case "movie": var results = new NewznabResults(); results.Releases = new List <ReleaseInfo> { new ReleaseInfo { Title = "Test Release", Guid = "https://prowlarr.com", DownloadUrl = "https://prowlarr.com", PublishDate = DateTime.Now } }; return(Content(results.ToXml(DownloadProtocol.Usenet), "application/rss+xml")); } } var indexerDef = _indexerFactory.Get(id); if (indexerDef == null) { throw new NotFoundException("Indexer Not Found"); } var indexer = _indexerFactory.GetInstance(indexerDef); //TODO Optimize this so it's not called here and in NzbSearchService (for manual search) if (_indexerLimitService.AtQueryLimit(indexerDef)) { return(Content(CreateErrorXML(500, $"Request limit reached ({((IIndexerSettings)indexer.Definition.Settings).BaseSettings.QueryLimit})"), "application/rss+xml")); } switch (requestType) { case "caps": var caps = indexer.GetCapabilities(); return(Content(caps.ToXml(), "application/rss+xml")); case "search": case "tvsearch": case "music": case "book": case "movie": var results = await _nzbSearchService.Search(request, new List <int> { indexerDef.Id }, false); foreach (var result in results.Releases) { result.DownloadUrl = result.DownloadUrl.IsNotNullOrWhiteSpace() ? _downloadMappingService.ConvertToProxyLink(new Uri(result.DownloadUrl), request.server, indexerDef.Id, result.Title).AbsoluteUri : null; if (result.DownloadProtocol == DownloadProtocol.Torrent) { ((TorrentInfo)result).MagnetUrl = ((TorrentInfo)result).MagnetUrl.IsNotNullOrWhiteSpace() ? _downloadMappingService.ConvertToProxyLink(new Uri(((TorrentInfo)result).MagnetUrl), request.server, indexerDef.Id, result.Title).AbsoluteUri : null; } } return(Content(results.ToXml(indexer.Protocol), "application/rss+xml")); default: return(Content(CreateErrorXML(202, $"No such function ({requestType})"), "application/rss+xml")); } }
public void should_parse_user_agent(string userAgent, string parsedAgent) { UserAgentParser.ParseSource(userAgent).Should().Be(parsedAgent); }
public RequestInfoPlugin(UserAgentParser parser, AppOptions options, ILoggerFactory loggerFactory = null) : base(options, loggerFactory) { _parser = parser; }
public RequestInfoPlugin(UserAgentParser parser) { _parser = parser; }