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.º 2
0
        private bool TrySearchGenericSessionIdentifier(IResponse response)
        {
            var ids = response.Headers.GetValues("X-LMS-USER-ID");

            if (ids != default(string[]))
            {
                var userId = ids.FirstOrDefault();

                if (userId != default(string))
                {
                    Task.Run(() => SessionIdentifierDetected?.Invoke(userId));
                    logger.Info("Generic LMS session detected.");

                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 3
0
        private void CreateNewInstance(string url = null)
        {
            var id             = ++instanceIdCounter;
            var isMainInstance = instances.Count == 0;
            var instanceLogger = logger.CloneFor($"Browser Instance #{id}");
            var startUrl       = url ?? settings.StartUrl;
            var instance       = new BrowserApplicationInstance(appConfig, settings, id, isMainInstance, fileSystemDialog, messageBox, instanceLogger, text, uiFactory, startUrl);

            instance.ConfigurationDownloadRequested += (fileName, args) => ConfigurationDownloadRequested?.Invoke(fileName, args);
            instance.PopupRequested            += Instance_PopupRequested;
            instance.SessionIdentifierDetected += (i) => SessionIdentifierDetected?.Invoke(i);
            instance.Terminated           += Instance_Terminated;
            instance.TerminationRequested += () => TerminationRequested?.Invoke();

            instance.Initialize();
            instances.Add(instance);

            logger.Info($"Created browser instance {instance.Id}.");
            WindowsChanged?.Invoke();
        }
        private void SearchMoodleIdentifier(IResponse response)
        {
            var locations = response.Headers.GetValues("Location");

            if (locations != default(string[]))
            {
                try
                {
                    var location = locations.FirstOrDefault(l => l.Contains("/login/index.php?testsession"));

                    if (location != default(string))
                    {
                        var userId = location.Substring(location.IndexOf("=") + 1);

                        Task.Run(() => SessionIdentifierDetected?.Invoke(userId));
                    }
                }
                catch (Exception e)
                {
                    logger.Error("Failed to parse Moodle session identifier!", e);
                }
            }
        }