diff --git a/interface/web/dashboard/ajax_get_json.php.bak b/interface/web/dashboard/ajax_get_json.php.bak deleted file mode 100644 index 48294188deec943ed8ef344cff8321f8ee86b94d..0000000000000000000000000000000000000000 --- a/interface/web/dashboard/ajax_get_json.php.bak +++ /dev/null @@ -1,238 +0,0 @@ -<?php - -/* -Copyright (c) 2012, ISPConfig UG -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('dashboard'); - -$app->uses('tform'); - -$type = $_GET["type"]; - -//if($_SESSION["s"]["user"]["typ"] == 'admin') { - - -if($type == 'globalsearch'){ - $q = $app->db->quote(trim($_GET["q"])); - $authsql = " AND ".$app->tform->getAuthSQL('r'); - $modules = explode(',', $_SESSION['s']['user']['modules']); - - $result = array(); - - // clients - $result[] = _search('client', 'client', "AND limit_client = 0"); - - // resellers - $result[] = _search('client', 'reseller', "AND limit_client != 0"); - - // web sites - $result[] = _search('sites', 'web_domain', "AND type = 'vhost'"); - - // subdomains - $result[] = _search('sites', 'web_subdomain', "AND type = 'subdomain'"); - - // web site aliases - $result[] = _search('sites', 'web_aliasdomain', "AND type = 'alias'"); - - // vhostsubdomains - $result[] = _search('sites', 'web_vhost_subdomain', "AND type = 'vhostsubdomain'"); - - // FTP users - $result[] = _search('sites', 'ftp_user'); - - // shell users - $result[] = _search('sites', 'shell_user'); - - // databases - /* - $result_databases = array('cheader' => array(), 'cdata' => array()); - if(in_array('sites', $modules)){ - $sql = "SELECT * FROM web_database WHERE database_name LIKE '%".$q."%' OR database_user LIKE '%".$q."%' OR remote_ips LIKE '%".$q."%'".$authsql." ORDER BY database_name"; - $results = $app->db->queryAllRecords($sql); - - if(is_array($results) && !empty($results)){ - $result_databases['cheader'] = array('title' => 'Databases', - 'total' => count($results), - 'limit' => count($results) - ); - foreach($results as $result){ - $description = 'Database User: '.$result['database_user'].' - Remote IPs: '.$result['remote_ips']; - $result_databases['cdata'][] = array('title' => $result['database_name'], - 'description' => $description, - 'onclick' => 'capp(\'sites\',\'sites/database_edit.php?id='.$result['database_id'].'\');', - 'fill_text' => strtolower($result['database_name']) - ); - } - } - } - */ - $result[] = _search('sites', 'database'); - - // database users - $result[] = _search('sites', 'database_user'); - - // email domains - $result[] = _search('mail', 'mail_domain'); - - // email alias domains - $result[] = _search('mail', 'mail_aliasdomain', "AND type = 'aliasdomain'"); - - // email mailboxes - $result[] = _search('mail', 'mail_user'); - - // email aliases - $result[] = _search('mail', 'mail_alias', "AND type = 'alias'"); - - // email forwards - $result[] = _search('mail', 'mail_forward', "AND type = 'forward'"); - - // email catchalls - $result[] = _search('mail', 'mail_domain_catchall', "AND type = 'catchall'"); - - // email transports - $result[] = _search('mail', 'mail_transport'); - - // mailinglists - $result[] = _search('mail', 'mail_mailinglist'); - - // getmails - $result[] = _search('mail', 'mail_get'); - - // dns zones - $result[] = _search('dns', 'dns_soa'); - - // secondary dns zones - $result[] = _search('dns', 'dns_slave'); - - // virtual machines - $result[] = _search('vm', 'openvz_vm'); - - // virtual machines os templates - $result[] = _search('vm', 'openvz_ostemplate'); - - // virtual machines vm templates - $result[] = _search('vm', 'openvz_template'); - - // virtual machines ip addresses - $result[] = _search('vm', 'openvz_ip'); - - // directive snippets - $result[] = _search('admin', 'directive_snippets'); - - $json = $app->functions->json_encode($result); -} - -//} - -function _search($module, $section, $additional_sql = ''){ - global $app, $q, $authsql, $modules; - - $result_array = array('cheader' => array(), 'cdata' => array()); - if(in_array($module, $modules)){ - $search_fields = array(); - $desc_fields = array(); - if(is_file('../'.$module.'/form/'.$section.'.tform.php')){ - include_once '../'.$module.'/form/'.$section.'.tform.php'; - - $category_title = $form["title"]; - $form_file = $form["action"]; - $db_table = $form["db_table"]; - $db_table_idx = $form["db_table_idx"]; - $order_by = $db_table_idx; - - if(is_array($form["tabs"]) && !empty($form["tabs"])){ - foreach($form["tabs"] as $tab){ - if(is_array($tab['fields']) && !empty($tab['fields'])){ - foreach($tab['fields'] as $key => $val){ - if(isset($val['searchable']) && $val['searchable'] > 0){ - $search_fields[] = $key." LIKE '%".$q."%'"; - if($val['searchable'] == 1){ - $order_by = $key; - $title_key = $key; - } - if($val['searchable'] == 2){ - $desc_fields[] = $key; - } - } - } - } - } - } - } - unset($form); - - $where_clause = ''; - if(!empty($search_fields)){ - $where_clause = implode(' OR ', $search_fields); - } else { - // valid SQL query which returns an empty result set - $where_clause = '1 = 0'; - } - if($where_clause != '') $where_clause = '('.$where_clause.')'; - if($additional_sql != '') $where_clause .= ' '.$additional_sql.' '; - $order_clause = ''; - if($order_by != '') $order_clause = ' ORDER BY '.$order_by; - - $sql = "SELECT * FROM ".$db_table." WHERE ".$where_clause.$authsql.$order_clause." LIMIT 0,10"; - $results = $app->db->queryAllRecords($sql); - - if(is_array($results) && !empty($results)){ - $lng_file = '../'.$module.'/lib/lang/'.$_SESSION['s']['language'].'_'.$section.'.lng'; - if(is_file($lng_file)) include $lng_file; - $result_array['cheader'] = array('title' => $category_title, - 'total' => count($results), - 'limit' => count($results) - ); - foreach($results as $result){ - $description = ''; - if(!empty($desc_fields)){ - $desc_items = array(); - foreach($desc_fields as $desc_field){ - if($result[$desc_field] != '') $desc_items[] = $wb[$desc_field.'_txt'].': '.$result[$desc_field]; - } - if(!empty($desc_items)) $description = implode(' - ', $desc_items); - } - - $result_array['cdata'][] = array('title' => $wb[$title_key.'_txt'].': '.$result[$title_key], - 'description' => $description, - 'onclick' => "capp('".$module."','".$module."/".$form_file."?id=".$result[$db_table_idx]."');", - 'fill_text' => strtolower($result[$title_key]) - ); - } - } - } - return $result_array; -} - -header('Content-type: application/json'); -echo $json; -?> diff --git a/interface/web/dashboard/dashlets/limits.php.bak b/interface/web/dashboard/dashlets/limits.php.bak deleted file mode 100644 index b361f6e9bad424612a6cb22a374b5d1281213f53..0000000000000000000000000000000000000000 --- a/interface/web/dashboard/dashlets/limits.php.bak +++ /dev/null @@ -1,177 +0,0 @@ -<?php - -class dashlet_limits { - - function show() { - global $app, $conf; - - $limits = array(); - - /* Limits to be shown*/ - - $limits[] = array('field' => 'limit_maildomain', - 'db_table' => 'mail_domain', - 'db_where' => ''); - - $limits[] = array('field' => 'limit_mailmailinglist', - 'db_table' => 'mail_mailinglist', - 'db_where' => ''); - - $limits[] = array('field' => 'limit_mailbox', - 'db_table' => 'mail_user', - 'db_where' => ''); - - $limits[] = array('field' => 'limit_mailalias', - 'db_table' => 'mail_forwarding', - 'db_where' => "type = 'alias'"); - - $limits[] = array('field' => 'limit_mailaliasdomain', - 'db_table' => 'mail_forwarding', - 'db_where' => "type = 'aliasdomain'"); - - $limits[] = array('field' => 'limit_mailforward', - 'db_table' => 'mail_forwarding', - 'db_where' => "type = 'forward'"); - - $limits[] = array('field' => 'limit_mailcatchall', - 'db_table' => 'mail_forwarding', - 'db_where' => "type = 'catchall'"); - - $limits[] = array('field' => 'limit_mailrouting', - 'db_table' => 'mail_transport', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_mailfilter', - 'db_table' => 'mail_user_filter', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_fetchmail', - 'db_table' => 'mail_get', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_spamfilter_wblist', - 'db_table' => 'spamfilter_wblist', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_spamfilter_user', - 'db_table' => 'spamfilter_users', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_spamfilter_policy', - 'db_table' => 'spamfilter_policy', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_web_domain', - 'db_table' => 'web_domain', - 'db_where' => "type = 'vhost'"); - - $limits[] = array('field' => 'limit_web_subdomain', - 'db_table' => 'web_domain', - 'db_where' => "(type = 'subdomain' OR type = 'vhostsubdomain')"); - - $limits[] = array('field' => 'limit_web_aliasdomain', - 'db_table' => 'web_domain', - 'db_where' => "type = 'alias'"); - - $limits[] = array('field' => 'limit_ftp_user', - 'db_table' => 'ftp_user', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_shell_user', - 'db_table' => 'shell_user', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_dns_zone', - 'db_table' => 'dns_soa', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_dns_slave_zone', - 'db_table' => 'dns_slave', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_dns_record', - 'db_table' => 'dns_rr', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_database', - 'db_table' => 'web_database', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_cron', - 'db_table' => 'cron', - 'db_where' => ""); - - $limits[] = array('field' => 'limit_client', - 'db_table' => 'client', - 'db_where' => ""); - - - - - //* Loading Template - $app->uses('tpl,tform'); - - $tpl = new tpl; - $tpl->newTemplate("dashlets/templates/limits.htm"); - - $wb = array(); - $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dashlet_limits.lng'; - if(is_file($lng_file)) include $lng_file; - $tpl->setVar($wb); - - if($app->auth->is_admin()) { - $user_is_admin = true; - } else { - $user_is_admin = false; - } - $tpl->setVar('is_admin', $user_is_admin); - - if($user_is_admin == false) { - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT * FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"); - } - - $rows = array(); - foreach($limits as $limit) { - $field = $limit['field']; - if($user_is_admin) { - $value = $wb['unlimited_txt']; - } else { - $value = $client[$field]; - } - if($value != 0 || $value == $wb['unlimited_txt']) { - $value_formatted = ($value == '-1')?$wb['unlimited_txt']:$value; - $rows[] = array('field' => $field, - 'field_txt' => $wb[$field.'_txt'], - 'value' => $value_formatted, - 'usage' => $this->_get_limit_usage($limit)); - } - } - $tpl->setLoop('rows', $rows); - - - return $tpl->grab(); - - } - - function _get_limit_usage($limit) { - global $app; - - $sql = "SELECT count(sys_userid) as number FROM ".$app->db->quote($limit['db_table'])." WHERE "; - if($limit['db_where'] != '') $sql .= $limit['db_where']." AND "; - $sql .= $app->tform->getAuthSQL('r'); - $rec = $app->db->queryOneRecord($sql); - return $rec['number']; - - } - -} - - - - - - - - -?> diff --git a/interface/web/sites/aps_install_package.php.bak b/interface/web/sites/aps_install_package.php.bak deleted file mode 100644 index 8ba04efd2103d47358df6188f0c0ccdd1e5c6287..0000000000000000000000000000000000000000 --- a/interface/web/sites/aps_install_package.php.bak +++ /dev/null @@ -1,211 +0,0 @@ -<?php -/* -Copyright (c) 2012, ISPConfig UG -Contributors: web wack creations, http://www.web-wack.at -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; -//require_once('classes/class.guicontroller.php'); -$app->load('aps_guicontroller'); - -// Check the module permissions -$app->auth->check_module_permissions('sites'); - -// Load needed classes -$app->uses('tpl,tform'); -$app->tpl->newTemplate("form.tpl.htm"); -$app->tpl->setInclude('content_tpl', 'templates/aps_install_package.htm'); - -// Load the language file -$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng'; -require_once $lngfile; -$app->tpl->setVar($wb); -$app->load_language_file('web/sites/'.$lngfile); - -// we will check only users, not admins -if($_SESSION["s"]["user"]["typ"] == 'user') { - $app->tform->formDef['db_table_idx'] = 'client_id'; - $app->tform->formDef['db_table'] = 'client'; - if(!$app->tform->checkClientLimit('limit_aps')) { - $app->error($app->lng("limit_aps_txt")); - } - if(!$app->tform->checkResellerLimit('limit_aps')) { - $app->error('Reseller: '.$wb["limit_aps_txt"]); - } -} - - -$adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false; -$gui = new ApsGUIController($app); -$pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : ''; - -// Check if a newer version is available for the current package -// Note: It's intended that here is no strict ID check (see below) -if(isset($pkg_id)) -{ - $newest_pkg_id = $gui->getNewestPackageID($pkg_id); - if($newest_pkg_id != 0) $pkg_id = $newest_pkg_id; -} - -// Make sure an integer ID is given -if(!isset($pkg_id) || !$gui->isValidPackageID($pkg_id, $adminflag)) - $app->error($app->lng('Invalid ID')); - -// Get package details -$details = $gui->getPackageDetails($pkg_id); -if(isset($details['error'])) $app->error($details['error']); -$settings = $gui->getPackageSettings($pkg_id); -if(isset($settings['error'])) $app->error($settings['error']); - -// Get domain list -$domains = array(); -$domain_for_user = ''; -if(!$adminflag) $domain_for_user = "AND (sys_userid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' - OR sys_groupid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' )"; -$domains_assoc = $app->db->queryAllRecords("SELECT domain FROM web_domain WHERE document_root != '' AND (type = 'vhost' OR type = 'vhostsubdomain') AND active = 'y' ".$domain_for_user." ORDER BY domain;"); -if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $domain['domain']; - - // If data has been submitted, validate it - $result['input'] = array(); -if(count($_POST) > 1) -{ - $result = $gui->validateInstallerInput($_POST, $details, $domains, $settings); - if(empty($result['error'])) - { - $gui->createPackageInstance($result['input'], $pkg_id); - @header('Location:aps_installedpackages_list.php'); - } - else - { - $app->tpl->setVar('error', implode('<br />', $result['error'])); - - // Set memorized values (license, db password, install location) - if(!empty($result['input'])) - foreach($result['input'] as $key => $value) $app->tpl->setVar('inp_'.$key, $value); - } -} -else $app->tpl->setVar('inp_main_database_password', ucfirst(substr(md5(crypt(rand(0, 10))), 0, 16))); - -// Pass the package details to the template -foreach($details as $key => $value) -{ - if(!is_array($value)) $app->tpl->setVar('pkg_'.str_replace(' ', '_', strtolower($key)), $value); - else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']); -} - -// Parse the template as far as possible, then do the rest manually -$app->tpl_defaults(); -$parsed_tpl = $app->tpl->grab(); - - -// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own... - -// Print the domain list -$domains_tpl = ''; -if(!empty($domains)) -{ - $set = array(); - $set[] = '<select name="main_domain" id="main_domain" class="selectInput">'; - foreach($domains as $domain) - { - $selected = ''; - if((count($_POST) > 1) - && (isset($result['input']['main_domain'])) - && ($result['input']['main_domain'] == $domain)) - $selected = ' selected '; - $set[] = '<option value="'.$domain.'" '.$selected.'>'.$domain.'</option>'; - } - $set[] = '</select>'; - - $domains_tpl = implode("\n", $set); -} -$parsed_tpl = str_replace('DOMAIN_LIST_SPACE', $domains_tpl, $parsed_tpl); - -// Print the packgae settings -$settings_tpl = ''; -if(!empty($settings)) -{ - $set = array(); - $set[] = '<legend>'.$app->lng('package_settings_txt').'</legend>'; - foreach($settings as $setting) - { - $set[] = '<div class="ctrlHolder">'; - $set[] = '<label for="'.$setting['SettingID'].'">'.$setting['SettingName'].'</label>'; - if($setting['SettingInputType'] == 'string' || $setting['SettingInputType'] == 'password') - { - $input_type = ($setting['SettingInputType'] == 'string') ? 'text' : 'password'; - - $input_value = ''; - if((count($_POST) > 1) - && (isset($result['input'][$setting['SettingID']]))) - $input_value = $result['input'][$setting['SettingID']]; - else $input_value = @$setting['SettingDefaultValue']; - - $set[] = '<input type="'.$input_type.'" class="textInput" name="'.$setting['SettingID'].'" maxlength="'.$setting['SettingMaxLength'].'" id="'.$setting['SettingID'].'" value="'.$input_value.'" /> - <p class="formHint">'.$setting['SettingDescription'].'</p>'; - } - else if($setting['SettingInputType'] == 'checkbox') - { - $checked = ''; - if((count($_POST) > 1) - && (isset($result['input'][$setting['SettingID']]) - && ($result['input'][$setting['SettingID']] == 'true'))) - $checked = 'checked '; - else if($setting['SettingDefaultValue'] == '1') $checked = 'checked '; - - $set[] = '<input type="checkbox" id="'.$setting['SettingID'].'" name="'.$setting['SettingID'].'" '.$checked.'/> - <p class="formHint">'.$setting['SettingDescription'].'</p>'; - } - else if($setting['SettingInputType'] == 'select') - { - $set[] = '<select size="1" class="selectInput" name="'.$setting['SettingID'].'">'; - foreach($setting['SettingChoices'] as $choice) - { - $selected = ''; - if((count($_POST) > 1) - && (isset($result['input'][$setting['SettingID']]))) - { - if($result['input'][$setting['SettingID']] == $choice['EnumID']) - $selected = 'selected '; - } - else if($setting['SettingDefaultValue'] == $choice['EnumID']) $selected = 'selected '; - - $set[] = '<option value="'.$choice['EnumID'].'" '.$selected.'>'.$choice['EnumName'].'</option>'; - } - $set[] = '</select> - <p class="formHint">'.$setting['SettingDescription'].'</p>'; - } - - $set[] = '</div>'; - } - $settings_tpl = implode("\n", $set); -} -$parsed_tpl = str_replace('PKG_SETTINGS_SPACE', $settings_tpl, $parsed_tpl); - -echo $parsed_tpl; -?> diff --git a/interface/web/sites/form/web_folder.tform.php.bak b/interface/web/sites/form/web_folder.tform.php.bak deleted file mode 100644 index ab8d4747ce15a3b1fdb3897fbdbfa2cffa38b6cf..0000000000000000000000000000000000000000 --- a/interface/web/sites/form/web_folder.tform.php.bak +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/* - Form Definition - - Tabledefinition - - Datatypes: - - INTEGER (Forces the input to Int) - - DOUBLE - - CURRENCY (Formats the values to currency notation) - - VARCHAR (no format check, maxlength: 255) - - TEXT (no format check) - - DATE (Dateformat, automatic conversion to timestamps) - - Formtype: - - TEXT (Textfield) - - TEXTAREA (Textarea) - - PASSWORD (Password textfield, input is not shown when edited) - - SELECT (Select option field) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hint: - The ID field of the database table is not part of the datafield definition. - The ID field must be always auto incement (int or bigint). - - -*/ - -$form["title"] = "Web Folder"; -$form["description"] = ""; -$form["name"] = "web_folder"; -$form["action"] = "web_folder_edit.php"; -$form["db_table"] = "web_folder"; -$form["db_table_idx"] = "web_folder_id"; -$form["db_history"] = "yes"; -$form["tab_default"] = "folder"; -$form["list_default"] = "web_folder_list.php"; -$form["auth"] = 'yes'; // yes / no - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 0 id must match with id of current user -$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user -$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete -$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete - -$form["tabs"]['folder'] = array ( - 'title' => "Folder", - 'width' => 100, - 'template' => "templates/web_folder_edit.htm", - 'fields' => array ( - //################################# - // Begin Datatable fields - //################################# - 'server_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE mirror_server_id = 0 AND {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'value' => '' - ), - 'parent_domain_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => "SELECT web_domain.domain_id, CONCAT(web_domain.domain, ' :: ', server.server_name) AS parent_domain FROM web_domain, server WHERE (web_domain.type = 'vhost' OR web_domain.type = 'vhostsubdomain') AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain", - 'keyfield'=> 'domain_id', - 'valuefield'=> 'parent_domain' - ), - 'value' => '' - ), - 'path' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'validators' => array ( 0 => array ( 'type' => 'REGEX', - 'regex' => '/^[\w\.\-\_\/]{0,255}$/', - 'errmsg'=> 'path_error_regex'), - ), - 'default' => '/', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'active' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n', 1 => 'y') - ), - //################################# - // ENDE Datatable fields - //################################# - ) -); - - - - -?> diff --git a/interface/web/sites/list/web_folder.list.php.bak b/interface/web/sites/list/web_folder.list.php.bak deleted file mode 100644 index aa23fac6734749edb9b6b58376b693a3feee5bf3..0000000000000000000000000000000000000000 --- a/interface/web/sites/list/web_folder.list.php.bak +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/* - Datatypes: - - INTEGER - - DOUBLE - - CURRENCY - - VARCHAR - - TEXT - - DATE -*/ - - - -// Name of the list -$liste["name"] = "web_folder"; - -// Database table -$liste["table"] = "web_folder"; - -// Index index field of the database table -$liste["table_idx"] = "web_folder_id"; - -// Search Field Prefix -$liste["search_prefix"] = "search_"; - -// Records per page -$liste["records_per_page"] = "15"; - -// Script File of the list -$liste["file"] = "web_folder_list.php"; - -// Script file of the edit form -$liste["edit_file"] = "web_folder_edit.php"; - -// Script File of the delete script -$liste["delete_file"] = "web_folder_del.php"; - -// Paging Template -$liste["paging_tpl"] = "templates/paging.tpl.htm"; - -// Enable auth -$liste["auth"] = "yes"; - - -/***************************************************** -* Suchfelder -*****************************************************/ - - -$liste["item"][] = array( 'field' => "active", - 'datatype' => "VARCHAR", - 'formtype' => "SELECT", - 'op' => "=", - 'prefix' => "", - 'suffix' => "", - 'width' => "", - 'value' => array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>")); - - -$liste["item"][] = array( 'field' => "server_id", - 'datatype' => "VARCHAR", - 'formtype' => "SELECT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => 'SELECT server_id,server_name FROM server WHERE {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "parent_domain_id", - 'datatype' => "VARCHAR", - 'filters' => array( 0 => array( 'event' => 'SHOW', - 'type' => 'IDNTOUTF8') - ), - 'formtype' => "SELECT", - 'op' => "=", - 'prefix' => "", - 'suffix' => "", - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain') AND {AUTHSQL} ORDER BY domain", - 'keyfield'=> 'domain_id', - 'valuefield'=> 'domain' - ), - 'width' => "", - 'value' => ""); - -$liste["item"][] = array( 'field' => "path", - 'datatype' => "VARCHAR", - 'formtype' => "TEXT", - 'op' => "like", - 'prefix' => "%", - 'suffix' => "%", - 'width' => "", - 'value' => ""); - - -?> diff --git a/interface/web/sites/templates/web_sites_stats_list.htm.bak b/interface/web/sites/templates/web_sites_stats_list.htm.bak deleted file mode 100644 index f721dfbd215cafc2ed13eadb351c1971b47930d6..0000000000000000000000000000000000000000 --- a/interface/web/sites/templates/web_sites_stats_list.htm.bak +++ /dev/null @@ -1,63 +0,0 @@ -<h2><tmpl_var name="list_head_txt"></h2> -<p><tmpl_var name="list_desc_txt"></p> - -<div class="panel panel_list_web_sites_stats"> - - <div class="pnl_listarea"> - <fieldset><legend><tmpl_var name="list_head_txt"></legend> - <table class="list"> - <thead> - <tr class="caption"> - <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th> - <th class="tbl_col_web_traffic_this_month" scope="col"><tmpl_var name="this_month_txt"></th> - <th class="tbl_col_web_traffic_last_month" scope="col"><tmpl_var name="last_month_txt"></th> - <th class="tbl_col_web_traffic_this_year" scope="col"><tmpl_var name="this_year_txt"></th> - <th class="tbl_col_web_traffic_last_year" scope="col"><tmpl_var name="last_year_txt"></th> - <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th> - </tr> - <tr class="filter"> - <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td> - <td class="tbl_col_this_month"></td> - <td class="tbl_col_last_month"></td> - <td class="tbl_col_this_year"></td> - <td class="tbl_col_last_year"></td> - <td class="tbl_col_buttons"> - <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="submitForm('pageForm','sites/web_sites_stats.php');"><span>{tmpl_var name="filter_txt"}</span></button> - </td> - </tr> - </thead> - <tbody> - <tmpl_loop name="records"> - <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td class="tbl_col_domain"><a target="_blank" href="http://{tmpl_var name="domain"}/stats">{tmpl_var name="domain"}</a></td> - <td class="tbl_col_this_month"><a href="#" onclick="loadContent('sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_month"}</a></td> - <td class="tbl_col_last_month"><a href="#" onclick="loadContent('sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_month"}</a></td> - <td class="tbl_col_this_year"><a href="#" onclick="loadContent('sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_year"}</a></td> - <td class="tbl_col_last_year"><a href="#" onclick="loadContent('sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_year"}</a></td> - <td class="tbl_col_buttons"></td> - </tr> - </tmpl_loop> - <tmpl_unless name="records"> - <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td colspan="6">{tmpl_var name='globalsearch_noresults_text_txt'}</td> - </tr> - </tmpl_unless> - <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"> - <td class="tbl_col_domain"><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_txt"}</a></td> - <td class="tbl_col_this_month"><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_month"} MB</a></td> - <td class="tbl_col_last_month"><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_month"} MB</a></td> - <td class="tbl_col_this_year"><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_this_year"} MB</a></td> - <td class="tbl_col_last_year"><a href="#" onclick="return false;" style="font-weight:bold;">{tmpl_var name="sum_last_year"} MB</a></td> - <td class="tbl_col_buttons"></td> - </tr> - </tbody> - <tfoot> - <tr> - <td class="tbl_footer tbl_paging" colspan="6"><tmpl_var name="paging"></td> - </tr> - </tfoot> - </table> - </fieldset> - </div> - -</div> diff --git a/interface/web/sites/web_aliasdomain_edit.php.bak b/interface/web/sites/web_aliasdomain_edit.php.bak deleted file mode 100644 index b220011dd3c2e678a7661efba79886b7056c022c..0000000000000000000000000000000000000000 --- a/interface/web/sites/web_aliasdomain_edit.php.bak +++ /dev/null @@ -1,191 +0,0 @@ -<?php -/* -Copyright (c) 2007, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ - -$tform_def_file = "form/web_aliasdomain.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('sites'); - -// Loading classes -$app->uses('tpl,tform,tform_actions,tools_sites'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - - var $parent_domain_record; - - function onShowNew() { - global $app, $conf; - - // we will check only users, not admins - if($_SESSION["s"]["user"]["typ"] == 'user') { - if(!$app->tform->checkClientLimit('limit_web_aliasdomain', "type = 'alias'")) { - $app->error($app->tform->wordbook["limit_web_aliasdomain_txt"]); - } - if(!$app->tform->checkResellerLimit('limit_web_aliasdomain', "type = 'alias'")) { - $app->error('Reseller: '.$app->tform->wordbook["limit_web_aliasdomain_txt"]); - } - } - - parent::onShowNew(); - } - - function onShowEnd() { - global $app, $conf; - - /* - * Now we have to check, if we should use the domain-module to select the domain - * or not - */ - $app->uses('ini_parser,getconf'); - $settings = $app->getconf->get_global_config('domains'); - if ($settings['use_domain_module'] == 'y') { - /* - * The domain-module is in use. - */ - $domains = $app->tools_sites->getDomainModuleDomains(); - $domain_select = ''; - if(is_array($domains) && sizeof($domains) > 0) { - /* We have domains in the list, so create the drop-down-list */ - foreach( $domains as $domain) { - $domain_select .= "<option value=" . $domain['domain_id'] ; - if ($domain['domain'] == $this->dataRecord["domain"]) { - $domain_select .= " selected"; - } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "</option>\r\n"; - } - } - else { - /* - * We have no domains in the domain-list. This means, we can not add ANY new domain. - * To avoid, that the variable "domain_option" is empty and so the user can - * free enter a domain, we have to create a empty option! - */ - $domain_select .= "<option value=''></option>\r\n"; - } - $app->tpl->setVar("domain_option", $domain_select); - } - - if($_SESSION["s"]["user"]["typ"] == 'admin') { - // Directive Snippets - $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'"); - $proxy_directive_snippets_txt = ''; - if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ - foreach($proxy_directive_snippets as $proxy_directive_snippet){ - $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$proxy_directive_snippet['snippet'].'</pre></a> '; - } - } - if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; - $app->tpl->setVar("proxy_directive_snippets_txt", $proxy_directive_snippets_txt); - } - - parent::onShowEnd(); - - } - - function onSubmit() { - global $app, $conf; - - /* check if the domain module is used - and check if the selected domain can be used! */ - $app->uses('ini_parser,getconf'); - $settings = $app->getconf->get_global_config('domains'); - if ($settings['use_domain_module'] == 'y') { - $domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['domain']); - if(!$domain_check) { - // invalid domain selected - $app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />"; - } else { - $this->dataRecord['domain'] = $domain_check; - } - } - - // nginx: if redirect type is proxy and redirect path is no URL, display error - if($this->dataRecord["redirect_type"] == 'proxy' && substr($this->dataRecord['redirect_path'], 0, 1) == '/'){ - $app->tform->errorMessage .= $app->tform->lng("error_proxy_requires_url")."<br />"; - } - - // Get the record of the parent domain - $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ? AND ".$app->tform->getAuthSQL('r'), @$this->dataRecord["parent_domain_id"]); - if(!$parent_domain || $parent_domain['domain_id'] != @$this->dataRecord['parent_domain_id']) $app->tform->errorMessage .= $app->tform->lng("no_domain_perm"); - - // Set a few fixed values - $this->dataRecord["type"] = 'alias'; - $this->dataRecord["server_id"] = $parent_domain["server_id"]; - //$this->dataRecord["domain"] = $this->dataRecord["domain"].'.'.$parent_domain["domain"]; - - $this->parent_domain_record = $parent_domain; - - //* make sure that the domain is lowercase - if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); - - parent::onSubmit(); - } - - function onAfterInsert() { - global $app, $conf; - - $app->db->query('UPDATE web_domain SET sys_groupid = ? WHERE domain_id = ?', $this->parent_domain_record['sys_groupid'], $this->id); - - } - - function onAfterUpdate() { - global $app, $conf; - - //* Check if parent domain has been changed - if($this->dataRecord['parent_domain_id'] != $this->oldDataRecord['parent_domain_id']) { - - //* Update the domain owner - $app->db->query('UPDATE web_domain SET sys_groupid = ? WHERE domain_id = ?', $this->parent_domain_record['sys_groupid'], $this->id); - - //* Update the old website, so that the vhost alias gets removed - //* We force the update by inserting a transaction record without changes manually. - $old_website = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = ?', $this->oldDataRecord['domain_id']); - $app->db->datalogSave('web_domain', 'UPDATE', 'domain_id', $this->oldDataRecord['parent_domain_id'], $old_website, $old_website, true); - } - - } - -} - -$page = new page_action; -$page->onLoad(); - -?> diff --git a/interface/web/sites/web_domain_edit.php.bak b/interface/web/sites/web_domain_edit.php.bak deleted file mode 100644 index 2d9c774403018377d3a5de1692da6f13febdaf7a..0000000000000000000000000000000000000000 --- a/interface/web/sites/web_domain_edit.php.bak +++ /dev/null @@ -1,1114 +0,0 @@ -<?php -/* -Copyright (c) 2007 - 2009, Till Brehm, projektfarm Gmbh -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -/****************************************** -* Begin Form configuration -******************************************/ - -$tform_def_file = "form/web_domain.tform.php"; - -/****************************************** -* End Form configuration -******************************************/ - -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -//* Check permissions for module -$app->auth->check_module_permissions('sites'); - -// Loading classes -$app->uses('tpl,tform,tform_actions,tools_sites'); -$app->load('tform_actions'); - -class page_action extends tform_actions { - - //* 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; - } - - function onShowNew() { - global $app, $conf; - - // we will check only users, not admins - if($_SESSION["s"]["user"]["typ"] == 'user') { - if(!$app->tform->checkClientLimit('limit_web_domain', "type = 'vhost'")) { - $app->error($app->tform->wordbook["limit_web_domain_txt"]); - } - if(!$app->tform->checkResellerLimit('limit_web_domain', "type = 'vhost'")) { - $app->error('Reseller: '.$app->tform->wordbook["limit_web_domain_txt"]); - } - - // Get the limits of the client - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT client.web_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"); - $web_servers = explode(',', $client['web_servers']); - $app->tpl->setVar("server_id_value", $web_servers[0]); - unset($web_servers); - } - $app->tform->formDef['tabs']['domain']['readonly'] = false; - - parent::onShowNew(); - } - - function onShowEnd() { - global $app, $conf; - - $app->uses('ini_parser,getconf'); - - $read_limits = array('limit_cgi', 'limit_ssi', 'limit_perl', 'limit_ruby', 'limit_python', 'force_suexec', 'limit_hterror', 'limit_wildcard', 'limit_ssl'); - - //* Client: If the logged in user is not admin and has no sub clients (no reseller) - if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { - - // Get the limits of the client - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT client.limit_web_domain, client.web_servers, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"); - - $client['web_servers_ids'] = explode(',', $client['web_servers']); - - $only_one_server = count($client['web_servers_ids']) === 1; - $app->tpl->setVar('only_one_server', $only_one_server); - - //* Get global web config - foreach ($client['web_servers_ids'] as $web_server_id) { - $web_config[$web_server_id] = $app->getconf->get_server_config($web_server_id, 'web'); - } - - $sql = "SELECT server_id, server_name FROM server WHERE server_id IN (" . $client['web_servers'] . ");"; - $web_servers = $app->db->queryAllRecords($sql); - - $options_web_servers = ""; - - foreach ($web_servers as $web_server) { - $options_web_servers .= "<option value='$web_server[server_id]'>$web_server[server_name]</option>"; - } - - $app->tpl->setVar("server_id", $options_web_servers); - unset($options_web_servers); - - if($this->id > 0) { - if(!isset($this->dataRecord["server_id"])){ - $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); - $this->dataRecord["server_id"] = $tmp["server_id"]; - unset($tmp); - } - $server_id = intval(@$this->dataRecord["server_id"]); - } else { - $server_id = (isset($web_servers[0])) ? intval($web_servers[0]) : 0; - } - - //* Fill the IPv4 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; - $ips = $app->db->queryAllRecords($sql); - $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ip_address", $ip_select); - unset($tmp); - unset($ips); - - //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; - $ips = $app->db->queryAllRecords($sql); - $ip_select = "<option value=''></option>"; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ipv6_address", $ip_select); - unset($tmp); - unset($ips); - - //PHP Version Selection (FastCGI) - $server_type = 'apache'; - if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; - if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; - if($this->dataRecord['php'] == 'php-fpm'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ".($this->id > 0 ? $app->functions->intval($this->dataRecord['server_id']) : $app->functions->intval($client['default_webserver']))." AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")"); - } - if($this->dataRecord['php'] == 'fast-cgi'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".($this->id > 0 ? $app->functions->intval($this->dataRecord['server_id']) : $app->functions->intval($client['default_webserver']))." AND (client_id = 0 OR client_id=".$app->functions->intval($_SESSION['s']['user']['client_id']).")"); - } - $php_select = "<option value=''>Default</option>"; - if(is_array($php_records) && !empty($php_records)) { - foreach( $php_records as $php_record) { - if($this->dataRecord['php'] == 'php-fpm'){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; - } - $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "<option value='$php_version' $selected>".$php_record['name']."</option>\r\n"; - } - } - $app->tpl->setVar("fastcgi_php_version", $php_select); - unset($php_records); - - // add limits to template to be able to hide settings - foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]); - - - //* Reseller: If the logged in user is not admin and has sub clients (is a reseller) - } elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) { - - // Get the limits of the client - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT client.client_id, client.limit_web_domain, client.default_webserver, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"); - - //* Get global web config - foreach ($client['web_servers_ids'] as $web_server_id) { - $web_config[$web_server_id] = $app->getconf->get_server_config($web_server_id, 'web'); - } - - $sql = "SELECT server_id, server_name FROM server WHERE server_id IN (" . $client['web_servers'] . ");"; - $web_servers = $app->db->queryAllRecords($sql); - - $options_web_servers = ""; - - foreach ($web_servers as $web_server) { - $options_web_servers .= "<option value='$web_server[server_id]'>$web_server[server_name]</option>"; - } - - $app->tpl->setVar("server_id", $options_web_servers); - unset($options_web_servers); - - // Fill the client select field - $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY sys_group.name"; - $records = $app->db->queryAllRecords($sql); - $tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id'])); - $client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>'; - //$tmp_data_record = $app->tform->getDataRecord($this->id); - if(is_array($records)) { - $selected_client_group_id = 0; // needed to get list of PHP versions - foreach( $records as $rec) { - if(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $rec["groupid"]; - $selected = @(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; - if($selected == 'SELECTED') $selected_client_group_id = $rec["groupid"]; - $client_select .= "<option value='$rec[groupid]' $selected>$rec[contactname]</option>\r\n"; - } - } - $app->tpl->setVar("client_group_id", $client_select); - - //* Fill the IPv4 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv4' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; - $ips = $app->db->queryAllRecords($sql); - $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ip_address", $ip_select); - unset($tmp); - unset($ips); - - //* Fill the IPv6 select field with the IP addresses that are allowed for this client - $sql = "SELECT ip_address FROM server_ip WHERE server_id IN (" . $client['web_servers'] . ") AND ip_type = 'IPv6' AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id'].")"; - $ips = $app->db->queryAllRecords($sql); - $ip_select = "<option value=''></option>"; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ipv6_address", $ip_select); - unset($tmp); - unset($ips); - - //PHP Version Selection (FastCGI) - $server_type = 'apache'; - if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; - if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; - $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ".$app->functions->intval($selected_client_group_id)); - //$sql_where = " AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id']." OR client_id = ".intval($selected_client['client_id']).")"; - $sql_where = " AND (client_id = 0 OR client_id = ".intval($selected_client['client_id']).")"; - if($this->dataRecord['php'] == 'php-fpm'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = ".($this->id > 0 ? $app->functions->intval($this->dataRecord['server_id']) : $app->functions->intval($client['default_webserver'])).$sql_where); - } - if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".($this->id > 0 ? $app->functions->intval($this->dataRecord['server_id']) : $app->functions->intval($client['default_webserver'])).$sql_where); - } - $php_select = "<option value=''>Default</option>"; - if(is_array($php_records) && !empty($php_records)) { - foreach( $php_records as $php_record) { - if($this->dataRecord['php'] == 'php-fpm'){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; - } - $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "<option value='$php_version' $selected>".$php_record['name']."</option>\r\n"; - } - } - $app->tpl->setVar("fastcgi_php_version", $php_select); - unset($php_records); - - // add limits to template to be able to hide settings - foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]); - - $sites_config = $app->getconf->get_global_config('sites'); - if($sites_config['reseller_can_use_options']) { - // Directive Snippets - $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'"); - $php_directive_snippets_txt = ''; - if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){ - foreach($php_directive_snippets as $php_directive_snippet){ - $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($php_directive_snippet['snippet']).'</pre></a> '; - } - } - if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------'; - $app->tpl->setVar("php_directive_snippets_txt", $php_directive_snippets_txt); - - if($server_type == 'apache'){ - $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'"); - $apache_directive_snippets_txt = ''; - if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){ - foreach($apache_directive_snippets as $apache_directive_snippet){ - $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($apache_directive_snippet['snippet']).'</pre></a> '; - } - } - if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------'; - $app->tpl->setVar("apache_directive_snippets_txt", $apache_directive_snippets_txt); - } - - if($server_type == 'nginx'){ - $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'"); - $nginx_directive_snippets_txt = ''; - if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){ - foreach($nginx_directive_snippets as $nginx_directive_snippet){ - $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($nginx_directive_snippet['snippet']).'</pre></a> '; - } - } - if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------'; - $app->tpl->setVar("nginx_directive_snippets_txt", $nginx_directive_snippets_txt); - } - - $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'"); - $proxy_directive_snippets_txt = ''; - if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ - foreach($proxy_directive_snippets as $proxy_directive_snippet){ - $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($proxy_directive_snippet['snippet']).'</pre></a> '; - } - } - if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; - $app->tpl->setVar("proxy_directive_snippets_txt", $proxy_directive_snippets_txt); - } - - //* Admin: If the logged in user is admin - } else { - - // The user is admin, so we fill in all IP addresses of the server - if($this->id > 0) { - if(!isset($this->dataRecord["server_id"])){ - $tmp = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); - $this->dataRecord["server_id"] = $tmp["server_id"]; - unset($tmp); - } - $server_id = intval(@$this->dataRecord["server_id"]); - } else { - // Get the first server ID - $tmp = $app->db->queryOneRecord("SELECT server_id FROM server WHERE web_server = 1 ORDER BY server_name LIMIT 0,1"); - $server_id = intval($tmp['server_id']); - } - - //* get global web config - $web_config = $app->getconf->get_server_config($server_id, 'web'); - - //* Fill the IPv4 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv4' AND server_id = ".$app->functions->intval($server_id); - $ips = $app->db->queryAllRecords($sql); - $ip_select = ($web_config['enable_ip_wildcard'] == 'y')?"<option value='*'>*</option>":""; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ip_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ip_address", $ip_select); - unset($tmp); - unset($ips); - - //* Fill the IPv6 select field - $sql = "SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND server_id = ".$app->functions->intval($server_id); - $ips = $app->db->queryAllRecords($sql); - $ip_select = "<option value=''></option>"; - //$ip_select = ""; - if(is_array($ips)) { - foreach( $ips as $ip) { - $selected = ($ip["ip_address"] == $this->dataRecord["ipv6_address"])?'SELECTED':''; - $ip_select .= "<option value='$ip[ip_address]' $selected>$ip[ip_address]</option>\r\n"; - } - } - $app->tpl->setVar("ipv6_address", $ip_select); - unset($tmp); - unset($ips); - - // Fill the client select field - $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY sys_group.name"; - $clients = $app->db->queryAllRecords($sql); - $client_select = "<option value='0'></option>"; - //$tmp_data_record = $app->tform->getDataRecord($this->id); - if(is_array($clients)) { - $selected_client_group_id = 0; // needed to get list of PHP versions - foreach($clients as $client) { - if(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $client["groupid"]; - //$selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':''; - $selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':''; - if($selected == 'SELECTED') $selected_client_group_id = $client["groupid"]; - $client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n"; - } - } - $app->tpl->setVar("client_group_id", $client_select); - - //PHP Version Selection (FastCGI) - $server_type = 'apache'; - if(!empty($web_config['server_type'])) $server_type = $web_config['server_type']; - if($server_type == 'nginx' && $this->dataRecord['php'] == 'fast-cgi') $this->dataRecord['php'] = 'php-fpm'; - $selected_client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = ".$app->functions->intval($selected_client_group_id)); - //$sql_where = " AND (client_id = 0 OR client_id=".$_SESSION['s']['user']['client_id']." OR client_id = ".intval($selected_client['client_id']).")"; - $sql_where = " AND (client_id = 0 OR client_id = ".$app->functions->intval($selected_client['client_id']).")"; - if($this->dataRecord['php'] == 'php-fpm'){ - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fpm_init_script != '' AND php_fpm_ini_dir != '' AND php_fpm_pool_dir != '' AND server_id = $server_id".$sql_where); - } - if($this->dataRecord['php'] == 'fast-cgi') { - $php_records = $app->db->queryAllRecords("SELECT * FROM server_php WHERE php_fastcgi_binary != '' AND php_fastcgi_ini_dir != '' AND server_id = ".$app->functions->intval($server_id).$sql_where); - } - $php_select = "<option value=''>Default</option>"; - if(is_array($php_records) && !empty($php_records)) { - foreach( $php_records as $php_record) { - if($this->dataRecord['php'] == 'php-fpm'){ - $php_version = $php_record['name'].':'.$php_record['php_fpm_init_script'].':'.$php_record['php_fpm_ini_dir'].':'.$php_record['php_fpm_pool_dir']; - } else { - $php_version = $php_record['name'].':'.$php_record['php_fastcgi_binary'].':'.$php_record['php_fastcgi_ini_dir']; - } - $selected = ($php_version == $this->dataRecord["fastcgi_php_version"])?'SELECTED':''; - $php_select .= "<option value='$php_version' $selected>".$php_record['name']."</option>\r\n"; - } - } - $app->tpl->setVar("fastcgi_php_version", $php_select); - unset($php_records); - - foreach($read_limits as $limit) $app->tpl->setVar($limit, ($limit == 'force_suexec' ? 'n' : 'y')); - - // Directive Snippets - $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'"); - $php_directive_snippets_txt = ''; - if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){ - foreach($php_directive_snippets as $php_directive_snippet){ - $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($php_directive_snippet['snippet']).'</pre></a> '; - } - } - if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------'; - $app->tpl->setVar("php_directive_snippets_txt", $php_directive_snippets_txt); - - if($server_type == 'apache'){ - $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'"); - $apache_directive_snippets_txt = ''; - if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){ - foreach($apache_directive_snippets as $apache_directive_snippet){ - $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($apache_directive_snippet['snippet']).'</pre></a> '; - } - } - if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------'; - $app->tpl->setVar("apache_directive_snippets_txt", $apache_directive_snippets_txt); - } - - if($server_type == 'nginx'){ - $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'"); - $nginx_directive_snippets_txt = ''; - if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){ - foreach($nginx_directive_snippets as $nginx_directive_snippet){ - $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($nginx_directive_snippet['snippet']).'</pre></a> '; - } - } - if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------'; - $app->tpl->setVar("nginx_directive_snippets_txt", $nginx_directive_snippets_txt); - } - - $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'"); - $proxy_directive_snippets_txt = ''; - if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){ - foreach($proxy_directive_snippets as $proxy_directive_snippet){ - $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($proxy_directive_snippet['snippet']).'</pre></a> '; - } - } - if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------'; - $app->tpl->setVar("proxy_directive_snippets_txt", $proxy_directive_snippets_txt); - } - - $ssl_domain_select = ''; - $tmp = $app->db->queryOneRecord("SELECT domain FROM web_domain WHERE domain_id = ".$this->id); - $ssl_domains = array($tmp["domain"], 'www.'.$tmp["domain"], '*.'.$tmp["domain"]); - if(is_array($ssl_domains)) { - foreach( $ssl_domains as $ssl_domain) { - $selected = ($ssl_domain == $this->dataRecord['ssl_domain'])?'SELECTED':''; - $ssl_domain_select .= "<option value='$ssl_domain' $selected>$ssl_domain</option>\r\n"; - } - } - $app->tpl->setVar("ssl_domain", $ssl_domain_select); - unset($ssl_domain_select); - unset($ssl_domains); - unset($ssl_domain); - - if($this->id > 0) { - //* we are editing a existing record - $app->tpl->setVar("edit_disabled", 1); - $app->tpl->setVar("server_id_value", $this->dataRecord["server_id"]); - } else { - $app->tpl->setVar("edit_disabled", 0); - } - - $tmp_txt = ($this->dataRecord['traffic_quota_lock'] == 'y')?'<b>('.$app->tform->lng('traffic_quota_exceeded_txt').')</b>':''; - $app->tpl->setVar("traffic_quota_exceeded_txt", $tmp_txt); - - /* - * Now we have to check, if we should use the domain-module to select the domain - * or not - */ - $settings = $app->getconf->get_global_config('domains'); - if ($settings['use_domain_module'] == 'y') { - /* - * The domain-module is in use. - */ - $domains = $app->tools_sites->getDomainModuleDomains(); - $domain_select = ''; - if(is_array($domains) && sizeof($domains) > 0) { - /* We have domains in the list, so create the drop-down-list */ - foreach( $domains as $domain) { - $domain_select .= "<option value=" . $domain['domain_id'] ; - if ($domain['domain'] == $this->dataRecord["domain"]) { - $domain_select .= " selected"; - } - $domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . "</option>\r\n"; - } - } - else { - /* - * We have no domains in the domain-list. This means, we can not add ANY new domain. - * To avoid, that the variable "domain_option" is empty and so the user can - * free enter a domain, we have to create a empty option! - */ - $domain_select .= "<option value=''></option>\r\n"; - } - $app->tpl->setVar("domain_option", $domain_select); - } - - // check for configuration errors in sys_datalog - if($this->id > 0) { - $datalog = $app->db->queryOneRecord("SELECT sys_datalog.error, sys_log.tstamp FROM sys_datalog, sys_log WHERE sys_datalog.dbtable = 'web_domain' AND sys_datalog.dbidx = 'domain_id:".$app->functions->intval($this->id)."' AND sys_datalog.datalog_id = sys_log.datalog_id AND sys_log.message = CONCAT('Processed datalog_id ',sys_log.datalog_id) ORDER BY sys_datalog.tstamp DESC"); - if(is_array($datalog) && !empty($datalog)){ - if(trim($datalog['error']) != ''){ - $app->tpl->setVar("config_error_msg", nl2br(htmlentities($datalog['error']))); - $app->tpl->setVar("config_error_tstamp", date($app->lng('conf_format_datetime'), $datalog['tstamp'])); - } - } - } - - parent::onShowEnd(); - } - - function onShowEdit() { - global $app; - if($app->tform->checkPerm($this->id, 'riud')) $app->tform->formDef['tabs']['domain']['readonly'] = false; - parent::onShowEdit(); - } - - function onSubmit() { - global $app, $conf; - - /* check if the domain module is used - and check if the selected domain can be used! */ - if($app->tform->getCurrentTab() == 'domain') { - $app->uses('ini_parser,getconf'); - $settings = $app->getconf->get_global_config('domains'); - if ($settings['use_domain_module'] == 'y') { - $domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['domain']); - if(!$domain_check) { - // invalid domain selected - $app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />"; - } else { - $this->dataRecord['domain'] = $domain_check; - } - } - } - - // nginx: if redirect type is proxy and redirect path is no URL, display error - //if($this->dataRecord["redirect_type"] == 'proxy' && substr($this->dataRecord['redirect_path'],0,1) == '/'){ - // $app->tform->errorMessage .= $app->tform->lng("error_proxy_requires_url")."<br />"; - //} - - // Set a few fixed values - $this->dataRecord["parent_domain_id"] = 0; - $this->dataRecord["type"] = 'vhost'; - $this->dataRecord["vhost_type"] = 'name'; - - $read_limits = array('limit_cgi', 'limit_ssi', 'limit_perl', 'limit_ruby', 'limit_python', 'force_suexec', 'limit_hterror', 'limit_wildcard', 'limit_ssl'); - - - if($_SESSION["s"]["user"]["typ"] != 'admin') { - // Get the limits of the client - $client_group_id = $_SESSION["s"]["user"]["default_group"]; - $client = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, web_servers, parent_client_id, limit_web_quota, client." . implode(", client.", $read_limits) . " FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id"); - - $client['web_servers_ids'] = explode(',', $client['web_servers']); - - if($client['limit_cgi'] != 'y') $this->dataRecord['cgi'] = '-'; - if($client['limit_ssi'] != 'y') $this->dataRecord['ssi'] = '-'; - if($client['limit_perl'] != 'y') $this->dataRecord['perl'] = '-'; - if($client['limit_ruby'] != 'y') $this->dataRecord['ruby'] = '-'; - if($client['limit_python'] != 'y') $this->dataRecord['python'] = '-'; - if($client['force_suexec'] == 'y') $this->dataRecord['suexec'] = 'y'; - if($client['limit_hterror'] != 'y') $this->dataRecord['errordocs'] = '-'; - if($client['limit_wildcard'] != 'y' && $this->dataRecord['subdomain'] == '*') $this->dataRecord['subdomain'] = '-'; - if($client['limit_ssl'] != 'y') $this->dataRecord['ssl'] = '-'; - - // only generate quota and traffic warnings if value has changed - if($this->id > 0) { - $old_web_values = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); - } else { - $old_web_values = array(); - } - - //* Check the website quota of the client - if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) { - $tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost' AND ".$app->tform->getAuthSQL('u')); - $webquota = $tmp["webquota"]; - $new_web_quota = $app->functions->intval($this->dataRecord["hd_quota"]); - if(($webquota + $new_web_quota > $client["limit_web_quota"]) || ($new_web_quota < 0 && $client["limit_web_quota"] >= 0)) { - $max_free_quota = floor($client["limit_web_quota"] - $webquota); - if($max_free_quota < 0) $max_free_quota = 0; - $app->tform->errorMessage .= $app->tform->lng("limit_web_quota_free_txt").": ".$max_free_quota." MB<br>"; - // Set the quota field to the max free space - $this->dataRecord["hd_quota"] = $max_free_quota; - } - unset($tmp); - unset($tmp_quota); - } - - //* Check the traffic quota of the client - if(isset($_POST["traffic_quota"]) && $client["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) { - $tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u')); - $trafficquota = $tmp["trafficquota"]; - $new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]); - if(($trafficquota + $new_traffic_quota > $client["limit_traffic_quota"]) || ($new_traffic_quota < 0 && $client["limit_traffic_quota"] >= 0)) { - $max_free_quota = floor($client["limit_traffic_quota"] - $trafficquota); - if($max_free_quota < 0) $max_free_quota = 0; - $app->tform->errorMessage .= $app->tform->lng("limit_traffic_quota_free_txt").": ".$max_free_quota." MB<br>"; - // Set the quota field to the max free space - $this->dataRecord["traffic_quota"] = $max_free_quota; - } - unset($tmp); - unset($tmp_quota); - } - - if($client['parent_client_id'] > 0) { - // Get the limits of the reseller - $reseller = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, web_servers, limit_web_quota FROM client WHERE client_id = ".$client['parent_client_id']); - - //* Check the website quota of the client - if(isset($_POST["hd_quota"]) && $reseller["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) { - $tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost' AND ".$app->tform->getAuthSQL('u')); - $webquota = $tmp["webquota"]; - $new_web_quota = $app->functions->intval($this->dataRecord["hd_quota"]); - if(($webquota + $new_web_quota > $reseller["limit_web_quota"]) || ($new_web_quota < 0 && $reseller["limit_web_quota"] >= 0)) { - $max_free_quota = floor($reseller["limit_web_quota"] - $webquota); - if($max_free_quota < 0) $max_free_quota = 0; - $app->tform->errorMessage .= $app->tform->lng("limit_web_quota_free_txt").": ".$max_free_quota." MB<br>"; - // Set the quota field to the max free space - $this->dataRecord["hd_quota"] = $max_free_quota; - } - unset($tmp); - unset($tmp_quota); - } - - //* Check the traffic quota of the client - if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) { - $tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u')); - $trafficquota = $tmp["trafficquota"]; - $new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]); - if(($trafficquota + $new_traffic_quota > $reseller["limit_traffic_quota"]) || ($new_traffic_quota < 0 && $reseller["limit_traffic_quota"] >= 0)) { - $max_free_quota = floor($reseller["limit_traffic_quota"] - $trafficquota); - if($max_free_quota < 0) $max_free_quota = 0; - $app->tform->errorMessage .= $app->tform->lng("limit_traffic_quota_free_txt").": ".$max_free_quota." MB<br>"; - // Set the quota field to the max free space - $this->dataRecord["traffic_quota"] = $max_free_quota; - } - unset($tmp); - unset($tmp_quota); - } - } - - // When the record is updated - if($this->id > 0) { - // restore the server ID if the user is not admin and record is edited - $tmp = $app->db->queryOneRecord("SELECT server_id, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id)); - $this->dataRecord["server_id"] = $tmp["server_id"]; - - // set the settings to current if not provided (or cleared due to limits) - if($this->dataRecord['cgi'] == '-') $this->dataRecord['cgi'] = $tmp['cgi']; - if($this->dataRecord['ssi'] == '-') $this->dataRecord['ssi'] = $tmp['ssi']; - if($this->dataRecord['perl'] == '-') $this->dataRecord['perl'] = $tmp['perl']; - if($this->dataRecord['ruby'] == '-') $this->dataRecord['ruby'] = $tmp['ruby']; - if($this->dataRecord['python'] == '-') $this->dataRecord['python'] = $tmp['python']; - if($this->dataRecord['suexec'] == '-') $this->dataRecord['suexec'] = $tmp['suexec']; - if($this->dataRecord['errordocs'] == '-') $this->dataRecord['errordocs'] = $tmp['errordocs']; - if($this->dataRecord['subdomain'] == '-') $this->dataRecord['subdomain'] = $tmp['subdomain']; - if($this->dataRecord['ssl'] == '-') $this->dataRecord['ssl'] = $tmp['ssl']; - - unset($tmp); - // When the record is inserted - } else { - //* display an error if chosen server is not allowed for this client - if (!is_array($client['web_servers_ids']) || !in_array($this->dataRecord['server_id'], $client['web_servers_ids'])) { - $app->error($app->tform->wordbook['server_chosen_not_ok']); - } - - // Check if the user may add another web_domain - if($client["limit_web_domain"] >= 0) { - $tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM web_domain WHERE sys_groupid = $client_group_id and type = 'vhost'"); - if($tmp["number"] >= $client["limit_web_domain"]) { - $app->error($app->tform->wordbook["limit_web_domain_txt"]); - } - } - - } - - // Clients may not set the client_group_id, so we unset them if user is not a admin and the client is not a reseller - if(!$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]); - } - - //* make sure that the email domain is lowercase - if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]); - - //* get the server config for this server - $app->uses("getconf"); - if($this->id > 0){ - $web_rec = $app->tform->getDataRecord($this->id); - $server_id = $web_rec["server_id"]; - } else { - // Get the first server ID - $tmp = $app->db->queryOneRecord("SELECT server_id FROM server WHERE web_server = 1 ORDER BY server_name LIMIT 0,1"); - $server_id = intval($tmp['server_id']); - } - $web_config = $app->getconf->get_server_config($app->functions->intval(isset($this->dataRecord["server_id"]) ? $this->dataRecord["server_id"] : $server_id), 'web'); - //* Check for duplicate ssl certs per IP if SNI is disabled - if(isset($this->dataRecord['ssl']) && $this->dataRecord['ssl'] == 'y' && $web_config['enable_sni'] != 'y') { - $sql = "SELECT count(domain_id) as number FROM web_domain WHERE `ssl` = 'y' AND ip_address = '".$app->db->quote($this->dataRecord['ip_address'])."' and domain_id != ".$this->id; - $tmp = $app->db->queryOneRecord($sql); - if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("error_no_sni_txt"); - } - - // Check if pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0 - if(isset($this->dataRecord['pm_max_children']) && $this->dataRecord['pm'] == 'dynamic') { - if($app->functions->intval($this->dataRecord['pm_max_children'], true) >= $app->functions->intval($this->dataRecord['pm_max_spare_servers'], true) && $app->functions->intval($this->dataRecord['pm_max_spare_servers'], true) >= $app->functions->intval($this->dataRecord['pm_start_servers'], true) && $app->functions->intval($this->dataRecord['pm_start_servers'], true) >= $app->functions->intval($this->dataRecord['pm_min_spare_servers'], true) && $app->functions->intval($this->dataRecord['pm_min_spare_servers'], true) > 0){ - - } else { - $app->tform->errorMessage .= $app->tform->lng("error_php_fpm_pm_settings_txt").'<br>'; - } - } - - // Check rewrite rules - $server_type = $web_config['server_type']; - - if($server_type == 'nginx' && isset($this->dataRecord['rewrite_rules']) && trim($this->dataRecord['rewrite_rules']) != '') { - $rewrite_rules = trim($this->dataRecord['rewrite_rules']); - $rewrites_are_valid = true; - // use this counter to make sure all curly brackets are properly closed - $if_level = 0; - // Make sure we only have Unix linebreaks - $rewrite_rules = str_replace("\r\n", "\n", $rewrite_rules); - $rewrite_rules = str_replace("\r", "\n", $rewrite_rules); - $rewrite_rule_lines = explode("\n", $rewrite_rules); - if(is_array($rewrite_rule_lines) && !empty($rewrite_rule_lines)){ - foreach($rewrite_rule_lines as $rewrite_rule_line){ - // ignore comments - if(substr(ltrim($rewrite_rule_line), 0, 1) == '#') continue; - // empty lines - if(trim($rewrite_rule_line) == '') continue; - // rewrite - if(preg_match('@^\s*rewrite\s+(^/)?\S+(\$)?\s+\S+(\s+(last|break|redirect|permanent|))?\s*;\s*$@', $rewrite_rule_line)) continue; - // if - if(preg_match('@^\s*if\s+\(\s*\$\S+(\s+(\!?(=|~|~\*))\s+(\S+|\".+\"))?\s*\)\s*\{\s*$@', $rewrite_rule_line)){ - $if_level += 1; - continue; - } - // if - check for files, directories, etc. - if(preg_match('@^\s*if\s+\(\s*\!?-(f|d|e|x)\s+\S+\s*\)\s*\{\s*$@', $rewrite_rule_line)){ - $if_level += 1; - continue; - } - // break - if(preg_match('@^\s*break\s*;\s*$@', $rewrite_rule_line)){ - continue; - } - // return code [ text ] - if(preg_match('@^\s*return\s+\d\d\d.*;\s*$@', $rewrite_rule_line)) continue; - // return code URL - // return URL - if(preg_match('@^\s*return(\s+\d\d\d)?\s+(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*\@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*\s*;\s*$@', $rewrite_rule_line)) continue; - // set - if(preg_match('@^\s*set\s+\$\S+\s+\S+\s*;\s*$@', $rewrite_rule_line)) continue; - // closing curly bracket - if(trim($rewrite_rule_line) == '}'){ - $if_level -= 1; - continue; - } - $rewrites_are_valid = false; - break; - } - } - - if(!$rewrites_are_valid || $if_level != 0){ - $app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>'; - } - } - - parent::onSubmit(); - } - - function onAfterInsert() { - global $app, $conf; - - // make sure that the record belongs to the clinet group and not the admin group when admin inserts it - // also make sure that the user can not delete domain created by a admin - if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) { - $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id); - } - if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) { - $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id); - } - - // Get configuration for the web system - $app->uses("getconf"); - $web_rec = $app->tform->getDataRecord($this->id); - $web_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'web'); - $document_root = str_replace("[website_id]", $this->id, $web_config["website_path"]); - $document_root = str_replace("[website_idhash_1]", $this->id_hash($page_form->id, 1), $document_root); - $document_root = str_replace("[website_idhash_2]", $this->id_hash($page_form->id, 1), $document_root); - $document_root = str_replace("[website_idhash_3]", $this->id_hash($page_form->id, 1), $document_root); - $document_root = str_replace("[website_idhash_4]", $this->id_hash($page_form->id, 1), $document_root); - - // get the ID of the client - if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = $client_group_id"); - $client_id = $app->functions->intval($client["client_id"]); - } else { - //$client_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".$app->functions->intval($this->dataRecord["client_group_id"])); - $client_id = $app->functions->intval($client["client_id"]); - } - - // Set the values for document_root, system_user and system_group - $system_user = $app->db->quote('web'.$this->id); - $system_group = $app->db->quote('client'.$client_id); - $document_root = str_replace("[client_id]", $client_id, $document_root); - $document_root = str_replace("[client_idhash_1]", $this->id_hash($client_id, 1), $document_root); - $document_root = str_replace("[client_idhash_2]", $this->id_hash($client_id, 2), $document_root); - $document_root = str_replace("[client_idhash_3]", $this->id_hash($client_id, 3), $document_root); - $document_root = str_replace("[client_idhash_4]", $this->id_hash($client_id, 4), $document_root); - $document_root = $app->db->quote($document_root); - $php_open_basedir = str_replace("[website_path]", $document_root, $web_config["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($web_config["htaccess_allow_override"]); - $added_date = date($app->lng('conf_format_dateshort')); - $added_by = $app->db->quote($_SESSION['s']['user']['username']); - - $sql = "UPDATE web_domain SET system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir', added_date = '$added_date', added_by = '$added_by' WHERE domain_id = ".$this->id; - $app->db->query($sql); - } - - function onBeforeUpdate () { - global $app, $conf; - - //* Check if the server has been changed - // We do this only for the admin or reseller users, as normal clients can not change the server ID anyway - if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) { - if (isset($this->dataRecord["server_id"])) { - $rec = $app->db->queryOneRecord("SELECT server_id from web_domain WHERE domain_id = ".$this->id); - if($rec['server_id'] != $this->dataRecord["server_id"]) { - //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Server can not be changed.'); - $this->dataRecord["server_id"] = $rec['server_id']; - } - unset($rec); - } - //* If the user is neither admin nor reseller - } else { - //* We do not allow users to change a domain which has been created by the admin - $rec = $app->db->queryOneRecord("SELECT sys_perm_group, domain, ip_address, ipv6_address from web_domain WHERE domain_id = ".$this->id); - if(isset($this->dataRecord["domain"]) && $rec['domain'] != $this->dataRecord["domain"] && $app->tform->checkPerm($this->id, 'u')) { - //* Add a error message and switch back to old server - $app->tform->errorMessage .= $app->lng('The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'); - $this->dataRecord["domain"] = $rec['domain']; - } - if(isset($this->dataRecord["ip_address"]) && $rec['ip_address'] != $this->dataRecord["ip_address"] && $rec['sys_perm_group'] != 'riud') { - $this->dataRecord["ip_address"] = $rec['ip_address']; - } - if(isset($this->dataRecord["ipv6_address"]) && $rec['ipv6_address'] != $this->dataRecord["ipv6_address"] && $rec['sys_perm_group'] != 'riud') { - $this->dataRecord["ipv6_address"] = $rec['ipv6_address']; - } - unset($rec); - } - - //* Check that all fields for the SSL cert creation are filled - if(isset($this->dataRecord['ssl_action']) && $this->dataRecord['ssl_action'] == 'create') { - if($this->dataRecord['ssl_state'] == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_state_empty').'<br />'; - if($this->dataRecord['ssl_locality'] == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_locality_empty').'<br />'; - if($this->dataRecord['ssl_organisation'] == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_organisation_empty').'<br />'; - if($this->dataRecord['ssl_organisation_unit'] == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_organisation_unit_empty').'<br />'; - if($this->dataRecord['ssl_country'] == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_country_empty').'<br />'; - } - - if(isset($this->dataRecord['ssl_action']) && $this->dataRecord['ssl_action'] == 'save') { - if(trim($this->dataRecord['ssl_cert']) == '') $app->tform->errorMessage .= $app->tform->lng('error_ssl_cert_empty').'<br />'; - } - - } - - function onAfterUpdate() { - global $app, $conf; - - // make sure that the record belongs to the client group and not the admin group when a admin inserts it - // also make sure that the user can not delete domain created by a admin - if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) { - $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id); - } - if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) { - $client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]); - $app->db->query("UPDATE web_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id); - } - - // Get configuration for the web system - $app->uses("getconf"); - $web_rec = $app->tform->getDataRecord($this->id); - $web_config = $app->getconf->get_server_config($app->functions->intval($web_rec["server_id"]), 'web'); - $document_root = str_replace("[website_id]", $this->id, $web_config["website_path"]); - $page_formid = isset($page_form->id) ? $page_form->id : ''; - $document_root = str_replace("[website_idhash_1]", $this->id_hash($page_formid, 1), $document_root); - $document_root = str_replace("[website_idhash_2]", $this->id_hash($page_formid, 1), $document_root); - $document_root = str_replace("[website_idhash_3]", $this->id_hash($page_formid, 1), $document_root); - $document_root = str_replace("[website_idhash_4]", $this->id_hash($page_formid, 1), $document_root); - - // get the ID of the client - if($_SESSION["s"]["user"]["typ"] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) { - $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]); - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = $client_group_id"); - $client_id = $app->functions->intval($client["client_id"]); - } elseif (isset($this->dataRecord["client_group_id"])) { - $client_group_id = $this->dataRecord["client_group_id"]; - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".$app->functions->intval(@$this->dataRecord["client_group_id"])); - $client_id = $app->functions->intval($client["client_id"]); - } else { - $client_group_id = $web_rec['sys_groupid']; - $client = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE sys_group.groupid = ".$app->functions->intval($client_group_id)); - $client_id = $app->functions->intval($client["client_id"]); - } - - if(($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) && isset($this->dataRecord["client_group_id"]) && $this->dataRecord["client_group_id"] != $this->oldDataRecord["sys_groupid"]) { - // Set the values for document_root, system_user and system_group - $system_user = $app->db->quote('web'.$this->id); - $system_group = $app->db->quote('client'.$client_id); - $document_root = str_replace("[client_id]", $client_id, $document_root); - $document_root = str_replace("[client_idhash_1]", $this->id_hash($client_id, 1), $document_root); - $document_root = str_replace("[client_idhash_2]", $this->id_hash($client_id, 2), $document_root); - $document_root = str_replace("[client_idhash_3]", $this->id_hash($client_id, 3), $document_root); - $document_root = str_replace("[client_idhash_4]", $this->id_hash($client_id, 4), $document_root); - $document_root = $app->db->quote($document_root); - - $sql = "UPDATE web_domain SET system_user = '$system_user', system_group = '$system_group', document_root = '$document_root' WHERE domain_id = ".$this->id; - //$sql = "UPDATE web_domain SET system_user = '$system_user', system_group = '$system_group' WHERE domain_id = ".$this->id; - $app->db->query($sql); - - // Update the FTP user(s) too - $records = $app->db->queryAllRecords("SELECT ftp_user_id FROM ftp_user WHERE parent_domain_id = ".$this->id); - foreach($records as $rec) { - $app->db->datalogUpdate('ftp_user', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."', uid = '$system_user', gid = '$system_group', dir = '$document_root'", 'ftp_user_id', $app->functions->intval($rec['ftp_user_id'])); - } - unset($records); - unset($rec); - - // Update the Shell user(s) too - $records = $app->db->queryAllRecords("SELECT shell_user_id FROM shell_user WHERE parent_domain_id = ".$this->id); - foreach($records as $rec) { - $app->db->datalogUpdate('shell_user', "sys_userid = '".$web_rec['sys_userid']."', sys_groupid = '".$web_rec['sys_groupid']."', puser = '$system_user', pgroup = '$system_group', dir = '$document_root'", 'shell_user_id', $app->functions->intval($rec['shell_user_id'])); - } - unset($records); - unset($rec); - - //* Update all subdomains and alias domains - $records = $app->db->queryAllRecords("SELECT domain_id, `domain`, `type`, `web_folder` FROM web_domain WHERE parent_domain_id = ".$this->id); - foreach($records as $rec) { - $update_columns = "sys_userid = '".$web_rec['sys_userid']."', sys_groupid = '".$web_rec['sys_groupid']."'"; - if($rec['type'] == 'vhostsubdomain') { - $php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$rec['web_folder'], $web_config["php_open_basedir"]); - $php_open_basedir = str_replace("[website_domain]/web", $rec['domain'].'/'.$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]", $rec['domain'], $php_open_basedir)); - - $update_columns .= ", document_root = '".$document_root."', `php_open_basedir` = '".$php_open_basedir."'"; - } - $app->db->datalogUpdate('web_domain', $update_columns, 'domain_id', $rec['domain_id']); - } - unset($records); - unset($rec); - - //* Update all databases - $records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE parent_domain_id = ".$this->id); - foreach($records as $rec) { - $app->db->datalogUpdate('web_database', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'database_id', $app->functions->intval($rec['database_id'])); - } - unset($records); - unset($rec); - - } - - //* If the domain name has been changed, we will have to change all subdomains + APS instances - if(!empty($this->dataRecord["domain"]) && !empty($this->oldDataRecord["domain"]) && $this->dataRecord["domain"] != $this->oldDataRecord["domain"]) { - $records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE (type = 'subdomain' OR type = 'vhostsubdomain') AND domain LIKE '%.".$app->db->quote($this->oldDataRecord["domain"])."'"); - foreach($records as $rec) { - $subdomain = $app->db->quote(str_replace($this->oldDataRecord["domain"], $this->dataRecord["domain"], $rec['domain'])); - $app->db->datalogUpdate('web_domain', "domain = '".$subdomain."'", 'domain_id', $rec['domain_id']); - } - unset($records); - unset($rec); - unset($subdomain); - - // Update APS instances - $records = $app->db->queryAllRecords("SELECT id, instance_id FROM aps_instances_settings WHERE name = 'main_domain' AND value = '".$app->db->quote($this->oldDataRecord["domain"])."'"); - if(is_array($records) && !empty($records)){ - foreach($records as $rec){ - $app->db->datalogUpdate('aps_instances_settings', "value = '".$app->db->quote($this->dataRecord["domain"])."'", 'id', $rec['id']); - // Reinstall of package needed? - //$app->db->datalogUpdate('aps_instances', "instance_status = '1'", 'id', $rec['instance_id']); - } - } - unset($records); - unset($rec); - } - - //* Set allow_override if empty - if($web_rec['allow_override'] == '') { - $sql = "UPDATE web_domain SET allow_override = '".$app->db->quote($web_config["htaccess_allow_override"])."' WHERE domain_id = ".$this->id; - $app->db->query($sql); - } - - //* Set php_open_basedir if empty or domain or client has been changed - if(empty($web_rec['php_open_basedir']) || - (!empty($this->dataRecord["domain"]) && !empty($this->oldDataRecord["domain"]) && $this->dataRecord["domain"] != $this->oldDataRecord["domain"])) { - $php_open_basedir = $web_rec['php_open_basedir']; - $php_open_basedir = $app->db->quote(str_replace($this->oldDataRecord['domain'], $web_rec['domain'], $php_open_basedir)); - $sql = "UPDATE web_domain SET php_open_basedir = '$php_open_basedir' WHERE domain_id = ".$this->id; - $app->db->query($sql); - } - if(empty($web_rec['php_open_basedir']) || - (isset($this->dataRecord["client_group_id"]) && $this->dataRecord["client_group_id"] != $this->oldDataRecord["sys_groupid"])) { - $document_root = $app->db->quote(str_replace("[client_id]", $client_id, $document_root)); - $php_open_basedir = str_replace("[website_path]", $document_root, $web_config["php_open_basedir"]); - $php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir)); - $sql = "UPDATE web_domain SET php_open_basedir = '$php_open_basedir' WHERE domain_id = ".$this->id; - $app->db->query($sql); - } - - //* Change database backup options when web backup options have been changed - if(isset($this->dataRecord['backup_interval']) && ($this->dataRecord['backup_interval'] != $this->oldDataRecord['backup_interval'] || $this->dataRecord['backup_copies'] != $this->oldDataRecord['backup_copies'])) { - //* Update all databases - $backup_interval = $app->functions->intval($this->dataRecord['backup_interval']); - $backup_copies = $app->functions->intval($this->dataRecord['backup_copies']); - $records = $app->db->queryAllRecords("SELECT database_id FROM web_database WHERE parent_domain_id = ".$this->id); - foreach($records as $rec) { - $app->db->datalogUpdate('web_database', "backup_interval = '$backup_interval', backup_copies = '$backup_copies'", 'database_id', $rec['database_id']); - } - unset($records); - unset($rec); - unset($backup_copies); - unset($backup_interval); - } - - //* Change vhost subdomain ip/ipv6 if domain ip/ipv6 has changed - if(isset($this->dataRecord['ip_address']) && ($this->dataRecord['ip_address'] != $this->oldDataRecord['ip_address'] || $this->dataRecord['ipv6_address'] != $this->oldDataRecord['ipv6_address'])) { - $records = $app->db->queryAllRecords("SELECT domain_id FROM web_domain WHERE type = 'vhostsubdomain' AND parent_domain_id = ".$this->id); - foreach($records as $rec) { - $app->db->datalogUpdate('web_domain', "ip_address = '".$app->db->quote($web_rec['ip_address'])."', ipv6_address = '".$app->db->quote($web_rec['ipv6_address'])."'", 'domain_id', $rec['domain_id']); - } - unset($records); - unset($rec); - } - } - - function onAfterDelete() { - global $app, $conf; - - // Delete the sub and alias domains - $child_domains = $app->db->queryAllRecords("SELECT * FROM web_domain WHERE parent_domain_id = ".$this->id); - foreach($child_domains as $d) { - // Saving record to datalog when db_history enabled - if($app->tform->formDef["db_history"] == 'yes') { - $app->tform->datalogSave('DELETE', $d["domain_id"], $d, array()); - } - - $app->db->query("DELETE FROM web_domain WHERE domain_id = ".$app->functions->intval($d["domain_id"])." LIMIT 0,1"); - } - unset($child_domains); - unset($d); - - } - -} - -$page = new page_action; -$page->onLoad(); - -?> diff --git a/interface/web/sites/web_sites_stats.php.bak b/interface/web/sites/web_sites_stats.php.bak deleted file mode 100644 index 9bf96cb6a7e973e20e9ab6be9f0aab073605c1f1..0000000000000000000000000000000000000000 --- a/interface/web/sites/web_sites_stats.php.bak +++ /dev/null @@ -1,188 +0,0 @@ -<?php -require_once '../../lib/config.inc.php'; -require_once '../../lib/app.inc.php'; - -/****************************************** -* Begin Form configuration -******************************************/ - -$list_def_file = "list/web_sites_stats.list.php"; - -/****************************************** -* End Form configuration -******************************************/ - -//* Check permissions for module -$app->auth->check_module_permissions('sites'); - -$app->uses('functions'); - -$app->load('listform_actions'); - -class list_action extends listform_actions { - - private $sum_this_month = 0; - private $sum_this_year = 0; - private $sum_last_month = 0; - private $sum_last_year = 0; - - function prepareDataRow($rec) - { - global $app; - - $rec = $app->listform->decode($rec); - - //* Alternating datarow colors - $this->DataRowColor = ($this->DataRowColor == '#FFFFFF') ? '#EEEEEE' : '#FFFFFF'; - $rec['bgcolor'] = $this->DataRowColor; - - //* Set the statistics colums - //** Traffic of the current month - $tmp_year = date('Y'); - $tmp_month = date('m'); - $tmp_rec = $app->db->queryOneRecord("SELECT SUM(traffic_bytes) as t FROM web_traffic WHERE hostname = '".$app->db->quote($rec['domain'])."' AND YEAR(traffic_date) = '$tmp_year' AND MONTH(traffic_date) = '$tmp_month'"); -// $rec['this_month'] = number_format($tmp_rec['t']/1024/1024, 0, '.', ' '); -// $this->sum_this_month += ($tmp_rec['t']/1024/1024); - $rec['this_month'] = $app->functions->formatBytes($tmp_rec['t']); - $this->sum_this_month += $app->functions->formatBytes($tmp_rec['t']); - - - //** Traffic of the current year - $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = '".$app->db->quote($rec['domain'])."' AND YEAR(traffic_date) = '$tmp_year'"); -// $rec['this_year'] = number_format($tmp_rec['t']/1024/1024, 0, '.', ' '); -// $this->sum_this_year += ($tmp_rec['t']/1024/1024); - $rec['this_year'] = $app->functions->formatBytes($tmp_rec['t']); - $this->sum_this_year += $app->functions->formatBytes($tmp_rec['t']); - - //** Traffic of the last month - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = '".$app->db->quote($rec['domain'])."' AND YEAR(traffic_date) = '$tmp_year' AND MONTH(traffic_date) = '$tmp_month'"); -// $rec['last_month'] = number_format($tmp_rec['t']/1024/1024, 0, '.', ' '); -// $this->sum_last_month += ($tmp_rec['t']/1024/1024); - $rec['last_month'] = $app->functions->formatBytes($tmp_rec['t']); - $this->sum_last_month += $app->functions->formatBytes($tmp_rec['t']); - - //** Traffic of the last year - $tmp_year = date('Y', mktime(0, 0, 0, date("m"), date("d"), date("Y")-1)); - $tmp_rec = $app->db->queryOneRecord("SELECT sum(traffic_bytes) as t FROM web_traffic WHERE hostname = '".$app->db->quote($rec['domain'])."' AND YEAR(traffic_date) = '$tmp_year'"); -// $rec['last_year'] = number_format($tmp_rec['t']/1024/1024, 0, '.', ' '); -// $this->sum_last_year += ($tmp_rec['t']/1024/1024); - $rec['last_year'] = $app->functions->formatBytes($tmp_rec['t']); - $this->sum_last_year += $app->functions->formatBytes($tmp_rec['t']); - - //* The variable "id" contains always the index variable - $rec['id'] = $rec[$this->idx_key]; - - return $rec; - } - - function onShowEnd() - { - global $app; - - $app->tpl->setVar('sum_this_month', number_format($app->functions->intval($this->sum_this_month), 0, '.', ' ')); - $app->tpl->setVar('sum_this_year', number_format($app->functions->intval($this->sum_this_year), 0, '.', ' ')); - $app->tpl->setVar('sum_last_month', number_format($app->functions->intval($this->sum_last_month), 0, '.', ' ')); - $app->tpl->setVar('sum_last_year', number_format($app->functions->intval($this->sum_last_year), 0, '.', ' ')); - $app->tpl->setVar('sum_txt', $app->listform->lng('sum_txt')); - - $app->tpl_defaults(); - $app->tpl->pparse(); - } - - function getQueryString() { - global $app; - $sql_where = ''; - - //* Generate the search sql - if($app->listform->listDef['auth'] != 'no') { - if($_SESSION['s']['user']['typ'] == "admin") { - $sql_where = ''; - } else { - $sql_where = $app->tform->getAuthSQL('r', $app->listform->listDef['table']).' and'; - //$sql_where = $app->tform->getAuthSQL('r').' and'; - } - } - if($this->SQLExtWhere != '') { - $sql_where .= ' '.$this->SQLExtWhere.' and'; - } - - $sql_where = $app->listform->getSearchSQL($sql_where); - if($app->listform->listDef['join_sql']) $sql_where .= ' AND '.$app->listform->listDef['join_sql']; - $app->tpl->setVar($app->listform->searchValues); - - $order_by_sql = $this->SQLOrderBy; - - //* Generate SQL for paging - $limit_sql = $app->listform->getPagingSQL($sql_where); - $app->tpl->setVar('paging', $app->listform->pagingHTML); - - $extselect = ''; - $join = ''; - - if(!empty($_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order'])){ - $order = str_replace(' DESC', '', $_SESSION['search'][$_SESSION['s']['module']['name'].$app->listform->listDef["name"].$app->listform->listDef['table']]['order']); - list($tmp_table, $order) = explode('.', $order); - if($order == 'web_traffic_last_month'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $tmp_month = date('m', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year' AND MONTH(wt.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_last_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_this_month'){ - $tmp_year = date('Y'); - $tmp_month = date('m'); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year' AND MONTH(wt.traffic_date) = '$tmp_month'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_this_month', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_last_year'){ - $tmp_year = date('Y', mktime(0, 0, 0, date("m")-1, date("d"), date("Y"))); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_last_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } elseif($order == 'web_traffic_this_year'){ - $tmp_year = date('Y'); - $extselect .= ', SUM(wt.traffic_bytes) as calctraffic'; - $join .= ' INNER JOIN web_traffic as wt ON '.$app->listform->listDef['table'].'.domain = wt.hostname '; - $sql_where .= " AND YEAR(wt.traffic_date) = '$tmp_year'"; - $order_by_sql = str_replace($app->listform->listDef['table'].'.web_traffic_this_year', 'calctraffic', $order_by_sql); - $order_by_sql = "GROUP BY domain ".$order_by_sql; - } - } - - if($this->SQLExtSelect != '') { - if(substr($this->SQLExtSelect, 0, 1) != ',') $this->SQLExtSelect = ','.$this->SQLExtSelect; - $extselect .= $this->SQLExtSelect; - } - - $table_selects = array(); - $table_selects[] = trim($app->listform->listDef['table']).'.*'; - $app->listform->listDef['additional_tables'] = trim($app->listform->listDef['additional_tables']); - if($app->listform->listDef['additional_tables'] != ''){ - $additional_tables = explode(',', $app->listform->listDef['additional_tables']); - foreach($additional_tables as $additional_table){ - $table_selects[] = trim($additional_table).'.*'; - } - } - $select = implode(', ', $table_selects); - - $sql = 'SELECT '.$select.$extselect.' FROM '.$app->listform->listDef['table'].($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')."$join WHERE $sql_where $order_by_sql $limit_sql"; - return $sql; - } - -} - -$list = new list_action; -$list->SQLExtWhere = "(web_domain.type = 'vhost' or web_domain.type = 'vhostsubdomain')"; -$list->SQLOrderBy = 'ORDER BY web_domain.domain'; -$list->onLoad(); - - -?> diff --git a/interface/web/sites/web_vhost_aliasdomain_edit.php b/interface/web/sites/web_vhost_aliasdomain_edit.php index 2c63881c4face6e629411e968975d26602b601bb..e8d5d546e3a8e4b5d16203fc2f48e7185f7b86b3 100644 --- a/interface/web/sites/web_vhost_aliasdomain_edit.php +++ b/interface/web/sites/web_vhost_aliasdomain_edit.php @@ -389,18 +389,15 @@ class page_action extends tform_actions { $app->uses('ini_parser,getconf'); $settings = $app->getconf->get_global_config('domains'); if ($settings['use_domain_module'] == 'y') { - $domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['sel_domain']); + $domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['domain']); if(!$domain_check) { // invalid domain selected $app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />"; } else { - $this->dataRecord['domain'] = $this->dataRecord['domain'] . '.' . $domain_check; + $this->dataRecord['domain'] = $domain_check; } - } else { - $this->dataRecord["domain"] = $this->dataRecord["domain"].'.'.$parent_domain["domain"]; } - $this->dataRecord['web_folder'] = strtolower($this->dataRecord['web_folder']); if(substr($this->dataRecord['web_folder'], 0, 1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 1); if(substr($this->dataRecord['web_folder'], -1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 0, -1); diff --git a/server/lib/classes/aps_installer.inc.php.bak b/server/lib/classes/aps_installer.inc.php.bak deleted file mode 100644 index 2925c7a5418bc06b22e0f60cdaf697390313ba56..0000000000000000000000000000000000000000 --- a/server/lib/classes/aps_installer.inc.php.bak +++ /dev/null @@ -1,749 +0,0 @@ -<?php -/* -Copyright (c) 2012, ISPConfig UG -Contributors: web wack creations, http://www.web-wack.at -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of ISPConfig nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ -require_once 'aps_base.inc.php'; - -@set_time_limit(0); -@ignore_user_abort(1); - -class ApsInstaller extends ApsBase -{ - private $handle_type = ''; - private $domain = ''; - private $document_root = ''; - private $sublocation = ''; - private $local_installpath = ''; - private $dbhost = ''; - private $newdb_name = ''; - private $newdb_user = ''; - private $file_owner_user = ''; - private $file_owner_group = ''; - private $putenv = array(); - - /** - * Constructor - * - * @param $app the application instance (db handle + log method) - * @param $interface_mode act in interface (true) or server mode (false) - */ - - - public function __construct($app, $interface_mode = false) - { - parent::__construct($app, 'APS installer: ', $interface_mode); - } - - - - /** - * Before the cron is executed, make sure all necessary options are set - * and all functions are available - */ - private function checkRequirements() - { - global $app; - try - { - // Check if exec() is not disabled - $disabled_func = explode(',', @ini_get('disable_functions')); - if(in_array('exec', $disabled_func)) throw new Exception('the call of exec() is disabled'); - - // Check if safe_mode is disabled (needed for correct putenv, chmod, chown handling) - if(@ini_get('safe_mode')) throw new Exception('the safe_mode restriction is on'); - - return true; - } - - catch(Exception $e) - { - $app->log('Aborting execution because '.$e->getMessage(), 1); - return false; - } - } - - - - /** - * Get a file from a ZIP archive and either return it's content or - * extract it to a given destination - * - * @param $zipfile the ZIP file to work with - * @param $subfile the file from which to get the content - * @param $destfolder the optional extraction destination - * @param $destname the optional target file name when extracting - * @return string or boolean - */ - private function getContentFromZIP($zipfile, $subfile, $destfolder = '', $destname = '') - { - try - { - $zip = new ZipArchive; - $res = $zip->open(realpath($zipfile)); - if(!$res) throw new Exception('Cannot open ZIP file '.$zipfile); - - // If no destination is given, the content is returned, otherwise - // the $subfile is extracted to $destination - if($destfolder == '') - { - $fh = $zip->getStream($subfile); - if(!$fh) throw new Exception('Cannot read '.$subfile.' from '.$zipfile); - - $subfile_content = ''; - while(!feof($fh)) $subfile_content .= fread($fh, 8192); - - fclose($fh); - - return $subfile_content; - } - else - { - // extractTo would be suitable but has no target name parameter - //$ind = $zip->locateName($subfile); - //$ex = $zip->extractTo($destination, array($zip->getNameIndex($ind))); - if($destname == '') $destname = basename($subfile); - $ex = @copy('zip://'.$zipfile.'#'.$subfile, $destfolder.$destname); - if(!$ex) throw new Exception('Cannot extract '.$subfile.' to '.$destfolder); - } - - $zip->close(); - - } - - catch(Exception $e) - { - // The exception message is only interesting for debugging reasons - // echo $e->getMessage(); - return false; - } - } - - - - /** - * Extract the complete directory of a ZIP file - * - * @param $filename the file to unzip - * @param $directory the ZIP inside directory to unzip - * @param $destination the place where to extract the data - * @return boolean - */ - private function extractZip($filename, $directory, $destination) - { - if(!file_exists($filename)) return false; - - // Fix the paths - if(substr($directory, -1) == '/') $directory = substr($directory, 0, strlen($directory) - 1); - if(substr($destination, -1) != '/') $destination .= '/'; - - // Read and extract the ZIP file - $ziphandle = zip_open(realpath($filename)); - if(is_resource($ziphandle)) - { - while($entry = zip_read($ziphandle)) - { - if(substr(zip_entry_name($entry), 0, strlen($directory)) == $directory) - { - // Modify the relative ZIP file path - $new_path = substr(zip_entry_name($entry), strlen($directory)); - - if(substr($new_path, -1) == '/') // Identifier for directories - { - if(!file_exists($destination.$new_path)) mkdir($destination.$new_path, 0777, true); - } - else // Handle files - { - if(zip_entry_open($ziphandle, $entry)) - { - $new_dir = dirname($destination.$new_path); - if(!file_exists($new_dir)) mkdir($new_dir, 0777, true); - - $file = fopen($destination.$new_path, 'wb'); - if($file) - { - while($line = zip_entry_read($entry)) fwrite($file, $line); - fclose($file); - } - else return false; - } - } - } - } - - zip_close($ziphandle); - return true; - } - - return false; - } - - /** - * Setup the path environment variables for the install script - * - * @param $parent_mapping the SimpleXML instance with the current mapping position - * @param $url the relative path within the mapping tree - * @param $path the absolute path within the mapping tree - */ - private function processMappings($parent_mapping, $url, $path) - { - if($parent_mapping && $parent_mapping != null) - { - $writable = parent::getXPathValue($parent_mapping, 'php:permissions/@writable'); - $readable = parent::getXPathValue($parent_mapping, 'php:permissions/@readable'); - - // set the write permission - if($writable == 'true') - { - if(is_dir($path)) chmod($path, 0775); - else chmod($path, 0664); - } - - // set non-readable permission - if($readable == 'false') - { - if(is_dir($path)) chmod($path, 0333); - else chmod($path, 0222); - } - } - - // Set the environment variables - $env = str_replace('/', '_', $url); - $this->putenv[] = 'WEB_'.$env.'_DIR='.$path; - - // Step recursively into further mappings - if($parent_mapping && $parent_mapping != null) - { - foreach($parent_mapping->mapping as $mapping) - { - if($url == '/') $this->processMappings($mapping, $url.$mapping['url'], $path.$mapping['url']); - else $this->processMappings($mapping, $url.'/'.$mapping['url'], $path.'/'.$mapping['url']); - } - } - } - - - - /** - * Setup the environment with data for the install location - * - * @param $task an array containing all install related data - */ - private function prepareLocation($task) - { - global $app; - - // Get the domain name to use for the installation - // Would be possible in one query too, but we use 2 for easier debugging - $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings - WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $this->domain = $main_domain['value']; - - // Get the document root - $domain_res = $app->db->queryOneRecord("SELECT document_root, web_folder, type FROM web_domain - WHERE domain = '".$app->db->quote($this->domain)."';"); - $this->document_root = $domain_res['document_root']; - - // Get the sub location - $location_res = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings - WHERE name = 'main_location' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $this->sublocation = $location_res['value']; - - // Make sure the document_root ends with / - if(substr($this->document_root, -1) != '/') $this->document_root .= '/'; - - // Attention: ISPConfig Special: web files are in subfolder 'web' -> append it: - if($domain_res['type'] == 'vhostsubdomain') $this->document_root .= $domain_res['web_folder'] . '/'; - else $this->document_root .= 'web/'; - - // If a subfolder is given, make sure it's path doesn't begin with / i.e. /phpbb - if(substr($this->sublocation, 0, 1) == '/') $this->sublocation = substr($this->sublocation, 1); - - // If the package isn't installed to a subfolder, remove the / at the end of the document root - if(empty($this->sublocation)) $this->document_root = substr($this->document_root, 0, strlen($this->document_root) - 1); - - // Set environment variables, later processed by the package install script - $this->putenv[] = 'BASE_URL_SCHEME=http'; - // putenv('BASE_URL_PORT') -> omitted as it's 80 by default - $this->putenv[] = 'BASE_URL_HOST='.$this->domain; - $this->putenv[] = 'BASE_URL_PATH='.$this->sublocation.'/'; - } - - - - /** - * Setup a database (if needed) and the appropriate environment variables - * - * @param $task an array containing all install related data - * @param $sxe a SimpleXMLElement handle, holding APP-META.xml - */ - private function prepareDatabase($task, $sxe) - { - global $app; - - $db_id = parent::getXPathValue($sxe, '//db:id'); - if(empty($db_id)) return; // No database needed - - /* WARNING: if this will ever be uncommented please check the updated prefix handling for user and db names!!! - * - // Set the database owner to the domain owner - // ISPConfig identifies the owner by the sys_groupid (not sys_userid!) - // so sys_userid can be set to any value - $perm = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM web_domain - WHERE domain = '".$this->domain."';"); - $task['sys_groupid'] = $perm['sys_groupid']; - $serverid = $perm['server_id']; - - // Get the database prefix and db user prefix - $app->uses('getconf'); - $global_config = $app->getconf->get_global_config('sites'); - $dbname_prefix = str_replace('[CLIENTID]', '', $global_config['dbname_prefix']); - $dbuser_prefix = str_replace('[CLIENTID]', '', $global_config['dbuser_prefix']); - $this->dbhost = DB_HOST; // Taken from config.inc.php - if(empty($this->dbhost)) $this->dbhost = 'localhost'; // Just to ensure any hostname... ;) - - $this->newdb_name = $dbname_prefix.$task['CustomerID'].'aps'.$task['InstanceID']; - $this->newdb_user = $dbuser_prefix.$task['CustomerID'].'aps'.$task['InstanceID']; - $dbpw_res = $app->db->queryOneRecord("SELECT Value FROM aps_instances_settings - WHERE Name = 'main_database_password' AND InstanceID = '".$app->db->quote($task['InstanceID'])."';"); - $newdb_pw = $dbpw_res['Value']; - - // In any case delete an existing database (install and removal procedure) - $app->db->query('DROP DATABASE IF EXISTS `'.$app->db->quote($this->newdb_name).'`;'); - // Delete an already existing database with this name - $app->db->query("DELETE FROM web_database WHERE database_name = '".$app->db->quote($this->newdb_name)."';"); - - - // Create the new database and assign it to a user - if($this->handle_type == 'install') - { - $app->db->query('CREATE DATABASE IF NOT EXISTS `'.$app->db->quote($this->newdb_name).'`;'); - $app->db->query('GRANT ALL PRIVILEGES ON '.$app->db->quote($this->newdb_name).'.* TO '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' IDENTIFIED BY \'password\';'); - $app->db->query('SET PASSWORD FOR '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' = PASSWORD(\''.$newdb_pw.'\');'); - $app->db->query('FLUSH PRIVILEGES;'); - - // Add the new database to the customer databases - // Assumes: charset = utf8 - $app->db->query('INSERT INTO web_database (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, - type, database_name, database_user, database_password, database_charset, remote_access, remote_ips, active) - VALUES ('.$task['sys_userid'].', '.$task['sys_groupid'].', "'.$task['sys_perm_user'].'", "'.$task['sys_perm_group'].'", - "'.$task['sys_perm_other'].'", '.$app->db->quote($serverid).', "mysql", "'.$app->db->quote($this->newdb_name).'", - "'.$app->db->quote($this->newdb_user).'", "'.$app->db->quote($newdb_pw).'", "utf8", "n", "", "y");'); - } - */ - - $mysqlver_res = $app->db->queryOneRecord('SELECT VERSION() as ver;'); - $mysqlver = $mysqlver_res['ver']; - - $tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_password' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $newdb_pw = $tmp['value']; - - $tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_host' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $newdb_host = $tmp['value']; - - $tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_name' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $newdb_name = $tmp['value']; - - $tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_login' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $newdb_login = $tmp['value']; - - $this->putenv[] = 'DB_'.$db_id.'_TYPE=mysql'; - $this->putenv[] = 'DB_'.$db_id.'_NAME='.$newdb_name; - $this->putenv[] = 'DB_'.$db_id.'_LOGIN='.$newdb_login; - $this->putenv[] = 'DB_'.$db_id.'_PASSWORD='.$newdb_pw; - $this->putenv[] = 'DB_'.$db_id.'_HOST='.$newdb_host; - $this->putenv[] = 'DB_'.$db_id.'_PORT=3306'; - $this->putenv[] = 'DB_'.$db_id.'_VERSION='.$mysqlver; - } - - - - /** - * Extract all needed files from the package - * - * @param $task an array containing all install related data - * @param $sxe a SimpleXMLElement handle, holding APP-META.xml - * @return boolean - */ - private function prepareFiles($task, $sxe) - { - global $app; - - // Basically set the mapping for APS version 1.0, if not available -> newer way - $mapping = $sxe->mapping; - $mapping_path = $sxe->mapping['path']; - $mapping_url = $sxe->mapping['url']; - if(empty($mapping)) - { - $mapping = $sxe->service->provision->{'url-mapping'}->mapping; - $mapping_path = $sxe->service->provision->{'url-mapping'}->mapping['path']; - $mapping_url = $sxe->service->provision->{'url-mapping'}->mapping['url']; - } - - try - { - // Make sure we have a valid mapping path (at least /) - if(empty($mapping_path)) throw new Exception('Unable to determine a mapping path'); - - $this->local_installpath = $this->document_root.$this->sublocation.'/'; - - // Now delete an existing folder (affects install and removal in the same way) - @chdir($this->local_installpath); - if(file_exists($this->local_installpath)){ - // make sure we don't delete error and stats folders - if($this->local_installpath == $this->document_root.'/'){ - if(is_dir($this->document_root)){ - $files = array_diff(scandir($this->document_root), array('.', '..', 'error', 'stats')); - foreach($files as $file){ - if(is_dir($this->document_root.'/'.$file)){ - $app->file->removeDirectory($this->document_root.'/'.$file); - } else { - @unlink($this->document_root.'/'.$file); - } - } - } else { - @unlink($this->document_root); - mkdir($this->document_root, 0777, true); - } - } else { - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); - } - } else { - mkdir($this->local_installpath, 0777, true); - } - - if($this->handle_type == 'install') - { - // Now check if the needed folder is there - if(!file_exists($this->local_installpath)) - throw new Exception('Unable to create a new folder for the package '.$task['path']); - - // Extract all files and assign them a new owner - if( ($this->extractZip($this->packages_dir.'/'.$task['path'], $mapping_path, $this->local_installpath) === false) - || ($this->extractZip($this->packages_dir.'/'.$task['path'], 'scripts', $this->local_installpath.'install_scripts/') === false) ) - { - // Clean already extracted data - exec("rm -Rf ".escapeshellarg($this->local_installpath).'*'); - throw new Exception('Unable to extract the package '.$task['path']); - } - - $this->processMappings($mapping, $mapping_url, $this->local_installpath); - - // Set the appropriate file owner - $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings - WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';"); - $owner_res = $app->db->queryOneRecord("SELECT system_user, system_group FROM web_domain - WHERE domain = '".$app->db->quote($main_domain['value'])."';"); - $this->file_owner_user = $owner_res['system_user']; - $this->file_owner_group = $owner_res['system_group']; - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); - - //* Chown stats directory back - if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); - } - } - } - catch(Exception $e) - { - $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" - WHERE id = "'.$app->db->quote($task['instance_id']).'";'); - $app->log($e->getMessage(), 1); - return false; - } - - return true; - } - - - - /** - * Get all user config variables and set them to environment variables - * - * @param $task an array containing all install related data - */ - private function prepareUserInputData($task) - { - global $app; - - $userdata = $app->db->queryAllRecords("SELECT name, value FROM aps_instances_settings - WHERE instance_id = '".$app->db->quote($task['instance_id'])."';"); - if(empty($userdata)) return false; - - foreach($userdata as $data) - { - // Skip unnecessary data - if($data['name'] == 'main_location' - || $data['name'] == 'main_domain' - || $data['name'] == 'main_database_password' - || $data['name'] == 'main_database_name' - || $data['name'] == 'main_database_host' - || $data['name'] == 'main_database_login' - || $data['name'] == 'license') continue; - - $this->putenv[] = 'SETTINGS_'.$data['name'].'='.$data['value']; - } - } - - - - /** - * Fetch binary data from a given array - * The data is retrieved in binary mode and - * then directly written to an output file - * - * @param $input a specially structed array - * @see $this->startUpdate() - */ - private function fetchFiles($input) - { - $fh = array(); - $url = array(); - $conn = array(); - - // Build the single cURL handles and add them to a multi handle - $mh = curl_multi_init(); - - // Process each app - for($i = 0; $i < count($input); $i++) - { - $conn[$i] = curl_init($input[$i]['url']); - $fh[$i] = fopen($input[$i]['localtarget'], 'wb'); - - curl_setopt($conn[$i], CURLOPT_BINARYTRANSFER, true); - curl_setopt($conn[$i], CURLOPT_FILE, $fh[$i]); - curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0); - curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1); - curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); - - curl_multi_add_handle($mh, $conn[$i]); - } - - $active = 0; - do curl_multi_exec($mh, $active); - while($active > 0); - - // Close the handles - for($i = 0; $i < count($input); $i++) - { - fclose($fh[$i]); - curl_multi_remove_handle($mh, $conn[$i]); - curl_close($conn[$i]); - } - curl_multi_close($mh); - } - - - - /** - * The installation script should be executed - * - * @param $task an array containing all install related data - * @param $sxe a SimpleXMLElement handle, holding APP-META.xml - * @return boolean - */ - private function doInstallation($task, $sxe) - { - global $app; - - try - { - // Check if the install directory exists - if(!is_dir($this->local_installpath.'install_scripts/')) - throw new Exception('The install directory '.$this->local_installpath.' is not existing'); - - // Set the executable bit to the configure script - $cfgscript = @(string)$sxe->service->provision->{'configuration-script'}['name']; - if(!$cfgscript) $cfgscript = 'configure'; - chmod($this->local_installpath.'install_scripts/'.$cfgscript, 0755); - - // Change to the install folder (import for the exec() below!) - //exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); - chdir($this->local_installpath.'install_scripts/'); - - // Set the enviroment variables - foreach($this->putenv as $var) { - putenv($var); - } - - $shell_retcode = true; - $shell_ret = array(); - exec('php '.escapeshellarg($this->local_installpath.'install_scripts/'.$cfgscript).' install 2>&1', $shell_ret, $shell_retcode); - $shell_ret = array_filter($shell_ret); - $shell_ret_str = implode("\n", $shell_ret); - - // Although $shell_retcode might be 0, there can be PHP errors. Filter them: - if(substr_count($shell_ret_str, 'Warning: ') > 0) $shell_retcode = 1; - - // If an error has occurred, the return code is != 0 - if($shell_retcode != 0) throw new Exception($shell_ret_str); - else - { - // The install succeeded, chown newly created files too - exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath)); - - //* Chown stats directory back - if(is_dir($this->local_installpath.'stats')) { - exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats')); - } - - $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_SUCCESS.'" - WHERE id = "'.$app->db->quote($task['instance_id']).'";'); - } - } - - catch(Exception $e) - { - $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" - WHERE id = "'.$app->db->quote($task['instance_id']).'";'); - $app->log($e->getMessage(), 1); - return false; - } - - return true; - } - - - - /** - * Cleanup: Remove install scripts, remove tasks and update the database - * - * @param $task an array containing all install related data - * @param $sxe a SimpleXMLElement handle, holding APP-META.xml - */ - private function cleanup($task, $sxe) - { - chdir($this->local_installpath); - exec("rm -Rf ".escapeshellarg($this->local_installpath).'install_scripts'); - } - - - - /** - * The main method which performs the actual package installation - * - * @param $instanceid the instanceID to install - * @param $type the type of task to perform (installation, removal) - */ - public function installHandler($instanceid, $type) - { - global $app; - - // Set the given handle type, currently supported: install, delete - if($type == 'install' || $type == 'delete') $this->handle_type = $type; - else return false; - - // Get all instance metadata - /* - $task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i - INNER JOIN aps_packages AS p ON i.package_id = p.id - INNER JOIN client AS c ON i.customer_id = c.client_id - WHERE i.id = ".$instanceid.";"); - */ - $task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i - INNER JOIN aps_packages AS p ON i.package_id = p.id - WHERE i.id = ".$instanceid.";"); - if(!$task) return false; // formerly: throw new Exception('The InstanceID doesn\'t exist.'); - if(!isset($task['instance_id'])) $task['instance_id'] = $instanceid; - - // Download aps package - if(!file_exists($this->packages_dir.'/'.$task['path']) || filesize($this->packages_dir.'/'.$task['path']) == 0) { - $ch = curl_init(); - $fh = fopen($this->packages_dir.'/'.$task['path'], 'wb'); - curl_setopt($ch, CURLOPT_FILE, $fh); - //curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_URL, $task['package_url']); - curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 0); - curl_setopt($ch, CURLOPT_FAILONERROR, 1); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); - if(curl_exec($ch) === false) $app->log(curl_error($ch), 1); - fclose($fh); - curl_close($ch); - } - - /* - $app_to_dl[] = array('name' => $task['path'], - 'url' => $task['package_url'], - 'filesize' => 0, - 'localtarget' => $this->packages_dir.'/'.$task['path']); - - $this->fetchFiles($app_to_dl); - */ - - // Make sure the requirements are given so that this script can execute - $req_ret = $this->checkRequirements(); - if(!$req_ret) return false; - - $metafile = $this->getContentFromZIP($this->packages_dir.'/'.$task['path'], 'APP-META.xml'); - // Check if the meta file is existing - if(!$metafile) - { - $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" - WHERE id = "'.$app->db->quote($task['instance_id']).'";'); - $app->log('Unable to find the meta data file of package '.$task['path'], 1); - return false; - } - - // Rename namespaces and register them - $metadata = str_replace("xmlns=", "ns=", $metafile); - $sxe = new SimpleXMLElement($metadata); - $namespaces = $sxe->getDocNamespaces(true); - foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); - - // Setup the environment with data for the install location - $this->prepareLocation($task); - - // Create the database if necessary - $this->prepareDatabase($task, $sxe); - - // Unpack the install scripts from the packages - if($this->prepareFiles($task, $sxe) && $this->handle_type == 'install') - { - // Setup the variables from the install script - $this->prepareUserInputData($task); - - // Do the actual installation - $this->doInstallation($task, $sxe); - - // Remove temporary files - $this->cleanup($task, $sxe); - } - - // Finally delete the instance entry + settings - if($this->handle_type == 'delete') - { - $app->db->query('DELETE FROM aps_instances WHERE id = "'.$app->db->quote($task['instance_id']).'";'); - $app->db->query('DELETE FROM aps_instances_settings WHERE instance_id = "'.$app->db->quote($task['instance_id']).'";'); - } - - unset($sxe); - } - -} - -?>