From 33ff5ab0760d15eba6c7773d559bfa3ab018c9a1 Mon Sep 17 00:00:00 2001
From: Dominik Müller <info@profi-webdesign.net>
Date: Sun, 19 Jan 2014 17:06:24 -0500
Subject: [PATCH] check aliasdomains correctly removed unnecessary bak-files
---
/dev/null | 749 ---------------------------------------------------------
interface/web/sites/web_vhost_aliasdomain_edit.php | 7
2 files changed, 2 insertions(+), 754 deletions(-)
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 4829418..0000000
--- 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 b361f6e..0000000
--- 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 8ba04ef..0000000
--- 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 ab8d474..0000000
--- 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 aa23fac..0000000
--- 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 f721dfb..0000000
--- 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 b220011..0000000
--- 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 2d9c774..0000000
--- 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 9bf96cb..0000000
--- 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 2c63881..e8d5d54 100644
--- a/interface/web/sites/web_vhost_aliasdomain_edit.php
+++ b/interface/web/sites/web_vhost_aliasdomain_edit.php
@@ -389,17 +389,14 @@
$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);
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 2925c7a..0000000
--- 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);
- }
-
-}
-
-?>
--
Gitblit v1.9.1