Beispiel #1
0
        public DnsController(IKeyManagerFactory factory, ILogger <KeyController> logger, Settings settings)
        {
            _manager = factory.BuildDnsManager();
            _logger  = logger;
            _orkId   = settings.Instance.Username;

            var cln = new SimulatorClient(settings.Endpoints.Simulator.Api, _orkId, settings.Instance.GetPrivateKey());

            _orkManager = new SimulatorOrkManager(_orkId, cln);
        }
        public MainAppContext(IAppSetting appSetting, IDnsManager dnsManager, IFileUpdater fileUpdater)
        {
            // Get config settings.
            _appSetting = appSetting;

            // Populate fields.
            _dnsManager  = dnsManager;
            _fileUpdater = fileUpdater;

            // Subscribed to the application's exit event.
            Application.ApplicationExit += OnApplicationExit;

            // Make sure the 'Data' folder exists.
            if (!Directory.Exists(_appSetting.StorageInfo.Path))
            {
                Directory.CreateDirectory(_appSetting.StorageInfo.Path);
            }

            // Construct the notification's context menu.
            var contextMenu = new ContextMenuStrip();

            // Create menus for DNS entries.
            var tempUpdateDNSMenus = new List <ToolStripItem>();

            foreach (Source source in _appSetting.Sources)
            {
                tempUpdateDNSMenus.Add(MenuBuilder.CreateMenu(source.Name).HookClickEvent(OnSetDNSMenuClicked));
            }
            _updateDNSMenus = new ToolStripMenuItem[tempUpdateDNSMenus.Count];
            tempUpdateDNSMenus.CopyTo(_updateDNSMenus);

            // Other essential menus.
            contextMenu.Items.AddRange(new ToolStripItem[]
            {
                MenuBuilder.CreateMenu($"DNS Resolver v{Application.ProductVersion}"),
                MenuBuilder.CreateMenu("Querying host file data..."),
                MenuBuilder.CreateMenu("DNS").AddManyChildMenu(_updateDNSMenus),
                MenuBuilder.CreateSeparator(),
                MenuBuilder.CreateMenu("Open Host File...").HookClickEvent(OnOpenHostFileMenuClicked),
                MenuBuilder.CreateSeparator(),
                MenuBuilder.CreateMenu("Reset DNS").HookClickEvent(OnDNSResetMenuClicked),
                MenuBuilder.CreateMenu("Clear Host File").HookClickEvent(OnHostFileResetMenuClicked),
                MenuBuilder.CreateSeparator(),
                MenuBuilder.CreateMenu("Exit").HookClickEvent(OnExitMenuClicked),
            });
            contextMenu.Renderer = new CustomToolStripMenuRenderer();

            // Make sure that the menu checked condition is refreshed everytime it is opening.
            contextMenu.Opening += OnNotifyIconContextMenuOpening;

            // Finally, the notification icon itself.
            _notifyIcon = new NotifyIcon
            {
                Icon             = Resources.AppIcon,
                Text             = Application.ProductName,
                Visible          = true,
                ContextMenuStrip = contextMenu,
                BalloonTipIcon   = ToolTipIcon.Info,
                BalloonTipTitle  = Application.ProductName
            };

            // Update the notify icon's text.
            UpdateNotifyIconText();

            // Create menus for Host file data entries.
            _hostFileProgress = new Progress <ToolStripMenuItem[]>(HostFileMenusProgressHandler);

            Task.Run(() => ConstructHostFileContextMenu());
        }