diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php index e5b1c987f5f950f0497e4c567d387f3fc27d158e..2eff84983b08ff45c84547a50b625bb1a778b87c 100644 --- a/interface/lib/classes/remoting.inc.php +++ b/interface/lib/classes/remoting.inc.php @@ -1474,6 +1474,75 @@ class remoting { return $affected_rows; } + // ---------------------------------------------------------------------------------------------------------- + + //* Get record details + public function sites_web_vhost_subdomain_get($session_id, $primary_id) + { + global $app; + + if(!$this->checkPerm($session_id, 'sites_web_subdomain_get')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $app->uses('remoting_lib'); + $app->remoting_lib->loadFormDef('../sites/form/web_vhost_subdomain.tform.php'); + return $app->remoting_lib->getDataRecord($primary_id); + } + + //* Add a record + public function sites_web_vhost_subdomain_add($session_id, $client_id, $params) + { + global $app; + if(!$this->checkPerm($session_id, 'sites_web_subdomain_add')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + //* Set a few params to "not empty" values which get overwritten by the sites_web_domain_plugin + if($params['document_root'] == '') $params['document_root'] = '-'; + if($params['system_user'] == '') $params['system_user'] = '-'; + if($params['system_group'] == '') $params['system_group'] = '-'; + + //* Set a few defaults for nginx servers + if($params['pm_max_children'] == '') $params['pm_max_children'] = 1; + if($params['pm_start_servers'] == '') $params['pm_start_servers'] = 1; + if($params['pm_min_spare_servers'] == '') $params['pm_min_spare_servers'] = 1; + if($params['pm_max_spare_servers'] == '') $params['pm_max_spare_servers'] = 1; + + $domain_id = $this->insertQuery('../sites/form/web_vhost_subdomain.tform.php',$client_id,$params, 'sites:web_vhost_subdomain:on_after_insert'); + return $domain_id; + } + + //* Update a record + public function sites_web_vhost_subdomain_update($session_id, $client_id, $primary_id, $params) + { + if(!$this->checkPerm($session_id, 'sites_web_subdomain_update')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + + //* Set a few defaults for nginx servers + if($params['pm_max_children'] == '') $params['pm_max_children'] = 1; + if($params['pm_start_servers'] == '') $params['pm_start_servers'] = 1; + if($params['pm_min_spare_servers'] == '') $params['pm_min_spare_servers'] = 1; + if($params['pm_max_spare_servers'] == '') $params['pm_max_spare_servers'] = 1; + + $affected_rows = $this->updateQuery('../sites/form/web_vhost_subdomain.tform.php',$client_id,$primary_id,$params, 'sites:web_vhost_subdomain:on_after_insert'); + return $affected_rows; + } + + //* Delete a record + public function sites_web_vhost_subdomain_delete($session_id, $primary_id) + { + if(!$this->checkPerm($session_id, 'sites_web_subdomain_delete')) { + $this->server->fault('permission_denied', 'You do not have the permissions to access this function.'); + return false; + } + $affected_rows = $this->deleteQuery('../sites/form/web_vhost_subdomain.tform.php',$primary_id); + return $affected_rows; + } + // ----------------------------------------------------------------------------------------------- //* Get record details diff --git a/interface/lib/plugins/sites_web_vhost_subdomain_plugin.inc.php b/interface/lib/plugins/sites_web_vhost_subdomain_plugin.inc.php new file mode 100644 index 0000000000000000000000000000000000000000..a3029827949e999d4b86a8be5bccc5233ca52468 --- /dev/null +++ b/interface/lib/plugins/sites_web_vhost_subdomain_plugin.inc.php @@ -0,0 +1,67 @@ + pixcept KG 2012, copied and adapted from web_domain plugin by: + * @author Julio Montoya BeezNest 2010 + */ + +class sites_web_vhost_subdomain_plugin { + + var $plugin_name = 'sites_web_vhost_subdomain_plugin'; + var $class_name = 'sites_web_vhost_subdomain_plugin'; + + // TODO: This function is a duplicate from the one in interface/web/sites/web_vhost_subdomain_edit.php + // There should be a single "token replacement" function to be called from modules and + // from the main code. + // Returna a "3/2/1" path hash from a numeric id '123' + function id_hash($id,$levels) { + $hash = "" . $id % 10 ; + $id /= 10 ; + $levels -- ; + while ( $levels > 0 ) { + $hash .= "/" . $id % 10 ; + $id /= 10 ; + $levels-- ; + } + return $hash; + } + + /* + This function is called when the plugin is loaded + */ + function onLoad() { + global $app; + //Register for the events + // both event call the same function as the things to do do not differ here + $app->plugin->registerEvent('sites:web_vhost_subdomain:on_after_insert','sites_web_vhost_subdomain_plugin','sites_web_vhost_subdomain_edit'); + $app->plugin->registerEvent('sites:web_vhost_subdomain:on_after_update','sites_web_vhost_subdomain_plugin','sites_web_vhost_subdomain_edit'); + } + + /* + Function to create the sites_web_vhost_subdomain rule and insert it into the custom rules + */ + function sites_web_vhost_subdomain_edit($event_name, $page_form) { + global $app, $conf; + + // Get configuration for the web system + $app->uses("getconf"); + $web_rec = $app->tform->getDataRecord($page_form->id); + $web_config = $app->getconf->get_server_config(intval($web_rec['server_id']),'web'); + + $parent_domain = $app->db->queryOneRecord("SELECT * FROM `web_domain` WHERE `domain_id` = '" . intval($web_rec['parent_domain_id']) . "'"); + + // Set the values for document_root, system_user and system_group + $system_user = $app->db->quote($parent_domain['system_user']); + $system_group = $app->db->quote($parent_domain['system_group']); + $document_root = $app->db->quote($parent_domain['document_root']); + $php_open_basedir = str_replace("[website_path]/web",$document_root.'/'.$web_rec['web_folder'],$web_config["php_open_basedir"]); + $php_open_basedir = str_replace("[website_domain]/web",$web_rec['domain'].'/'.$web_rec['web_folder'],$php_open_basedir); + $php_open_basedir = str_replace("[website_path]",$document_root,$php_open_basedir); + $php_open_basedir = $app->db->quote(str_replace("[website_domain]",$web_rec['domain'],$php_open_basedir)); + $htaccess_allow_override = $app->db->quote($parent_domain['allow_override']); + + $sql = "UPDATE web_domain SET sys_groupid = ".intval($parent_domain['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir' WHERE domain_id = ".$page_form->id; + $app->db->query($sql); + } +} \ No newline at end of file