|
|
@ -76,12 +76,14 @@ class NginxVhostFactory |
|
|
|
->setUnselectedMarker(' '); |
|
|
|
}); |
|
|
|
|
|
|
|
$log = ''; |
|
|
|
|
|
|
|
// create checkbox for disable / enabled
|
|
|
|
$checkbox = self::createVhostCheckbox($vhost); |
|
|
|
$checkbox = self::createVhostCheckbox($vhost, $log); |
|
|
|
|
|
|
|
// adding checkbox
|
|
|
|
// if vhost is enabled
|
|
|
|
if ($vhost['enabled']) { |
|
|
|
$checkbox->setChecked(true); |
|
|
|
$checkbox->setChecked(); |
|
|
|
} |
|
|
|
|
|
|
|
$builder |
|
|
@ -96,34 +98,40 @@ class NginxVhostFactory |
|
|
|
// delete configuration
|
|
|
|
->addItem('delete', function(CliMenu $menu) use ($vhost) { |
|
|
|
|
|
|
|
// input domain for confirmation
|
|
|
|
$result = $menu->askText() |
|
|
|
->setPromptText('Enter the domain name as confirmation: '.$vhost['domain'].' / [ESC] for Cancel') |
|
|
|
->ask(); |
|
|
|
if ($vhost['enabled'] === true) { |
|
|
|
$menu->flash('Please disable first!')->display(); |
|
|
|
} else { |
|
|
|
|
|
|
|
// if result matching delete vhost an close menu
|
|
|
|
if ($result->fetch() === $vhost['domain']) { |
|
|
|
unlink('/etc/nginx/sites-available/'.$vhost['file']); |
|
|
|
$menu->confirm($vhost['domain'].' is deleted!')->display('OK!'); |
|
|
|
// input domain for confirmation
|
|
|
|
$result = $menu->askText() |
|
|
|
->setPromptText('Enter the domain name as confirmation: '.$vhost['domain'].' / [ESC] for Cancel') |
|
|
|
->ask(); |
|
|
|
|
|
|
|
// get
|
|
|
|
$parent = $menu->getParent(); |
|
|
|
$menu->closeThis(); |
|
|
|
// if result matching delete vhost an close menu
|
|
|
|
if ($result->fetch() === $vhost['domain']) { |
|
|
|
unlink('/etc/nginx/sites-available/'.$vhost['file']); |
|
|
|
$menu->confirm($vhost['domain'].' is deleted!')->display('OK!'); |
|
|
|
|
|
|
|
// remove current vhost from mainmenu
|
|
|
|
$parent->removeItem($parent->getSelectedItem()); |
|
|
|
$parent->open(); |
|
|
|
// get
|
|
|
|
$parent = $menu->getParent(); |
|
|
|
$menu->closeThis(); |
|
|
|
|
|
|
|
// cancel input
|
|
|
|
} else if (empty($result->fetch())) { |
|
|
|
$menu->flash('Cancel')->display(); |
|
|
|
// remove current vhost from mainmenu
|
|
|
|
$parent->removeItem($parent->getSelectedItem()); |
|
|
|
$parent->open(); |
|
|
|
|
|
|
|
// cancel input
|
|
|
|
} else if (empty($result->fetch())) { |
|
|
|
$menu->flash('Cancel')->display(); |
|
|
|
|
|
|
|
// if domain not matching
|
|
|
|
} else { |
|
|
|
$menu->flash('Not matching! Domain not deleted!')->display(); |
|
|
|
} |
|
|
|
|
|
|
|
// if domain not matching
|
|
|
|
} else { |
|
|
|
$menu->flash('Not matching! Domain not deleted!')->display(); |
|
|
|
} |
|
|
|
|
|
|
|
}, false, $vhost['enabled']) |
|
|
|
}) |
|
|
|
->addLineBreak('-') |
|
|
|
->addMenuItem($checkbox) |
|
|
|
->addLineBreak('-'); |
|
|
@ -159,27 +167,47 @@ class NginxVhostFactory |
|
|
|
private function createVhostCheckbox($vhost) |
|
|
|
{ |
|
|
|
// create checkbox for enabled / disabled
|
|
|
|
$checkbox = new CheckboxItem('enabled', function(CliMenu $menu) use ($vhost) { |
|
|
|
$checkbox = new CheckboxItem('enabled', function(CliMenu $menu) use (&$vhost, &$log) { |
|
|
|
|
|
|
|
// check status
|
|
|
|
if ($menu->getSelectedItem()->getChecked()) { |
|
|
|
symlink('/etc/nginx/sites-available/'.$vhost['file'], '/etc/nginx/sites-enabled/'.$vhost['file']); |
|
|
|
$status = 'enabled'; |
|
|
|
exec('nginx -c /etc/nginx/nginx.conf -t 2>&1', $output); |
|
|
|
|
|
|
|
if ($output) { |
|
|
|
unlink('/etc/nginx/sites-enabled/'.$vhost['file']); |
|
|
|
$menu->confirm('Error! Configuration not Working!')->display('OK!'); |
|
|
|
|
|
|
|
// @TODO: find a way to show logs, https://gitea.tentakelfabrik.de/Tentakelfabrik/mcp/issues/15
|
|
|
|
// implode(PHP_EOL, $output);
|
|
|
|
|
|
|
|
$vhost['enabled'] = false; |
|
|
|
$status = 'disabled'; |
|
|
|
} else { |
|
|
|
|
|
|
|
// restart
|
|
|
|
exec('service nginx restart'); |
|
|
|
$menu->confirm('Success! ')->display('OK!'); |
|
|
|
|
|
|
|
$vhost['enabled'] = true; |
|
|
|
$status = 'enabled'; |
|
|
|
|
|
|
|
} |
|
|
|
} else { |
|
|
|
unlink('/etc/nginx/sites-enabled/'.$vhost['file']); |
|
|
|
|
|
|
|
$vhost['enabled'] = false; |
|
|
|
$status = 'disabled'; |
|
|
|
} |
|
|
|
|
|
|
|
// restart
|
|
|
|
exec('service nginx restart'); |
|
|
|
exec('service nginx status', $output); |
|
|
|
|
|
|
|
if (strpos(implode(' ', $output), 'active') !== false) { |
|
|
|
$menu->confirm($vhost['domain'].' is '.$status.'!')->display('OK!'); |
|
|
|
if ($vhost['enabled']) { |
|
|
|
$menu->getSelectedItem()->setChecked(); |
|
|
|
} else { |
|
|
|
$menu->confirm('Error! Something not working!')->display('OK!'); |
|
|
|
$menu->getSelectedItem()->setUnchecked(); |
|
|
|
} |
|
|
|
|
|
|
|
$menu->redraw(); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
return $checkbox; |
|
|
|