Exemplo n.º 1
0
        private void DeleteCookies()
        {
            var callback = new TaskDeleteCookiesCallback();

            callback.Task.ContinueWith(task =>
            {
                if (!task.IsCompleted || task.Result == TaskDeleteCookiesCallback.InvalidNoOfCookiesDeleted)
                {
                    logger.Warn("Failed to delete cookies!");
                }
                else
                {
                    logger.Debug($"Deleted {task.Result} cookies.");
                }
            });

            if (Cef.GetGlobalCookieManager().DeleteCookies(callback: callback))
            {
                logger.Debug("Successfully initiated cookie deletion.");
            }
            else
            {
                logger.Warn("Failed to initiate cookie deletion!");
            }
        }
        public FactoryResult TryCreate(WhitelistApplication settings, out IApplication application)
        {
            var name = $"'{settings.DisplayName}' ({ settings.ExecutableName})";

            application = default(IApplication);

            try
            {
                var success = TryFindApplication(settings, out var executablePath);

                if (success)
                {
                    application = BuildApplication(executablePath, settings);
                    application.Initialize();

                    logger.Debug($"Successfully initialized application {name}.");

                    return(FactoryResult.Success);
                }

                logger.Error($"Could not find application {name}!");

                return(FactoryResult.NotFound);
            }
            catch (Exception e)
            {
                logger.Error($"Unexpected error while trying to initialize application {name}!", e);
            }

            return(FactoryResult.Error);
        }
        private CefSettings InitializeCefSettings()
        {
            var warning     = logger.LogLevel == LogLevel.Warning;
            var error       = logger.LogLevel == LogLevel.Error;
            var cefSettings = new CefSettings
            {
                CachePath   = appConfig.BrowserCachePath,
                LogFile     = appConfig.BrowserLogFilePath,
                LogSeverity = error ? LogSeverity.Error : (warning ? LogSeverity.Warning : LogSeverity.Info),
                UserAgent   = InitializeUserAgent()
            };

            cefSettings.CefCommandLineArgs.Add("touch-events", "enabled");

            logger.Debug($"Cache path: {cefSettings.CachePath}");
            logger.Debug($"Engine version: Chromium {Cef.ChromiumVersion}, CEF {Cef.CefVersion}, CefSharp {Cef.CefSharpVersion}");
            logger.Debug($"Log file: {cefSettings.LogFile}");
            logger.Debug($"Log severity: {cefSettings.LogSeverity}");

            return(cefSettings);
        }
        private List <IFeatureConfiguration> LoadFromFile()
        {
            var configurations = new List <IFeatureConfiguration>();

            try
            {
                if (File.Exists(filePath))
                {
                    var context = new StreamingContext(StreamingContextStates.All, logger);

                    logger.Debug($"Attempting to load backup data from '{filePath}'...");

                    using (var stream = File.Open(filePath, FileMode.Open))
                    {
                        configurations = (List <IFeatureConfiguration>) new BinaryFormatter(null, context).Deserialize(stream);
                    }

                    logger.Debug($"Backup data successfully loaded, found {configurations.Count} items.");
                }
                else
                {
                    logger.Debug($"No backup data found under '{filePath}'.");
                }
            }
            catch (Exception e)
            {
                logger.Error($"Failed to load backup data from '{filePath}'!", e);
            }

            return(configurations);
        }
Exemplo n.º 5
0
        private void InitializeRequestFilter(IRequestFilter requestFilter)
        {
            var factory = new RuleFactory();

            foreach (var item in appSettings.AllowedUrlRegexps)
            {
                var rule = factory.CreateRule(FilterRuleType.Regex);
                rule.Initialize(new FilterRuleSettings {
                    Expression = item, Result = FilterResult.Allow
                });
                requestFilter.Load(rule);
            }
            foreach (var item in appSettings.AllowedUrls)
            {
                var rule = factory.CreateRule(FilterRuleType.Simplified);
                rule.Initialize(new FilterRuleSettings {
                    Expression = item, Result = FilterResult.Allow
                });
                requestFilter.Load(rule);
            }

            if (requestFilter.Process(new Request {
                Url = startUrl
            }) != FilterResult.Allow)
            {
                var rule = factory.CreateRule(FilterRuleType.Simplified);
                rule.Initialize(new FilterRuleSettings {
                    Expression = startUrl, Result = FilterResult.Allow
                });
                requestFilter.Load(rule);
                logger.Debug($"Automatically created filter rule to allow start URL '{startUrl}'.");
            }
        }
        private void InitializeControl()
        {
            var contextMenuHandler = new ContextMenuHandler();
            var dialogHandler      = new DialogHandler();
            var displayHandler     = new DisplayHandler();
            var downloadLogger     = logger.CloneFor($"{nameof(DownloadHandler)} #{Id}");
            var downloadHandler    = new DownloadHandler(appConfig, downloadLogger, settings, WindowSettings);
            var keyboardHandler    = new KeyboardHandler();
            var lifeSpanHandler    = new LifeSpanHandler();
            var requestFilter      = new RequestFilter();
            var requestLogger      = logger.CloneFor($"{nameof(RequestHandler)} #{Id}");
            var resourceHandler    = new ResourceHandler(appConfig, requestFilter, logger, settings, WindowSettings, text);
            var requestHandler     = new RequestHandler(appConfig, requestFilter, requestLogger, resourceHandler, settings, WindowSettings, text);

            Icon = new BrowserIconResource();

            dialogHandler.DialogRequested  += DialogHandler_DialogRequested;
            displayHandler.FaviconChanged  += DisplayHandler_FaviconChanged;
            displayHandler.ProgressChanged += DisplayHandler_ProgressChanged;
            downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested;
            downloadHandler.DownloadUpdated           += DownloadHandler_DownloadUpdated;
            keyboardHandler.FindRequested             += KeyboardHandler_FindRequested;
            keyboardHandler.HomeNavigationRequested   += HomeNavigationRequested;
            keyboardHandler.ReloadRequested           += ReloadRequested;
            keyboardHandler.ZoomInRequested           += ZoomInRequested;
            keyboardHandler.ZoomOutRequested          += ZoomOutRequested;
            keyboardHandler.ZoomResetRequested        += ZoomResetRequested;
            lifeSpanHandler.PopupRequested            += LifeSpanHandler_PopupRequested;
            resourceHandler.SessionIdentifierDetected += (id) => SessionIdentifierDetected?.Invoke(id);
            requestHandler.QuitUrlVisited             += RequestHandler_QuitUrlVisited;
            requestHandler.RequestBlocked             += RequestHandler_RequestBlocked;

            InitializeRequestFilter(requestFilter);

            control = new BrowserControl(
                contextMenuHandler,
                dialogHandler,
                displayHandler,
                downloadHandler,
                keyboardHandler,
                lifeSpanHandler,
                requestHandler,
                startUrl);
            control.AddressChanged      += Control_AddressChanged;
            control.LoadFailed          += Control_LoadFailed;
            control.LoadingStateChanged += Control_LoadingStateChanged;
            control.TitleChanged        += Control_TitleChanged;

            control.Initialize();
            logger.Debug("Initialized browser control.");
        }
Exemplo n.º 7
0
        internal void Initialize()
        {
            var contextMenuHandler = new ContextMenuHandler();
            var displayHandler     = new DisplayHandler();
            var downloadLogger     = logger.CloneFor($"{nameof(DownloadHandler)} {Id}");
            var downloadHandler    = new DownloadHandler(appConfig, settings, downloadLogger);
            var keyboardHandler    = new KeyboardHandler();
            var lifeSpanHandler    = new LifeSpanHandler();
            var requestHandler     = new RequestHandler(appConfig);

            displayHandler.FaviconChanged  += DisplayHandler_FaviconChanged;
            displayHandler.ProgressChanged += DisplayHandler_ProgressChanged;
            downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested;
            keyboardHandler.ReloadRequested    += ReloadRequested;
            keyboardHandler.ZoomInRequested    += ZoomInRequested;
            keyboardHandler.ZoomOutRequested   += ZoomOutRequested;
            keyboardHandler.ZoomResetRequested += ZoomResetRequested;
            lifeSpanHandler.PopupRequested     += LifeSpanHandler_PopupRequested;

            control = new BrowserControl(contextMenuHandler, displayHandler, downloadHandler, keyboardHandler, lifeSpanHandler, requestHandler, url);
            control.AddressChanged      += Control_AddressChanged;
            control.LoadingStateChanged += Control_LoadingStateChanged;
            control.TitleChanged        += Control_TitleChanged;
            control.Initialize();

            logger.Debug("Initialized browser control.");

            window                 = uiFactory.CreateBrowserWindow(control, settings, isMainInstance);
            window.Closing        += () => Terminated?.Invoke(Id);
            window.AddressChanged += Window_AddressChanged;
            window.BackwardNavigationRequested += Window_BackwardNavigationRequested;
            window.DeveloperConsoleRequested   += Window_DeveloperConsoleRequested;
            window.ForwardNavigationRequested  += Window_ForwardNavigationRequested;
            window.ReloadRequested             += ReloadRequested;
            window.ZoomInRequested             += ZoomInRequested;
            window.ZoomOutRequested            += ZoomOutRequested;
            window.ZoomResetRequested          += ZoomResetRequested;
            window.UpdateZoomLevel(CalculateZoomPercentage());

            logger.Debug("Initialized browser window.");
        }
Exemplo n.º 8
0
        private void InitializeControl()
        {
            var contextMenuHandler = new ContextMenuHandler();
            var displayHandler     = new DisplayHandler();
            var downloadLogger     = logger.CloneFor($"{nameof(DownloadHandler)} {Id}");
            var downloadHandler    = new DownloadHandler(appConfig, settings, downloadLogger);
            var keyboardHandler    = new KeyboardHandler();
            var lifeSpanHandler    = new LifeSpanHandler();
            var requestFilter      = new RequestFilter();
            var requestLogger      = logger.CloneFor($"{nameof(RequestHandler)} {Id}");
            var requestHandler     = new RequestHandler(appConfig, settings.Filter, requestFilter, requestLogger, text);

            displayHandler.FaviconChanged  += DisplayHandler_FaviconChanged;
            displayHandler.ProgressChanged += DisplayHandler_ProgressChanged;
            downloadHandler.ConfigurationDownloadRequested += DownloadHandler_ConfigurationDownloadRequested;
            keyboardHandler.ReloadRequested    += ReloadRequested;
            keyboardHandler.ZoomInRequested    += ZoomInRequested;
            keyboardHandler.ZoomOutRequested   += ZoomOutRequested;
            keyboardHandler.ZoomResetRequested += ZoomResetRequested;
            lifeSpanHandler.PopupRequested     += LifeSpanHandler_PopupRequested;
            requestHandler.RequestBlocked      += RequestHandler_RequestBlocked;

            if (settings.Filter.ProcessContentRequests || settings.Filter.ProcessMainRequests)
            {
                var factory = new RuleFactory();

                foreach (var settings in settings.Filter.Rules)
                {
                    var rule = factory.CreateRule(settings.Type);

                    rule.Initialize(settings);
                    requestFilter.Load(rule);
                }

                logger.Debug($"Initialized request filter with {settings.Filter.Rules.Count} rule(s).");
            }

            control = new BrowserControl(contextMenuHandler, displayHandler, downloadHandler, keyboardHandler, lifeSpanHandler, requestHandler, url);
            control.AddressChanged      += Control_AddressChanged;
            control.LoadingStateChanged += Control_LoadingStateChanged;
            control.TitleChanged        += Control_TitleChanged;

            control.Initialize();
            logger.Debug("Initialized browser control.");
        }