Ejemplo n.º 1
0
        public void DeleteBootFiles(ComputerEntity computer)
        {
            if (new ComputerServices().IsComputerActive(computer.Id))
            {
                return; //Files Will Be Processed When task is done
            }
            var pxeMac = StringManipulationServices.MacToPxeMac(computer.Mac);
            var list   = new List <Tuple <string, string> >
            {
                Tuple.Create("bios", ""),
                Tuple.Create("bios", ".ipxe"),
                Tuple.Create("efi32", ""),
                Tuple.Create("efi32", ".ipxe"),
                Tuple.Create("efi64", ""),
                Tuple.Create("efi64", ".ipxe"),
                Tuple.Create("efi64", ".cfg")
            };

            foreach (var tuple in list)
            {
                new FileOpsServices().DeletePath(SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                                                 Path.DirectorySeparatorChar + tuple.Item1 +
                                                 Path.DirectorySeparatorChar + "pxelinux.cfg" +
                                                 Path.DirectorySeparatorChar +
                                                 pxeMac +
                                                 tuple.Item2);
            }

            foreach (var ext in new[] { "", ".ipxe", ".cfg" })
            {
                new FileOpsServices().DeletePath(SettingServices.GetSettingValue(SettingStrings.TftpPath) +
                                                 "pxelinux.cfg" + Path.DirectorySeparatorChar +
                                                 pxeMac + ext);
            }
        }
Ejemplo n.º 2
0
        public string GetComputerNonProxyPath(int computerId, bool isActiveOrCustom)
        {
            var    computer       = GetComputer(computerId);
            var    mode           = SettingServices.GetSettingValue(SettingStrings.PxeMode);
            var    pxeComputerMac = StringManipulationServices.MacToPxeMac(computer.Mac);
            string path;

            var fileName = isActiveOrCustom ? pxeComputerMac : "default";

            if (mode.Contains("ipxe"))
            {
                path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "pxelinux.cfg" +
                       Path.DirectorySeparatorChar +
                       fileName + ".ipxe";
            }
            else if (mode.Contains("grub"))
            {
                if (isActiveOrCustom)
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar +
                           pxeComputerMac + ".cfg";
                }
                else
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "grub" +
                           Path.DirectorySeparatorChar
                           + "grub.cfg";
                }
            }
            else
            {
                path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "pxelinux.cfg" +
                       Path.DirectorySeparatorChar +
                       fileName;
            }

            return(path);
        }
Ejemplo n.º 3
0
        public string GetComputerProxyPath(int computerId, bool isActiveOrCustom, string proxyType)
        {
            var    computer       = GetComputer(computerId);
            var    pxeComputerMac = StringManipulationServices.MacToPxeMac(computer.Mac);
            string path           = null;

            var biosFile  = SettingServices.GetSettingValue(SettingStrings.ProxyBiosFile);
            var efi32File = SettingServices.GetSettingValue(SettingStrings.ProxyEfi32File);
            var efi64File = SettingServices.GetSettingValue(SettingStrings.ProxyEfi64File);

            var fileName = isActiveOrCustom ? pxeComputerMac : "default";

            switch (proxyType)
            {
            case "bios":
                if (biosFile.Contains("ipxe"))
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName + ".ipxe";
                }
                else
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName;
                }
                break;

            case "efi32":
                if (efi32File.Contains("ipxe"))
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName + ".ipxe";
                }
                else
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName;
                }
                break;

            case "efi64":
                if (efi64File.Contains("ipxe"))
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName + ".ipxe";
                }
                else if (efi64File.Contains("grub"))
                {
                    if (isActiveOrCustom)
                    {
                        path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                               Path.DirectorySeparatorChar +
                               proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                               Path.DirectorySeparatorChar + pxeComputerMac + ".cfg";
                    }
                    else
                    {
                        path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "grub" +
                               Path.DirectorySeparatorChar + "grub.cfg";
                    }
                }
                else
                {
                    path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                           Path.DirectorySeparatorChar +
                           proxyType + Path.DirectorySeparatorChar + "pxelinux.cfg" +
                           Path.DirectorySeparatorChar + fileName;
                }
                break;
            }

            return(path);
        }
Ejemplo n.º 4
0
        public bool CreateBootFiles(int id)
        {
            var computer = GetComputer(id);

            if (new ComputerServices().IsComputerActive(computer.Id))
            {
                return(false); //Files Will Be Processed When task is done
            }
            var bootMenu = new ComputerServices().GetComputerBootMenu(computer.Id);

            if (bootMenu == null)
            {
                return(false);
            }
            var    pxeMac = StringManipulationServices.MacToPxeMac(computer.Mac);
            string path;

            if (SettingServices.GetSettingValue(SettingStrings.ProxyDhcp) == "Yes")
            {
                var list = new List <Tuple <string, string, string> >
                {
                    Tuple.Create("bios", "", bootMenu.BiosMenu),
                    Tuple.Create("bios", ".ipxe", bootMenu.BiosMenu),
                    Tuple.Create("efi32", "", bootMenu.Efi32Menu),
                    Tuple.Create("efi32", ".ipxe", bootMenu.Efi32Menu),
                    Tuple.Create("efi64", "", bootMenu.Efi64Menu),
                    Tuple.Create("efi64", ".ipxe", bootMenu.Efi64Menu),
                    Tuple.Create("efi64", ".cfg", bootMenu.Efi64Menu)
                };

                if (SettingServices.ServerIsNotClustered)
                {
                    foreach (var tuple in list)
                    {
                        path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                               Path.DirectorySeparatorChar + tuple.Item1 +
                               Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeMac +
                               tuple.Item2;

                        if (!string.IsNullOrEmpty(tuple.Item3))
                        {
                            new FileOpsServices().WritePath(path, tuple.Item3);
                        }
                    }
                }
                else
                {
                    if (SettingServices.TftpServerRole)
                    {
                        foreach (var tuple in list)
                        {
                            path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "proxy" +
                                   Path.DirectorySeparatorChar + tuple.Item1 +
                                   Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeMac +
                                   tuple.Item2;

                            if (!string.IsNullOrEmpty(tuple.Item3))
                            {
                                new FileOpsServices().WritePath(path, tuple.Item3);
                            }
                        }
                    }

                    var secondaryServers =
                        new SecondaryServerServices().SearchSecondaryServers().Where(x => x.TftpRole == 1 && x.IsActive == 1);
                    foreach (var server in secondaryServers)
                    {
                        var tftpPath =
                            new APICall(new SecondaryServerServices().GetToken(server.Name))
                            .SettingApi.GetSetting("Tftp Path").Value;
                        foreach (var tuple in list)
                        {
                            path = tftpPath + "proxy" + Path.DirectorySeparatorChar + tuple.Item1 +
                                   Path.DirectorySeparatorChar + "pxelinux.cfg" + Path.DirectorySeparatorChar + pxeMac +
                                   tuple.Item2;

                            new APICall(new SecondaryServerServices().GetToken(server.Name))
                            .ServiceAccountApi.WriteTftpFile(new TftpFileDTO
                            {
                                Path     = path,
                                Contents = tuple.Item3
                            });
                        }
                    }
                }
            }
            else
            {
                var mode = SettingServices.GetSettingValue(SettingStrings.PxeMode);
                path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "pxelinux.cfg" +
                       Path.DirectorySeparatorChar +
                       pxeMac;

                if (SettingServices.ServerIsNotClustered)
                {
                    if (mode.Contains("ipxe"))
                    {
                        path += ".ipxe";
                    }
                    else if (mode.Contains("grub"))
                    {
                        path += ".cfg";
                    }

                    if (!string.IsNullOrEmpty(bootMenu.BiosMenu))
                    {
                        new FileOpsServices().WritePath(path, bootMenu.BiosMenu);
                    }
                }
                else
                {
                    if (SettingServices.TftpServerRole)
                    {
                        path = SettingServices.GetSettingValue(SettingStrings.TftpPath) + "pxelinux.cfg" +
                               Path.DirectorySeparatorChar +
                               pxeMac;
                        if (mode.Contains("ipxe"))
                        {
                            path += ".ipxe";
                        }
                        else if (mode.Contains("grub"))
                        {
                            path += ".cfg";
                        }

                        if (!string.IsNullOrEmpty(bootMenu.BiosMenu))
                        {
                            new FileOpsServices().WritePath(path, bootMenu.BiosMenu);
                        }
                    }
                    var secondaryServers =
                        new SecondaryServerServices().SearchSecondaryServers().Where(x => x.TftpRole == 1 && x.IsActive == 1);
                    foreach (var server in secondaryServers)
                    {
                        var tftpPath =
                            new APICall(new SecondaryServerServices().GetToken(server.Name))
                            .SettingApi.GetSetting("Tftp Path").Value;
                        path = tftpPath + "pxelinux.cfg" + Path.DirectorySeparatorChar +
                               pxeMac;

                        if (mode.Contains("ipxe"))
                        {
                            path += ".ipxe";
                        }
                        else if (mode.Contains("grub"))
                        {
                            path += ".cfg";
                        }

                        new APICall(new SecondaryServerServices().GetToken(server.Name))
                        .ServiceAccountApi.WriteTftpFile(new TftpFileDTO
                        {
                            Path     = path,
                            Contents = bootMenu.BiosMenu
                        });
                    }
                }
            }
            return(true);
        }