diff --git a/modules/setup/application/clicommands/ConfigCommand.php b/modules/setup/application/clicommands/ConfigCommand.php new file mode 100644 index 0000000000..a82882fcca --- /dev/null +++ b/modules/setup/application/clicommands/ConfigCommand.php @@ -0,0 +1,63 @@ + [options] + * + * OPTIONS: + * + * --mode The access mode to use. Default is: 2775 + * --path The path to the configuration directory. If omitted the default is used. + * + * EXAMPLES: + * + * icingacli setup config createDirectory apache + * icingacli setup config createDirectory apache --mode 2770 + * icingacli setup config createDirectory apache --path /some/path + */ + public function createDirectoryAction() + { + $group = $this->params->getStandalone(); + if ($group === null) { + $this->fail($this->translate('The `group\' argument is mandatory.')); + return false; + } + + $path = $this->params->get('path', $this->app->getConfigDir()); + if (file_exists($path)) { + printf($this->translate("Configuration directory already exists at: %s\n"), $path); + return true; + } + + $mode = octdec($this->params->get('mode', '2775')); + if (false === mkdir($path)) { + $this->fail(sprintf($this->translate('Unable to create path: %s'), $path)); + return false; + } + + $old = umask(0); // Prevent $mode from being mangled by the system's umask ($old) + chmod($path, $mode); + umask($old); + + if (chgrp($path, $group) === false) { + $this->fail(sprintf($this->translate('Unable to change the group of "%s" to "%s".'), $path, $group)); + return false; + } + + printf($this->translate("Successfully created configuration directory at: %s\n"), $path); + } +} diff --git a/modules/setup/application/clicommands/SetupCommand.php b/modules/setup/application/clicommands/SetupCommand.php deleted file mode 100644 index c4d3a73bc1..0000000000 --- a/modules/setup/application/clicommands/SetupCommand.php +++ /dev/null @@ -1,121 +0,0 @@ - [] - */ -class SetupCommand extends Command -{ - /** - * Display the current setup token - * - * Shows you the current setup token used to authenticate when setting up Icinga Web 2 using the web-based wizard - * - * USAGE: - * - * icingacli setup showToken - */ - public function showTokenAction() - { - $token = file_get_contents($this->app->getConfigDir() . '/setup.token'); - if (! $token) { - $this->fail( - $this->translate('Nothing to show. Please create a new setup token using the generateToken action.') - ); - } - - printf($this->translate("The current setup token is: %s\n"), $token); - } - - /** - * Create a new setup token - * - * Re-generates the setup token used to authenticate when setting up Icinga Web 2 using the web-based wizard. - * - * USAGE: - * - * icingacli setup generateToken - */ - public function generateTokenAction() - { - if (function_exists('openssl_random_pseudo_bytes')) { - $token = bin2hex(openssl_random_pseudo_bytes(8)); - } else { - $token = substr(md5(mt_rand()), 16); - } - - $filepath = $this->app->getConfigDir() . '/setup.token'; - - if (false === file_put_contents($filepath, $token)) { - $this->fail(sprintf($this->translate('Cannot write setup token "%s" to disk.'), $filepath)); - } - - if (false === chmod($filepath, 0660)) { - $this->fail(sprintf($this->translate('Cannot change access mode of "%s" to %o.'), $filepath, 0660)); - } - - printf($this->translate("The newly generated setup token is: %s\n"), $token); - } - - /** - * Create the configuration directory - * - * This command creates the configuration directory for Icinga Web 2. The `group' argument - * is mandatory and should be the groupname of the user your web server is running as. - * - * USAGE: - * - * icingacli setup createConfigDirectory [options] - * - * OPTIONS: - * - * --mode The access mode to use. Default is: 2775 - * --path The path to the configuration directory. If omitted the default is used. - * - * EXAMPLES: - * - * icingacli setup createConfigDirectory apache - * icingacli setup createConfigDirectory apache --mode 2770 - * icingacli setup createConfigDirectory apache --path /some/path - */ - public function createConfigDirectoryAction() - { - $group = $this->params->getStandalone(); - if ($group === null) { - $this->fail($this->translate('The `group\' argument is mandatory.')); - return false; - } - - $path = $this->params->get('path', $this->app->getConfigDir()); - if (file_exists($path)) { - printf($this->translate("Configuration directory already exists at: %s\n"), $path); - return true; - } - - $mode = octdec($this->params->get('mode', '2775')); - if (false === mkdir($path)) { - $this->fail(sprintf($this->translate('Unable to create path: %s'), $path)); - return false; - } - - $old = umask(0); // Prevent $mode from being mangled by the system's umask ($old) - chmod($path, $mode); - umask($old); - - if (chgrp($path, $group) === false) { - $this->fail(sprintf($this->translate('Unable to change the group of "%s" to "%s".'), $path, $group)); - return false; - } - - printf($this->translate("Successfully created configuration directory at: %s\n"), $path); - } -} diff --git a/modules/setup/application/clicommands/TokenCommand.php b/modules/setup/application/clicommands/TokenCommand.php new file mode 100644 index 0000000000..ff0229cfe5 --- /dev/null +++ b/modules/setup/application/clicommands/TokenCommand.php @@ -0,0 +1,68 @@ + + */ +class TokenCommand extends Command +{ + /** + * Display the current setup token + * + * Shows you the current setup token used to authenticate when setting up Icinga Web 2 using the web-based wizard. + * + * USAGE: + * + * icingacli setup token show + */ + public function showAction() + { + $token = file_get_contents($this->app->getConfigDir() . '/setup.token'); + if (! $token) { + $this->fail( + $this->translate('Nothing to show. Please create a new setup token using the generateToken action.') + ); + } + + printf($this->translate("The current setup token is: %s\n"), $token); + } + + /** + * Create a new setup token + * + * Re-generates the setup token used to authenticate when setting up Icinga Web 2 using the web-based wizard. + * + * USAGE: + * + * icingacli setup token create + */ + public function createAction() + { + if (function_exists('openssl_random_pseudo_bytes')) { + $token = bin2hex(openssl_random_pseudo_bytes(8)); + } else { + $token = substr(md5(mt_rand()), 16); + } + + $filepath = $this->app->getConfigDir() . '/setup.token'; + + if (false === file_put_contents($filepath, $token)) { + $this->fail(sprintf($this->translate('Cannot write setup token "%s" to disk.'), $filepath)); + } + + if (false === chmod($filepath, 0660)) { + $this->fail(sprintf($this->translate('Cannot change access mode of "%s" to %o.'), $filepath, 0660)); + } + + printf($this->translate("The newly generated setup token is: %s\n"), $token); + } +} diff --git a/modules/setup/application/views/scripts/form/setup-welcome.phtml b/modules/setup/application/views/scripts/form/setup-welcome.phtml index f2e34054ca..56f566b6f2 100644 --- a/modules/setup/application/views/scripts/form/setup-welcome.phtml +++ b/modules/setup/application/views/scripts/form/setup-welcome.phtml @@ -65,8 +65,8 @@ $setupTokenPath = rtrim(Icinga::app()->getConfigDir(), '/') . '/setup.token'; ); ?>

- icingacli setup createConfigDirectory ; - icingacli setup generateToken; + icingacli setup config createDirectory ; + icingacli setup token create;