예제 #1
0
        public ServerStatusActionResult RepairBindSecurity()
        {
            WindowsUser namedUser = findWindowsUser();

            if (namedUser == null)
            {
                throw new Exception(
                          "Cannot repair when user '" + iscBindUser + "' does not exist.");
            }

            IscBindSetup setup = new IscBindSetup(
                ServerConfig.IscBindDirectory.FullName,
                namedUser.Sid);

            setup.IntitializeSecurity();

            ServerStatusActionResult r = new ServerStatusActionResult();

            if (getIscBindSecurityStatus().Condition == ServerStatusCondition.Normal)
            {
                r.Success     = true;
                r.UserMessage = "Security has been repaired.";
            }
            else
            {
                r.Success     = false;
                r.UserMessage = "Security was not repaired.";
            }
            return(r);
        }
예제 #2
0
        public ServerStatusActionResult RepairBindConfig()
        {
            WindowsUser namedUser = findWindowsUser();

            if (namedUser == null)
            {
                throw new Exception(
                          "Cannot repair when user '" + iscBindUser + "' does not exist.");
            }

            string       iscBindDirectory = ServerConfig.IscBindDirectory.FullName;
            IscBindSetup bindSetup        = new IscBindSetup(iscBindDirectory, namedUser.Sid);

            // Backup existing configs and replace with new one.
            bindSetup.InitializeConfig();

            // Regenerate zone config file in case it's corrupt.
            IscBindManager bindManager = CreateManager <IscBindManager>();

            bindManager.RegenerateMainConfigFile();

            ServiceController sc = getIscBindServiceController();

            if (sc.Status == ServiceControllerStatus.Running)
            {
                sc.Stop();
                sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10));
            }

            sc.Start();
            sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10));

            ServerStatusActionResult result = new ServerStatusActionResult();

            if (sc.Status == ServiceControllerStatus.Running)
            {
                result.Success     = true;
                result.UserMessage = "The configuration was repaired, and the ISC BIND service was restarted.";
            }
            else
            {
                result.Success = false;
                if (getIscBindConfigStatus().Condition == ServerStatusCondition.Normal)
                {
                    result.UserMessage = "The repair was successful, but the ISC BIND service did not start.";
                }
                else
                {
                    result.UserMessage = "The repair has failed, and the ISC BIND service failed to start.";
                }
            }

            return(result);
        }
예제 #3
0
        public ServerStatusActionResult StartBindService()
        {
            ServiceController sc = getIscBindServiceController();

            sc.Start();
            sc.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(10));

            ServerStatusActionResult r = new ServerStatusActionResult();

            if (sc.Status == ServiceControllerStatus.Running)
            {
                r.Success     = true;
                r.UserMessage = "ISC BIND service started.";
            }
            else
            {
                r.Success     = false;
                r.UserMessage = "ISC BIND service failed to start.";
            }
            return(r);
        }
        void ServerStatusViewer_AfterOpenAsync(object sender, DataActionAfterEventArgs e)
        {
            AsyncStatusRevert(e.StatusGuid);
            serverDataGridView.Enabled = true;

            RunLoadAsync();

            ServerStatusActionResult result = e.GetData <ServerStatusActionResult>();
            MessageBoxIcon           icon;

            if (result.Success)
            {
                icon = MessageBoxIcon.Information;
            }
            else
            {
                icon = MessageBoxIcon.Warning;
            }

            MessageBox.Show(this, result.UserMessage, "Action result", MessageBoxButtons.OK, icon);
        }