/// <summary> /// Constructor for HomeController /// </summary> /// <param name="browserResolver">Provides information about user's browser</param> /// <param name="accessor">Provides access to HTTP-specific information about an individual HTTP request</param> public HomeController(IBrowserResolver browserResolver, IHttpContextAccessor accessor) { _useragent = browserResolver.UserAgent; _browser = browserResolver.Browser; _browser_Name = _browser.Type.ToString(); _accessor = accessor; }
/// <summary> /// Construct a <see cref="HomeController"/> /// </summary> /// <param name="databaseContext">The <see cref="IDatabaseContext"/> for the <see cref="ApiController"/></param> /// <param name="authenticationContextFactory">The <see cref="IAuthenticationContextFactory"/> for the <see cref="ApiController"/></param> /// <param name="tokenFactory">The value of <see cref="tokenFactory"/></param> /// <param name="systemIdentityFactory">The value of <see cref="systemIdentityFactory"/></param> /// <param name="cryptographySuite">The value of <see cref="cryptographySuite"/></param> /// <param name="assemblyInformationProvider">The value of <see cref="assemblyInformationProvider"/></param> /// <param name="identityCache">The value of <see cref="identityCache"/></param> /// <param name="oAuthProviders">The value of <see cref="oAuthProviders"/>.</param> /// <param name="platformIdentifier">The value of <see cref="platformIdentifier"/>.</param> /// <param name="browserResolver">The value of <see cref="browserResolver"/></param> /// <param name="swarmService">The value of <see cref="swarmService"/>.</param> /// <param name="serverControl">The value of <see cref="serverControl"/>.</param> /// <param name="generalConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="generalConfiguration"/>.</param> /// <param name="controlPanelConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="controlPanelConfiguration"/></param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="ApiController"/></param> public HomeController( IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, ITokenFactory tokenFactory, ISystemIdentityFactory systemIdentityFactory, ICryptographySuite cryptographySuite, IAssemblyInformationProvider assemblyInformationProvider, IIdentityCache identityCache, IOAuthProviders oAuthProviders, IPlatformIdentifier platformIdentifier, IBrowserResolver browserResolver, ISwarmService swarmService, IServerControl serverControl, IOptions <GeneralConfiguration> generalConfigurationOptions, IOptions <ControlPanelConfiguration> controlPanelConfigurationOptions, ILogger <HomeController> logger) : base( databaseContext, authenticationContextFactory, logger, false) { this.tokenFactory = tokenFactory ?? throw new ArgumentNullException(nameof(tokenFactory)); this.systemIdentityFactory = systemIdentityFactory ?? throw new ArgumentNullException(nameof(systemIdentityFactory)); this.cryptographySuite = cryptographySuite ?? throw new ArgumentNullException(nameof(cryptographySuite)); this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider)); this.identityCache = identityCache ?? throw new ArgumentNullException(nameof(identityCache)); this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier)); this.oAuthProviders = oAuthProviders ?? throw new ArgumentNullException(nameof(oAuthProviders)); this.browserResolver = browserResolver ?? throw new ArgumentNullException(nameof(browserResolver)); this.swarmService = swarmService ?? throw new ArgumentNullException(nameof(swarmService)); this.serverControl = serverControl ?? throw new ArgumentNullException(nameof(serverControl)); generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions)); controlPanelConfiguration = controlPanelConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(controlPanelConfigurationOptions)); }
public async Task Invoke( HttpContext context, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, IClientRepository clientRepository) { if (!deviceResolver.Device.Crawler) { Parser uaParser = Parser.GetDefault(); ClientInfo clientInfo = null; Guid clientId = Guid.Empty; Guid sessionId = Guid.Empty; var cookieId = context.Request.Cookies[_key]; var isExistingUser = context.Request.Cookies.ContainsKey(_key); if (!isExistingUser || !Guid.TryParse(cookieId, out clientId) || clientRepository.Get(clientId) is null) { clientId = Guid.NewGuid(); var userAgent = deviceResolver.UserAgent.ToString(); if (clientInfo is null) { clientInfo = uaParser.Parse(userAgent); } context.Response.Cookies.Append(_key, clientId.ToString()); var newClient = new DAL.Entities.Client() { ClientId = clientId, Ip = context.Connection.RemoteIpAddress.ToString(), Device = deviceResolver.Device.Type.ToString(), Browser = browserResolver.Browser.Type.ToString(), BrowserVersion = browserResolver.Browser.Version.ToString(), Platform = clientInfo.OS.Family, PlatformVersion = clientInfo.OS.Major, }; clientRepository.Add(newClient); } if (clientInfo is null) { clientInfo = uaParser.Parse(deviceResolver.UserAgent.ToString()); } var onlineClient = new OnlineClientViewModel() { ClientId = clientId, Ip = context.Connection.RemoteIpAddress.ToString(), UserAgent = $"Device: {deviceResolver.Device.Type.ToString()}, OS: {clientInfo.OS.Family} - {clientInfo.OS.Major}, Browser: {browserResolver.Browser.Type.ToString()} - {browserResolver.Browser.Version.ToString()}", LastActivity = DateTime.Now }; OnlineClients.AddOrUpdate(clientId.ToString(), onlineClient, (key, value) => { value.LastActivity = DateTime.Now; return(value); }); } foreach (var item in OnlineClients) { if ((DateTime.Now - item.Value.LastActivity).Seconds >= _timeout) { OnlineClients.Remove(item.Key, out OnlineClientViewModel deletedUser); } } await _next(context); }
public Detection(IUserAgentService service, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, ICrawlerResolver crawlerResolver) { this._service = service; this._deviceResolver = deviceResolver; this._browserResolver = browserResolver; this._crawlerResolver = crawlerResolver; }
/// <summary> /// Construct a <see cref="HomeController"/> /// </summary> /// <param name="databaseContext">The <see cref="IDatabaseContext"/> for the <see cref="ApiController"/></param> /// <param name="authenticationContextFactory">The <see cref="IAuthenticationContextFactory"/> for the <see cref="ApiController"/></param> /// <param name="tokenFactory">The value of <see cref="tokenFactory"/></param> /// <param name="systemIdentityFactory">The value of <see cref="systemIdentityFactory"/></param> /// <param name="cryptographySuite">The value of <see cref="cryptographySuite"/></param> /// <param name="application">The value of <see cref="application"/></param> /// <param name="identityCache">The value of <see cref="identityCache"/></param> /// <param name="browserResolver">The value of <see cref="browserResolver"/></param> /// <param name="controlPanelConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="controlPanelConfiguration"/></param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="ApiController"/></param> public HomeController(IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, ITokenFactory tokenFactory, ISystemIdentityFactory systemIdentityFactory, ICryptographySuite cryptographySuite, IApplication application, IIdentityCache identityCache, IBrowserResolver browserResolver, IOptions <ControlPanelConfiguration> controlPanelConfigurationOptions, ILogger <HomeController> logger) : base(databaseContext, authenticationContextFactory, logger, false, false) { this.tokenFactory = tokenFactory ?? throw new ArgumentNullException(nameof(tokenFactory)); this.systemIdentityFactory = systemIdentityFactory ?? throw new ArgumentNullException(nameof(systemIdentityFactory)); this.cryptographySuite = cryptographySuite ?? throw new ArgumentNullException(nameof(cryptographySuite)); this.application = application ?? throw new ArgumentNullException(nameof(application)); this.identityCache = identityCache ?? throw new ArgumentNullException(nameof(identityCache)); this.browserResolver = browserResolver ?? throw new ArgumentNullException(nameof(browserResolver)); controlPanelConfiguration = controlPanelConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(controlPanelConfigurationOptions)); }
public Detection(IUserAgentService service, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, IPlatformResolver platformResolver, IEngineResolver engineResolver, ICrawlerResolver crawlerResolver) { this._service = service; this._deviceResolver = deviceResolver; this._browserResolver = browserResolver; this._platformResolver = platformResolver; this._engineResolver = engineResolver; this._crawlerResolver = crawlerResolver; }
public HomeController( IDetectionService detectionService, IDeviceResolver deviceResolver, IBrowserResolver browserResolver, IEngineResolver engineResolver, IPlatformResolver platformResolver) { client = new ClientInfo { UserAgent = detectionService.UserAgent, Device = deviceResolver.Device, Browser = browserResolver.Browser, Engine = engineResolver.Engine, Platform = platformResolver.Platform }; }
/// <summary> /// Construct a <see cref="HomeController"/> /// </summary> /// <param name="databaseContext">The <see cref="IDatabaseContext"/> for the <see cref="ApiController"/></param> /// <param name="authenticationContextFactory">The <see cref="IAuthenticationContextFactory"/> for the <see cref="ApiController"/></param> /// <param name="tokenFactory">The value of <see cref="tokenFactory"/></param> /// <param name="systemIdentityFactory">The value of <see cref="systemIdentityFactory"/></param> /// <param name="cryptographySuite">The value of <see cref="cryptographySuite"/></param> /// <param name="assemblyInformationProvider">The value of <see cref="assemblyInformationProvider"/></param> /// <param name="identityCache">The value of <see cref="identityCache"/></param> /// <param name="browserResolver">The value of <see cref="browserResolver"/></param> /// <param name="generalConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="generalConfiguration"/>.</param> /// <param name="controlPanelConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="controlPanelConfiguration"/></param> /// <param name="logger">The <see cref="ILogger"/> for the <see cref="ApiController"/></param> public HomeController( IDatabaseContext databaseContext, IAuthenticationContextFactory authenticationContextFactory, ITokenFactory tokenFactory, ISystemIdentityFactory systemIdentityFactory, ICryptographySuite cryptographySuite, IAssemblyInformationProvider assemblyInformationProvider, IIdentityCache identityCache, IBrowserResolver browserResolver, IOptions <GeneralConfiguration> generalConfigurationOptions, IOptions <ControlPanelConfiguration> controlPanelConfigurationOptions, ILogger <HomeController> logger) : base( databaseContext, authenticationContextFactory, logger, (browserResolver ?? throw new ArgumentNullException(nameof(browserResolver))).Browser.Type != BrowserType.Generic &&
public HomeController(IBrowserResolver browser) { _browser = browser; }