/// <summary>
        /// UpgradeServersConfig method implementation (Client)
        /// </summary>
        private void UpgradeServersConfig(NamedPipeRegistryRecord reg)
        {
            NamedPipeRegistryRecord rec = FarmUtilities.InitServerNodeConfiguration(reg);

            MFAConfig      cfg = CFGUtilities.ReadConfiguration(null);
            ADFSServerHost svr = null;

            if (cfg.Hosts.ADFSFarm.Servers.Exists(s => s.FQDN.ToLower().Equals(rec.FQDN.ToLower())))
            {
                svr = cfg.Hosts.ADFSFarm.Servers.Find(s => s.FQDN.ToLower().Equals(rec.FQDN.ToLower()));
                cfg.Hosts.ADFSFarm.Servers.Remove(svr);
            }
            svr                           = new ADFSServerHost();
            svr.FQDN                      = rec.FQDN;
            svr.CurrentVersion            = rec.CurrentVersion;
            svr.CurrentBuild              = rec.CurrentBuild;
            svr.CurrentMajorVersionNumber = rec.CurrentMajorVersionNumber;
            svr.CurrentMinorVersionNumber = rec.CurrentMinorVersionNumber;
            svr.InstallationType          = rec.InstallationType;
            svr.ProductName               = rec.ProductName;
            svr.NodeType                  = rec.NodeType;
            svr.BehaviorLevel             = rec.BehaviorLevel;
            svr.HeartbeatTmeStamp         = rec.HeartbeatTimestamp;
            cfg.Hosts.ADFSFarm.Servers.Add(svr);
            CFGUtilities.WriteConfiguration(null, cfg);

            using (MailSlotClient mailslot = new MailSlotClient())
            {
                mailslot.Text = Environment.MachineName;
                mailslot.SendNotification(NotificationsKind.ConfigurationReload);
            }
        }
 /// <summary>
 /// RegisterADFSComputer method implementation
 /// </summary>
 public static bool RegisterADFSComputer(PSHost host, string servername)
 {
     try
     {
         string         fqdn    = Dns.GetHostEntry(servername).HostName.ToLower();
         ADFSServerHost srvhost = WebAdminManagerClient.GetCompterInformations(fqdn);
         if (srvhost != null)
         {
             int i = ADFSManager.ADFSFarm.Servers.FindIndex(c => c.FQDN.ToLower() == srvhost.FQDN.ToLower());
             if (i < 0)
             {
                 ADFSManager.ADFSFarm.Servers.Add(srvhost);
             }
             else
             {
                 ADFSManager.ADFSFarm.Servers[i] = srvhost;
             }
             ADFSManager.SetDirty(true);
             ADFSManager.WriteConfiguration(host);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     return(true);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// ADFSServerControl Constructor
 /// </summary>
 public ADFSServerControl(ADFSServerHost server, bool isrunning = true)
 {
     _host     = server;
     _panel    = new Panel();
     _txtpanel = new Panel();
     Initialize(isrunning);
     BackColor = System.Drawing.SystemColors.Window;
     AutoSize  = false;
     ManagementAdminService.ADFSManager.ServiceStatusChanged += ServersStatusChanged;
     ManagementAdminService.ADFSManager.RefreshServiceStatus();
 }
        /// <summary>
        /// RegisterADFSComputer method implementation
        /// </summary>
        public static bool RegisterADFSComputer(PSHost host, string servername, out List <ADFSServerHost> servers)
        {
            bool           bRet    = false;
            string         fqdn    = Dns.GetHostEntry(servername).HostName.ToLower();
            ADFSServerHost srvhost = WebAdminManagerClient.GetComputerInformations(fqdn);

            if (srvhost != null)
            {
                int i = ADFSManager.ADFSFarm.Servers.FindIndex(c => c.FQDN.ToLower().Equals(srvhost.FQDN.ToLower()));
                if (i < 0)
                {
                    ADFSManager.ADFSFarm.Servers.Add(srvhost);
                }
                else
                {
                    ADFSManager.ADFSFarm.Servers[i] = srvhost;
                }
                ADFSManager.SetDirty(true);
                ADFSManager.WriteConfiguration(host);
                bRet = true;
            }
            servers = ADFSManager.ADFSFarm.Servers;
            return(bRet);
        }
        /// <summary>
        /// UnPackServerNodeConfiguration method implementation
        /// </summary>
        public ADFSServerHost UnPackServerNodeConfiguration(string data)
        {
            ADFSServerHost host = new ADFSServerHost();

            string[]        ps  = data.Split('|');
            RegistryVersion reg = new RegistryVersion();

            reg.VersionFromString(ps[0]);

            host.CurrentBuild = reg.CurrentBuild;
            host.CurrentMajorVersionNumber = reg.CurrentMajorVersionNumber;
            host.CurrentMinorVersionNumber = reg.CurrentMinorVersionNumber;
            host.CurrentVersion            = reg.CurrentVersion;
            host.InstallationType          = reg.InstallationType;
            host.ProductName = reg.ProductName;

            string[] px = ps[1].Split(';');
            host.FQDN              = px[0];
            host.BehaviorLevel     = Convert.ToInt32(px[1]);
            host.HeartbeatTmeStamp = Convert.ToDateTime(px[2]);
            host.NodeType          = px[3];

            return(host);
        }
        /// <summary>
        /// MailSlotMessageArrived implementation
        /// </summary>
        private void MailSlotMessageArrived(MailSlotServer maislotserver, MailSlotMessage message)
        {
            if (message.ApplicationName == "CP1")
            {
                switch (message.Operation)
                {
                case 0x10:
                    if (IsLocalMessage(message))
                    {
                        this.EventLog.WriteEntry(string.Format("Server Information REQUEST To {0}", message.Text), EventLogEntryType.SuccessAudit, 10000);
                        using (MailSlotClient mailslot = new MailSlotClient("CP1"))
                        {
                            mailslot.Text = Dns.GetHostEntry(message.Text).HostName.ToLower();
                            mailslot.SendNotification(0x11);
                        }
                    }
                    break;

                case 0x11:
                    if (!IsLocalMessage(message))
                    {
                        string localname = Dns.GetHostEntry("localhost").HostName.ToLower();
                        if (localname.ToLower().Equals(message.Text.ToLower()))
                        {
                            this.EventLog.WriteEntry(string.Format("Server Information RECEIVED for {0}", message.Text), EventLogEntryType.SuccessAudit, 10000);
                            using (MailSlotClient mailslot = new MailSlotClient("CP1"))
                            {
                                FarmUtilities reg = new FarmUtilities();
                                mailslot.Text = reg.InitServerNodeConfiguration();
                                mailslot.SendNotification(0x12);
                            }
                        }
                    }
                    break;

                case 0x12:
                    if (!IsLocalMessage(message))
                    {
                        FarmUtilities  reg  = new FarmUtilities();
                        ADFSServerHost host = reg.UnPackServerNodeConfiguration(message.Text);

                        ManagementService.EnsureService();
                        int i = ManagementService.ADFSManager.ADFSFarm.Servers.FindIndex(c => c.FQDN.ToLower() == host.FQDN.ToLower());
                        if (i < 0)
                        {
                            ManagementService.ADFSManager.ADFSFarm.Servers.Add(host);
                        }
                        else
                        {
                            ManagementService.ADFSManager.ADFSFarm.Servers[i] = host;
                        }

                        ManagementService.ADFSManager.SetDirty(true);
                        ManagementService.ADFSManager.WriteConfiguration(null);

                        this.EventLog.WriteEntry(string.Format("Server Information RESPONSE : {0}", message.Text), EventLogEntryType.SuccessAudit, 10000);
                    }
                    break;
                }
            }
        }