| | |
| | | */ |
| | | |
| | | class web_module { |
| | | |
| | | |
| | | var $module_name = 'web_module'; |
| | | var $class_name = 'web_module'; |
| | | var $actions_available = array( 'web_domain_insert', |
| | | 'web_domain_update', |
| | | 'web_domain_delete', |
| | | 'ftp_user_insert', |
| | | 'ftp_user_update', |
| | | 'ftp_user_delete', |
| | | 'shell_user_insert', |
| | | 'shell_user_update', |
| | | 'shell_user_delete', |
| | | 'webdav_user_insert', |
| | | 'webdav_user_update', |
| | | 'webdav_user_delete', |
| | | 'web_folder_insert', |
| | | 'web_folder_update', |
| | | 'web_folder_delete', |
| | | 'web_folder_user_insert', |
| | | 'web_folder_user_update', |
| | | 'web_folder_user_delete', |
| | | 'web_backup_insert', |
| | | 'web_backup_update', |
| | | 'web_backup_delete', |
| | | 'aps_instance_insert', |
| | | 'aps_instance_update', |
| | | 'aps_instance_delete', |
| | | 'aps_instance_setting_insert', |
| | | 'aps_instance_setting_update', |
| | | 'aps_instance_setting_delete', |
| | | 'aps_package_insert', |
| | | 'aps_package_update', |
| | | 'aps_package_delete', |
| | | 'aps_setting_insert', |
| | | 'aps_setting_update', |
| | | 'aps_setting_delete'); |
| | | |
| | | var $actions_available = array( 'web_domain_insert', |
| | | 'web_domain_update', |
| | | 'web_domain_delete', |
| | | 'ftp_user_insert', |
| | | 'ftp_user_update', |
| | | 'ftp_user_delete', |
| | | 'shell_user_insert', |
| | | 'shell_user_update', |
| | | 'shell_user_delete', |
| | | 'webdav_user_insert', |
| | | 'webdav_user_update', |
| | | 'webdav_user_delete', |
| | | 'web_folder_insert', |
| | | 'web_folder_update', |
| | | 'web_folder_delete', |
| | | 'web_folder_user_insert', |
| | | 'web_folder_user_update', |
| | | 'web_folder_user_delete', |
| | | 'web_backup_insert', |
| | | 'web_backup_update', |
| | | 'web_backup_delete', |
| | | 'aps_instance_insert', |
| | | 'aps_instance_update', |
| | | 'aps_instance_delete', |
| | | 'aps_instance_setting_insert', |
| | | 'aps_instance_setting_update', |
| | | 'aps_instance_setting_delete', |
| | | 'aps_package_insert', |
| | | 'aps_package_update', |
| | | 'aps_package_delete', |
| | | 'aps_setting_insert', |
| | | 'aps_setting_update', |
| | | 'aps_setting_delete'); |
| | | |
| | | //* This function is called during ispconfig installation to determine |
| | | // if a symlink shall be created for this plugin. |
| | | function onInstall() { |
| | | global $conf; |
| | | |
| | | |
| | | if($conf['services']['web'] == true) { |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /* |
| | | This function is called when the module is loaded |
| | | */ |
| | | |
| | | |
| | | function onLoad() { |
| | | global $app; |
| | | |
| | | |
| | | /* |
| | | Annonce the actions that where provided by this module, so plugins |
| | | Annonce the actions that where provided by this module, so plugins |
| | | can register on them. |
| | | */ |
| | | |
| | | $app->plugins->announceEvents($this->module_name,$this->actions_available); |
| | | |
| | | |
| | | $app->plugins->announceEvents($this->module_name, $this->actions_available); |
| | | |
| | | /* |
| | | As we want to get notified of any changes on several database tables, |
| | | we register for them. |
| | | |
| | | |
| | | The following function registers the function "functionname" |
| | | to be executed when a record for the table "dbtable" is |
| | | to be executed when a record for the table "dbtable" is |
| | | processed in the sys_datalog. "classname" is the name of the |
| | | class that contains the function functionname. |
| | | */ |
| | | |
| | | $app->modules->registerTableHook('web_domain','web_module','process'); |
| | | $app->modules->registerTableHook('ftp_user','web_module','process'); |
| | | $app->modules->registerTableHook('shell_user','web_module','process'); |
| | | $app->modules->registerTableHook('webdav_user','web_module','process'); |
| | | $app->modules->registerTableHook('web_folder','web_module','process'); |
| | | $app->modules->registerTableHook('web_folder_user','web_module','process'); |
| | | $app->modules->registerTableHook('web_backup','web_module','process'); |
| | | $app->modules->registerTableHook('aps_instances','web_module','process'); |
| | | $app->modules->registerTableHook('aps_instances_settings','web_module','process'); |
| | | $app->modules->registerTableHook('aps_packages','web_module','process'); |
| | | $app->modules->registerTableHook('aps_settings','web_module','process'); |
| | | |
| | | |
| | | $app->modules->registerTableHook('web_domain', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('ftp_user', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('shell_user', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('webdav_user', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('web_folder', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('web_folder_user', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('web_backup', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('aps_instances', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('aps_instances_settings', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('aps_packages', 'web_module', 'process'); |
| | | $app->modules->registerTableHook('aps_settings', 'web_module', 'process'); |
| | | |
| | | // Register service |
| | | $app->services->registerService('httpd','web_module','restartHttpd'); |
| | | $app->services->registerService('php-fpm','web_module','restartPHP_FPM'); |
| | | |
| | | $app->services->registerService('httpd', 'web_module', 'restartHttpd'); |
| | | $app->services->registerService('php-fpm', 'web_module', 'restartPHP_FPM'); |
| | | |
| | | } |
| | | |
| | | |
| | | /* |
| | | This function is called when a change in one of the registered tables is detected. |
| | | The function then raises the events for the plugins. |
| | | */ |
| | | |
| | | function process($tablename,$action,$data) { |
| | | function process($tablename, $action, $data) { |
| | | global $app; |
| | | |
| | | |
| | | switch ($tablename) { |
| | | case 'web_domain': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_domain_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_domain_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_domain_delete',$data); |
| | | case 'web_domain': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_domain_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_domain_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_domain_delete', $data); |
| | | break; |
| | | case 'ftp_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('ftp_user_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('ftp_user_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('ftp_user_delete',$data); |
| | | case 'ftp_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('ftp_user_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('ftp_user_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('ftp_user_delete', $data); |
| | | break; |
| | | case 'shell_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('shell_user_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('shell_user_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('shell_user_delete',$data); |
| | | case 'shell_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('shell_user_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('shell_user_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('shell_user_delete', $data); |
| | | break; |
| | | case 'webdav_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('webdav_user_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('webdav_user_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('webdav_user_delete',$data); |
| | | case 'webdav_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('webdav_user_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('webdav_user_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('webdav_user_delete', $data); |
| | | break; |
| | | case 'web_folder': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_folder_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_folder_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_folder_delete',$data); |
| | | case 'web_folder': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_folder_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_folder_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_folder_delete', $data); |
| | | break; |
| | | case 'web_folder_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_folder_user_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_folder_user_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_folder_user_delete',$data); |
| | | case 'web_folder_user': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_folder_user_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_folder_user_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_folder_user_delete', $data); |
| | | break; |
| | | case 'web_backup': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_backup_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_backup_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_backup_delete',$data); |
| | | case 'web_backup': |
| | | if($action == 'i') $app->plugins->raiseEvent('web_backup_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('web_backup_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('web_backup_delete', $data); |
| | | break; |
| | | case 'aps_instances': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_instance_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_instance_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_instance_delete',$data); |
| | | case 'aps_instances': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_instance_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_instance_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_instance_delete', $data); |
| | | break; |
| | | case 'aps_instances_settings': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_instance_setting_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_instance_setting_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_instance_setting_delete',$data); |
| | | case 'aps_instances_settings': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_instance_setting_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_instance_setting_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_instance_setting_delete', $data); |
| | | break; |
| | | case 'aps_packages': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_package_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_package_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_package_delete',$data); |
| | | case 'aps_packages': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_package_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_package_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_package_delete', $data); |
| | | break; |
| | | case 'aps_settings': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_setting_insert',$data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_setting_update',$data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_setting_delete',$data); |
| | | case 'aps_settings': |
| | | if($action == 'i') $app->plugins->raiseEvent('aps_setting_insert', $data); |
| | | if($action == 'u') $app->plugins->raiseEvent('aps_setting_update', $data); |
| | | if($action == 'd') $app->plugins->raiseEvent('aps_setting_delete', $data); |
| | | break; |
| | | } // end switch |
| | | } // end function |
| | | |
| | | |
| | | |
| | | |
| | | // This function is used |
| | | function restartHttpd($action = 'restart') { |
| | | global $app,$conf; |
| | | |
| | | global $app, $conf; |
| | | |
| | | // load the server configuration options |
| | | $app->uses('getconf'); |
| | | $app->uses('getconf,system'); |
| | | $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); |
| | | |
| | | |
| | | $daemon = ''; |
| | | switch ($web_config['server_type']) { |
| | | case 'nginx': |
| | | $daemon = $web_config['server_type']; |
| | | break; |
| | | default: |
| | | if(is_file($conf['init_scripts'] . '/' . 'httpd')) { |
| | | $daemon = 'httpd'; |
| | | } else { |
| | | $daemon = 'apache2'; |
| | | } |
| | | case 'nginx': |
| | | $daemon = $web_config['server_type']; |
| | | break; |
| | | default: |
| | | if(is_file($conf['init_scripts'] . '/' . 'httpd')) { |
| | | $daemon = 'httpd'; |
| | | } else { |
| | | $daemon = 'apache2'; |
| | | } |
| | | } |
| | | |
| | | $retval = array('output' => '', 'retval' => 0); |
| | | if($action == 'restart') { |
| | | exec($conf['init_scripts'] . '/' . $daemon . ' restart', $retval['output'], $retval['retval']); |
| | | exec($app->system->getinitcommand($daemon, 'restart').' 2>&1', $retval['output'], $retval['retval']); |
| | | |
| | | } else { |
| | | exec($conf['init_scripts'] . '/' . $daemon . ' reload', $retval['output'], $retval['retval']); |
| | | exec($app->system->getinitcommand($daemon, 'reload').' 2>&1', $retval['output'], $retval['retval']); |
| | | } |
| | | return $retval; |
| | | } |
| | | |
| | | |
| | | function restartPHP_FPM($action = 'restart') { |
| | | global $app,$conf; |
| | | |
| | | global $app, $conf; |
| | | |
| | | // load the server configuration options |
| | | $app->uses('getconf'); |
| | | $app->uses('getconf,system'); |
| | | $web_config = $app->getconf->get_server_config($conf['server_id'], 'web'); |
| | | |
| | | |
| | | list($action, $init_script) = explode(':', $action); |
| | | |
| | | if(!$init_script) $init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']; |
| | | |
| | | |
| | | if(!$init_script){ |
| | | //$init_script = $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']; |
| | | $initcommand = $app->system->getinitcommand($web_config['php_fpm_init_script'], $action); |
| | | } else { |
| | | $path_parts = pathinfo($init_script); |
| | | $initcommand = $app->system->getinitcommand($path_parts['basename'], $action, $path_parts['dirname']); |
| | | |
| | | if($action == 'reload' && $init_script == $conf['init_scripts'].'/'.$web_config['php_fpm_init_script']) { |
| | | // we have to do a workaround because of buggy ubuntu fpm reload handling |
| | | // @see: https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 |
| | | if(file_exists('/etc/os-release')) { |
| | | $tmp = file_get_contents('/etc/os-release'); |
| | | if(preg_match('/^ID=ubuntu/m', $tmp) && preg_match('/^VERSION_ID="14\.04"/m', $tmp)) { |
| | | $initcommand = '/sbin/start-stop-daemon --stop --signal USR2 --quiet --pidfile /var/run/php5-fpm.pid --name php5-fpm'; |
| | | } |
| | | unset($tmp); |
| | | } |
| | | } |
| | | } |
| | | |
| | | $retval = array('output' => '', 'retval' => 0); |
| | | exec($init_script.' '.$action, $retval['output'], $retval['retval']); |
| | | exec($initcommand.' 2>&1', $retval['output'], $retval['retval']); |
| | | return $retval; |
| | | } |
| | | |