Пример #1
0
        private ServerStatusElement getIscBindServiceStatus()
        {
            ServerStatusElement e = new ServerStatusElement();

            e.Name = "ISC BIND service status";

            if (iscBindServiceExists())
            {
                ServiceController sc = getIscBindServiceController();
                if (sc.Status == ServiceControllerStatus.Running)
                {
                    e.Value     = "Started";
                    e.Condition = ServerStatusCondition.Normal;
                }
                else
                {
                    e.Value     = sc.Status.ToString();
                    e.Condition = ServerStatusCondition.Error;

                    e.ActionText    = "Start";
                    e.ActionCommand = "StartBindService";
                }
            }
            else
            {
                e.Value     = "Not installed";
                e.Condition = ServerStatusCondition.Error;
            }
            return(e);
        }
Пример #2
0
        private ServerStatusElement getIscBindSecurityStatus()
        {
            ServerStatusElement e = new ServerStatusElement();

            e.Name = "ISC BIND security (" + ServerConfig.IscBindDirectory.FullName + ")";

            DirectorySecurity           security = ServerConfig.IscBindDirectory.GetAccessControl();
            AuthorizationRuleCollection rules    = security.GetAccessRules(
                true, false, typeof(SecurityIdentifier));

            WindowsUserManager wuManager = new WindowsUserManager(ServerConfig.WindowsServerName);
            WindowsUser        namedUser = wuManager.Find(iscBindUser);

            if (namedUser == null)
            {
                e.Value     = "Windows user '" + iscBindUser + "' is missing";
                e.Condition = ServerStatusCondition.Error;
            }
            else
            {
                var q = from r in rules.OfType <FileSystemAccessRule>()
                        where r.IdentityReference == namedUser.Sid
                        where r.AccessControlType == AccessControlType.Allow
                        select r;

                if (q.Count() != 0)
                {
                    if ((q.Single().FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify)
                    {
                        e.Value     = "User '" + iscBindUser + "' can modify";
                        e.Condition = ServerStatusCondition.Normal;
                    }
                    else
                    {
                        e.Value     = "User '" + iscBindUser + "' cannot modify";
                        e.Condition = ServerStatusCondition.Error;
                    }
                }
                else
                {
                    e.Value     = "User '" + iscBindUser + "' does not have any access";
                    e.Condition = ServerStatusCondition.Error;
                }

                if (e.Condition == ServerStatusCondition.Error)
                {
                    // At this point, if the user exists but the security is wrong, it can be reset.
                    e.ActionText    = "Repair";
                    e.ActionCommand = "RepairBindSecurity";
                }
            }

            return(e);
        }
        private void serverDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow     row     = serverDataGridView.Rows[e.RowIndex];
            DataGridViewCell    cell    = row.Cells[e.ColumnIndex];
            ServerStatusElement element = (ServerStatusElement)row.DataBoundItem;

            if (cell.ColumnIndex == serverDataGridView.Columns[ActionColumn.Name].Index)
            {
                if (!string.IsNullOrEmpty(element.ActionCommand))
                {
                    RunOpenAsync(element);
                }
            }
        }
        private void serverDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            DataGridViewRow         row       = serverDataGridView.Rows[e.RowIndex];
            ServerStatusElement     element   = (ServerStatusElement)row.DataBoundItem;
            DataGridViewTextBoxCell valueCell = (DataGridViewTextBoxCell)row.Cells[ValueColumn.Name];

            switch (element.Condition)
            {
            case ServerStatusCondition.Normal:
                valueCell.Style.ForeColor = Color.Green;
                break;

            case ServerStatusCondition.Error:
                valueCell.Style.ForeColor = Color.Red;
                break;
            }
        }
Пример #5
0
        private ServerStatusElement getIscBindConfigStatus()
        {
            ServerStatusElement e = new ServerStatusElement();

            e.Name = "ISC BIND configuration status";

            string iscBindDirectory = ServerConfig.IscBindDirectory.FullName;
            string rndcConfPath     = Path.Combine(iscBindDirectory, @"etc\rndc.conf");
            string namedConfPath    = Path.Combine(iscBindDirectory, @"etc\named.conf");
            string namedConfGenPath = Path.Combine(iscBindDirectory, @"etc\named.generated.conf");

            if (!File.Exists(rndcConfPath))
            {
                e.Value     = "File '" + rndcConfPath + "' missing";
                e.Condition = ServerStatusCondition.Error;
            }
            else if (!File.Exists(namedConfPath))
            {
                e.Value     = "File '" + namedConfPath + "' missing";
                e.Condition = ServerStatusCondition.Error;
            }
            else if (!File.Exists(namedConfGenPath))
            {
                e.Value     = "File '" + namedConfGenPath + "' missing";
                e.Condition = ServerStatusCondition.Error;
            }
            else if (!fileContainsText(namedConfPath, "include \"named.generated.conf\""))
            {
                e.Value     = "Generated config include missing from 'named.conf'";
                e.Condition = ServerStatusCondition.Error;
            }
            else
            {
                e.Value     = "All files exist";
                e.Condition = ServerStatusCondition.Normal;
            }

            if (e.Condition == ServerStatusCondition.Error)
            {
                e.ActionText    = "Repair";
                e.ActionCommand = "RepairBindConfig";
            }

            return(e);
        }
        void ServerStatusViewer_OpenAsync(object sender, DataActionEventArgs e)
        {
            ServerStatusElement element = e.GetData <ServerStatusElement>();

            e.ReplaceData(CreateAdapter <ServerStatusAdapter>().RunActionCommand(element.ActionCommand));
        }