diff options
Diffstat (limited to 'modules-available/serversetup-bwlp-ipxe/api.inc.php')
-rw-r--r-- | modules-available/serversetup-bwlp-ipxe/api.inc.php | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/modules-available/serversetup-bwlp-ipxe/api.inc.php b/modules-available/serversetup-bwlp-ipxe/api.inc.php index 303f1560..dd559efa 100644 --- a/modules-available/serversetup-bwlp-ipxe/api.inc.php +++ b/modules-available/serversetup-bwlp-ipxe/api.inc.php @@ -1,12 +1,26 @@ <?php (function() { - $builder = new ScriptBuilderIpxe(); + $type = Request::any('type'); + if ($type === 'bash') { + $builder = new ScriptBuilderBash(); + } else { + $builder = new ScriptBuilderIpxe(); + } + $bootEntryId = Request::get('beid', false, 'string'); $entryId = Request::get('entryid', false, 'int'); - if ($entryId !== false) { - $data = $builder->getMenuEntry($entryId); + if ($bootEntryId !== false) { + $entry = BootEntry::fromDatabaseId($bootEntryId); + $data = $builder->getBootEntry($entry); + } elseif ($entryId !== false) { + $entry = MenuEntry::get($entryId); + $data = $builder->getMenuEntry($entry); } else { - $data = $builder->fallback(); + $data = $builder->bootstrapLive(); + if ($data === false) { + $menu = IPxeMenu::forClient($builder->clientIp(), $builder->uuid()); + $data = $builder->getMenu($menu, true); + } } $builder->output($data); })(); |