summaryrefslogtreecommitdiffstats
path: root/modules-available/serversetup-bwlp/inc/menuentry.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2019-02-12 14:55:12 +0100
committerSimon Rettberg2019-02-12 14:55:12 +0100
commitc2a6dfb649107ce3ad64162e2bb2c3c7275650fb (patch)
tree5a58f34c9c2563bb9baebcf7a36afe3e1d08a120 /modules-available/serversetup-bwlp/inc/menuentry.inc.php
parent[serversetup-bwlp] Auto-import of old PXELinux config on bootup (diff)
downloadslx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.tar.gz
slx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.tar.xz
slx-admin-c2a6dfb649107ce3ad64162e2bb2c3c7275650fb.zip
[serversetup*] PXELinux and iPXE side-by-side
Diffstat (limited to 'modules-available/serversetup-bwlp/inc/menuentry.inc.php')
-rw-r--r--modules-available/serversetup-bwlp/inc/menuentry.inc.php177
1 files changed, 0 insertions, 177 deletions
diff --git a/modules-available/serversetup-bwlp/inc/menuentry.inc.php b/modules-available/serversetup-bwlp/inc/menuentry.inc.php
deleted file mode 100644
index d243fd23..00000000
--- a/modules-available/serversetup-bwlp/inc/menuentry.inc.php
+++ /dev/null
@@ -1,177 +0,0 @@
-<?php
-
-class MenuEntry
-{
- /**
- * @var int id of entry, used for pw
- */
- private $menuentryid;
- /**
- * @var false|string key code as expected by iPXE
- */
- private $hotkey;
- /**
- * @var string
- */
- private $title;
- /**
- * @var bool
- */
- private $hidden;
- /**
- * @var bool
- */
- private $gap;
- /**
- * @var int
- */
- private $sortval;
- /**
- * @var BootEntry
- */
- private $bootEntry = null;
-
- private $md5pass = null;
-
- /**
- * MenuEntry constructor.
- *
- * @param array $row row from database
- */
- public function __construct($row)
- {
- if (is_array($row)) {
- foreach ($row as $key => $value) {
- if (property_exists($this, $key)) {
- $this->{$key} = $value;
- }
- }
- $this->hotkey = self::getKeyCode($row['hotkey']);
- if (!empty($row['bootentry'])) {
- $this->bootEntry = BootEntry::fromJson($row['bootentry']);
- }
- $this->gap = (array_key_exists('entryid', $row) && $row['entryid'] === null);
- }
- settype($this->hidden, 'bool');
- settype($this->gap, 'bool');
- settype($this->sortval, 'int');
- settype($this->menuentryid, 'int');
- }
-
- public function getMenuItemScript($lblPrefix, $requestedDefaultId, $mode, $slxExtensions)
- {
- if ($this->bootEntry !== null && !$this->bootEntry->supportsMode($mode))
- return '';
- $str = 'item ';
- if ($this->gap) {
- $str .= '--gap ';
- } else {
- if ($this->hidden && $slxExtensions) {
- if ($this->hotkey === false)
- return ''; // Hidden entries without hotkey are illegal
- $str .= '--hidden ';
- }
- if ($this->hotkey !== false) {
- $str .= '--key ' . $this->hotkey . ' ';
- }
- if ($this->menuentryid == $requestedDefaultId) {
- $str .= '--default ';
- }
- $str .= "{$lblPrefix}_{$this->menuentryid} ";
- }
- if (empty($this->title)) {
- $str .= '${}';
- } else {
- $str .= $this->title;
- }
- return $str . " || prompt Could not create menu item for {$lblPrefix}_{$this->menuentryid}\n";
- }
-
- public function getBootEntryScript($lblPrefix, $failLabel, $mode)
- {
- if ($this->bootEntry === null || !$this->bootEntry->supportsMode($mode))
- return '';
- $str = ":{$lblPrefix}_{$this->menuentryid}\n";
- if (!empty($this->md5pass)) {
- $str .= "set slx_hash {$this->md5pass} || goto $failLabel\n"
- . "set slx_salt {$this->menuentryid} || goto $failLabel\n"
- . "set slx_pw_ok {$lblPrefix}_ok || goto $failLabel\n"
- . "set slx_pw_fail slx_menu || goto $failLabel\n"
- . "goto slx_pass_check || goto $failLabel\n"
- . ":{$lblPrefix}_ok\n";
- }
- return $str . $this->bootEntry->toScript($failLabel, $mode);
- }
-
- /*
- *
- */
-
- private static function getKeyArray()
- {
- static $data = false;
- if ($data === false) {
- $data = [
- 'F5' => 0x107e,
- 'F6' => 0x127e,
- 'F7' => 0x137e,
- 'F8' => 0x147e,
- 'F9' => 0x157e,
- 'F10' => 0x167e,
- 'F11' => 0x187e,
- 'F12' => 0x197e,
- ];
- for ($i = 1; $i <= 26; ++$i) {
- $letter = chr(0x40 + $i);
- $data['SHIFT_' . $letter] = 0x40 + $i;
- if ($letter !== 'C') {
- $data['CTRL_' . $letter] = $i;
- }
- $data[$letter] = 0x60 + $i;
- }
- for ($i = 0; $i <= 9; ++$i) {
- $data[chr(0x30 + $i)] = 0x30 + $i;
- }
- asort($data, SORT_NUMERIC);
- }
- return $data;
- }
-
- /**
- * Get all the known/supported keys, usable for menu items.
- *
- * @return string[] list of known key names
- */
- public static function getKeyList()
- {
- return array_keys(self::getKeyArray());
- }
-
- /**
- * Get the key code ipxe expects for the given named
- * key. Returns false if the key name is unknown.
- *
- * @param string $keyName
- * @return false|string Key code as hex string, or false if not found
- */
- public static function getKeyCode($keyName)
- {
- $data = self::getKeyArray();
- if (isset($data[$keyName]))
- return '0x' . dechex($data[$keyName]);
- return false;
- }
-
- /**
- * @param string $keyName desired key name
- * @return string $keyName if it's known, empty string otherwise
- */
- public static function filterKeyName($keyName)
- {
- $data = self::getKeyArray();
- if (isset($data[$keyName]))
- return $keyName;
- return '';
- }
-
-}