Commit b4e9a6e9 authored by Adrian Rossouw's avatar Adrian Rossouw Committed by adrian

Centralize the apache restart cmd, and make the documentation display the correct visudo entry

parent e288ec9a
...@@ -30,3 +30,4 @@ div.provision-requirement-help .message { ...@@ -30,3 +30,4 @@ div.provision-requirement-help .message {
.provision-help-collapsed .provision-help { .provision-help-collapsed .provision-help {
display: none; display: none;
} }
...@@ -83,7 +83,7 @@ function provision_init() { ...@@ -83,7 +83,7 @@ function provision_init() {
define('PROVISION_DB_USER', variable_get('provision_db_user', 'root')); define('PROVISION_DB_USER', variable_get('provision_db_user', 'root'));
define('PROVISION_DB_PASSWD', variable_get('provision_db_passwd', 'root')); define('PROVISION_DB_PASSWD', variable_get('provision_db_passwd', 'root'));
define('PROVISION_DB_HOST', variable_get('provision_db_host', 'localhost')); define('PROVISION_DB_HOST', variable_get('provision_db_host', 'localhost'));
define('PROVISION_RESTART_CMD', variable_get('provision_restart_cmd', 'sudo /usr/sbin/apachectl graceful'));
global $base_url; global $base_url;
define('PROVISION_BASE_URL', $base_url); define('PROVISION_BASE_URL', $base_url);
......
...@@ -74,13 +74,15 @@ EOF; ...@@ -74,13 +74,15 @@ EOF;
function _provision_visudo_requirements() { function _provision_visudo_requirements() {
$username = PROVISION_SCRIPT_USER; $username = PROVISION_SCRIPT_USER;
$cmd = trim(str_replace("sudo", '', PROVISION_RESTART_CMD));
$cmd = substr($cmd, 0, strpos($cmd, " "));
$visudo_cmd['@visudo_cmd'] = <<<EOF $visudo_cmd['@visudo_cmd'] = <<<EOF
[$username@hm2 ~]$ sudo su - [$username@hm2 ~]$ sudo su -
password: password:
[root@hm2 ~]$ visudo [root@hm2 ~]$ visudo
EOF; EOF;
$visudo_cmd['@visudo_line'] = <<<EOF $visudo_cmd['@visudo_line'] = <<<EOF
$username ALL=NOPASSWD: /usr/sbin/apachectl $username ALL=NOPASSWD: $cmd
EOF; EOF;
$help['title'] = t('Permission to restart the httpd daemon as the user the script is running as'); $help['title'] = t('Permission to restart the httpd daemon as the user the script is running as');
...@@ -106,7 +108,7 @@ function provision_apache_provision_configure($node = null) { ...@@ -106,7 +108,7 @@ function provision_apache_provision_configure($node = null) {
'#title' => t('Restart command'), '#title' => t('Restart command'),
'#required' => TRUE, '#required' => TRUE,
'#description' => t('The command to run to restart the for new changes to take effect. This is required for the new site to become live'), '#description' => t('The command to run to restart the for new changes to take effect. This is required for the new site to become live'),
'#default_value' => ($node->restart_cmd) ? $node->restart_cmd : variable_get('provision_restart_cmd', 'sudo /usr/sbin/apachectl graceful'), '#default_value' => ($node->restart_cmd) ? $node->restart_cmd : PROVISION_RESTART_CMD,
'#size' => 40, '#size' => 40,
'#maxlength' => 255, '#maxlength' => 255,
'#weight' => -20, '#weight' => -20,
...@@ -277,8 +279,7 @@ function _provision_apache_create_vhost_config($url, $data, $template = null) { ...@@ -277,8 +279,7 @@ function _provision_apache_create_vhost_config($url, $data, $template = null) {
function _provision_apache_restart_apache() { function _provision_apache_restart_apache() {
# This is required to be configurable, due to the fact that different hosts might need to do this differently. # This is required to be configurable, due to the fact that different hosts might need to do this differently.
# TODO : test for this instead of relying on a configuration setting? # TODO : test for this instead of relying on a configuration setting?
$apache_restart_cmd = escapeshellcmd(variable_get('provision_restart_cmd', 'sudo apachectl graceful')); $return = drush_shell_exec(escapeshellcmd(PROVISION_RESTART_CMD));
$return = drush_shell_exec(escapeshellcmd($apache_restart_cmd));
if (!$return) { if (!$return) {
provision_set_error(PROVISION_WEB_ERROR); provision_set_error(PROVISION_WEB_ERROR);
provision_log("error", "Web server could not be restarted. Changes might not be available until this has been done."); provision_log("error", "Web server could not be restarted. Changes might not be available until this has been done.");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment