/// <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);
            }
        }
Beispiel #2
0
 /// <summary>
 /// InitServerNodeConfiguration2012 method implementation
 /// </summary>
 private static NamedPipeRegistryRecord InitServerNodeConfiguration2012(NamedPipeRegistryRecord reg)
 {
     reg.MachineName        = GetMachineName(reg.FQDN);
     reg.BehaviorLevel      = 1;
     reg.HeartbeatTimestamp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, 0, DateTimeKind.Local);
     return(reg);
 }
Beispiel #3
0
        /// <summary>
        /// InitFarmNodeConfiguration method implementation
        /// </summary>
        public static NamedPipeRegistryRecord InitServerNodeConfiguration(NamedPipeRegistryRecord reg)
        {
            NamedPipeRegistryRecord result = default(NamedPipeRegistryRecord);

            try
            {
                if (reg.IsWindows2019)
                {
                    result = InitServerNodeConfiguration2019(reg);
                }
                else if (reg.IsWindows2016)
                {
                    result = InitServerNodeConfiguration2016(reg);
                }
                else if (reg.IsWindows2012R2)
                {
                    result = InitServerNodeConfiguration2012(reg);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
        /// <summary>
        /// DoOnRequestServerConfiguration method implementation (Client)
        /// </summary>
        private void DoOnRequestServerConfiguration(string servername)
        {
            if (CFGUtilities.IsPrimaryComputer())
            {
                List <string> lst = new List <string>()
                {
                    servername
                };
                PipeClient pipe = new PipeClient(XORUtilities.XORKey, lst);

                string req = Environment.MachineName;
                NamedPipeRegistryRecord reg = pipe.DoRequestServerConfiguration(req);
                UpgradeServersConfig(reg);
            }
            return;
        }
        /// <summary>
        /// DoOnReceiveServerConfiguration method implementation (Server)
        /// </summary>
        private NamedPipeRegistryRecord DoOnReceiveServerConfiguration(string requestor)
        {
            RegistryVersion         reg = new RegistryVersion();
            NamedPipeRegistryRecord rec = default(NamedPipeRegistryRecord);

            rec.FQDN                      = Dns.GetHostEntry("LocalHost").HostName;
            rec.CurrentVersion            = reg.CurrentVersion;
            rec.CurrentBuild              = reg.CurrentBuild;
            rec.CurrentMajorVersionNumber = reg.CurrentMajorVersionNumber;
            rec.CurrentMinorVersionNumber = reg.CurrentMinorVersionNumber;
            rec.InstallationType          = reg.InstallationType;
            rec.ProductName               = reg.ProductName;
            rec.IsWindows2012R2           = reg.IsWindows2012R2;
            rec.IsWindows2016             = reg.IsWindows2016;
            rec.IsWindows2019             = reg.IsWindows2019;
            rec.NodeType                  = FarmUtilities.InitServerNodeType();
            return(rec);
        }
Beispiel #6
0
        /// <summary>
        /// InitServerNodeConfiguration2019 method implementation
        /// </summary>
        private static NamedPipeRegistryRecord InitServerNodeConfiguration2019(NamedPipeRegistryRecord reg)
        {
            Runspace   SPRunSpace   = null;
            PowerShell SPPowerShell = null;

            try
            {
                RunspaceConfiguration SPRunConfig = RunspaceConfiguration.Create();
                SPRunSpace            = RunspaceFactory.CreateRunspace(SPRunConfig);
                SPPowerShell          = PowerShell.Create();
                SPPowerShell.Runspace = SPRunSpace;
                SPRunSpace.Open();

                Pipeline pipeline  = SPRunSpace.CreatePipeline();
                Command  exportcmd = new Command("(Get-AdfsFarmInformation).FarmNodes", true);

                pipeline.Commands.Add(exportcmd);

                Collection <PSObject> PSOutput = pipeline.Invoke();
                foreach (var item in PSOutput)
                {
                    if (reg.FQDN.ToLower().Equals(item.Members["FQDN"].Value.ToString().ToLower()))
                    {
                        reg.FQDN               = item.Members["FQDN"].Value.ToString();
                        reg.MachineName        = GetMachineName(reg.FQDN);
                        reg.BehaviorLevel      = Convert.ToInt32(item.Members["BehaviorLevel"].Value);
                        reg.HeartbeatTimestamp = Convert.ToDateTime(item.Members["HeartbeatTimeStamp"].Value);
                        break;
                    }
                }
            }
            finally
            {
                if (SPRunSpace != null)
                {
                    SPRunSpace.Close();
                }
            }
            return(reg);
        }