private void CreateGrubMenu() { var customMenuEntries = _bootEntryServices.GetAll().Where(x => x.Type == "grub" && x.IsActive).OrderBy(x => x.Order).ThenBy(x => x.Name); var defaultCustomEntry = customMenuEntries.FirstOrDefault(x => x.IsDefault); var grubMenu = new StringBuilder(); grubMenu.Append("insmod password_pbkdf2" + NewLineChar); grubMenu.Append("insmod regexp" + NewLineChar); grubMenu.Append("set default=0" + NewLineChar); grubMenu.Append("set timeout=10" + NewLineChar); grubMenu.Append("set pager=1" + NewLineChar); /*if (!string.IsNullOrEmpty(_defaultBoot.GrubUserName) && !string.IsNullOrEmpty(_defaultBoot.GrubPassword)) * { * grubMenu.Append("set superusers=\"" + _defaultBoot.GrubUserName + "\"" + NewLineChar); * string sha = null; * try * { * sha = * new WebClient().DownloadString( * "http://docs.clonedeploy.org/grub-pass-gen/encrypt.php?password="******"\n \n\n\n", ""); * } * catch * { * log.Error("Could not generate sha for grub password. Could not contact http://clonedeploy.org"); * } * grubMenu.Append("password_pbkdf2 " + _defaultBoot.GrubUserName + " " + sha + "" + NewLineChar); * grubMenu.Append("export superusers" + NewLineChar); * grubMenu.Append("" + NewLineChar); * }*/ grubMenu.Append(@"regexp -s 1:b1 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"regexp -s 2:b2 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"regexp -s 3:b3 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"regexp -s 4:b4 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"regexp -s 5:b5 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"regexp -s 6:b6 '(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3}):(.{1,3})' $net_default_mac" + NewLineChar); grubMenu.Append(@"mac=01-$b1-$b2-$b3-$b4-$b5-$b6" + NewLineChar); grubMenu.Append("" + NewLineChar); if (_defaultBoot.Type == "standard") { grubMenu.Append("if [ -s /pxelinux.cfg/$mac.cfg ]; then" + NewLineChar); grubMenu.Append("configfile /pxelinux.cfg/$mac.cfg" + NewLineChar); grubMenu.Append("fi" + NewLineChar); } else { grubMenu.Append("if [ -s /proxy/efi64/pxelinux.cfg/$mac.cfg ]; then" + NewLineChar); grubMenu.Append("configfile /proxy/efi64/pxelinux.cfg/$mac.cfg" + NewLineChar); grubMenu.Append("fi" + NewLineChar); } if (defaultCustomEntry != null) { grubMenu.Append("" + NewLineChar); grubMenu.Append("menuentry \"" + _alphaNumericSpace.Replace(defaultCustomEntry.Name, "") + "\" --unrestricted {" + NewLineChar); grubMenu.Append(defaultCustomEntry.Content + NewLineChar); grubMenu.Append("}" + NewLineChar); } grubMenu.Append("" + NewLineChar); grubMenu.Append("menuentry \"Boot To Local Machine\" --unrestricted {" + NewLineChar); grubMenu.Append("exit" + NewLineChar); grubMenu.Append("}" + NewLineChar); grubMenu.Append("" + NewLineChar); grubMenu.Append("menuentry \"Theopenem\" --user {" + NewLineChar); grubMenu.Append("echo Please Wait While The Boot Image Is Transferred. This May Take A Few Minutes." + NewLineChar); grubMenu.Append("linux /kernels/" + _defaultBoot.Kernel + " root=/dev/ram0 rw ramdisk_size=156000 " + " web=" + _webPath + " USER_TOKEN=" + _userToken + " consoleblank=0 " + _globalComputerArgs + "" + NewLineChar); grubMenu.Append("initrd /images/" + _defaultBoot.BootImage + "" + NewLineChar); grubMenu.Append("}" + NewLineChar); grubMenu.Append("" + NewLineChar); grubMenu.Append("menuentry \"Client Console\" --user {" + NewLineChar); grubMenu.Append("echo Please Wait While The Boot Image Is Transferred. This May Take A Few Minutes." + NewLineChar); grubMenu.Append("linux /kernels/" + _defaultBoot.Kernel + " root=/dev/ram0 rw ramdisk_size=156000 " + " web=" + _webPath + " USER_TOKEN=" + _userToken + " task=debug consoleblank=0 " + _globalComputerArgs + "" + NewLineChar); grubMenu.Append("initrd /images/" + _defaultBoot.BootImage + "" + NewLineChar); grubMenu.Append("}" + NewLineChar); grubMenu.Append("" + NewLineChar); foreach (var customEntry in customMenuEntries) { if (defaultCustomEntry != null && customEntry.Id == defaultCustomEntry.Id) { continue; } grubMenu.Append("" + NewLineChar); grubMenu.Append("menuentry \"" + _alphaNumericSpace.Replace(customEntry.Name, "") + "\" --user {" + NewLineChar); grubMenu.Append(customEntry.Content + NewLineChar); grubMenu.Append("}" + NewLineChar); grubMenu.Append("" + NewLineChar); } var path = _thisComServer.TftpPath + "grub" + Path.DirectorySeparatorChar + "grub.cfg"; new FilesystemServices().WritePath(path, grubMenu.ToString()); }
public IEnumerable <EntityCustomBootMenu> Get() { return(_customBootMenuService.GetAll()); }