summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-09-26 14:50:32 +0200
committerSimon Rettberg2018-09-26 14:50:32 +0200
commit84e147f238286c1dff78b5f9b5488167293f6d35 (patch)
tree6943213877947e644b181296dfedad7af2e96afd
parent[serversetup-bwlp] Detect wether we run our modified iPXE (diff)
downloadslx-admin-84e147f238286c1dff78b5f9b5488167293f6d35.tar.gz
slx-admin-84e147f238286c1dff78b5f9b5488167293f6d35.tar.xz
slx-admin-84e147f238286c1dff78b5f9b5488167293f6d35.zip
[serversetup-bwlp] Don't allow recompilation if already in progress
-rw-r--r--modules-available/serversetup-bwlp/page.inc.php56
-rw-r--r--modules-available/serversetup-bwlp/templates/ipaddress.html4
-rw-r--r--modules-available/serversetup-bwlp/templates/ipxe_update.html5
3 files changed, 40 insertions, 25 deletions
diff --git a/modules-available/serversetup-bwlp/page.inc.php b/modules-available/serversetup-bwlp/page.inc.php
index 6b1d20b6..4ebb7530 100644
--- a/modules-available/serversetup-bwlp/page.inc.php
+++ b/modules-available/serversetup-bwlp/page.inc.php
@@ -3,11 +3,26 @@
class Page_ServerSetup extends Page
{
- private $taskStatus;
+ private $addrListTask;
+ private $compileTask = null;
private $currentAddress;
private $currentMenu;
private $hasIpSet = false;
+ private function getCompileTask()
+ {
+ if ($this->compileTask !== null)
+ return $this->compileTask;
+ $this->compileTask = Property::get('ipxe-task-id');
+ if ($this->compileTask !== false) {
+ $this->compileTask = Taskmanager::status($this->compileTask);
+ if (!Taskmanager::isTask($this->compileTask) || Taskmanager::isFinished($this->compileTask)) {
+ $this->compileTask = false;
+ }
+ }
+ return $this->compileTask;
+ }
+
protected function doPreprocess()
{
User::load();
@@ -39,7 +54,9 @@ class Page_ServerSetup extends Page
if ($action === 'compile') {
User::assertPermission("edit.address");
- Trigger::ipxe();
+ if ($this->getCompileTask() === false) {
+ Trigger::ipxe();
+ }
Util::redirect('?do=serversetup');
}
@@ -100,13 +117,7 @@ class Page_ServerSetup extends Page
{
Render::addTemplate("heading");
- $task = Property::get('ipxe-task-id');
- if ($task !== false) {
- $task = Taskmanager::status($task);
- if (!Taskmanager::isTask($task) || Taskmanager::isFinished($task)) {
- $task = false;
- }
- }
+ $task = $this->getCompileTask();
if ($task !== false) {
Render::addTemplate('ipxe_update', array('taskid' => $task['id']));
}
@@ -291,8 +302,9 @@ class Page_ServerSetup extends Page
private function showEditAddress()
{
Render::addTemplate('ipaddress', array(
- 'ips' => $this->taskStatus['data']['addresses'],
+ 'ips' => $this->addrListTask['data']['addresses'],
'chooseHintClass' => $this->hasIpSet ? '' : 'alert alert-danger',
+ 'disabled' => ($this->getCompileTask() === false) ? '' : 'disabled',
));
}
@@ -300,27 +312,27 @@ class Page_ServerSetup extends Page
private function getLocalAddresses()
{
- $this->taskStatus = Taskmanager::submit('LocalAddressesList', array());
+ $this->addrListTask = Taskmanager::submit('LocalAddressesList', array());
- if ($this->taskStatus === false) {
- $this->taskStatus['data']['addresses'] = false;
+ if ($this->addrListTask === false) {
+ $this->addrListTask['data']['addresses'] = false;
return false;
}
- if (!Taskmanager::isFinished($this->taskStatus)) { // TODO: Async if just displaying
- $this->taskStatus = Taskmanager::waitComplete($this->taskStatus['id'], 4000);
+ if (!Taskmanager::isFinished($this->addrListTask)) { // TODO: Async if just displaying
+ $this->addrListTask = Taskmanager::waitComplete($this->addrListTask['id'], 4000);
}
- if (Taskmanager::isFailed($this->taskStatus) || !isset($this->taskStatus['data']['addresses'])) {
- $this->taskStatus['data']['addresses'] = false;
+ if (Taskmanager::isFailed($this->addrListTask) || !isset($this->addrListTask['data']['addresses'])) {
+ $this->addrListTask['data']['addresses'] = false;
return false;
}
$sortIp = array();
- foreach (array_keys($this->taskStatus['data']['addresses']) as $key) {
- $item = & $this->taskStatus['data']['addresses'][$key];
+ foreach (array_keys($this->addrListTask['data']['addresses']) as $key) {
+ $item = & $this->addrListTask['data']['addresses'][$key];
if (!isset($item['ip']) || !preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $item['ip']) || substr($item['ip'], 0, 4) === '127.') {
- unset($this->taskStatus['data']['addresses'][$key]);
+ unset($this->addrListTask['data']['addresses'][$key]);
continue;
}
if ($this->currentAddress === $item['ip']) {
@@ -330,7 +342,7 @@ class Page_ServerSetup extends Page
$sortIp[] = $item['ip'];
}
unset($item);
- array_multisort($sortIp, SORT_STRING, $this->taskStatus['data']['addresses']);
+ array_multisort($sortIp, SORT_STRING, $this->addrListTask['data']['addresses']);
return true;
}
@@ -483,7 +495,7 @@ class Page_ServerSetup extends Page
{
$newAddress = Request::post('ip', 'none', 'string');
$valid = false;
- foreach ($this->taskStatus['data']['addresses'] as $item) {
+ foreach ($this->addrListTask['data']['addresses'] as $item) {
if ($item['ip'] !== $newAddress)
continue;
$valid = true;
diff --git a/modules-available/serversetup-bwlp/templates/ipaddress.html b/modules-available/serversetup-bwlp/templates/ipaddress.html
index ef8cc914..ea19c417 100644
--- a/modules-available/serversetup-bwlp/templates/ipaddress.html
+++ b/modules-available/serversetup-bwlp/templates/ipaddress.html
@@ -20,7 +20,7 @@
{{/default}}
{{^default}}
<td>
- <button class="btn btn-primary btn-xs" name="ip" value="{{ip}}">
+ <button class="btn btn-primary btn-xs" name="ip" value="{{ip}}" {{disabled}}>
<span class="glyphicon glyphicon-flag"></span>
{{lang_set}}
</button>
@@ -35,7 +35,7 @@
</form>
<form method="post" action="?do=ServerSetup">
<input type="hidden" name="token" value="{{token}}">
- <button class="btn btn-default" name="action" value="compile">
+ <button class="btn btn-default" name="action" value="compile" {{disabled}}>
<span class="glyphicon glyphicon-refresh"></span>
{{lang_forceRecompile}}
</button>
diff --git a/modules-available/serversetup-bwlp/templates/ipxe_update.html b/modules-available/serversetup-bwlp/templates/ipxe_update.html
index c5aafa1c..71611085 100644
--- a/modules-available/serversetup-bwlp/templates/ipxe_update.html
+++ b/modules-available/serversetup-bwlp/templates/ipxe_update.html
@@ -14,7 +14,7 @@
{{lang_generationFailed}}
</div>
</div>
- <div data-tm-id="{{taskid}}" data-tm-log="log" data-tm-log-height="31em" data-tm-callback="ipxeGenCb">{{lang_menuGeneration}}</div>
+ <div id="tm-compile-div" data-tm-id="{{taskid}}" data-tm-log="log" data-tm-log-height="36em" data-tm-callback="ipxeGenCb">{{lang_menuGeneration}}</div>
</div>
</div>
@@ -27,6 +27,9 @@
if (task.data.pxeDone) $('#built-pxe').removeClass('invisible');
if (task.data.usbDone) $('#built-usb').removeClass('invisible');
}
+ if (task.statusCode === 'TASK_ERROR' || task.statusCode === 'TASK_FINISHED') {
+ $('#tm-compile-div').find('pre').hide();
+ }
if (task.statusCode === 'TASK_ERROR') {
var $gf = $('#genfailed');
if (task.data && task.data.errors) {