Dominik Müller
2014-01-19 511ba5d03c8bba828b9096f13e14ec54c1ecbb87
New Feature VHost-Alias (FS#3296)
Completly same functionality as VHost-Subdomain, not to disable if already existing vhostalias-somains in system.
49 files modified
76 files added
9599 ■■■■■ changed files
interface/lib/classes/remote.d/sites.inc.php 69 ●●●●● patch | view | raw | blame | history
interface/lib/plugins/sites_web_vhost_aliasdomain_plugin.inc.php 68 ●●●●● patch | view | raw | blame | history
interface/web/admin/form/system_config.tform.php 6 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/ar_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/bg_system_config.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/br_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/cz_system_config.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/de_system_config.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/el_system_config.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/en_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/es_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/fi_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/fr_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/hr_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/hu_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/id_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/it_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/ja_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/nl_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/pl_system_config.lng 2 ●●●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/pt_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/ro_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/ru_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/se_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/sk_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/lib/lang/tr_system_config.lng 4 ●●● patch | view | raw | blame | history
interface/web/admin/system_config_edit.php 6 ●●●●● patch | view | raw | blame | history
interface/web/admin/system_config_edit.php.bak 205 ●●●●● patch | view | raw | blame | history
interface/web/admin/templates/system_config_sites_edit.htm 6 ●●●●● patch | view | raw | blame | history
interface/web/dashboard/ajax_get_json.php 3 ●●●●● patch | view | raw | blame | history
interface/web/dashboard/ajax_get_json.php.bak 238 ●●●●● patch | view | raw | blame | history
interface/web/dashboard/dashlets/limits.php 2 ●●● patch | view | raw | blame | history
interface/web/dashboard/dashlets/limits.php.bak 177 ●●●●● patch | view | raw | blame | history
interface/web/data.sql 51 ●●●●● patch | view | raw | blame | history
interface/web/sites/aps_install_package.php 2 ●●● patch | view | raw | blame | history
interface/web/sites/aps_install_package.php.bak 211 ●●●●● patch | view | raw | blame | history
interface/web/sites/form/web_folder.tform.php 2 ●●● patch | view | raw | blame | history
interface/web/sites/form/web_folder.tform.php.bak 110 ●●●●● patch | view | raw | blame | history
interface/web/sites/form/web_vhost_aliasdomain.tform.php 735 ●●●●● patch | view | raw | blame | history
interface/web/sites/form/web_vhost_subdomain.tform.php 2 ●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ar_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ar_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/bg_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/bg_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/br_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/br_web_vhost_aliasdomain_list.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/cz_web_vhost_aliasdomain.lng 119 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/cz_web_vhost_aliasdomain_list.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/de_web_vhost_aliasdomain.lng 126 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/de_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/el_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/el_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/en_web_vhost_aliasdomain.lng 127 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/en_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/es_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/es_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/fi_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/fi_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/fr_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/fr_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/hr_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/hr_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/hu_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/hu_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/id_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/id_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/it_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/it_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ja_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ja_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/nl_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/nl_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/pl_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/pl_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/pt_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/pt_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ro_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ro_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ru_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/ru_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/se_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/se_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/sk_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/sk_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/tr_web_vhost_aliasdomain.lng 118 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/lang/tr_web_vhost_aliasdomain_list.lng 8 ●●●●● patch | view | raw | blame | history
interface/web/sites/lib/module.conf.php 10 ●●●●● patch | view | raw | blame | history
interface/web/sites/list/web_folder.list.php 2 ●●● patch | view | raw | blame | history
interface/web/sites/list/web_folder.list.php.bak 102 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_sites_stats_list.htm 8 ●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_sites_stats_list.htm.bak 63 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_advanced.htm 157 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_backup.htm 36 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_edit.htm 234 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_list.htm 79 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_redirect.htm 84 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_ssl.htm 68 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_vhost_aliasdomain_stats.htm 37 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_aliasdomain_edit.php 4 ●●●● patch | view | raw | blame | history
interface/web/sites/web_aliasdomain_edit.php.bak 191 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_domain_edit.php 8 ●●●● patch | view | raw | blame | history
interface/web/sites/web_domain_edit.php.bak 1114 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_sites_stats.php 2 ●●● patch | view | raw | blame | history
interface/web/sites/web_sites_stats.php.bak 188 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_vhost_aliasdomain_del.php 73 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_vhost_aliasdomain_edit.php 666 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_vhost_aliasdomain_list.php 55 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm 6 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_advanced.htm 146 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_backup.htm 32 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_edit.htm 208 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_list.htm 60 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_redirect.htm 76 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_ssl.htm 68 ●●●●● patch | view | raw | blame | history
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_stats.htm 37 ●●●●● patch | view | raw | blame | history
server/lib/classes/aps_installer.inc.php 3 ●●●● patch | view | raw | blame | history
server/lib/classes/aps_installer.inc.php.bak 749 ●●●●● patch | view | raw | blame | history
server/lib/classes/cron.d/150-awstats.inc.php 6 ●●●● patch | view | raw | blame | history
server/lib/classes/cron.d/150-webalizer.inc.php 6 ●●●● patch | view | raw | blame | history
server/lib/classes/cron.d/200-logfiles.inc.php 4 ●●●● patch | view | raw | blame | history
server/lib/classes/cron.d/300-quota_notify.inc.php 4 ●●●● patch | view | raw | blame | history
server/lib/classes/cron.d/500-backup.inc.php 2 ●●● patch | view | raw | blame | history
server/plugins-available/apache2_plugin.inc.php 60 ●●●● patch | view | raw | blame | history
server/plugins-available/nginx_plugin.inc.php 52 ●●●● patch | view | raw | blame | history
server/plugins-available/nginx_reverseproxy_plugin.inc.php 6 ●●●● patch | view | raw | blame | history
interface/lib/classes/remote.d/sites.inc.php
@@ -451,6 +451,75 @@
    // ----------------------------------------------------------------------------------------------------------
    //* Get record details
    public function sites_web_vhost_aliasdomain_get($session_id, $primary_id)
    {
        global $app;
        if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_get')) {
            throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
            return false;
        }
        $app->uses('remoting_lib');
        $app->remoting_lib->loadFormDef('../sites/form/web_vhost_aliasdomain.tform.php');
        return $app->remoting_lib->getDataRecord($primary_id);
    }
    //* Add a record
    public function sites_web_vhost_aliasdomain_add($session_id, $client_id, $params)
    {
        global $app;
        if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_add')) {
            throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
            return false;
        }
        //* Set a few params to "not empty" values which get overwritten by the sites_web_domain_plugin
        if($params['document_root'] == '') $params['document_root'] = '-';
        if($params['system_user'] == '') $params['system_user'] = '-';
        if($params['system_group'] == '') $params['system_group'] = '-';
        //* Set a few defaults for nginx servers
        if($params['pm_max_children'] == '') $params['pm_max_children'] = 1;
        if($params['pm_start_servers'] == '') $params['pm_start_servers'] = 1;
        if($params['pm_min_spare_servers'] == '') $params['pm_min_spare_servers'] = 1;
        if($params['pm_max_spare_servers'] == '') $params['pm_max_spare_servers'] = 1;
        $domain_id = $this->insertQuery('../sites/form/web_vhost_aliasdomain.tform.php', $client_id, $params, 'sites:web_vhost_aliasdomain:on_after_insert');
        return $domain_id;
    }
    //* Update a record
    public function sites_web_vhost_aliasdomain_update($session_id, $client_id, $primary_id, $params)
    {
        if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_update')) {
            throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
            return false;
        }
        //* Set a few defaults for nginx servers
        if($params['pm_max_children'] == '') $params['pm_max_children'] = 1;
        if($params['pm_start_servers'] == '') $params['pm_start_servers'] = 1;
        if($params['pm_min_spare_servers'] == '') $params['pm_min_spare_servers'] = 1;
        if($params['pm_max_spare_servers'] == '') $params['pm_max_spare_servers'] = 1;
        $affected_rows = $this->updateQuery('../sites/form/web_vhost_aliasdomain.tform.php', $client_id, $primary_id, $params, 'sites:web_vhost_aliasdomain:on_after_insert');
        return $affected_rows;
    }
    //* Delete a record
    public function sites_web_vhost_aliasdomain_delete($session_id, $primary_id)
    {
        if(!$this->checkPerm($session_id, 'sites_web_aliasdomain_delete')) {
            throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
            return false;
        }
        $affected_rows = $this->deleteQuery('../sites/form/web_vhost_aliasdomain.tform.php', $primary_id);
        return $affected_rows;
    }
    // ----------------------------------------------------------------------------------------------------------
    //* Get record details
    public function sites_web_vhost_subdomain_get($session_id, $primary_id)
    {
        global $app;
interface/lib/plugins/sites_web_vhost_aliasdomain_plugin.inc.php
New file
@@ -0,0 +1,68 @@
<?php
/**
 * sites_web_vhost_aliasdomain_plugin plugin
 *
 * @author Marius Cramer <m.cramer@pixcept.de> pixcept KG 2012, copied and adapted from web_domain plugin by:
 * @author Julio Montoya <gugli100@gmail.com> BeezNest 2010
 */
class sites_web_vhost_aliasdomain_plugin {
    var $plugin_name        = 'sites_web_vhost_aliasdomain_plugin';
    var $class_name         = 'sites_web_vhost_aliasdomain_plugin';
    // TODO: This function is a duplicate from the one in interface/web/sites/web_vhost_aliasdomain_edit.php
    //       There should be a single "token replacement" function to be called from modules and
    //  from the main code.
    // Returna a "3/2/1" path hash from a numeric id '123'
    function id_hash($id, $levels) {
        $hash = "" . $id % 10 ;
        $id /= 10 ;
        $levels -- ;
        while ( $levels > 0 ) {
            $hash .= "/" . $id % 10 ;
            $id /= 10 ;
            $levels-- ;
        }
        return $hash;
    }
    /*
            This function is called when the plugin is loaded
    */
    function onLoad() {
        global $app;
        //Register for the events
        // both event call the same function as the things to do do not differ here
        $app->plugin->registerEvent('sites:web_vhost_aliasdomain:on_after_insert', 'sites_web_vhost_aliasdomain_plugin', 'sites_web_vhost_aliasdomain_edit');
        $app->plugin->registerEvent('sites:web_vhost_aliasdomain:on_after_update', 'sites_web_vhost_aliasdomain_plugin', 'sites_web_vhost_aliasdomain_edit');
    }
    /*
        Function to create the sites_web_vhost_aliasdomain rule and insert it into the custom rules
    */
    function sites_web_vhost_aliasdomain_edit($event_name, $page_form) {
        global $app, $conf;
        // Get configuration for the web system
        $app->uses("getconf");
        $web_config = $app->getconf->get_server_config($app->functions->intval($page_form->dataRecord['server_id']), 'web');
        $parent_domain = $app->db->queryOneRecord("SELECT * FROM `web_domain` WHERE `domain_id` = '" . $app->functions->intval($page_form->dataRecord['parent_domain_id']) . "'");
        // Set the values for document_root, system_user and system_group
        $system_user = $app->db->quote($parent_domain['system_user']);
        $system_group = $app->db->quote($parent_domain['system_group']);
        $document_root = $app->db->quote($parent_domain['document_root']);
        $php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$page_form->dataRecord['web_folder'], $web_config["php_open_basedir"]);
        $php_open_basedir = str_replace("[website_domain]/web", $page_form->dataRecord['domain'].'/'.$page_form->dataRecord['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]", $page_form->dataRecord['domain'], $php_open_basedir));
        $htaccess_allow_override = $app->db->quote($parent_domain['allow_override']);
        $sql = "UPDATE web_domain SET sys_groupid = ".$app->functions->intval($parent_domain['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir'  WHERE domain_id = ".$page_form->id;
        $app->db->query($sql);
    }
}
interface/web/admin/form/system_config.tform.php
@@ -154,6 +154,12 @@
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'vhost_aliasdomains' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'client_username_web_check_disabled' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
interface/web/admin/lib/lang/ar_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/bg_system_config.lng
@@ -41,6 +41,8 @@
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create Aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/br_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/cz_system_config.lng
@@ -41,6 +41,8 @@
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Vytvořit subdomény jako webové stránky';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasbdomains_txt'] = 'Vytvořit aliasdomény jako webové stránky';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'phpmyadmin neplatné URL';
$wb['use_combobox_txt'] = 'Použití jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Použití indikátoru zatížení';
interface/web/admin/lib/lang/de_system_config.lng
@@ -11,6 +11,8 @@
$wb['ftpuser_prefix_txt'] = 'FTP Benutzer Präfix';
$wb['vhost_subdomains_txt'] = 'Subdomains als Webseite anlegen';
$wb['vhost_subdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Subdomains im System vorhanden sind!';
$wb['vhost_aliasbdomains_txt'] = 'Subdomains als Webseite anlegen';
$wb['vhost_aliasdomains_note_txt'] = 'Diese Einstellung kann nicht wieder deaktiviert werden, wenn Vhost Aliasdomains im System vorhanden sind!';
$wb['dbname_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Namen Präfix.';
$wb['dbuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in Datenbank Benutzer Präfix.';
$wb['ftpuser_prefix_error_regex'] = 'Zeichen nicht erlaubt in FTP Benutzer Präfix.';
interface/web/admin/lib/lang/el_system_config.lng
@@ -41,6 +41,8 @@
$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας προειδοποίησης κατα την αλλαγή καρτέλας σε φόρμες επεξεργασίας που έχουν τροποποιηθεί από τον χρήστη.';
$wb['vhost_subdomains_txt'] = 'Δημιουργία Subdomains ως web site';
$wb['vhost_subdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost subdomains στο σύστημα!';
$wb['vhost_aliasdomains_txt'] = 'Δημιουργία aliasdomains ως web site';
$wb['vhost_aliasdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost aliasdomains στο σύστημα!';
$wb['phpmyadmin_url_error_regex'] = 'Μη έγκυρο URL phpmyadmin';
$wb['use_combobox_txt'] = 'Χρήση jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Χρήση Load Indicator (ενδεικτή φόρτωσης)';
interface/web/admin/lib/lang/en_system_config.lng
@@ -13,8 +13,10 @@
$wb["shelluser_prefix_txt"] = 'Shell user prefix';
$wb["webdavuser_prefix_txt"] = 'Webdav user prefix';
$wb["ftpuser_prefix_txt"] = 'FTP user prefix';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb["dbname_prefix_error_regex"] = 'Char not allowed in database name prefix.';
$wb["dbuser_prefix_error_regex"] = 'Char not allowed in database user prefix.';
$wb["ftpuser_prefix_error_regex"] = 'Char not allowed in ftp user prefix.';
interface/web/admin/lib/lang/es_system_config.lng
@@ -32,8 +32,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['maintenance_mode_txt'] = 'Maintenance Mode';
$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
$wb['smtp_host_txt'] = 'SMTP host';
interface/web/admin/lib/lang/fi_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/fr_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/hr_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/hu_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/id_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/it_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/ja_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/nl_system_config.lng
@@ -42,8 +42,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/pl_system_config.lng
@@ -34,6 +34,8 @@
$wb['tab_change_warning_note_txt'] = 'Pokaż ostrzeżenie przy zmianie zakładki jeżeli zostały zmienione dane przez użytkownika.';
$wb['vhost_subdomains_txt'] = 'Twórz subdomeny jako strony web';
$wb['vhost_subdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty subdomen.';
$wb['vhost_aliasdomains_txt'] = 'Twórz aliasdomeny jako strony web';
$wb['vhost_aliasdomains_note_txt'] = 'Nie możesz wyłączyć tego tak długo jak istnieją w systemie vhosty aliasdomen.';
$wb['maintenance_mode_txt'] = 'Tryb serwisowy';
$wb['smtp_enabled_txt'] = 'Używaj SMTP do wysyłania powiadomień systemowych';
$wb['smtp_host_txt'] = 'Host SMTP';
interface/web/admin/lib/lang/pt_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/ro_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/ru_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/se_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/sk_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/lib/lang/tr_system_config.lng
@@ -39,8 +39,10 @@
$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
$wb['tab_change_warning_txt'] = 'Tab change warning';
$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
$wb['use_loadindicator_txt'] = 'Use Load Indicator';
interface/web/admin/system_config_edit.php
@@ -147,6 +147,12 @@
            if($check['cnt'] > 0) {
                $new_config['vhost_subdomains'] = 'y';
            }
        } elseif($section == 'sites' && $new_config['vhost_aliasdomains'] != 'y' && $server_config_array['vhost_aliasdomains'] == 'y') {
            // check for existing vhost aliasdomains, if found the mode cannot be disabled
            $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE `type` = 'vhostalias'");
            if($check['cnt'] > 0) {
                $new_config['vhost_aliasdomains'] = 'y';
            }
        } elseif($section == 'mail') {
            if($new_config['smtp_pass'] == '') $new_config['smtp_pass'] = $server_config_array['mail']['smtp_pass'];
        } elseif($section == 'misc' && $new_config['session_timeout'] != $server_config_array['misc']['session_timeout']) {
interface/web/admin/system_config_edit.php.bak
New file
@@ -0,0 +1,205 @@
<?php
/*
Copyright (c) 2008-2010, 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/system_config.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('admin');
// Loading classes
$app->uses('tpl,tform,tform_actions');
$app->load('tform_actions');
class page_action extends tform_actions {
    //var $_js_changed = false;
    function onShowEdit() {
        global $app, $conf;
        if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges');
        if($app->tform->errorMessage == '') {
            $app->uses('ini_parser,getconf');
            $section = $this->active_tab;
            $server_id = $this->id;
            $this->dataRecord = $app->getconf->get_global_config($section);
            if ($section == 'domains'){
                if (isset($this->dataRecord['use_domain_module'])){
                    $_SESSION['use_domain_module_old_value'] = $this->dataRecord['use_domain_module'];
                }
            }
        }
        $record = $app->tform->getHTML($this->dataRecord, $this->active_tab, 'EDIT');
        $record['warning'] = $app->tform->lng('warning');
        $record['id'] = $this->id;
        $app->tpl->setVar($record);
    }
    function onShowEnd() {
        global $app, $conf;
        // available dashlets
        $available_dashlets_txt = '';
        $handle = @opendir(ISPC_WEB_PATH.'/dashboard/dashlets');
        while ($file = @readdir($handle)) {
            if ($file != '.' && $file != '..' && !is_dir($file)) {
                $available_dashlets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.substr($file, 0, -4).']<pre class="addPlaceholderContent" style="display:none;">['.substr($file, 0, -4).'],</pre></a> ';
            }
        }
        if($available_dashlets_txt == '') $available_dashlets_txt = '------';
        $app->tpl->setVar("available_dashlets_txt", $available_dashlets_txt);
        parent::onShowEnd();
    }
    function onSubmit() {
        global $app;
        $app->uses('ini_parser,getconf');
        $section = $app->tform->getCurrentTab();
        $server_config_array = $app->getconf->get_global_config();
        $new_config = $app->tform->encode($this->dataRecord, $section);
        if($section == 'mail') {
            if($new_config['smtp_pass'] == '') $new_config['smtp_pass'] = $server_config_array['smtp_pass'];
            if($new_config['smtp_enabled'] == 'y' && ($new_config['admin_mail'] == '' || $new_config['admin_name'] == '')) {
                $app->tform->errorMessage .= $app->tform->lng("smtp_missing_admin_mail_txt");
            }
        }
        parent::onSubmit();
    }
    function onUpdateSave($sql) {
        global $app, $conf;
        if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges');
        $app->uses('ini_parser,getconf');
        $section = $app->tform->getCurrentTab();
        $server_config_array = $app->getconf->get_global_config();
        foreach($app->tform->formDef['tabs'][$section]['fields'] as $key => $field) {
            if ($field['formtype'] == 'CHECKBOX') {
                if($this->dataRecord[$key] == '') {
                    // if a checkbox is not set, we set it to the unchecked value
                    $this->dataRecord[$key] = $field['value'][0];
                }
            }
        }
        /*
        if((isset($this->dataRecord['use_loadindicator']) && $this->dataRecord['use_loadindicator'] != $server_config_array[$section]['use_loadindicator']) || (isset($this->dataRecord['use_combobox']) && $this->dataRecord['use_combobox'] != $server_config_array[$section]['use_combobox'])){
            $this->_js_changed = true;
        }
        */
        $new_config = $app->tform->encode($this->dataRecord, $section);
        if($section == 'sites' && $new_config['vhost_subdomains'] != 'y' && $server_config_array['sites']['vhost_subdomains'] == 'y') {
            // check for existing vhost subdomains, if found the mode cannot be disabled
            $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE `type` = 'vhostsubdomain'");
            if($check['cnt'] > 0) {
                $new_config['vhost_subdomains'] = 'y';
            }
        } elseif($section == 'mail') {
            if($new_config['smtp_pass'] == '') $new_config['smtp_pass'] = $server_config_array['mail']['smtp_pass'];
        } elseif($section == 'misc' && $new_config['session_timeout'] != $server_config_array['misc']['session_timeout']) {
            $app->db->query("DELETE FROM sys_config WHERE `config_id` = 2 AND `group` = 'interface' AND `name` = 'session_timeout'");
            $app->db->query("INSERT INTO sys_config (`config_id`, `group`, `name`, `value`) VALUES (2, 'interface', 'session_timeout', '" . intval($new_config['session_timeout']) . "')");
        }
        $server_config_array[$section] = $new_config;
        $server_config_str = $app->ini_parser->get_ini_string($server_config_array);
        //$sql = "UPDATE sys_ini SET config = '".$app->db->quote($server_config_str)."' WHERE sysini_id = 1";
        //if($conf['demo_mode'] != true) $app->db->query($sql);
        if($conf['demo_mode'] != true) $app->db->datalogUpdate('sys_ini', "config = '".$app->db->quote($server_config_str)."'", 'sysini_id', 1);
        /*
         * If we should use the domain-module, we have to insert all existing domains into the table
         * (only the first time!)
         */
        if (($section == 'domains') &&
            ($_SESSION['use_domain_module_old_value'] == '') &&
            ($server_config_array['domains']['use_domain_module'] == 'y')){
            $sql = "REPLACE INTO domain (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain ) " .
                "SELECT sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain " .
                "FROM mail_domain";
            $app->db->query($sql);
            $sql = "REPLACE INTO domain (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain ) " .
                "SELECT sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, domain " .
                "FROM web_domain WHERE type NOT IN ('subdomain','vhostsubdomain')";
            $app->db->query($sql);
        }
        // Maintenance mode
        if($server_config_array['misc']['maintenance_mode'] == 'y'){
            //print_r($_SESSION);
            //echo $_SESSION['s']['id'];
            $app->db->query("DELETE FROM sys_session WHERE session_id != '".$app->db->quote($_SESSION['s']['id'])."'");
        }
    }
    /*
    function onAfterUpdate() {
        if($this->_js_changed == true) {
            // not the best way, but it works
            header('Content-Type: text/html');
            print '<script type="text/javascript">document.location.reload(true);</script>';
            exit;
        }
    }
    */
}
$app->tform_actions = new page_action;
$app->tform_actions->onLoad();
?>
interface/web/admin/templates/system_config_sites_edit.htm
@@ -46,6 +46,12 @@
                </div>
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='vhost_aliasdomains_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='vhost_aliasdomains'}&nbsp;{tmpl_var name='vhost_aliasdomains_note_txt'}
                </div>
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='client_username_web_check_disabled_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='client_username_web_check_disabled'}
interface/web/dashboard/ajax_get_json.php
@@ -66,6 +66,9 @@
    // vhostsubdomains
    $result[] = _search('sites', 'web_vhost_subdomain', "AND type = 'vhostsubdomain'");
    // vhostaliasdomains
    $result[] = _search('sites', 'web_vhost_aliasdomain', "AND type = 'vhostalias'");
    // FTP users
    $result[] = _search('sites', 'ftp_user');
interface/web/dashboard/ajax_get_json.php.bak
New file
@@ -0,0 +1,238 @@
<?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;
?>
interface/web/dashboard/dashlets/limits.php
@@ -71,7 +71,7 @@
        $limits[] = array('field' => 'limit_web_aliasdomain',
            'db_table' => 'web_domain',
            'db_where' => "type = 'alias'");
                          'db_where' => "(type = 'alias' OR type = 'vhostalias'");
        $limits[] = array('field' => 'limit_ftp_user',
            'db_table' => 'ftp_user',
interface/web/dashboard/dashlets/limits.php.bak
New file
@@ -0,0 +1,177 @@
<?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'];
    }
}
?>
interface/web/data.sql
@@ -322,6 +322,57 @@
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_subdomain_edit.php', 'nginx_directives', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_subdomain_edit.php', 'proxy_directives', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_subdomain_edit.php', 'php_fpm_use_socket', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'domain', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'web_folder', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'traffic_quota', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'parent_domain_id', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'sel_domain', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'parent_domain_id', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'aliasdomain', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'php', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'fastcgi_php_version', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'cgi', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssi', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'perl', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ruby', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'python', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'suexec', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'errordocs', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'active', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'redirect_path', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'redirect_type', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'seo_redirect', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_state', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_locality', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_organisation', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_organisation_unit', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_country', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_domain', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_action', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_key', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_request', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_cert', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'ssl_bundle', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'stats_password', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'repeat_password', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'stats_type', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'backup_interval', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'backup_copies', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'allow_override', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_max_children', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_start_servers', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_min_spare_servers', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_max_spare_servers', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_process_idle_timeout', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm_max_requests', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'php_open_basedir', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'pm', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'custom_php_ini', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'apache_directives', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'nginx_directives', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'proxy_directives', '0', '', '');
INSERT IGNORE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_vhost_aliasdomain_edit.php', 'php_fpm_use_socket', '0', '', '');
REPLACE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_folder_edit.php', 'path', '0', '', 'Welches Verzeichnis von Ihrer Webseite m&ouml;chten Sie mit einem Passwort sch&uuml;tzen?');
REPLACE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_folder_edit.php', 'parent_domain_id', '0', '', 'Zu welcher Webseite soll ein Passwortschutz angelegt werden?');
REPLACE INTO `help_tooltips` (`url`, `field`, `demo`, `en`, `de`) VALUES ('/sites/web_folder_edit.php', 'active', '0', '', 'Ist diese Option gesetzt, ist der Passwortschutz aktiv.');
interface/web/sites/aps_install_package.php
@@ -87,7 +87,7 @@
$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;");
$domains_assoc = $app->db->queryAllRecords("SELECT domain FROM web_domain WHERE document_root != '' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') 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
interface/web/sites/aps_install_package.php.bak
New file
@@ -0,0 +1,211 @@
<?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;
?>
interface/web/sites/form/web_folder.tform.php
@@ -74,7 +74,7 @@
            '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",
                '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' OR web_domain.type = 'vhostalias') AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
                'keyfield'=> 'domain_id',
                'valuefield'=> 'parent_domain'
            ),
interface/web/sites/form/web_folder.tform.php.bak
New file
@@ -0,0 +1,110 @@
<?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
        //#################################
    )
);
?>
interface/web/sites/form/web_vhost_aliasdomain.tform.php
New file
@@ -0,0 +1,735 @@
<?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).
    Search:
    - searchable = 1 or searchable = 2 include the field in the search
    - searchable = 1: this field will be the title of the search result
    - searchable = 2: this field will be included in the description of the search result
*/
$form["title"]    = "Aliasdomain";
$form["description"]  = "";
$form["name"]    = "web_vhost_aliasdomain";
$form["action"]   = "web_vhost_aliasdomain_edit.php";
$form["db_table"]  = "web_domain";
$form["db_table_idx"] = "domain_id";
$form["db_history"]  = "yes";
$form["tab_default"] = "domain";
$form["list_default"] = "web_vhost_aliasdomain_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
$wildcard_available = false;
$ssl_available = true;
if(!$app->auth->is_admin()) {
    $client_group_id = $_SESSION["s"]["user"]["default_group"];
    $client = $app->db->queryOneRecord("SELECT limit_wildcard, limit_ssl FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
    if($client['limit_ssl'] != 'y') $ssl_available = false;
}
$app->uses('getconf');
$web_config = $app->getconf->get_global_config('sites');
$form["tabs"]['domain'] = array (
    'title'  => "Domain",
    'width'  => 100,
    'template'  => "templates/web_vhost_aliasdomain_edit.htm",
    'readonly' => false,
    '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 web_server = 1 AND {AUTHSQL} ORDER BY server_name',
                'keyfield'=> 'server_id',
                'valuefield'=> 'server_name'
            ),
            'value'  => ''
        ),
        'ip_address' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            /*'datasource'    => array (     'type'    => 'SQL',
                                        'querystring' => "SELECT ip_address,ip_address FROM server_ip WHERE ip_type = 'IPv4' AND {AUTHSQL} ORDER BY ip_address",
                                        'keyfield'=> 'ip_address',
                                        'valuefield'=> 'ip_address'
                                     ),*/
            'value'  => '',
            'searchable' => 2
        ),
        'ipv6_address' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            /*'datasource'    => array (     'type'    => 'SQL',
                                        'querystring' => "SELECT ip_address,ip_address FROM server_ip WHERE ip_type = 'IPv6' AND {AUTHSQL} ORDER BY ip_address",
                                        'keyfield'=> 'ip_address',
                                        'valuefield'=> 'ip_address'
                                     ),*/
            'value'  => '',
            'searchable' => 2
        ),
        'domain' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'TEXT',
            'filters'   => array( 0 => array( 'event' => 'SAVE',
                    'type' => 'IDNTOASCII'),
                1 => array( 'event' => 'SHOW',
                    'type' => 'IDNTOUTF8'),
                2 => array( 'event' => 'SAVE',
                    'type' => 'TOLOWER')
            ),
            'validators'    => array (  0 => array (    'type'  => 'CUSTOM',
                    'class' => 'validate_domain',
                    'function' => 'alias_domain',
                    'errmsg'=> 'domain_error_regex'),
            ),
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255',
            'searchable' => 1
        ),
        'type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'y',
            'value'  => array('vhost' => 'Site', 'alias' => 'Alias', 'vhostalias' => 'Alias', 'subdomain' => 'Subdomain', 'vhostsubdomain' => 'Subdomain')
        ),
        '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' AND web_domain.server_id = server.server_id AND {AUTHSQL::web_domain} ORDER BY web_domain.domain",
                'keyfield'=> 'domain_id',
                'valuefield'=> 'parent_domain'
            ),
            'value'  => ''
        ),
        'web_folder' => array (
            'datatype' => 'VARCHAR',
            'validators' => array (  0 => array ( 'type' => 'REGEX',
                    'regex' => '@^((?!.*\.\.)[\w/_\.\-]{1,100})$@',
                    'errmsg'=> 'web_folder_error_regex'),
            ),
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'vhost_type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'y',
            'value'  => array('name' => 'Namebased', 'ip' => 'IP-Based')
        ),
        'hd_quota' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'default' => '0',
            'value'  => '',
            'width'  => '7',
            'maxlength' => '7'
        ),
        'traffic_quota' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'TEXT',
            'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                    'errmsg'=> 'traffic_quota_error_empty'),
                1 => array ( 'type' => 'REGEX',
                    'regex' => '/^(\-1|[0-9]{1,10})$/',
                    'errmsg'=> 'traffic_quota_error_regex'),
            ),
            'default' => '-1',
            'value'  => '',
            'width'  => '7',
            'maxlength' => '7'
        ),
        'cgi' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'ssi' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'suexec' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'y',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'errordocs' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'CHECKBOX',
            'default' => '1',
            'value'  => array(0 => '0', 1 => '1')
        ),
        'subdomain' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'www',
            'value'  => ($wildcard_available ? array('none' => 'none_txt', 'www' => 'www.', '*' => '*.') : array('none' => 'none_txt', 'www' => 'www.'))
        ),
        'ssl' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'php' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'fast-cgi',
            'valuelimit' => 'client:web_php_options',
            'value'  => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM'),
            'searchable' => 2
        ),
        'fastcgi_php_version' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            /*'datasource'    => array (     'type'    => 'SQL',
                                        'querystring' => "SELECT ip_address,ip_address FROM server_ip WHERE ip_type = 'IPv4' AND {AUTHSQL} ORDER BY ip_address",
                                        'keyfield'=> 'ip_address',
                                        'valuefield'=> 'ip_address'
                                     ),*/
            'value'  => ''
        ),
        'perl' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'ruby' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'python' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'n',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        'active' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'CHECKBOX',
            'default' => 'y',
            'value'  => array(0 => 'n', 1 => 'y')
        ),
        //#################################
        // ENDE Datatable fields
        //#################################
    )
);
$form["tabs"]['redirect'] = array (
    'title'  => "Redirect",
    'width'  => 100,
    'template'  => "templates/web_vhost_aliasdomain_redirect.htm",
    'readonly' => false,
    'fields'  => array (
        //#################################
        // Begin Datatable fields
        //#################################
        'redirect_type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => array('' => 'no_redirect_txt', 'no' => 'no_flag_txt', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L', 'R=301,L' => 'R=301,L', 'last' => 'last', 'break' => 'break', 'redirect' => 'redirect', 'permanent' => 'permanent', 'proxy' => 'proxy')
        ),
        'redirect_path' => array (
            'datatype' => 'VARCHAR',
            'validators' => array (  0 => array ( 'type' => 'REGEX',
                    'regex' => '@^(([\.]{0})|((ftp|https?)://([-\w\.]+)+(:\d+)?(/([\w/_\.\,\-\+\?\~!:%]*(\?\S+)?)?)?)|(\[scheme\]://([-\w\.]+)+(:\d+)?(/([\w/_\.\-\,\+\?\~!:%]*(\?\S+)?)?)?)|(/(?!.*\.\.)[\w/_\.\-]{1,255}/))$@',
                    'errmsg'=> 'redirect_error_regex'),
            ),
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'seo_redirect' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => array('' => 'no_redirect_txt', 'non_www_to_www' => 'domain.tld => www.domain.tld', 'www_to_non_www' => 'www.domain.tld => domain.tld', '*_domain_tld_to_domain_tld' => '*.doman.tld => domain.tld', '*_domain_tld_to_www_domain_tld' => '*.domain.tld => www.domain.tld', '*_to_domain_tld' => '* => domain.tld', '*_to_www_domain_tld' => '* => www.domain.tld')
        ),
        'rewrite_rules' => array (
            'datatype' => 'TEXT',
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        //#################################
        // ENDE Datatable fields
        //#################################
    )
);
if($ssl_available) {
    $form["tabs"]['ssl'] = array (
        'title'  => "SSL",
        'width'  => 100,
        'template'  => "templates/web_vhost_aliasdomain_ssl.htm",
        'readonly' => false,
        'fields'  => array (
            //#################################
            // Begin Datatable fields
            //#################################
            'ssl_state' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
                        'errmsg'=> 'ssl_state_error_regex'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'ssl_locality' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
                        'errmsg'=> 'ssl_locality_error_regex'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'ssl_organisation' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
                        'errmsg'=> 'ssl_organisation_error_regex'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'ssl_organisation_unit' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^(([\.]{0})|([a-zA-Z0-9\ \.\-\_\,]{1,255}))$/',
                        'errmsg'=> 'ssl_organistaion_unit_error_regex'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            /*
        'ssl_country' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'TEXT',
            'validators'    => array (     0 => array (    'type'    => 'REGEX',
                                                        'regex' => '/^(([\.]{0})|([A-Z]{2,2}))$/',
                                                        'errmsg'=> 'ssl_country_error_regex'),
                                    ),
            'default'    => '',
            'value'        => '',
            'width'        => '2',
            'maxlength'    => '2'
        ),
        */
            'ssl_country' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'SELECT',
                'default' => '',
                'datasource' => array (  'type' => 'SQL',
                    'querystring' => 'SELECT iso,printable_name FROM country ORDER BY printable_name',
                    'keyfield'=> 'iso',
                    'valuefield'=> 'printable_name'
                ),
                'value'  => ''
            ),
            'ssl_domain' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'ssl_key' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXTAREA',
                'default' => '',
                'value'  => '',
                'cols'  => '30',
                'rows'  => '10'
            ),
            'ssl_request' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXTAREA',
                'default' => '',
                'value'  => '',
                'cols'  => '30',
                'rows'  => '10'
            ),
            'ssl_cert' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXTAREA',
                'default' => '',
                'value'  => '',
                'cols'  => '30',
                'rows'  => '10'
            ),
            'ssl_bundle' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXTAREA',
                'default' => '',
                'value'  => '',
                'cols'  => '30',
                'rows'  => '10'
            ),
            'ssl_action' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'SELECT',
                'default' => '',
                'value'  => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt')
            ),
            //#################################
            // ENDE Datatable fields
            //#################################
        )
    );
}
//* Statistics
$form["tabs"]['stats'] = array (
    'title'  => "Stats",
    'width'  => 100,
    'template'  => "templates/web_vhost_aliasdomain_stats.htm",
    'readonly' => false,
    'fields'  => array (
        //#################################
        // Begin Datatable fields
        //#################################
        'stats_password' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'PASSWORD',
            'encryption' => 'CRYPT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        'stats_type' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'webalizer',
            'value'  => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats')
        ),
        //#################################
        // ENDE Datatable fields
        //#################################
    )
);
// if($_SESSION["s"]["user"]["typ"] == 'admin') {
//* Backup
$form["tabs"]['backup'] = array (
    'title'  => "Backup",
    'width'  => 100,
    'template'  => "templates/web_vhost_aliasdomain_backup.htm",
    'readonly' => false,
    'fields'  => array (
        //#################################
        // Begin Datatable fields
        //#################################
        'backup_interval' => array (
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => array('none' => 'No backup', 'daily' => 'Daily', 'weekly' => 'Weekly', 'monthly' => 'Monthly')
        ),
        'backup_copies' => array (
            'datatype' => 'INTEGER',
            'formtype' => 'SELECT',
            'default' => '',
            'value'  => array('1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10')
        ),
        'backup_excludes' => array (
            'datatype' => 'VARCHAR',
            'validators' => array (  0 => array ( 'type' => 'REGEX',
                    'regex' => '@^(?!.*\.\.)[-a-zA-Z0-9_/.~,*]*$@',
                    'errmsg'=> 'backup_excludes_error_regex'),
            ),
            'formtype' => 'TEXT',
            'default' => '',
            'value'  => '',
            'width'  => '30',
            'maxlength' => '255'
        ),
        //#################################
        // ENDE Datatable fields
        //#################################
    ),
    'plugins' => array (
        'backup_records' => array (
            'class'   => 'plugin_backuplist',
            'options' => array(
            )
        )
    )
);
// }
if($_SESSION["s"]["user"]["typ"] == 'admin'
    || ($web_config['reseller_can_use_options'] == 'y' && $app->auth->has_clients($_SESSION['s']['user']['userid']))) {
    $form["tabs"]['advanced'] = array (
        'title'  => "Options",
        'width'  => 100,
        'template'  => "templates/web_vhost_aliasdomain_advanced.htm",
        'readonly' => false,
        'fields'  => array (
            //#################################
            // Begin Datatable fields
            //#################################
            'document_root' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                        'errmsg'=> 'documentroot_error_empty'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'system_user' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                        'errmsg'=> 'sysuser_error_empty'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'system_group' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                        'errmsg'=> 'sysgroup_error_empty'),
                ),
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'allow_override' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
                        'errmsg'=> 'allow_override_error_empty'),
                ),
                'default' => 'All',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'php_fpm_use_socket' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'CHECKBOX',
                'default' => 'n',
                'value'  => array(0 => 'n', 1 => 'y')
            ),
            'pm' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'SELECT',
                'default' => 'dynamic',
                'value'  => array('static' => 'static', 'dynamic' => 'dynamic', 'ondemand' => 'ondemand (PHP Version >= 5.3.9)')
            ),
            'pm_max_children' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([1-9][0-9]{0,10})$/',
                        'errmsg'=> 'pm_max_children_error_regex'),
                ),
                'default' => '10',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '3'
            ),
            'pm_start_servers' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([1-9][0-9]{0,10})$/',
                        'errmsg'=> 'pm_start_servers_error_regex'),
                ),
                'default' => '2',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '3'
            ),
            'pm_min_spare_servers' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([1-9][0-9]{0,10})$/',
                        'errmsg'=> 'pm_min_spare_servers_error_regex'),
                ),
                'default' => '1',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '3'
            ),
            'pm_max_spare_servers' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([1-9][0-9]{0,10})$/',
                        'errmsg'=> 'pm_max_spare_servers_error_regex'),
                ),
                'default' => '5',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '3'
            ),
            'pm_process_idle_timeout' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([1-9][0-9]{0,10})$/',
                        'errmsg'=> 'pm_process_idle_timeout_error_regex'),
                ),
                'default' => '10',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '6'
            ),
            'pm_max_requests' => array (
                'datatype' => 'INTEGER',
                'formtype' => 'TEXT',
                'validators' => array (  0 => array ( 'type' => 'REGEX',
                        'regex' => '/^([0-9]{1,11})$/',
                        'errmsg'=> 'pm_max_requests_error_regex'),
                ),
                'default' => '0',
                'value'  => '',
                'width'  => '3',
                'maxlength' => '6'
            ),
            'php_open_basedir' => array (
                'datatype' => 'VARCHAR',
                'formtype' => 'TEXT',
                /*'validators'    => array (     0 => array (    'type'    => 'NOTEMPTY',
                                                        'errmsg'=> 'php_open_basedir_error_empty'),
                                    ),   */
                'default' => 'All',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'custom_php_ini' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXT',
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'apache_directives' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXT',
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'nginx_directives' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXT',
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            'proxy_directives' => array (
                'datatype' => 'TEXT',
                'formtype' => 'TEXT',
                'default' => '',
                'value'  => '',
                'width'  => '30',
                'maxlength' => '255'
            ),
            //#################################
            // ENDE Datatable fields
            //#################################
        )
    );
}
?>
interface/web/sites/form/web_vhost_subdomain.tform.php
@@ -136,7 +136,7 @@
            'datatype' => 'VARCHAR',
            'formtype' => 'SELECT',
            'default' => 'y',
            'value'  => array('vhost' => 'Site', 'alias' => 'Alias', 'subdomain' => 'Subdomain', 'vhostsubdomain' => 'Subdomain')
            'value'  => array('vhost' => 'Site', 'alias' => 'Alias', 'vhostalias' => 'Alias', 'subdomain' => 'Subdomain', 'vhostsubdomain' => 'Subdomain')
        ),
        'parent_domain_id' => array (
            'datatype' => 'INTEGER',
interface/web/sites/lib/lang/ar_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/ar_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Active';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Add new aliasdomain';
?>
interface/web/sites/lib/lang/bg_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/bg_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Активен';
$wb['server_id_txt'] = 'Сървър';
$wb['parent_domain_id_txt'] = 'Сайт';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Нов aliasdomain';
?>
interface/web/sites/lib/lang/br_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/br_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,9 @@
<?php
<?php
$wb['list_head_txt'] = 'Domínio Alias';
$wb['active_txt'] = 'Ativo';
$wb['server_id_txt'] = 'Servidor';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Domínio Alias';
$wb['add_new_record_txt'] = 'Adcionar novo domínio alias';
?>
interface/web/sites/lib/lang/cz_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,119 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Interval zálohování';
$wb['backup_copies_txt'] = 'Počet záložních kopií';
$wb['ssl_state_txt'] = 'Stát';
$wb['ssl_locality_txt'] = 'Lokalita';
$wb['ssl_organisation_txt'] = 'Organizace';
$wb['ssl_organisation_unit_txt'] = 'Organizační jednotka';
$wb['ssl_country_txt'] = 'Země';
$wb['ssl_key_txt'] = 'SSL klíč';
$wb['ssl_request_txt'] = 'SSL požadavek';
$wb['ssl_cert_txt'] = 'SSL certifikát';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL akce';
$wb['ssl_domain_txt'] = 'SSL Doména';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Doména';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Verze';
$wb['redirect_type_txt'] = 'Typ přesměrování';
$wb['redirect_path_txt'] = 'Cesta přesměrování';
$wb['active_txt'] = 'Aktivní';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klient';
$wb['limit_web_domain_txt'] = 'The max. Počet webových stránek for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Doména je prázdná.';
$wb['domain_error_unique'] = 'Webové stránky nebo sub-doména / alias-domény již existuje s tímto doménovým jménem.';
$wb['domain_error_regex'] = 'Neplatné doménové jméno.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Klient';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffik kvóta překročena';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Uložit certifikát';
$wb['create_certificate_txt'] = 'Vytvořit certifikát';
$wb['delete_certificate_txt'] = 'Smazat certifikát';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO přesměrování';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Kvóta pevného disku je neplatná.';
$wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.';
$wb['fastcgi_php_version_txt'] = 'PHP verze';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generovat heslo';
$wb['repeat_password_txt'] = 'Opakujte heslo';
$wb['password_mismatch_txt'] = 'Hesla se neshodují.';
$wb['password_match_txt'] = 'Hesla se shodují.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/cz_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,9 @@
<?php
$wb['list_head_txt'] = 'Alias doména';
$wb['active_txt'] = 'Aktivní';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Webová stránka';
$wb['domain_txt'] = 'Alias doména';
$wb['add_new_record_txt'] = 'Přidat alias doménu';
?>
interface/web/sites/lib/lang/de_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,126 @@
<?php
$wb['parent_domain_id_txt'] = 'Zugehörige Webseite';
$wb['web_folder_txt'] = 'Basisordner';
$wb['web_folder_invalid_txt'] = 'Dieser Ordner darf nicht als Basisordner verwendet werden.';
$wb['web_folder_unique_txt'] = 'Dieser Ordner wird bereits verwendet, bitte geben Sie einen anderen Basisordner an.';
$wb['ssl_state_txt'] = 'Bundesland';
$wb['ssl_locality_txt'] = 'Ort';
$wb['ssl_organisation_txt'] = 'Firma';
$wb['ssl_organisation_unit_txt'] = 'Abteilung';
$wb['ssl_country_txt'] = 'Land';
$wb['ssl_key_txt'] = 'SSL-Key';
$wb['ssl_request_txt'] = 'SSL-Request';
$wb['ssl_cert_txt'] = 'SSL-Zertifikat';
$wb['ssl_bundle_txt'] = 'SSL-Bundle';
$wb['ssl_action_txt'] = 'SSL-Aktion';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Host';
$wb['type_txt'] = 'Typ';
$wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe, bitte keinen / eingeben.';
$wb['redirect_type_txt'] = 'Redirect-Typ';
$wb['redirect_path_txt'] = 'Redirect-Pfad';
$wb['active_txt'] = 'Aktiv';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux-Benutzer';
$wb['system_group_txt'] = 'Linux-Gruppe';
$wb['ip_address_txt'] = 'IP Adresse';
$wb['vhost_type_txt'] = 'vHost-Typ';
$wb['hd_quota_txt'] = 'Festplatten-Quota';
$wb['traffic_quota_txt'] = 'Traffic-Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Kunde';
$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Subdomains für Ihr Konto wurde erreicht.';
$wb['apache_directives_txt'] = 'Apache-Direktiven';
$wb['domain_error_empty'] = 'Domain ist leer.';
$wb['domain_error_unique'] = 'Domain muss eindeutig sein';
$wb['domain_error_regex'] = 'Domain-Name ungültig.';
$wb['domain_error_wildcard'] = 'Wildcard-Subdomains sind nicht erlaubt.';
$wb['hd_quota_error_empty'] = 'Harddisk-Quota ist leer.';
$wb['traffic_quota_error_empty'] = 'Traffic-Quota ist leer.';
$wb['errordocs_txt'] = 'Eigene Fehlerseiten';
$wb['error_ssl_state_empty'] = 'Bundesland (SSL) ist leer.';
$wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
$wb['error_ssl_organisation_empty'] = 'Organisation (SSL) ist leer.';
$wb['error_ssl_organisation_unit_empty'] = 'Abteilung (SSL) ist leer.';
$wb['error_ssl_country_empty'] = 'Land (SSL) ist leer.';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['client_group_id_txt'] = 'Kunde';
$wb['stats_password_txt'] = 'Webstatistik-Passwort';
$wb['ssl_domain_txt'] = 'SSL-Domain';
$wb['allow_override_txt'] = 'Allow Override';
$wb['limit_web_quota_free_txt'] = 'Max. mögliches Festplatten-Quota';
$wb['ssl_state_error_regex'] = 'Ungültiges SSL-Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
$wb['ssl_locality_error_regex'] = 'Ungültiger SSL-Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
$wb['ssl_organisation_error_regex'] = 'Ungültige SSL-Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL-Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
$wb['ssl_country_error_regex'] = 'Ungültiges SSL-Land. Gültige Zeichen sind: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. mögliches Traffic-Quota';
$wb['redirect_error_regex'] = 'Ungültiger Redirect-Pfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['backup_interval_txt'] = 'Backup-Intervall';
$wb['backup_copies_txt'] = 'Anzahl an Backups';
$wb['traffic_quota_exceeded_txt'] = 'Max. Datentransfer verbraucht.';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistik-Benutzername';
$wb['stats_type_txt'] = 'Webstatistik-Programm';
$wb['custom_php_ini_txt'] = 'Individuelle php.ini-Einstellungen';
$wb['error_ssl_cert_empty'] = 'SSL-Zertifikat-Feld ist leer.';
$wb['none_txt'] = 'Keine';
$wb['disabled_txt'] = 'Deaktiviert';
$wb['no_redirect_txt'] = 'Kein Redirect';
$wb['no_flag_txt'] = 'Kein Flag';
$wb['save_certificate_txt'] = 'Zertifikat speichern';
$wb['create_certificate_txt'] = 'Zertifikat erstellen';
$wb['delete_certificate_txt'] = 'Zertifikat löschen';
$wb['nginx_directives_txt'] = 'nginx-Direktiven';
$wb['seo_redirect_txt'] = 'SEO-Redirect';
$wb['non_www_to_www_txt'] = 'Nicht-www -> www';
$wb['www_to_non_www_txt'] = 'www -> Nicht-www';
$wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
$wb['ipv6_address_txt'] = 'IPv6-Adresse';
$wb['error_no_sni_txt'] = 'SNI für SSL ist auf diesem Server nicht aktiviert. Sie können daher nur ein SSL-Zertifikat pro IP-Adresse eintragen.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Die Werte der PHP-FPM pm Einstellungen müssen wie folgt sein: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muß eine positive ganze Zahl sein.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
$wb['hd_quota_error_regex'] = 'Harddisk-Quota ist ungültig.';
$wb['traffic_quota_error_regex'] = 'Traffic-Quota ist ungültig.';
$wb['fastcgi_php_version_txt'] = 'PHP-Version';
$wb['pm_txt'] = 'PHP-FPM Prozess Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout muß eine positive ganze Zahl sein.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests muß eine ganze Zahl >= 0 sein.';
$wb['pm_ondemand_hint_txt'] = 'Bitte beachten Sie, daß Ihre PHP Version >= 5.3.9 sein muß, wenn Sie den ondemand Prozess Manager nutzen möchten. Wenn Sie ondemand für eine ältere PHP-Version auswählen, wird PHP nicht mehr starten!';
$wb['generate_password_txt'] = 'Passwort erzeugen';
$wb['repeat_password_txt'] = 'Passwort wiederholen';
$wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
$wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
$wb['available_php_directive_snippets_txt'] = 'Verfügbare PHP-Direktiven-Schnipsel:';
$wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache-Direktiven-Schnipsel:';
$wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx-Direktiven-Schnipsel:';
$wb['proxy_directives_txt'] = 'Proxy-Direktiven';
$wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy-Direktiven-Schnipsel:';
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:';
$wb['configuration_error_txt'] = 'KONFIGURATIONSFEHLER';
$wb['variables_txt'] = 'Variablen';
$wb['backup_excludes_txt'] = 'Auszuschließende Verzeichnisse';
$wb['backup_excludes_note_txt'] = '(Mehrere Verzeichnisse mit Kommas trennen. Beispiel: web/cache/*,web/backup)';
$wb['backup_excludes_error_regex'] = 'Die auszuschließenden Verzeichnisse enthalten ungültige Zeichen.';
?>
interface/web/sites/lib/lang/de_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomains';
$wb['active_txt'] = 'Aktiv';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Domain';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Neue Subdomain hinzufügen';
?>
interface/web/sites/lib/lang/el_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Γονικό Website';
$wb['web_folder_txt'] = 'Φάκελος Web';
$wb['web_folder_invalid_txt'] = 'Ο Φάκελος Web δεν είναι έγκυρος, διαλέξτε κάποιον άλλο.';
$wb['web_folder_unique_txt'] = 'Ο Φάκελος Web χρησιμοποιείται ήδη, διαλέξτε κάποιον άλλο.';
$wb['backup_interval_txt'] = 'Χρονικό διάστημα Αντιγράφων Ασφαλείας';
$wb['backup_copies_txt'] = 'Πλήθος Αντιγράφων Ασφαλείας';
$wb['ssl_state_txt'] = 'Κατάσταση';
$wb['ssl_locality_txt'] = 'Τοποθεσία';
$wb['ssl_organisation_txt'] = 'Οργανισμός';
$wb['ssl_organisation_unit_txt'] = 'Τμήμα Οργανισμού';
$wb['ssl_country_txt'] = 'Χώρα';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Εισάγατε μη έγκυρο φάκελο. Μην εισάγετε την κάθετο';
$wb['type_txt'] = 'Τύπος';
$wb['redirect_type_txt'] = 'Τύπος Ανακατεύθυνσης';
$wb['redirect_path_txt'] = 'Διαδρομή Ανακατεύθυνσης';
$wb['active_txt'] = 'Ενεργό';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Χρήστης Linux';
$wb['system_group_txt'] = 'Ομάδα Linux';
$wb['ip_address_txt'] = 'Διεύθυνση IP';
$wb['ipv6_address_txt'] = 'Διεύθυνση IPv6';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Όριο αποθηκευτικού χώρου';
$wb['traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Προσωπικά έγγραφα σφάλματος';
$wb['subdomain_txt'] = 'Αυτόματο-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Πελάτης';
$wb['limit_web_domain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web domains για τον λογαριασμό σας.';
$wb['limit_web_aliasdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των aliasdomains για τον λογαριασμό σας.';
$wb['limit_web_subdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web subdomains για τον λογαριασμό σας.';
$wb['apache_directives_txt'] = 'Apache directives';
$wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.';
$wb['domain_error_unique'] = 'Υπάρχει ήδη ένα website ή ένα sub / aliasdomain με αυτό το όνομα domain.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Το όριο αποθηκευτικού χώρου είναι 0 ή δεν έχει οριστεί.';
$wb['traffic_quota_error_empty'] = 'Το όριο μεταφοράς δεδομένων δεν έχει οριστεί.';
$wb['error_ssl_state_empty'] = 'Κενή περιφέρεια SSL.';
$wb['error_ssl_locality_empty'] = 'Κενή τοποθεσία SSL.';
$wb['error_ssl_organisation_empty'] = 'Ο Οργανισμός SSL δεν έχει οριστεί.';
$wb['error_ssl_organisation_unit_empty'] = 'Το SSL τμήμα Οργανισμού δεν έχει οριστεί.';
$wb['error_ssl_country_empty'] = 'Κενή χώρα SSL.';
$wb['error_ssl_cert_empty'] = 'Το πεδίο SSL Certificate δεν έχει οριστεί';
$wb['client_group_id_txt'] = 'Πελάτης';
$wb['stats_password_txt'] = 'Συνθηματικο Στατιστικών Web';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Όριο αποθηκευτικού χώρου';
$wb['ssl_state_error_regex'] = 'Άκυρη πολιτεία-περιφέρεια SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Άκυρο SSL Locality. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Άκυρος Οργανισμός  SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Άκυρη μονάδα οργανισμού SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Άκυρη Χώρα SSL. Έγκυροι χαρακτήρες: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Όριο μεταφοράς δεδομένων';
$wb['redirect_error_regex'] = 'Μη έγκυρη διαδρομή ανακατεύθυνσης. Έγκυρες τιμές είναι: /test/ ή http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Ξεπεράστηκε το όριο μεταφοράς δεδομένων';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Όνομα Χρήστη Στατιστικών Web';
$wb['stats_type_txt'] = 'Πρόγραμμα Στατιστικών Web';
$wb['custom_php_ini_txt'] = 'Προσαρμοσμένες ρυθμίσεις php.ini';
$wb['none_txt'] = 'Καμία';
$wb['disabled_txt'] = 'Απενεργοπ.';
$wb['no_redirect_txt'] = 'Χωρίς Ανακατεύθυνση';
$wb['no_flag_txt'] = 'Χωρίς Σημαία';
$wb['save_certificate_txt'] = 'Αποθήκευση Πιστοποιητικού';
$wb['create_certificate_txt'] = 'Δημιουργία Πιστοποιητικού';
$wb['delete_certificate_txt'] = 'Διαγραφή Πιστοποιητικού';
$wb['nginx_directives_txt'] = 'Ντιρεκτίβες nginx';
$wb['seo_redirect_txt'] = 'Ανακατεύθυνση SEO';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Χρήση Socket Για PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
$wb['available_php_directive_snippets_txt'] = 'Διαθέσιμα PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Διαθέσιμα Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Διαθέσιμα nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/el_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Ψευδώνυμο domain';
$wb['active_txt'] = 'Ενεργό';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Ψευδώνυμο domain';
$wb['add_new_record_txt'] = 'Νέο ψευδωνύμο domain';
?>
interface/web/sites/lib/lang/en_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,127 @@
<?php
$wb["parent_domain_id_txt"] = 'Parent Website';
$wb["web_folder_txt"] = 'Web folder';
$wb["web_folder_invalid_txt"] = 'The web folder is invalid, please choose a different one.';
$wb["web_folder_unique_txt"] = 'The web folder is already used, please choose a different one.';
$wb["backup_interval_txt"] = 'Backup interval';
$wb["backup_copies_txt"] = 'Number of backup copies';
$wb["ssl_state_txt"] = 'State';
$wb["ssl_locality_txt"] = 'Locality';
$wb["ssl_organisation_txt"] = 'Organisation';
$wb["ssl_organisation_unit_txt"] = 'Organisation Unit';
$wb["ssl_country_txt"] = 'Country';
$wb["ssl_key_txt"] = 'SSL Key';
$wb["ssl_request_txt"] = 'SSL Request';
$wb["ssl_cert_txt"] = 'SSL Certificate';
$wb["ssl_bundle_txt"] = 'SSL Bundle';
$wb["ssl_action_txt"] = 'SSL Action';
$wb["ssl_domain_txt"] = 'SSL Domain';
$wb["server_id_txt"] = 'Server';
$wb["domain_txt"] = 'Domain';
$wb["host_txt"] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb["type_txt"] = 'Type';
$wb["parent_domain_id_txt"] = 'Parent Website';
$wb["redirect_type_txt"] = 'Redirect Type';
$wb["redirect_path_txt"] = 'Redirect Path';
$wb["active_txt"] = 'Active';
$wb["document_root_txt"] = 'Documentroot';
$wb["system_user_txt"] = 'Linux User';
$wb["system_group_txt"] = 'Linux Group';
$wb["ip_address_txt"] = 'IPv4-Address';
$wb["ipv6_address_txt"] = 'IPv6-Address';
$wb["vhost_type_txt"] = 'VHost Type';
$wb["hd_quota_txt"] = 'Harddisk Quota';
$wb["traffic_quota_txt"] = 'Traffic Quota';
$wb["cgi_txt"] = 'CGI';
$wb["ssi_txt"] = 'SSI';
$wb["errordocs_txt"] = 'Own Error-Documents';
$wb["subdomain_txt"] = 'Auto-Subdomain';
$wb["ssl_txt"] = 'SSL';
$wb["suexec_txt"] = 'SuEXEC';
$wb["php_txt"] = 'PHP';
$wb["client_txt"] = 'Client';
$wb["limit_web_domain_txt"] = 'The max. number of web domains for your account is reached.';
$wb["limit_web_aliasdomain_txt"] = 'The max. number of aliasdomains for your account is reached.';
$wb["limit_web_subdomain_txt"] = 'The max. number of web subdomains for your account is reached.';
$wb["apache_directives_txt"] = 'Apache Directives';
$wb["domain_error_empty"] = 'Domain is empty.';
$wb["domain_error_unique"] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb["domain_error_regex"] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb["hd_quota_error_empty"] = 'Harddisk quota is 0 or empty.';
$wb["traffic_quota_error_empty"] = 'Traffic quota is empty.';
$wb["error_ssl_state_empty"] = 'SSL State is empty.';
$wb["error_ssl_locality_empty"] = 'SSL Locality is empty.';
$wb["error_ssl_organisation_empty"] = 'SSL Organisation is empty.';
$wb["error_ssl_organisation_unit_empty"] = 'SSL Organisation Unit is empty.';
$wb["error_ssl_country_empty"] = 'SSL Country is empty.';
$wb["error_ssl_cert_empty"] = 'SSL Certificate field is empty';
$wb["client_group_id_txt"] = 'Client';
$wb["stats_password_txt"] = 'Set Webstatistics password';
$wb["allow_override_txt"] = 'Apache AllowOverride';
$wb["limit_web_quota_free_txt"] = 'Max. available Harddisk Quota';
$wb["ssl_state_error_regex"] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb["ssl_locality_error_regex"] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb["ssl_organisation_error_regex"] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb["ssl_organistaion_unit_error_regex"] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb["ssl_country_error_regex"] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb["limit_traffic_quota_free_txt"] = 'Max. available Traffic Quota';
$wb["redirect_error_regex"] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb["php_open_basedir_txt"] = 'PHP open_basedir';
$wb["traffic_quota_exceeded_txt"] = 'Traffic quota exceeded';
$wb["ruby_txt"] = 'Ruby';
$wb["stats_user_txt"] = 'Webstatistics username';
$wb["stats_type_txt"] = 'Webstatistics program';
$wb["custom_php_ini_txt"] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb["nginx_directives_txt"] = 'nginx Directives';
$wb["seo_redirect_txt"] = 'SEO Redirect';
$wb["non_www_to_www_txt"] = 'Non-www -&gt; www';
$wb["www_to_non_www_txt"] = 'www -&gt; non-www';
$wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
$wb["error_no_sni_txt"] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb["python_txt"] = 'Python';
$wb["perl_txt"] = 'Perl';
$wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
$wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
$wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
$wb["pm_max_spare_servers_txt"] = 'PHP-FPM pm.max_spare_servers';
$wb["error_php_fpm_pm_settings_txt"] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb["pm_max_children_error_regex"] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb["pm_start_servers_error_regex"] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb["pm_min_spare_servers_error_regex"] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb["pm_max_spare_servers_error_regex"] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb["hd_quota_error_regex"] = 'Harddisk quota is invalid.';
$wb["traffic_quota_error_regex"] = 'Traffic quota is invalid.';
$wb["fastcgi_php_version_txt"] = 'PHP Version';
$wb["pm_txt"] = 'PHP-FPM Process Manager';
$wb["pm_process_idle_timeout_txt"] = 'PHP-FPM pm.process_idle_timeout';
$wb["pm_max_requests_txt"] = 'PHP-FPM pm.max_requests';
$wb["pm_process_idle_timeout_error_regex"] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb["pm_max_requests_error_regex"] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb["pm_ondemand_hint_txt"] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
$wb['rewrite_rules_txt'] = 'Rewrite Rules';
$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
$wb['configuration_error_txt'] = "CONFIGURATION ERROR";
$wb['variables_txt'] = 'Variables';
$wb['backup_excludes_txt'] = 'Excluded Directories';
$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
?>
interface/web/sites/lib/lang/en_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb["list_head_txt"] = 'Aliasdomain';
$wb["active_txt"] = 'Active';
$wb["server_id_txt"] = 'Server';
$wb["parent_domain_id_txt"] = 'Website';
$wb["domain_txt"] = 'Aliasdomain';
$wb["add_new_record_txt"] = 'Add new aliasdomain';
?>
interface/web/sites/lib/lang/es_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/es_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias de dominio';
$wb['active_txt'] = 'Activar';
$wb['server_id_txt'] = 'Servidor';
$wb['parent_domain_id_txt'] = 'Sitio web';
$wb['domain_txt'] = 'Alias de dominio';
$wb['add_new_record_txt'] = 'Añadir nuevo alias de dominio';
?>
interface/web/sites/lib/lang/fi_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/fi_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasverkkotunnus';
$wb['active_txt'] = 'Käytössä';
$wb['server_id_txt'] = 'Palvelin';
$wb['parent_domain_id_txt'] = 'Sivusto';
$wb['domain_txt'] = 'Aliasverkkotunnus';
$wb['add_new_record_txt'] = 'Lisää uusi aliasverkkotunnus';
?>
interface/web/sites/lib/lang/fr_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/fr_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias de domaine';
$wb['active_txt'] = 'Actif';
$wb['server_id_txt'] = 'Serveur';
$wb['parent_domain_id_txt'] = 'Site web';
$wb['domain_txt'] = 'Alias de domaine';
$wb['add_new_record_txt'] = 'Nouvel alias de domaine';
?>
interface/web/sites/lib/lang/hr_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/hr_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias domena';
$wb['active_txt'] = 'Aktivno';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Web stranica';
$wb['domain_txt'] = 'Alias domena';
$wb['add_new_record_txt'] = 'Dodaj novu alias domenu';
?>
interface/web/sites/lib/lang/hu_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/hu_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Aktív';
$wb['server_id_txt'] = 'Szerver';
$wb['parent_domain_id_txt'] = 'Webhely';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Új Aliasdomain';
?>
interface/web/sites/lib/lang/id_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/id_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias Domain';
$wb['active_txt'] = 'Aktif';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Situs Web';
$wb['domain_txt'] = 'Alias Domain';
$wb['add_new_record_txt'] = 'Tambah Alias Domain Baru';
?>
interface/web/sites/lib/lang/it_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/it_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Active';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Add new aliasdomain';
?>
interface/web/sites/lib/lang/ja_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/ja_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'エイリアスドメイン';
$wb['active_txt'] = '有効';
$wb['server_id_txt'] = 'サーバー';
$wb['parent_domain_id_txt'] = 'ウェブサイト';
$wb['domain_txt'] = 'エイリアスドメイン';
$wb['add_new_record_txt'] = 'エイリアスドメインを追加する';
?>
interface/web/sites/lib/lang/nl_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/nl_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomein';
$wb['active_txt'] = 'Actief';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Aliasdomein';
$wb['add_new_record_txt'] = 'Toevoegen nieuw aliasdomein';
?>
interface/web/sites/lib/lang/pl_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Strona macierzysta';
$wb['web_folder_txt'] = 'Folder strony';
$wb['web_folder_invalid_txt'] = 'Folder strony jest nieprawidłowy, proszę wybrać inny.';
$wb['web_folder_unique_txt'] = 'Folder strony jest już w użyciu, proszę wybrać inny.';
$wb['backup_interval_txt'] = 'Częstotliwość kopii';
$wb['backup_copies_txt'] = 'Liczba kopii zapasowych';
$wb['ssl_state_txt'] = 'Województwo';
$wb['ssl_locality_txt'] = 'Lokalizacja';
$wb['ssl_organisation_txt'] = 'Ogranizacja';
$wb['ssl_organisation_unit_txt'] = 'Jednostka organizacji';
$wb['ssl_country_txt'] = 'Kraj';
$wb['ssl_key_txt'] = 'Klucz SSL';
$wb['ssl_request_txt'] = 'Żądanie SSL';
$wb['ssl_cert_txt'] = 'Certyfikat SSL';
$wb['ssl_bundle_txt'] = 'Pakiet SSL (Bundle)';
$wb['ssl_action_txt'] = 'Czynność SSL';
$wb['ssl_domain_txt'] = 'Domena SSL';
$wb['server_id_txt'] = 'Serwer';
$wb['domain_txt'] = 'Domena';
$wb['host_txt'] = 'Nazwa hosta';
$wb['web_folder_error_regex'] = 'Wpisano nieprawidłowy folder. Proszę nie dopisywać znaku slash: / ';
$wb['type_txt'] = 'Rodzaj';
$wb['redirect_type_txt'] = 'Rodzaj przekierowania';
$wb['redirect_path_txt'] = 'Ścieżka przekierowania';
$wb['active_txt'] = 'Aktywny';
$wb['document_root_txt'] = 'Document root';
$wb['system_user_txt'] = 'Użytkownik systemowy';
$wb['system_group_txt'] = 'Grupa systemowa';
$wb['ip_address_txt'] = 'Adres IPv4';
$wb['ipv6_address_txt'] = 'Adres IPv6';
$wb['vhost_type_txt'] = 'Typ VHosta';
$wb['hd_quota_txt'] = 'Limit dysku';
$wb['traffic_quota_txt'] = 'Limit transferu';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Własne strony błędów';
$wb['subdomain_txt'] = 'Automatyczna subdomena';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klient';
$wb['limit_web_domain_txt'] = 'Maks. liczba domen dla Twojego konta została osiągnięta.';
$wb['limit_web_aliasdomain_txt'] = 'Maks. liczba aliasów domen dla Twojego konta została osiągnięta.';
$wb['limit_web_subdomain_txt'] = 'Maks. liczba poddomen dla Twojego konta została osiągnięta.';
$wb['apache_directives_txt'] = 'Dyrektywy Apache';
$wb['domain_error_empty'] = 'Pole domeny jest puste';
$wb['domain_error_unique'] = 'Istnieje już strona z taką domeną lub subdomeną.';
$wb['domain_error_regex'] = 'Nazwa domeny jest nieprawidłowa.';
$wb['domain_error_wildcard'] = 'Subdomeny typu wildcard nie są dozwolone.';
$wb['hd_quota_error_empty'] = 'Pole limitu dysku jest puste lub wynosi 0.';
$wb['traffic_quota_error_empty'] = 'Pole limitu transferu jest puste.';
$wb['error_ssl_state_empty'] = 'Pole województwa dla SSL jest puste.';
$wb['error_ssl_locality_empty'] = 'Pole lokalizacji dla SSL jest puste.';
$wb['error_ssl_organisation_empty'] = 'Pole organizacji dla SSL jest puste.';
$wb['error_ssl_organisation_unit_empty'] = 'Pole jednostki dla SSL jest puste.';
$wb['error_ssl_country_empty'] = 'Pole kraju dla SSL jest puste.';
$wb['error_ssl_cert_empty'] = 'Pole certyfikatu SSL jest puste.';
$wb['client_group_id_txt'] = 'Klient';
$wb['stats_password_txt'] = 'Hasło do statystyk';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Maks. dostępny limit dysku';
$wb['ssl_state_error_regex'] = 'Nieprawidłowe województwo SSL. Dozwolone znaki: a-z, 0-9 i .,-_';
$wb['ssl_locality_error_regex'] = 'Nieprawidłowa lokalizacja SSL. Dozwolone znaki: a-z, 0-9 i .,-_';
$wb['ssl_organisation_error_regex'] = 'Nieprawidłowa organizacja SSL. Dozwolone znaki: a-z, 0-9 i .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Nieprawidłowa jednostka SSL. Dozwolone znaki: a-z, 0-9 i .,-_';
$wb['ssl_country_error_regex'] = 'Nieprawidłowy kraj SSL. Dozwolone znaki: a-z, 0-9 i .,-_';
$wb['limit_traffic_quota_free_txt'] = 'Maks. dostępny limit transferu';
$wb['redirect_error_regex'] = 'Nieprawidłowa ścieżka przekierowania. Przykładowe prawidłowe przekierowania: /test/ lub http://www.domena.pl/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Limit transferu został przekroczony';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Login do statystyk';
$wb['stats_type_txt'] = 'Rodzaj statystyk';
$wb['custom_php_ini_txt'] = 'Własne ustawienia php.ini';
$wb['none_txt'] = 'Brak';
$wb['disabled_txt'] = 'Wyłączone';
$wb['no_redirect_txt'] = 'Bez przekierowania';
$wb['no_flag_txt'] = 'Bez flagi';
$wb['save_certificate_txt'] = 'Zapisz certyfikat';
$wb['create_certificate_txt'] = 'Utwórz certyfikat';
$wb['delete_certificate_txt'] = 'Usuń certyfikat';
$wb['nginx_directives_txt'] = 'Dyrektywy nginx';
$wb['seo_redirect_txt'] = 'Przekierowanie SEO';
$wb['non_www_to_www_txt'] = 'bez-www -> www';
$wb['www_to_non_www_txt'] = 'www -> bez-www';
$wb['php_fpm_use_socket_txt'] = 'Użyj gniazda dla PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI dla SSL nie jest aktywowane dla tego serwera. Możesz włączyć tylko jeden certyfikat SSL dla jednego adresu IP.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Wartości ustawień PHP-FPM pm muszą być następujące: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children musi być dodatnią wartością całkowitą.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers musi być dodatnią wartością całkowitą.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers musi być dodatnią wartością całkowitą.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers musi być dodatnią wartością całkowitą.';
$wb['hd_quota_error_regex'] = 'Limit dyski jest nieprawidłowy';
$wb['traffic_quota_error_regex'] = 'Limit transferu jest nieprawidłowy';
$wb['fastcgi_php_version_txt'] = 'Wersja PHP';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout musi być dodatnią wartością całkowitą.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests musi być wartością całkowitą >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Pamiętaj że musisz mieć wersję PHP >= 5.3.9 aby używać ondemand process manager. W przypadku starszej wersji PHP nie będzie działać w ogóle!';
$wb['generate_password_txt'] = 'Generuj hasło';
$wb['repeat_password_txt'] = 'Powtórz hasło';
$wb['password_mismatch_txt'] = 'Hasła nie pasują do siebie';
$wb['password_match_txt'] = 'Hasła pasują do siebie';
$wb['available_php_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw PHP:';
$wb['available_apache_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw Apache:';
$wb['available_nginx_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw nginx:';
$wb['proxy_directives_txt'] = 'Dyrektywy Proxy';
$wb['available_proxy_directive_snippets_txt'] = 'Dostępne zestawy dyrektyw Proxy:';
?>
interface/web/sites/lib/lang/pl_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias domeny';
$wb['active_txt'] = 'Aktywny';
$wb['server_id_txt'] = 'Serwer';
$wb['parent_domain_id_txt'] = 'Strona www';
$wb['domain_txt'] = 'Alias domeny';
$wb['add_new_record_txt'] = 'Dodaj nowy alias domeny';
?>
interface/web/sites/lib/lang/pt_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/pt_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Domínio Alias';
$wb['active_txt'] = 'Activo';
$wb['server_id_txt'] = 'Servidor';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Domínio Alias';
$wb['add_new_record_txt'] = 'Adicionar Alias de Domínio';
?>
interface/web/sites/lib/lang/ro_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/ro_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Active';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Adauga un nou  aliasdomain';
?>
interface/web/sites/lib/lang/ru_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/ru_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Доменные алиасы';
$wb['active_txt'] = 'Активен?';
$wb['server_id_txt'] = 'Сервер';
$wb['parent_domain_id_txt'] = 'Web-сайт';
$wb['domain_txt'] = 'Доменный алиас';
$wb['add_new_record_txt'] = 'Добавить новый алиас';
?>
interface/web/sites/lib/lang/se_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/se_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Active';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Website';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Add new aliasdomain';
?>
interface/web/sites/lib/lang/sk_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/sk_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Alias doména';
$wb['active_txt'] = 'Aktívne';
$wb['server_id_txt'] = 'Server';
$wb['parent_domain_id_txt'] = 'Webstránky';
$wb['domain_txt'] = 'Alias doména';
$wb['add_new_record_txt'] = 'Pridať novú alias doménu';
?>
interface/web/sites/lib/lang/tr_web_vhost_aliasdomain.lng
New file
@@ -0,0 +1,118 @@
<?php
$wb['parent_domain_id_txt'] = 'Parent Website';
$wb['web_folder_txt'] = 'Web folder';
$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
$wb['backup_interval_txt'] = 'Backup interval';
$wb['backup_copies_txt'] = 'Number of backup copies';
$wb['ssl_state_txt'] = 'State';
$wb['ssl_locality_txt'] = 'Locality';
$wb['ssl_organisation_txt'] = 'Organisation';
$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
$wb['ssl_country_txt'] = 'Country';
$wb['ssl_key_txt'] = 'SSL Key';
$wb['ssl_request_txt'] = 'SSL Request';
$wb['ssl_cert_txt'] = 'SSL Certificate';
$wb['ssl_bundle_txt'] = 'SSL Bundle';
$wb['ssl_action_txt'] = 'SSL Action';
$wb['ssl_domain_txt'] = 'SSL Domain';
$wb['server_id_txt'] = 'Server';
$wb['domain_txt'] = 'Domain';
$wb['host_txt'] = 'Hostname';
$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
$wb['type_txt'] = 'Type';
$wb['redirect_type_txt'] = 'Redirect Type';
$wb['redirect_path_txt'] = 'Redirect Path';
$wb['active_txt'] = 'Active';
$wb['document_root_txt'] = 'Documentroot';
$wb['system_user_txt'] = 'Linux User';
$wb['system_group_txt'] = 'Linux Group';
$wb['ip_address_txt'] = 'IPv4-Address';
$wb['ipv6_address_txt'] = 'IPv6-Address';
$wb['vhost_type_txt'] = 'VHost Type';
$wb['hd_quota_txt'] = 'Harddisk Quota';
$wb['traffic_quota_txt'] = 'Traffic Quota';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
$wb['apache_directives_txt'] = 'Apache Directives';
$wb['domain_error_empty'] = 'Domain is empty.';
$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
$wb['domain_error_regex'] = 'Domain name invalid.';
$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
$wb['error_ssl_state_empty'] = 'SSL State is empty.';
$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
$wb['client_group_id_txt'] = 'Client';
$wb['stats_password_txt'] = 'Webstatistics password';
$wb['allow_override_txt'] = 'Apache AllowOverride';
$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
$wb['php_open_basedir_txt'] = 'PHP open_basedir';
$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
$wb['ruby_txt'] = 'Ruby';
$wb['stats_user_txt'] = 'Webstatistics username';
$wb['stats_type_txt'] = 'Webstatistics program';
$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
$wb['none_txt'] = 'None';
$wb['disabled_txt'] = 'Disabled';
$wb['no_redirect_txt'] = 'No redirect';
$wb['no_flag_txt'] = 'No flag';
$wb['save_certificate_txt'] = 'Save certificate';
$wb['create_certificate_txt'] = 'Create certificate';
$wb['delete_certificate_txt'] = 'Delete certificate';
$wb['nginx_directives_txt'] = 'nginx Directives';
$wb['seo_redirect_txt'] = 'SEO Redirect';
$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
$wb['python_txt'] = 'Python';
$wb['perl_txt'] = 'Perl';
$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
$wb['fastcgi_php_version_txt'] = 'PHP Version';
$wb['pm_txt'] = 'PHP-FPM Process Manager';
$wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
$wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
$wb['generate_password_txt'] = 'Generate Password';
$wb['repeat_password_txt'] = 'Repeat Password';
$wb['password_mismatch_txt'] = 'The passwords do not match.';
$wb['password_match_txt'] = 'The passwords do match.';
$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
$wb['proxy_directives_txt'] = 'Proxy Directives';
$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
?>
interface/web/sites/lib/lang/tr_web_vhost_aliasdomain_list.lng
New file
@@ -0,0 +1,8 @@
<?php
$wb['list_head_txt'] = 'Aliasdomain';
$wb['active_txt'] = 'Aktif';
$wb['server_id_txt'] = 'Sunucu';
$wb['parent_domain_id_txt'] = 'Websitesi';
$wb['domain_txt'] = 'Aliasdomain';
$wb['add_new_record_txt'] = 'Yeni Aliasdomain';
?>
interface/web/sites/lib/module.conf.php
@@ -43,6 +43,16 @@
        'target'  => 'content',
        'link'    => 'sites/web_aliasdomain_list.php',
        'html_id' => 'aliasdomain_list');
    // read web config
    $app->uses('getconf');
    $sys_config = $app->getconf->get_global_config('sites');
    if($sys_config['vhost_aliasdomains'] == 'y') {
        $items[] = array(   'title'  => "Aliasdomain (Vhost)",
                'target'  => 'content',
                'link'      => 'sites/web_vhost_aliasdomain_list.php',
                'html_id'   => 'subdomain_list');
    }
}
if(count($items))
interface/web/sites/list/web_folder.list.php
@@ -82,7 +82,7 @@
    '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",
        'querystring' => "SELECT domain_id,domain FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND {AUTHSQL} ORDER BY domain",
        'keyfield'=> 'domain_id',
        'valuefield'=> 'domain'
    ),
interface/web/sites/list/web_folder.list.php.bak
New file
@@ -0,0 +1,102 @@
<?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'  => "");
?>
interface/web/sites/templates/web_sites_stats_list.htm
@@ -30,10 +30,10 @@
                <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_this_month"><a href="#" onclick="loadContent('sites/web_<tmpl_if name='type' op='==' value='vhostsubdomain'>vhost_sub</tmpl_if><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_month"} MB</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><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_month"} MB</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><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="this_year"} MB</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><tmpl_if name='type' op='==' value='vhostalias'>vhost_alias</tmpl_if>domain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="last_year"} MB</a></td>
                        <td class="tbl_col_buttons"></td>
                    </tr>
                </tmpl_loop>
interface/web/sites/templates/web_sites_stats_list.htm.bak
New file
@@ -0,0 +1,63 @@
<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>
interface/web/sites/templates/web_vhost_aliasdomain_advanced.htm
New file
@@ -0,0 +1,157 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <input name="document_root" id="document_root" value="{tmpl_var name='document_root'}" size="30" maxlength="255" type="hidden" class="textInput" />
            <div class="ctrlHolder">
                <label for="system_user">{tmpl_var name='system_user_txt'}</label>
                <label for="system_user">{tmpl_var name='system_user'}</label>
                <input name="system_user" id="system_user" value="{tmpl_var name='system_user'}" type="hidden" />
            </div>
            <div class="ctrlHolder">
                <label for="system_group">{tmpl_var name='system_group_txt'}</label>
                <label for="system_group">{tmpl_var name='system_group'}</label>
                <input name="system_group" id="system_group" value="{tmpl_var name='system_group'}" type="hidden" />
            </div>
            <div class="ctrlHolder apache">
                <label for="allow_override">{tmpl_var name='allow_override_txt'}</label>
                <input name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="phpfpm">
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='php_fpm_use_socket_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='php_fpm_use_socket'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <label for="pm">{tmpl_var name='pm_txt'}</label>
                    <select name="pm" id="pm" class="selectInput">
                        {tmpl_var name='pm'}
                    </select>
                </div>
                <div class="ctrlHolder pm_ondemand" style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                    {tmpl_var name='pm_ondemand_hint_txt'}
                </div>
                <div class="ctrlHolder">
                    <label for="pm_max_children">{tmpl_var name='pm_max_children_txt'}</label>
                    <input name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_start_servers">{tmpl_var name='pm_start_servers_txt'}</label>
                    <input name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_min_spare_servers">{tmpl_var name='pm_min_spare_servers_txt'}</label>
                    <input name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_max_spare_servers">{tmpl_var name='pm_max_spare_servers_txt'}</label>
                    <input name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_ondemand">
                    <label for="pm_process_idle_timeout">{tmpl_var name='pm_process_idle_timeout_txt'}</label>
                    <input name="pm_process_idle_timeout" id="pm_process_idle_timeout" value="{tmpl_var name='pm_process_idle_timeout'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />&nbsp;s
                </div>
                <div class="ctrlHolder">
                    <label for="pm_max_requests">{tmpl_var name='pm_max_requests_txt'}</label>
                    <input name="pm_max_requests" id="pm_max_requests" value="{tmpl_var name='pm_max_requests'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />
                </div>
            </div>
            <div class="ctrlHolder">
                <label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
                <input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="30" type="text" class="textInput"  style="width:400px;" />
            </div>
            <div class="ctrlHolder">
                <label for="custom_php_ini">{tmpl_var name='custom_php_ini_txt'}</label>
                <textarea name="custom_php_ini" id="custom_php_ini" rows='10' cols='50' style="width:400px;">{tmpl_var name='custom_php_ini'}</textarea>&nbsp;<b>{tmpl_var name="available_php_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="php_directive_snippets_txt"}
            </div>
            <div class="ctrlHolder apache">
                <label for="apache_directives">{tmpl_var name='apache_directives_txt'}</label>
                <textarea name="apache_directives" id="apache_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='apache_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_apache_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="apache_directive_snippets_txt"}
            </div>
            <div class="ctrlHolder nginx">
                <label for="nginx_directives">{tmpl_var name='nginx_directives_txt'}</label>
                <textarea name="nginx_directives" id="nginx_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='nginx_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_nginx_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="nginx_directive_snippets_txt"}<br>----<br><b>&nbsp;{tmpl_var name='variables_txt'}:</b> <a href="javascript:void(0);" class="addPlaceholder">{DOCROOT}</a>, <a href="javascript:void(0);" class="addPlaceholder">{FASTCGIPASS}</a>
            </div>
            <div class="ctrlHolder proxy">
                <label for="proxy_directives">{tmpl_var name='proxy_directives_txt'}</label>
                <textarea name="proxy_directives" id="proxy_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var webId = jQuery('input[name="id"]').val();
    var serverId;
    getServerId();
    adjustForm();
    var pm = jQuery('#pm').val();
    pmMode(pm);
    jQuery('#pm').change(function(){
        pm = jQuery(this).val();
        pmMode(pm);
    });
    function pmMode(pm){
        switch(pm){
            case "static":
                jQuery('.pm_dynamic').add('.pm_ondemand').hide();
                jQuery('.pm_static').show();
                break;
            case "dynamic":
                jQuery('.pm_static').add('.pm_ondemand').hide();
                jQuery('.pm_dynamic').show();
                break;
            case "ondemand":
                jQuery('.pm_static').add('.pm_dynamic').hide();
                jQuery('.pm_ondemand').show();
                break;
        }
    }
    function getServerId(){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
            serverId = data.serverid;
        });
    }
    function adjustForm(){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            if(data.servertype == "nginx"){
                jQuery('.nginx').show();
                jQuery('.apache').hide();
            } else {
                jQuery('.nginx').hide();
                jQuery('.apache').show();
            }
        });
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getphptype"}, function(data) {
            if(data.phptype == "php-fpm"){
                jQuery('.phpfpm').show();
            } else {
                jQuery('.phpfpm').hide();
            }
        });
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) {
            if(data.redirecttype == "proxy"){
                jQuery('.proxy').show();
            } else {
                jQuery('.proxy').hide();
            }
        });
    }
</script>
interface/web/sites/templates/web_vhost_aliasdomain_backup.htm
New file
@@ -0,0 +1,36 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels"><legend>Backup</legend>
            <div class="ctrlHolder">
                <label for="backup_interval">{tmpl_var name='backup_interval_txt'}</label>
                <select name="backup_interval" id="backup_interval" class="selectInput">
                    {tmpl_var name='backup_interval'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="backup_copies">{tmpl_var name='backup_copies_txt'}</label>
                <select name="backup_copies" id="backup_copies" class="selectInput">
                    {tmpl_var name='backup_copies'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="backup_excludes">{tmpl_var name='backup_excludes_txt'}</label>
                <input name="backup_excludes" id="backup_excludes" value="{tmpl_var name='backup_excludes'}" size="30" type="text" class="textInput" />&nbsp;{tmpl_var name='backup_excludes_note_txt'}
            </div>
        </fieldset>
        {tmpl_var name='backup_records'}
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/sites/templates/web_vhost_aliasdomain_edit.htm
New file
@@ -0,0 +1,234 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <input type="hidden" name="server_id" id="server_id" value="{tmpl_var name='server_id_value'}" />
            <tmpl_if name="domain_option">
            <div class="ctrlHolder">
                <label for="parent_domain_id">{tmpl_var name='parent_domain_id_txt'}</label>
                <select id="parent_domain_id" name="parent_domain_id" class="selectInput formLengthHalf">{tmpl_var name='parent_domain_id'}</select>
            </div>
            </tmpl_if>
            <div class="ctrlHolder">
                <label for="domain">{tmpl_var name='host_txt'}</label>
                <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
            </div>
            <tmpl_if name="domain_option">
            <div class="ctrlHolder">
                <label for="sel_domain">{tmpl_var name='domain_txt'}</label>
                    <select name="sel_domain" id="sel_domain" class="selectInput">
                        {tmpl_var name='domain_option'}
                    </select>
            </div>
            <tmpl_else>
            <div class="ctrlHolder">
                <label for="parent_domain_id">{tmpl_var name='domain_txt'}</label>
                <select id="parent_domain_id" name="parent_domain_id" class="selectInput formLengthHalf">{tmpl_var name='parent_domain_id'}</select>
            </div>
            </tmpl_if>
            <div class="ctrlHolder">
                <label for="web_folder">{tmpl_var name='web_folder_txt'}</label>
                <input name="web_folder" id="web_folder" value="{tmpl_var name='web_folder'}" size="30" maxlength="100" type="text" class="textInput formLengthHalf"<tmpl_if name='fixed_folder' op='==' value='y'> readonly="readonly"</tmpl_if> />
            </div>
            <div class="ctrlHolder">
                <label for="traffic_quota">{tmpl_var name='traffic_quota_txt'}</label>
                <input name="traffic_quota" id="traffic_quota" value="{tmpl_var name='traffic_quota'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" />&nbsp;MB <tmpl_var name='traffic_quota_exceeded_txt'>
            </div>
            <tmpl_if name="limit_cgi" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='cgi_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='cgi'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_ssi" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='ssi_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ssi'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_perl" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='perl_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='perl'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_ruby" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='ruby_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ruby'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_python" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='python_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='python'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="force_suexec" op="==" value="n"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='suexec_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='suexec'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_hterror" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='errordocs_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='errordocs'}
                </div>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
                <select name="subdomain" id="subdomain" class="selectInput formLengthHalf">
                    {tmpl_var name='subdomain'}
                </select>
            </div>
            <tmpl_if name="limit_ssl" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='ssl_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ssl'}
                </div>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="php">{tmpl_var name='php_txt'}</label>
                <select name="php" id="php" class="selectInput formLengthHalf">
                    {tmpl_var name='php'}
                </select>
            </div>
            <div class="ctrlHolder fastcgi_php_version">
                <label for="fastcgi_php_version">{tmpl_var name='fastcgi_php_version_txt'}</label>
                <select name="fastcgi_php_version" id="fastcgi_php_version" class="selectInput formLengthHalf">
                    {tmpl_var name='fastcgi_php_version'}
                </select>
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='active_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='active'}
                </div>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button id="dom-edit-submit" class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var serverId;
    var clientGroupId = jQuery('#client_group_id').val();
    var serverIdDisabled = jQuery('#server_id_disabled').val();
    if(serverIdDisabled > 0){
        serverId = serverIdDisabled;
    } else {
        serverId = jQuery('#server_id').val();
        jQuery('#server_id').change(function(){
            serverId = $(this).val();
            adjustForm();
            reloadWebIP();
            reloadFastcgiPHPVersions();
        });
    }
    reloadServerId(true);
    jQuery('#client_group_id').change(function(){
        clientGroupId = $(this).val();
        reloadWebIP();
    });
    if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm'){
        jQuery('.fastcgi_php_version:hidden').show();
    } else {
        jQuery('.fastcgi_php_version:visible').hide();
    }
    jQuery('#php').change(function(){
        reloadFastcgiPHPVersions();
        if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm'){
            jQuery('.fastcgi_php_version:hidden').show();
        } else {
            jQuery('.fastcgi_php_version:visible').hide();
        }
    });
    jQuery('#parent_domain_id').change(function() {
        reloadServerId(false);
    });
    function reloadServerId(noFormChange) {
        var parentWebId = jQuery('#parent_domain_id').val();
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : parentWebId, type : "getserverid"}, function(data) {
            if(data.serverid) serverId = data.serverid;
            adjustForm(noFormChange);
            if(noFormChange) reloadFastcgiPHPVersions(noFormChange);
        });
    }
    function adjustForm(noFormChange){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            if(data.servertype == "nginx"){
                var selected = jQuery('#php').val();
                jQuery('.apache').hide();
                if(selected != "no" && selected != "php-fpm") {
                    jQuery('#php option[value="php-fpm"]').attr('selected', 'selected').val('php-fpm');
                }
                jQuery('#php option[value="fast-cgi"]').hide();
                jQuery('#php option[value="cgi"]').hide();
                jQuery('#php option[value="mod"]').hide();
                jQuery('#php option[value="suphp"]').hide();
            } else {
                jQuery('.apache').show();
                jQuery('#php option[value="fast-cgi"]').show();
                jQuery('#php option[value="cgi"]').show();
                jQuery('#php option[value="mod"]').show();
                jQuery('#php option[value="suphp"]').show();
            }
            if(noFormChange) {
                resetFormChanged();
                jQuery('#php').addClass('no-page-form-change').change();
                jQuery('#php').removeClass('no-page-form-change');
            } else {
                jQuery('#php').change();
            }
        });
    }
    function reloadWebIP() {
        loadOptionInto('ip_address','sites/ajax_get_ip.php?ip_type=IPv4&server_id='+serverId+'&client_group_id='+clientGroupId);
        loadOptionInto('ipv6_address','sites/ajax_get_ip.php?ip_type=IPv6&server_id='+serverId+'&client_group_id='+clientGroupId);
    }
    function reloadFastcgiPHPVersions(noFormChange) {
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi"}, function(data) {
            var options = '<option value="">Default</option>';
            var phpfastcgiselected = '';
            $.each(data, function(key, val) {
                if($('#fastcgi_php_version').val() == key){
                    phpfastcgiselected = ' selected="selected"';
                } else {
                    phpfastcgiselected = '';
                }
                options += '<option value="'+key+'"'+phpfastcgiselected+'>'+val+'</option>';
            });
            $('#fastcgi_php_version').html(options).change();
            if(noFormChange) resetFormChanged();
        });
    }
    <tmpl_if name="readonly_tab">
        jQuery('div.panel_web_domain').find('fieldset').find('input,select,button').bind('click mousedown', function(e) { e.preventDefault(); }).focus(function() { $(this).blur(); });
        jQuery('#dom-edit-submit').click(function() {
               submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');
        });
    <tmpl_else>
        jQuery('#dom-edit-submit').click(function() {
            submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');
        });
    </tmpl_if>
</script>
interface/web/sites/templates/web_vhost_aliasdomain_list.htm
New file
@@ -0,0 +1,79 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_list_web_aliasdomain">
    <div class="pnl_toolsarea">
        <tmpl_if name='datalog_changes_count' op='>' value='0'>
        <div>
            <div class="systemmonitor-state state-info">
                <div class="status"></div>
                <div class="statusMsg">
                    {tmpl_var name="datalog_changes_txt"}
                    <ul>
                    <tmpl_loop name="datalog_changes">
                        <li><strong>{tmpl_var name="text"}:</strong> {tmpl_var name="count"}</li>
                    </tmpl_loop>
                    </ul>
                    {tmpl_var name="datalog_changes_end_txt"}
                </div>
            </div><br />
        </div>
        </tmpl_if>
        <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
            <div class="buttons">
                <button class="button iconstxt icoAdd" type="button" onclick="loadContent('sites/web_vhost_aliasdomain_edit.php');">
                    <span>{tmpl_var name="add_new_record_txt"}</span>
                </button>
            </div>
        </fieldset>
    </div>
    <div class="pnl_listarea">
        <fieldset><legend><tmpl_var name="list_head_txt"></legend>
            <table class="list">
                <thead>
                    <tr>
                        <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
                        <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
                        <th class="tbl_col_parent_domain_id" scope="col"><tmpl_var name="parent_domain_id_txt"></th>
                        <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
                        <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th>
                    </tr>
                    <tr>
                        <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
                        <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
                        <td class="tbl_col_parent_domain_id"><select name="search_parent_domain_id">{tmpl_var name='search_parent_domain_id'}</select></td>
                        <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></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_vhost_aliasdomain_list.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_active"><a href="#" onclick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
                            <td class="tbl_col_server_id"><a href="#" onclick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
                            <td class="tbl_col_parent_domain_id"><a href="#" onclick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="parent_domain_id"}</a></td>
                            <td class="tbl_col_domain"><a href="#" onclick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
                            <td class="tbl_col_buttons">
                                <a class="button icons16 icoDelete" href="javascript: del_record('sites/web_vhost_aliasdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
                            </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="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                        </tr>
                    </tmpl_unless>
                </tbody>
                <tfoot>
                    <tr>
                    <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
                    </tr>
                </tfoot>
            </table>
        </fieldset>
    </div>
</div>
interface/web/sites/templates/web_vhost_aliasdomain_redirect.htm
New file
@@ -0,0 +1,84 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
                <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
                    {tmpl_var name='redirect_type'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
                <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="seo_redirect">{tmpl_var name='seo_redirect_txt'}</label>
                <select name="seo_redirect" id="seo_redirect" class="selectInput formLengthHalf">
                    {tmpl_var name='seo_redirect'}
                </select>
            </div>
            <div class="ctrlHolder nginx">
                <label for="rewrite_rules">{tmpl_var name='rewrite_rules_txt'}</label>
                <textarea name="rewrite_rules" id="rewrite_rules" rows='10' cols='50' style="width:400px;">{tmpl_var name='rewrite_rules'}</textarea>&nbsp;<b>{tmpl_var name="allowed_rewrite_rule_directives_txt"}</b><br><br>&nbsp;break<br>&nbsp;if<br>&nbsp;return<br>&nbsp;rewrite<br>&nbsp;set<br><br>&nbsp;<a href="http://wiki.nginx.org/HttpRewriteModule" target="_blank">http://wiki.nginx.org/HttpRewriteModule</a>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var webId = jQuery('input[name="id"]').val();
    var serverId;
    getServerId(webId);
    function getServerId(webId){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
            serverId = data.serverid;
            adjustForm(serverId);
        });
    }
    function adjustForm(serverId){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            var selected = jQuery('#redirect_type').val();
            if(data.servertype == "nginx"){
                jQuery("#redirect_type option[value='R']").attr('disabled','disabled');
                jQuery('#redirect_type option[value="L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R,L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R=301,L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R"]').hide();
                jQuery('#redirect_type option[value="L"]').hide();
                jQuery('#redirect_type option[value="R,L"]').hide();
                jQuery('#redirect_type option[value="R=301,L"]').hide();
                if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent" && selected != "proxy") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
                jQuery('.nginx').show();
            } else {
                jQuery('#redirect_type option[value="last"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="break"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="redirect"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="permanent"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="proxy"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="last"]').hide();
                jQuery('#redirect_type option[value="break"]').hide();
                jQuery('#redirect_type option[value="redirect"]').hide();
                jQuery('#redirect_type option[value="permanent"]').hide();
                jQuery('#redirect_type option[value="proxy"]').hide();
                if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
                jQuery('.nginx').hide();
            }
        });
    }
</script>
interface/web/sites/templates/web_vhost_aliasdomain_ssl.htm
New file
@@ -0,0 +1,68 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <label for="ssl_state">{tmpl_var name='ssl_state_txt'}</label>
                <input name="ssl_state" id="ssl_state" value="{tmpl_var name='ssl_state'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_locality">{tmpl_var name='ssl_locality_txt'}</label>
                <input name="ssl_locality" id="ssl_locality" value="{tmpl_var name='ssl_locality'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_organisation">{tmpl_var name='ssl_organisation_txt'}</label>
                <input name="ssl_organisation" id="ssl_organisation" value="{tmpl_var name='ssl_organisation'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_organisation_unit">{tmpl_var name='ssl_organisation_unit_txt'}</label>
                <input name="ssl_organisation_unit" id="ssl_organisation_unit" value="{tmpl_var name='ssl_organisation_unit'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_country">{tmpl_var name='ssl_country_txt'}</label>
                <select name="ssl_country" id="ssl_country" class="selectInput flags">
                    {tmpl_var name='ssl_country'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="client_group_id">{tmpl_var name='ssl_domain_txt'}</label>
                <select name="ssl_domain" id="ssl_domain" class="selectInput">
                    {tmpl_var name='ssl_domain'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_request">{tmpl_var name='ssl_key_txt'}</label>
                <textarea name="ssl_key" id="ssl_key" rows='10' cols='30'>{tmpl_var name='ssl_key'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_request">{tmpl_var name='ssl_request_txt'}</label>
                <textarea name="ssl_request" id="ssl_request" rows='10' cols='30'>{tmpl_var name='ssl_request'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_cert">{tmpl_var name='ssl_cert_txt'}</label>
                <textarea name="ssl_cert" id="ssl_cert" rows='10' cols='30'>{tmpl_var name='ssl_cert'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_bundle">{tmpl_var name='ssl_bundle_txt'}</label>
                <textarea name="ssl_bundle" id="ssl_bundle" rows='10' cols='30'>{tmpl_var name='ssl_bundle'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_action">{tmpl_var name='ssl_action_txt'}</label>
                <select name="ssl_action" id="ssl_action" class="selectInput formLengthHalf">
                    {tmpl_var name='ssl_action'}
                </select>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/sites/templates/web_vhost_aliasdomain_stats.htm
New file
@@ -0,0 +1,37 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='stats_user_txt'}</p><p class="value">admin</p>
            </div>
            <div class="ctrlHolder">
                <label for="stats_password">{tmpl_var name='stats_password_txt'}</label>
                <input name="stats_password" id="stats_password" value="{tmpl_var name='stats_password'}" size="15" maxlength="100" type="password" class="textInput" style="width:100px;" onkeyup="checkPassMatch('stats_password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onclick="generatePassword('stats_password','repeat_password');">{tmpl_var name='generate_password_txt'}</a>
            </div>
            <div class="ctrlHolder">
                <label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
                <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('stats_password','repeat_password');" />
            </div>
            <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
            <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
            <div class="ctrlHolder">
                <label for="stats_type">{tmpl_var name='stats_type_txt'}</label>
                <select name="stats_type" id="stats_type" class="selectInput" >
                    {tmpl_var name='stats_type'}
                </select>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/sites/web_aliasdomain_edit.php
@@ -57,10 +57,10 @@
        // we will check only users, not admins
        if($_SESSION["s"]["user"]["typ"] == 'user') {
            if(!$app->tform->checkClientLimit('limit_web_aliasdomain', "type = 'alias'")) {
            if(!$app->tform->checkClientLimit('limit_web_aliasdomain',"(type = 'alias' OR type = 'vhostalias')")) {
                $app->error($app->tform->wordbook["limit_web_aliasdomain_txt"]);
            }
            if(!$app->tform->checkResellerLimit('limit_web_aliasdomain', "type = 'alias'")) {
            if(!$app->tform->checkResellerLimit('limit_web_aliasdomain',"(type = 'alias' OR type = 'vhostalias')")) {
                $app->error('Reseller: '.$app->tform->wordbook["limit_web_aliasdomain_txt"]);
            }
        }
interface/web/sites/web_aliasdomain_edit.php.bak
New file
@@ -0,0 +1,191 @@
<?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();
?>
interface/web/sites/web_domain_edit.php
@@ -992,7 +992,7 @@
            $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') {
                if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') {
                    $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);
@@ -1017,7 +1017,7 @@
        //* 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"])."'");
            $records = $app->db->queryAllRecords("SELECT domain_id,domain FROM web_domain WHERE (type = 'subdomain' OR type = 'vhostsubdomain' OR type = 'vhostalias') 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']);
@@ -1077,9 +1077,9 @@
            unset($backup_interval);
        }
        //* Change vhost subdomain ip/ipv6 if domain ip/ipv6 has changed
        //* Change vhost subdomain and alias 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);
            $records = $app->db->queryAllRecords("SELECT domain_id FROM web_domain WHERE (type = 'vhostsubdomain' OR type = 'vhostalias') 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']);
            }
interface/web/sites/web_domain_edit.php.bak
New file
@@ -0,0 +1,1114 @@
<?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();
?>
interface/web/sites/web_sites_stats.php
@@ -180,7 +180,7 @@
}
$list = new list_action;
$list->SQLExtWhere = "(web_domain.type = 'vhost' or web_domain.type = 'vhostsubdomain')";
$list->SQLExtWhere = "(web_domain.type = 'vhost' or web_domain.type = 'vhostsubdomain' or web_domain.type = 'vhostalias')";
$list->SQLOrderBy = 'ORDER BY web_domain.domain';
$list->onLoad();
interface/web/sites/web_sites_stats.php.bak
New file
@@ -0,0 +1,188 @@
<?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();
?>
interface/web/sites/web_vhost_aliasdomain_del.php
New file
@@ -0,0 +1,73 @@
<?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
******************************************/
$list_def_file = "list/web_vhost_aliasdomain.list.php";
$tform_def_file = "form/web_vhost_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');
$app->uses('tpl,tform,tform_actions');
$app->load("tform_actions");
class page_action extends tform_actions {
    function onBeforeDelete() {
        global $app; $conf;
        //* Delete all web folders
        $records = $app->db->queryAllRecords("SELECT web_folder_id FROM web_folder WHERE parent_domain_id = '".$app->functions->intval($this->id)."'");
        foreach($records as $rec) {
            //* Delete all web folder users
            $records2 = $app->db->queryAllRecords("SELECT web_folder_user_id FROM web_folder_user WHERE web_folder_id = '".$app->functions->intval($rec['web_folder_id'])."'");
            foreach($records2 as $rec2) {
                $app->db->datalogDelete('web_folder_user', 'web_folder_user_id', $rec2['web_folder_user_id']);
            }
            $app->db->datalogDelete('web_folder', 'web_folder_id', $rec['web_folder_id']);
        }
    }
}
$page = new page_action;
$page->onDelete();
?>
interface/web/sites/web_vhost_aliasdomain_edit.php
New file
@@ -0,0 +1,666 @@
<?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_vhost_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 {
    //* 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_aliasdomain', "(type = 'alias' OR type = 'vhostalias')")) {
                $app->error($app->tform->wordbook["limit_web_aliasdomain_txt"]);
            }
            if(!$app->tform->checkResellerLimit('limit_web_aliasdomain', "(type = 'alias' OR type = 'vhostalias')")) {
                $app->error('Reseller: '.$app->tform->wordbook["limit_web_aliasdomain_txt"]);
            }
        }
        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');
        $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]));
        //* 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 = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT client.limit_web_aliasdomain, client.default_webserver, 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
            $web_config = $app->getconf->get_server_config($parent_domain['server_id'], 'web');
            //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 = ".$app->functions->intval($parent_domain['server_id'])." 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 = ".$app->functions->intval($parent_domain['server_id'])." 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_aliasdomain, 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
            $web_config = $app->getconf->get_server_config($parent_domain['server_id'], 'web');
            //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 = ".$app->functions->intval($parent_domain['server_id'])." 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 = ".$app->functions->intval($parent_domain['server_id'])." 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]);
            $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;">'.$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;">'.$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;">'.$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;">'.$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 {
            //* get global web config
            $web_config = $app->getconf->get_server_config($parent_domain['server_id'], 'web');
            //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 = " . $app->functions->intval($parent_domain['server_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 = " . $app->functions->intval($parent_domain['server_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);
            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;">'.$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;">'.$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;">'.$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;">'.$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"]);
        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";
            }
        }
        if($this->id > 0) {
            $app->tpl->setVar('fixed_folder', 'y');
            $app->tpl->setVar('server_id_value', $parent_domain['server_id']);
        } else {
            $app->tpl->setVar('fixed_folder', 'n');
            $app->tpl->setVar('server_id_value', $parent_domain['server_id']);
        }
        $app->tpl->setVar("ssl_domain", $ssl_domain_select);
        unset($ssl_domain_select);
        unset($ssl_domains);
        unset($ssl_domain);
        $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);
        $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 = '';
            $selected_domain = '';
            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'] == substr($this->dataRecord["domain"], -strlen($domain['domain']) - 1)) {
                        $domain_select .= " selected";
                        $selected_domain = $domain['domain'];
                    }
                    $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);
            $this->dataRecord['domain'] = substr($this->dataRecord["domain"], 0, strlen($this->dataRecord['domain']) - strlen($selected_domain) - 1);
        } else {
            // remove the parent domain part of the domain name before we show it in the text field.
            $this->dataRecord["domain"] = str_replace('.'.$parent_domain["domain"], '', $this->dataRecord["domain"]);
        }
        $app->tpl->setVar("domain", $this->dataRecord["domain"]);
        parent::onShowEnd();
    }
    function onSubmit() {
        global $app, $conf;
        // Get the record of the parent domain
        if(!@$this->dataRecord["parent_domain_id"] && $this->id) {
            $tmp = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
            if($tmp) $this->dataRecord["parent_domain_id"] = $tmp['parent_domain_id'];
            unset($tmp);
        }
        $parent_domain = $app->db->queryOneRecord("select * FROM web_domain WHERE domain_id = ".$app->functions->intval(@$this->dataRecord["parent_domain_id"]) . " AND ".$app->tform->getAuthSQL('r'));
        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"] = 'vhostalias';
        $this->dataRecord["server_id"] = $parent_domain["server_id"];
        $this->dataRecord["ip_address"] = $parent_domain["ip_address"];
        $this->dataRecord["ipv6_address"] = $parent_domain["ipv6_address"];
        $this->dataRecord["client_group_id"] = $parent_domain["client_group_id"];
        $this->dataRecord["vhost_type"] = 'name';
        $this->parent_domain_record = $parent_domain;
        $read_limits = array('limit_cgi', 'limit_ssi', 'limit_perl', 'limit_ruby', 'limit_python', 'force_suexec', 'limit_hterror', 'limit_wildcard', 'limit_ssl');
        if($app->tform->getCurrentTab() == 'domain') {
            /* 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['sel_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;
                }
            } else {
                $this->dataRecord["domain"] = $this->dataRecord["domain"].'.'.$parent_domain["domain"];
            }
            $this->dataRecord['web_folder'] = strtolower($this->dataRecord['web_folder']);
            if(substr($this->dataRecord['web_folder'], 0, 1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 1);
            if(substr($this->dataRecord['web_folder'], -1) === '/') $this->dataRecord['web_folder'] = substr($this->dataRecord['web_folder'], 0, -1);
            $forbidden_folders = array('', 'cgi-bin', 'log', 'private', 'ssl', 'tmp', 'webdav');
            $check_folder = strtolower($this->dataRecord['web_folder']);
            if(substr($check_folder, 0, 1) === '/') $check_folder = substr($check_folder, 1); // strip / at beginning to check against forbidden entries
            if(strpos($check_folder, '/') !== false) $check_folder = substr($check_folder, 0, strpos($check_folder, '/')); // get the first part of the path to check it
            if(in_array($check_folder, $forbidden_folders)) {
                $app->tform->errorMessage .= $app->tform->lng("web_folder_invalid_txt")."<br>";
            }
            // vhostaliasdomains do not have a quota of their own
            $this->dataRecord["hd_quota"] = 0;
            // check for duplicate folder usage
            /*
            $check = $app->db->queryOneRecord("SELECT COUNT(*) as `cnt` FROM `web_domain` WHERE `type` = 'vhostalias' AND `parent_domain_id` = '" . $app->functions->intval($this->dataRecord['parent_domain_id']) . "' AND `web_folder` = '" . $app->db->quote($this->dataRecord['web_folder']) . "' AND `domain_id` != '" . $app->functions->intval($this->id) . "'");
            if($check && $check['cnt'] > 0) {
                $app->tform->errorMessage .= $app->tform->lng("web_folder_unique_txt")."<br>";
            }
            */
        } else {
            $this->dataRecord["domain"] = $this->dataRecord["domain"].'.'.$parent_domain["domain"];
        }
        if($_SESSION["s"]["user"]["typ"] != 'admin') {
            // Get the limits of the client
            $client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
            $client = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_aliasdomain, default_webserver, 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");
            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'] != 'n') $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 = $_POST;
            }
            //* 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_aliasdomain, default_webserver, limit_web_quota FROM client WHERE client_id = ".$app->functions->intval($client['parent_client_id']));
                //* 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, `web_folder`, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".$app->functions->intval($this->id));
                $this->dataRecord['web_folder'] = $tmp['web_folder']; // cannot be changed!
                // 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 {
                // Check if the user may add another web_domain
                if($client["limit_web_aliasdomain"] >= 0) {
                    $tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM web_domain WHERE sys_groupid = $client_group_id and (type = 'alias' OR type = 'vhostalias')");
                    if($tmp["number"] >= $client["limit_web_aliasdomain"]) {
                        $app->error($app->tform->wordbook["limit_web_aliasdomain_txt"]);
                    }
                }
            }
        }
        //* make sure that the 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");
        $web_config = $app->getconf->get_server_config($app->functions->intval(isset($this->dataRecord["server_id"]) ? $this->dataRecord["server_id"] : 0), '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;
        // 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');
        //var_dump($this->parent_domain_record, $web_rec);
        // Set the values for document_root, system_user and system_group
        $system_user = $app->db->quote($this->parent_domain_record['system_user']);
        $system_group = $app->db->quote($this->parent_domain_record['system_group']);
        $document_root = $app->db->quote($this->parent_domain_record['document_root']);
        $php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$web_rec['web_folder'], $web_config["php_open_basedir"]);
        $php_open_basedir = str_replace("[website_domain]/web", $web_rec['domain'].'/'.$web_rec['web_folder'], $php_open_basedir);
        $php_open_basedir = str_replace("[website_path]", $document_root, $php_open_basedir);
        $php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir));
        $htaccess_allow_override = $app->db->quote($this->parent_domain_record['allow_override']);
        $sql = "UPDATE web_domain SET sys_groupid = ".$app->functions->intval($this->parent_domain_record['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir'  WHERE domain_id = ".$this->id;
        $app->db->query($sql);
    }
    function onBeforeUpdate () {
        global $app, $conf;
        //* 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;
        // 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');
        // Set the values for document_root, system_user and system_group
        $system_user = $app->db->quote($this->parent_domain_record['system_user']);
        $system_group = $app->db->quote($this->parent_domain_record['system_group']);
        $document_root = $app->db->quote($this->parent_domain_record['document_root']);
        $php_open_basedir = str_replace("[website_path]/web", $document_root.'/'.$web_rec['web_folder'], $web_config["php_open_basedir"]);
        $php_open_basedir = str_replace("[website_domain]/web", $web_rec['domain'].'/'.$web_rec['web_folder'], $php_open_basedir);
        $php_open_basedir = str_replace("[website_path]", $document_root, $php_open_basedir);
        $php_open_basedir = $app->db->quote(str_replace("[website_domain]", $web_rec['domain'], $php_open_basedir));
        $htaccess_allow_override = $app->db->quote($this->parent_domain_record['allow_override']);
        $sql = "UPDATE web_domain SET sys_groupid = ".$app->functions->intval($this->parent_domain_record['sys_groupid']).",system_user = '$system_user', system_group = '$system_group', document_root = '$document_root', allow_override = '$htaccess_allow_override', php_open_basedir = '$php_open_basedir'  WHERE domain_id = ".$this->id;
        $app->db->query($sql);
    }
}
$page = new page_action;
$page->onLoad();
?>
interface/web/sites/web_vhost_aliasdomain_list.php
New file
@@ -0,0 +1,55 @@
<?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.
*/
require_once '../../lib/config.inc.php';
require_once '../../lib/app.inc.php';
/******************************************
* Begin Form configuration
******************************************/
$list_def_file = "list/web_vhost_aliasdomain.list.php";
/******************************************
* End Form configuration
******************************************/
//* Check permissions for module
$app->auth->check_module_permissions('sites');
$app->uses('listform_actions');
// Limit the results to alias domains
$app->listform_actions->SQLExtWhere = "web_domain.type = 'vhostalias'";
$app->listform_actions->SQLOrderBy = 'ORDER BY web_domain.domain';
$app->listform_actions->onLoad();
?>
interface/web/themes/default-304/templates/admin/system_config_sites_edit.htm
@@ -45,6 +45,12 @@
                    {tmpl_var name='vhost_subdomains'}&nbsp;{tmpl_var name='vhost_subdomains_note_txt'}
                </div>
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='vhost_aliasdomains_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='vhost_aliasdomains'}&nbsp;{tmpl_var name='vhost_aliasdomains_note_txt'}
                </div>
            </div>
        </fieldset>
            
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_advanced.htm
New file
@@ -0,0 +1,146 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <input name="document_root" id="document_root" value="{tmpl_var name='document_root'}" size="30" maxlength="255" type="hidden" class="textInput" />
            <div class="ctrlHolder">
                <label for="system_user">{tmpl_var name='system_user_txt'}</label>
                <label for="system_user">{tmpl_var name='system_user'}</label>
                <input name="system_user" id="system_user" value="{tmpl_var name='system_user'}" type="hidden" />
            </div>
            <div class="ctrlHolder">
                <label for="system_group">{tmpl_var name='system_group_txt'}</label>
                <label for="system_group">{tmpl_var name='system_group'}</label>
                <input name="system_group" id="system_group" value="{tmpl_var name='system_group'}" type="hidden" />
            </div>
            <div class="ctrlHolder apache">
                <label for="allow_override">{tmpl_var name='allow_override_txt'}</label>
                <input name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="phpfpm">
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='php_fpm_use_socket_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='php_fpm_use_socket'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <label for="pm">{tmpl_var name='pm_txt'}</label>
                    <select name="pm" id="pm" class="selectInput">
                        {tmpl_var name='pm'}
                    </select>
                </div>
                <div class="ctrlHolder pm_ondemand" style="background: #ffdfdf; border: 1px solid #df7d7d; border-width: 1px 0; margin: 1.5em 0 1.5em 0; padding: 7px;">
                    {tmpl_var name='pm_ondemand_hint_txt'}
                </div>
                <div class="ctrlHolder">
                    <label for="pm_max_children">{tmpl_var name='pm_max_children_txt'}</label>
                    <input name="pm_max_children" id="pm_max_children" value="{tmpl_var name='pm_max_children'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_start_servers">{tmpl_var name='pm_start_servers_txt'}</label>
                    <input name="pm_start_servers" id="pm_start_servers" value="{tmpl_var name='pm_start_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_min_spare_servers">{tmpl_var name='pm_min_spare_servers_txt'}</label>
                    <input name="pm_min_spare_servers" id="pm_min_spare_servers" value="{tmpl_var name='pm_min_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_dynamic">
                    <label for="pm_max_spare_servers">{tmpl_var name='pm_max_spare_servers_txt'}</label>
                    <input name="pm_max_spare_servers" id="pm_max_spare_servers" value="{tmpl_var name='pm_max_spare_servers'}" size="3" maxlength="3" type="text" class="textInput formLengthLimit" />
                </div>
                <div class="ctrlHolder pm_ondemand">
                    <label for="pm_process_idle_timeout">{tmpl_var name='pm_process_idle_timeout_txt'}</label>
                    <input name="pm_process_idle_timeout" id="pm_process_idle_timeout" value="{tmpl_var name='pm_process_idle_timeout'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />&nbsp;s
                </div>
                <div class="ctrlHolder">
                    <label for="pm_max_requests">{tmpl_var name='pm_max_requests_txt'}</label>
                    <input name="pm_max_requests" id="pm_max_requests" value="{tmpl_var name='pm_max_requests'}" size="3" maxlength="6" type="text" class="textInput formLengthLimit" />
                </div>
            </div>
            <div class="ctrlHolder">
                <label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
                <input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="30" type="text" class="textInput"  style="width:400px;" />
            </div>
            <div class="ctrlHolder">
                <label for="custom_php_ini">{tmpl_var name='custom_php_ini_txt'}</label>
                <textarea name="custom_php_ini" id="custom_php_ini" rows='10' cols='50' style="width:400px;">{tmpl_var name='custom_php_ini'}</textarea>
            </div>
            <div class="ctrlHolder apache">
                <label for="apache_directives">{tmpl_var name='apache_directives_txt'}</label>
                <textarea name="apache_directives" id="apache_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='apache_directives'}</textarea>
            </div>
            <div class="ctrlHolder nginx">
                <label for="nginx_directives">{tmpl_var name='nginx_directives_txt'}</label>
                <textarea name="nginx_directives" id="nginx_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='nginx_directives'}</textarea>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var webId = jQuery('input[name="id"]').val();
    var serverId;
    getServerId();
    adjustForm();
    var pm = jQuery('#pm').val();
    pmMode(pm);
    jQuery('#pm').change(function(){
        pm = jQuery(this).val();
        pmMode(pm);
    });
    function pmMode(pm){
        switch(pm){
            case "static":
                jQuery('.pm_dynamic').add('.pm_ondemand').hide();
                jQuery('.pm_static').show();
                break;
            case "dynamic":
                jQuery('.pm_static').add('.pm_ondemand').hide();
                jQuery('.pm_dynamic').show();
                break;
            case "ondemand":
                jQuery('.pm_static').add('.pm_dynamic').hide();
                jQuery('.pm_ondemand').show();
                break;
        }
    }
    function getServerId(){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
            serverId = data.serverid;
        });
    }
    function adjustForm(){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            if(data.servertype == "nginx"){
                jQuery('.nginx').show();
                jQuery('.apache').hide();
            } else {
                jQuery('.nginx').hide();
                jQuery('.apache').show();
            }
        });
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getphptype"}, function(data) {
            if(data.phptype == "php-fpm"){
                jQuery('.phpfpm').show();
            } else {
                jQuery('.phpfpm').hide();
            }
        });
    }
</script>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_backup.htm
New file
@@ -0,0 +1,32 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels"><legend>Backup</legend>
            <div class="ctrlHolder">
                <label for="backup_interval">{tmpl_var name='backup_interval_txt'}</label>
                <select name="backup_interval" id="backup_interval" class="selectInput">
                    {tmpl_var name='backup_interval'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="backup_copies">{tmpl_var name='backup_copies_txt'}</label>
                <select name="backup_copies" id="backup_copies" class="selectInput">
                    {tmpl_var name='backup_copies'}
                </select>
            </div>
        </fieldset>
        {tmpl_var name='backup_records'}
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_edit.htm
New file
@@ -0,0 +1,208 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <input type="hidden" name="server_id" id="server_id" value="{tmpl_var name='server_id_value'}" />
            <div class="ctrlHolder">
                <label for="domain">{tmpl_var name='host_txt'}</label>
                <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput formLengthHalf" />
            </div>
            <div class="ctrlHolder">
                <label for="parent_domain_id">{tmpl_var name='domain_txt'}</label>
                <select id="parent_domain_id" name="parent_domain_id" class="selectInput formLengthHalf">{tmpl_var name='parent_domain_id'}</select>
            </div>
            <div class="ctrlHolder">
                <label for="web_folder">{tmpl_var name='web_folder_txt'}</label>
                <input name="web_folder" id="web_folder" value="{tmpl_var name='web_folder'}" size="30" maxlength="100" type="text" class="textInput formLengthHalf"<tmpl_if name='fixed_folder' op='==' value='y'> readonly="readonly"</tmpl_if> />
            </div>
            <div class="ctrlHolder">
                <label for="hd_quota">{tmpl_var name='hd_quota_txt'}</label>
                <input name="hd_quota" id="hd_quota" value="{tmpl_var name='hd_quota'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" />&nbsp;MB
            </div>
            <div class="ctrlHolder">
                <label for="traffic_quota">{tmpl_var name='traffic_quota_txt'}</label>
                <input name="traffic_quota" id="traffic_quota" value="{tmpl_var name='traffic_quota'}" size="7" maxlength="7" type="text" class="textInput formLengthLimit" />&nbsp;MB <tmpl_var name='traffic_quota_exceeded_txt'>
            </div>
            <tmpl_if name="limit_cgi" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='cgi_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='cgi'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_ssi" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='ssi_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ssi'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_perl" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='perl_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='perl'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_ruby" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='ruby_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ruby'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_python" op="==" value="y"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='python_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='python'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="force_suexec" op="==" value="n"><div class="ctrlHolder apache">
                <p class="label">{tmpl_var name='suexec_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='suexec'}
                </div>
            </div></tmpl_if>
            <tmpl_if name="limit_hterror" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='errordocs_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='errordocs'}
                </div>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
                <select name="subdomain" id="subdomain" class="selectInput formLengthHalf">
                    {tmpl_var name='subdomain'}
                </select>
            </div>
            <tmpl_if name="limit_ssl" op="==" value="y"><div class="ctrlHolder">
                <p class="label">{tmpl_var name='ssl_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='ssl'}
                </div>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="php">{tmpl_var name='php_txt'}</label>
                <select name="php" id="php" class="selectInput formLengthHalf">
                    {tmpl_var name='php'}
                </select>
            </div>
            <div class="ctrlHolder fastcgi_php_version">
                <label for="fastcgi_php_version">{tmpl_var name='fastcgi_php_version_txt'}</label>
                <select name="fastcgi_php_version" id="fastcgi_php_version" class="selectInput formLengthHalf">
                    {tmpl_var name='fastcgi_php_version'}
                </select>
            </div>
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='active_txt'}</p>
                <div class="multiField">
                    {tmpl_var name='active'}
                </div>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button id="dom-edit-submit" class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var serverId;
    var clientGroupId = jQuery('#client_group_id').val();
    var serverIdDisabled = jQuery('#server_id_disabled').val();
    if(serverIdDisabled > 0){
        serverId = serverIdDisabled;
    } else {
        serverId = jQuery('#server_id').val();
        jQuery('#server_id').change(function(){
            serverId = $(this).val();
            adjustForm();
            reloadWebIP();
            reloadFastcgiPHPVersions();
        });
    }
    adjustForm();
    reloadFastcgiPHPVersions();
    jQuery('#client_group_id').change(function(){
        clientGroupId = $(this).val();
        reloadWebIP();
    });
    if(jQuery('#php').val() == 'fast-cgi' || jQuery('#php').val() == 'php-fpm'){
        jQuery('.fastcgi_php_version:hidden').show();
    } else {
        jQuery('.fastcgi_php_version:visible').hide();
    }
    jQuery('#php').change(function(){
        reloadFastcgiPHPVersions();
        if(jQuery(this).val() == 'fast-cgi' || jQuery(this).val() == 'php-fpm'){
            jQuery('.fastcgi_php_version:hidden').show();
        } else {
            jQuery('.fastcgi_php_version:visible').hide();
        }
    });
    function adjustForm(){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            if(data.servertype == "nginx"){
                var selected = jQuery('#php').val();
                jQuery('.apache').hide();
                jQuery('.apache').hide();
                jQuery('#php option[value="fast-cgi"]').hide();
                jQuery('#php option[value="cgi"]').hide();
                jQuery('#php option[value="mod"]').hide();
                jQuery('#php option[value="suphp"]').hide();
                if(selected != "no" && selected != "php-fpm") jQuery('#php option[value="php-fpm"]').attr('selected', 'selected');
            } else {
                jQuery('.apache').show();
                jQuery('.apache').show();
                jQuery('#php option[value="fast-cgi"]').show();
                jQuery('#php option[value="cgi"]').show();
                jQuery('#php option[value="mod"]').show();
                jQuery('#php option[value="suphp"]').show();
            }
        });
    }
    function reloadWebIP() {
        loadOptionInto('ip_address','sites/ajax_get_ip.php?ip_type=IPv4&server_id='+serverId+'&client_group_id='+clientGroupId);
        loadOptionInto('ipv6_address','sites/ajax_get_ip.php?ip_type=IPv6&server_id='+serverId+'&client_group_id='+clientGroupId);
    }
    function reloadFastcgiPHPVersions() {
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, php_type : jQuery('#php').val(), type : "getphpfastcgi"}, function(data) {
            var options = '<option value="">Default</option>';
            var phpfastcgiselected = '';
            $.each(data, function(key, val) {
                if($('#fastcgi_php_version').val() == key){
                    phpfastcgiselected = ' selected="selected"';
                } else {
                    phpfastcgiselected = '';
                }
                options += '<option value="'+key+'"'+phpfastcgiselected+'>'+val+'</option>';
            });
            $('#fastcgi_php_version').html(options);
        });
    }
    <tmpl_if name="readonly_tab">
        jQuery('div.panel_web_domain').find('fieldset').find('input,select,button').attr('disabled', 'disabled');
        jQuery('div.tabbox_tabs').find('a').click(function() {
               jQuery('div.panel_web_domain').find('fieldset').find('input,select,button').removeAttr('disabled');
        });
        jQuery('#dom-edit-submit').click(function() {
               jQuery('div.panel_web_domain').find('fieldset').find('input,select,button').removeAttr('disabled');
               submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');
        });
    <tmpl_else>
        jQuery('#dom-edit-submit').click(function() {
            submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');
        });
    </tmpl_if>
</script>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_list.htm
New file
@@ -0,0 +1,60 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_list_web_subdomain">
    <div class="pnl_toolsarea">
        <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
            <div class="buttons">
                <button class="iconstxt icoAdd" type="button" onClick="loadContent('sites/web_vhost_aliasdomain_edit.php');">
                    <span>{tmpl_var name="add_new_record_txt"}</span>
                </button>
            </div>
        </fieldset>
    </div>
    <div class="pnl_listarea">
        <fieldset><legend><tmpl_var name="list_head_txt"></legend>
            <table class="list">
                <thead>
                    <tr>
                        <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
                        <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
                        <th class="tbl_col_parent_domain_id" scope="col"><tmpl_var name="parent_domain_id_txt"></th>
                        <th class="tbl_col_domain" scope="col"><tmpl_var name="domain_txt"></th>
                        <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th>
                    </tr>
                    <tr>
                        <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
                        <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
                        <td class="tbl_col_parent_domain_id"><select name="search_parent_domain_id">{tmpl_var name='search_parent_domain_id'}</select></td>
                        <td class="tbl_col_domain"><input type="text" name="search_domain" value="{tmpl_var name='search_domain'}" /></td>
                        <td class="tbl_col_buttons"><div class="buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name="filter_txt"}</span></button></div></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_active"><a href="#" onClick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
                            <td class="tbl_col_server_id"><a href="#" onClick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
                            <td class="tbl_col_parent_domain_id"><a href="#" onClick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="parent_domain_id"}</a></td>
                            <td class="tbl_col_domain"><a href="#" onClick="loadContent('sites/web_vhost_aliasdomain_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="domain"}</a></td>
                            <td class="tbl_col_buttons">
                                <div class="buttons icons16">
                                    <a class="icons16 icoDelete" href="javascript: del_record('sites/web_vhost_aliasdomain_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
                                </div>
                            </td>
                        </tr>
                    </tmpl_loop>
                </tbody>
                <tfoot>
                    <tr>
                    <td class="tbl_footer tbl_paging" colspan="5"><tmpl_var name="paging"></td>
                    </tr>
                </tfoot>
            </table>
        </fieldset>
    </div>
</div>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_redirect.htm
New file
@@ -0,0 +1,76 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <label for="redirect_type">{tmpl_var name='redirect_type_txt'}</label>
                <select name="redirect_type" id="redirect_type" class="selectInput formLengthHalf">
                    {tmpl_var name='redirect_type'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="redirect_path">{tmpl_var name='redirect_path_txt'}</label>
                <input name="redirect_path" id="redirect_path" value="{tmpl_var name='redirect_path'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="seo_redirect">{tmpl_var name='seo_redirect_txt'}</label>
                <select name="seo_redirect" id="seo_redirect" class="selectInput formLengthHalf">
                    {tmpl_var name='seo_redirect'}
                </select>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
<script language="JavaScript" type="text/javascript">
    var webId = jQuery('input[name="id"]').val();
    var serverId;
    getServerId(webId);
    function getServerId(webId){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getserverid"}, function(data) {
            serverId = data.serverid;
            adjustForm(serverId);
        });
    }
    function adjustForm(serverId){
        jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {server_id : serverId, type : "getservertype"}, function(data) {
            var selected = jQuery('#redirect_type').val();
            if(data.servertype == "nginx"){
                jQuery("#redirect_type option[value='R']").attr('disabled','disabled');
                jQuery('#redirect_type option[value="L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R,L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R=301,L"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="R"]').hide();
                jQuery('#redirect_type option[value="L"]').hide();
                jQuery('#redirect_type option[value="R,L"]').hide();
                jQuery('#redirect_type option[value="R=301,L"]').hide();
                if(selected != "no" && selected != "" && selected != "last"  && selected != "break"  && selected != "redirect"  && selected != "permanent") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
            } else {
                jQuery('#redirect_type option[value="last"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="break"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="redirect"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="permanent"]').attr('disabled','disabled');
                jQuery('#redirect_type option[value="last"]').hide();
                jQuery('#redirect_type option[value="break"]').hide();
                jQuery('#redirect_type option[value="redirect"]').hide();
                jQuery('#redirect_type option[value="permanent"]').hide();
                if(selected != "no" && selected != "" && selected != "R"  && selected != "L"  && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
            }
        });
    }
</script>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_ssl.htm
New file
@@ -0,0 +1,68 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <label for="ssl_state">{tmpl_var name='ssl_state_txt'}</label>
                <input name="ssl_state" id="ssl_state" value="{tmpl_var name='ssl_state'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_locality">{tmpl_var name='ssl_locality_txt'}</label>
                <input name="ssl_locality" id="ssl_locality" value="{tmpl_var name='ssl_locality'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_organisation">{tmpl_var name='ssl_organisation_txt'}</label>
                <input name="ssl_organisation" id="ssl_organisation" value="{tmpl_var name='ssl_organisation'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_organisation_unit">{tmpl_var name='ssl_organisation_unit_txt'}</label>
                <input name="ssl_organisation_unit" id="ssl_organisation_unit" value="{tmpl_var name='ssl_organisation_unit'}" size="30" maxlength="255" type="text" class="textInput" />
            </div>
            <div class="ctrlHolder">
                <label for="ssl_country">{tmpl_var name='ssl_country_txt'}</label>
                <select name="ssl_country" id="ssl_country" class="selectInput flags">
                    {tmpl_var name='ssl_country'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="client_group_id">{tmpl_var name='ssl_domain_txt'}</label>
                <select name="ssl_domain" id="ssl_domain" class="selectInput">
                    {tmpl_var name='ssl_domain'}
                </select>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_request">{tmpl_var name='ssl_key_txt'}</label>
                <textarea name="ssl_key" id="ssl_key" rows='10' cols='30'>{tmpl_var name='ssl_key'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_request">{tmpl_var name='ssl_request_txt'}</label>
                <textarea name="ssl_request" id="ssl_request" rows='10' cols='30'>{tmpl_var name='ssl_request'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_cert">{tmpl_var name='ssl_cert_txt'}</label>
                <textarea name="ssl_cert" id="ssl_cert" rows='10' cols='30'>{tmpl_var name='ssl_cert'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_bundle">{tmpl_var name='ssl_bundle_txt'}</label>
                <textarea name="ssl_bundle" id="ssl_bundle" rows='10' cols='30'>{tmpl_var name='ssl_bundle'}</textarea>
            </div>
            <div class="ctrlHolder">
                <label for="ssl_action">{tmpl_var name='ssl_action_txt'}</label>
                <select name="ssl_action" id="ssl_action" class="selectInput formLengthHalf">
                    {tmpl_var name='ssl_action'}
                </select>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
interface/web/themes/default-304/templates/sites/web_vhost_aliasdomain_stats.htm
New file
@@ -0,0 +1,37 @@
<h2><tmpl_var name="list_head_txt"></h2>
<p><tmpl_var name="list_desc_txt"></p>
<div class="panel panel_web_domain">
    <div class="pnl_formsarea">
        <fieldset class="inlineLabels">
            <div class="ctrlHolder">
                <p class="label">{tmpl_var name='stats_user_txt'}</p><p class="value">admin</p>
            </div>
            <div class="ctrlHolder">
                <label for="stats_password">{tmpl_var name='stats_password_txt'}</label>
                <input name="stats_password" id="stats_password" value="{tmpl_var name='stats_password'}" size="15" maxlength="100" type="password" class="textInput" style="width:100px;" onkeyup="checkPassMatch('stats_password','repeat_password');" />&nbsp;<a href="javascript:void(0);" onClick="generatePassword('stats_password','repeat_password');">{tmpl_var name='generate_password_txt'}</a>
            </div>
            <div class="ctrlHolder">
                <label for="repeat_password">{tmpl_var name='repeat_password_txt'}</label>
                <input name="repeat_password" id="repeat_password" value="" size="15" maxlength="100" type="password" class="textInput" style="width:100px;"  onkeyup="checkPassMatch('stats_password','repeat_password');" />
            </div>
            <div id="confirmpasswordError" style="display:none;" class="confirmpassworderror">{tmpl_var name='password_mismatch_txt'}</div>
            <div id="confirmpasswordOK" style="display:none;" class="confirmpasswordok">{tmpl_var name='password_match_txt'}</div>
            <div class="ctrlHolder">
                <label for="stats_type">{tmpl_var name='stats_type_txt'}</label>
                <select name="stats_type" id="stats_type" class="selectInput" >
                    {tmpl_var name='stats_type'}
                </select>
            </div>
        </fieldset>
        <input type="hidden" name="id" value="{tmpl_var name='id'}">
        <div class="buttonHolder buttons">
            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','sites/web_vhost_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('sites/web_vhost_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
</div>
server/lib/classes/aps_installer.inc.php
@@ -277,7 +277,8 @@
        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'] . '/';
        if(($domain_res['type'] == 'vhostsubdomain') || ($domain_res['type'] == 'vhostalias'))
            $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
server/lib/classes/aps_installer.inc.php.bak
New file
@@ -0,0 +1,749 @@
<?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);
    }
}
?>
server/lib/classes/cron.d/150-awstats.inc.php
@@ -54,7 +54,7 @@
        // Create awstats statistics
        //######################################################################################################
        $sql = "SELECT domain_id, domain, document_root, web_folder, type, system_user, system_group, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain') and stats_type = 'awstats' AND server_id = ".$conf['server_id'];
        $sql = "SELECT domain_id, domain, document_root, web_folder, type, system_user, system_group, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') and stats_type = 'awstats' AND server_id = ".$conf['server_id'];
        $records = $app->db->queryAllRecords($sql);
        $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
@@ -64,7 +64,7 @@
            $yesterday = date('Ymd', strtotime("-1 day", time()));
            $log_folder = 'log';
            if($rec['type'] == 'vhostsubdomain') {
            if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') {
                $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
                $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']);
                if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id'];
@@ -78,7 +78,7 @@
                    continue;
                }
            }
            $web_folder = ($rec['type'] == 'vhostsubdomain' ? $rec['web_folder'] : 'web');
            $web_folder = (($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web');
            $domain = escapeshellcmd($rec['domain']);
            $statsdir = escapeshellcmd($rec['document_root'].'/'.$web_folder.'/stats');
            $awstats_pl = $web_config['awstats_pl'];
server/lib/classes/cron.d/150-webalizer.inc.php
@@ -79,7 +79,7 @@
        }
        $sql = "SELECT domain_id, domain, document_root, web_folder, type, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain') and stats_type = 'webalizer' AND server_id = ".$conf['server_id'];
        $sql = "SELECT domain_id, domain, document_root, web_folder, type, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') and stats_type = 'webalizer' AND server_id = ".$conf['server_id'];
        $records = $app->db->queryAllRecords($sql);
        foreach($records as $rec) {
@@ -87,7 +87,7 @@
            $yesterday = date('Ymd', strtotime("-1 day", time()));
            $log_folder = 'log';
            if($rec['type'] == 'vhostsubdomain') {
            if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') {
                $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
                $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']);
                if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id'];
@@ -103,7 +103,7 @@
            }
            $domain = escapeshellcmd($rec['domain']);
            $statsdir = escapeshellcmd($rec['document_root'].'/'.($rec['type'] == 'vhostsubdomain' ? $rec['web_folder'] : 'web').'/stats');
            $statsdir = escapeshellcmd($rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats');
            $webalizer = '/usr/bin/webalizer';
            $webalizer_conf_main = '/etc/webalizer/webalizer.conf';
            $webalizer_conf = escapeshellcmd($rec['document_root'].'/log/webalizer.conf');
server/lib/classes/cron.d/200-logfiles.inc.php
@@ -60,7 +60,7 @@
        // Manage and compress web logfiles and create traffic statistics
        //######################################################################################################
        $sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain') AND server_id = ".$conf['server_id'];
        $sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') AND server_id = ".$conf['server_id'];
        $records = $app->db->queryAllRecords($sql);
        foreach($records as $rec) {
@@ -68,7 +68,7 @@
            $yesterday = date('Ymd', time() - 86400);
            $log_folder = 'log';
            if($rec['type'] == 'vhostsubdomain') {
            if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') {
                $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
                $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']);
                if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id'];
server/lib/classes/cron.d/300-quota_notify.inc.php
@@ -119,7 +119,7 @@
            $current_month = date('Y-m');
            //* Check website traffic quota
            $sql = "SELECT sys_groupid,domain_id,domain,traffic_quota,traffic_quota_lock FROM web_domain WHERE (traffic_quota > 0 or traffic_quota_lock = 'y') and (type = 'vhost' OR type = 'vhostsubdomain')";
            $sql = "SELECT sys_groupid,domain_id,domain,traffic_quota,traffic_quota_lock FROM web_domain WHERE (traffic_quota > 0 or traffic_quota_lock = 'y') and (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')";
            $records = $app->db->queryAllRecords($sql);
            if(is_array($records)) {
                foreach($records as $rec) {
@@ -196,7 +196,7 @@
            $global_config = $app->getconf->get_global_config('mail');
            //* Check website disk quota
            $sql = "SELECT domain_id,sys_groupid,domain,system_user,last_quota_notification,DATEDIFF(CURDATE(), last_quota_notification) as `notified_before` FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain')";
            $sql = "SELECT domain_id,sys_groupid,domain,system_user,last_quota_notification,DATEDIFF(CURDATE(), last_quota_notification) as `notified_before` FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias')";
            $records = $app->db->queryAllRecords($sql);
            if(is_array($records) && !empty($records)) {
server/lib/classes/cron.d/500-backup.inc.php
@@ -72,7 +72,7 @@
                chmod(escapeshellcmd($backup_dir), $backup_dir_permissions);
            }
            $sql = "SELECT * FROM web_domain WHERE server_id = '".$conf['server_id']."' AND (type = 'vhost' OR type = 'vhostsubdomain') AND active = 'y'";
            $sql = "SELECT * FROM web_domain WHERE server_id = '".$conf['server_id']."' AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y'";
            $records = $app->db->queryAllRecords($sql);
            if(is_array($records)) {
                foreach($records as $rec) {
server/plugins-available/apache2_plugin.inc.php
@@ -131,7 +131,7 @@
        foreach($web_domains as $web_data) {
            $custom_php_ini_dir = $web_config['website_basedir'].'/conf/'.$web_data['system_user'];
            $web_folder = 'web';
            if($web_data['type'] == 'vhostsubdomain') {
            if($web_data['type'] == 'vhostsubdomain' || $web_data['type'] == 'vhostalias') {
                $web_folder = $web_data['web_folder'];
                $custom_php_ini_dir .= '_' . $web_folder;
            }
@@ -192,7 +192,7 @@
            $app->log("CA path error, file does not exist:".$web_config['CA_path'].'/openssl.cnf', LOGLEVEL_ERROR);
        //* Only vhosts can have a ssl cert
        if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain") return;
        if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") return;
        // if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl');
        if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl');
@@ -396,7 +396,7 @@
        if($this->action != 'insert') $this->action = 'update';
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['parent_domain_id'] > 0) {
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['type'] != 'vhostalias' && $data['new']['parent_domain_id'] > 0) {
            $old_parent_domain_id = intval($data['old']['parent_domain_id']);
            $new_parent_domain_id = intval($data['new']['parent_domain_id']);
@@ -430,7 +430,7 @@
        }
        if($data['new']['document_root'] == '') {
            if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') $app->log('document_root not set', LOGLEVEL_WARN);
            if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') $app->log('document_root not set', LOGLEVEL_WARN);
            return 0;
        }
        if($data['new']['system_user'] == 'root' or $data['new']['system_group'] == 'root') {
@@ -444,7 +444,7 @@
        $web_folder = 'web';
        $log_folder = 'log';
        if($data['new']['type'] == 'vhostsubdomain') {
        if($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') {
            $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['new']['parent_domain_id']));
            $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['new']['domain']);
            if($subdomain_host == '') $subdomain_host = 'web'.$data['new']['domain_id'];
@@ -521,7 +521,7 @@
            //* Remove protection of old folders
            $app->system->web_folder_protection($data['old']['document_root'], false);
            if($data["new"]["type"] != "vhostsubdomain") {
            if($data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") {
                //* Move the site data
                $tmp_docroot = explode('/', $data['new']['document_root']);
                unset($tmp_docroot[count($tmp_docroot)-1]);
@@ -677,7 +677,7 @@
        // setting a local var here
        // normally $conf['templates'] = "/usr/local/ispconfig/server/conf";
        if($this->action == 'insert' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain')) {
        if($this->action == 'insert' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) {
            // Copy the error pages
            if($data['new']['errordocs']) {
@@ -723,7 +723,7 @@
            exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/');
            //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before
        } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) {
        } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) {
            $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/';
            if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) {
@@ -741,7 +741,7 @@
            exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path);
        }  // end copy error docs
        // Set the quota for the user, but only for vhosts, not vhostsubdomains
        // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias
        if($username != '' && $app->system->is_user($username) && $data['new']['type'] == 'vhost') {
            if($data['new']['hd_quota'] > 0) {
                $blocks_soft = $data['new']['hd_quota'] * 1024;
@@ -873,7 +873,9 @@
                $app->system->chown($data['new']['document_root'].'/webdav', $username);
                $app->system->chgrp($data['new']['document_root'].'/webdav', $groupname);
            }
        } elseif(($this->action == 'insert' && $data['new']['type'] == 'vhostsubdomain') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhostsubdomain')) {
        } elseif((($data['new']['type'] == 'vhostsubdomain') || ($data['new']['type'] == 'vhostalias')) &&
                 (($this->action == 'insert') || ($web_config['set_folder_permissions_on_update'] == 'y'))) {
            if($web_config['security_level'] == 20) {
                $app->system->chmod($data['new']['document_root'].'/' . $web_folder, 0710);
                $app->system->chown($data['new']['document_root'].'/' . $web_folder, $username);
@@ -905,7 +907,7 @@
        //* Write the custom php.ini file, if custom_php_ini fieled is not empty
        $custom_php_ini_dir = $web_config['website_basedir'].'/conf/'.$data['new']['system_user'];
        if($data['new']['type'] == 'vhostsubdomain') $custom_php_ini_dir .= '_' . $web_folder;
        if($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') $custom_php_ini_dir .= '_' . $web_folder;
        if(!is_dir($web_config['website_basedir'].'/conf')) $app->system->mkdir($web_config['website_basedir'].'/conf');
        //* add open_basedir restriction to custom php.ini content, required for suphp only
@@ -1087,7 +1089,7 @@
        }
        // get alias domains (co-domains and subdomains)
        $aliases = $app->db->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND active = 'y' AND type != 'vhostsubdomain'");
        $aliases = $app->db->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND active = 'y' AND (type != 'vhostsubdomain' OR type != 'vhostalias')");
        $alias_seo_redirects = array();
        switch($data['new']['subdomain']) {
        case 'www':
@@ -1256,7 +1258,7 @@
            $php_open_basedir = ($data['new']['php_open_basedir'] == '')?$data['new']['document_root']:$data['new']['php_open_basedir'];
            $fcgi_tpl->setVar('open_basedir', escapeshellcmd($php_open_basedir));
            $fcgi_starter_script = escapeshellcmd($fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].($data['new']['type'] == 'vhostsubdomain' ? '_web' . $data['new']['domain_id'] : ''));
            $fcgi_starter_script = escapeshellcmd($fastcgi_starter_path.$fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''));
            $app->system->file_put_contents($fcgi_starter_script, $fcgi_tpl->grab());
            unset($fcgi_tpl);
@@ -1268,7 +1270,7 @@
            $tpl->setVar('fastcgi_alias', $fastcgi_config['fastcgi_alias']);
            $tpl->setVar('fastcgi_starter_path', $fastcgi_starter_path);
            $tpl->setVar('fastcgi_starter_script', $fastcgi_config['fastcgi_starter_script'].($data['new']['type'] == 'vhostsubdomain' ? '_web' . $data['new']['domain_id'] : ''));
            $tpl->setVar('fastcgi_starter_script', $fastcgi_config['fastcgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''));
            $tpl->setVar('fastcgi_config_syntax', $fastcgi_config['fastcgi_config_syntax']);
            $tpl->setVar('fastcgi_max_requests', $fastcgi_config['fastcgi_max_requests']);
@@ -1347,7 +1349,7 @@
            //$cgi_config = $app->getconf->get_server_config($conf['server_id'], 'cgi');
            $cgi_config['cgi_starter_path'] = $web_config['website_basedir'].'/php-cgi-scripts/[system_user]/';
            $cgi_config['cgi_starter_script'] = 'php-cgi-starter'.($data['new']['type'] == 'vhostsubdomain' ? '_web' . $data['new']['domain_id'] : '');
            $cgi_config['cgi_starter_script'] = 'php-cgi-starter'.(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : '');
            $cgi_config['cgi_bin'] = '/usr/bin/php-cgi';
            $cgi_starter_path = str_replace('[system_user]', $data['new']['system_user'], $cgi_config['cgi_starter_path']);
@@ -1382,7 +1384,7 @@
                $cgi_tpl->setVar('php_ini_path', escapeshellcmd($fastcgi_config['fastcgi_phpini_path']));
            }
            $cgi_starter_script = escapeshellcmd($cgi_starter_path.$cgi_config['cgi_starter_script'].($data['new']['type'] == 'vhostsubdomain' ? '_web' . $data['new']['domain_id'] : ''));
            $cgi_starter_script = escapeshellcmd($cgi_starter_path.$cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''));
            $app->system->file_put_contents($cgi_starter_script, $cgi_tpl->grab());
            unset($cgi_tpl);
@@ -1394,7 +1396,7 @@
            $app->system->chgrp($cgi_starter_script, $data['new']['system_group']);
            $tpl->setVar('cgi_starter_path', $cgi_starter_path);
            $tpl->setVar('cgi_starter_script', $cgi_config['cgi_starter_script'].($data['new']['type'] == 'vhostsubdomain' ? '_web' . $data['new']['domain_id'] : ''));
            $tpl->setVar('cgi_starter_script', $cgi_config['cgi_starter_script'].(($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') ? '_web' . $data['new']['domain_id'] : ''));
        }
@@ -1558,7 +1560,7 @@
        }
        //* Create awstats configuration
        if($data['new']['stats_type'] == 'awstats' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain')) {
        if($data['new']['stats_type'] == 'awstats' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) {
            $this->awstats_update($data, $web_config);
        }
@@ -1715,7 +1717,7 @@
        $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
        $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') $app->system->web_folder_protection($data['old']['document_root'], false);
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') $app->system->web_folder_protection($data['old']['document_root'], false);
        //* Check if this is a chrooted setup
        if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
@@ -1727,7 +1729,7 @@
        //* Remove the mounts
        $log_folder = 'log';
        $web_folder = '';
        if($data['old']['type'] == 'vhostsubdomain') {
        if($data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
            $tmp = $app->db->queryOneRecord('SELECT `domain`,`document_root` FROM web_domain WHERE domain_id = '.intval($data['old']['parent_domain_id']));
            if($tmp['domain'] != ''){
                $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['old']['domain']);
@@ -1773,7 +1775,7 @@
            unset($subdomain_hosts);
        }
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain'){
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){
            if(is_array($log_folders) && !empty($log_folders)){
                foreach($log_folders as $log_folder){
                    //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
@@ -1797,7 +1799,7 @@
        }
        unset($log_folders);
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['parent_domain_id'] > 0) {
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['type'] != 'vhostalias' && $data['old']['parent_domain_id'] > 0) {
            //* This is a alias domain or subdomain, so we have to update the website instead
            $parent_domain_id = intval($data['old']['parent_domain_id']);
            $tmp = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = '.$parent_domain_id." AND active = 'y'");
@@ -1831,7 +1833,7 @@
            $app->system->unlink($vhost_file);
            $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG);
            if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') {
            if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
                $docroot = escapeshellcmd($data['old']['document_root']);
                if($docroot != '' && !stristr($docroot, '..')) {
                    if($data['old']['type'] == 'vhost') {
@@ -1852,9 +1854,9 @@
                            // we use strict check as otherwise directories named '0' may not be deleted
                            $do_delete = false;
                        } else {
                            // read all vhost subdomains with same parent domain
                            // read all vhost subdomains and alias with same parent domain
                            $used_paths = array();
                            $tmp = $app->db->queryAllRecords("SELECT `web_folder` FROM web_domain WHERE type = 'vhostsubdomain' AND parent_domain_id = ".intval($data['old']['parent_domain_id'])." AND domain_id != ".intval($data['old']['domain_id']));
                            $tmp = $app->db->queryAllRecords("SELECT `web_folder` FROM web_domain WHERE (type = 'vhostsubdomain' OR type = 'vhostalias') AND parent_domain_id = ".intval($data['old']['parent_domain_id'])." AND domain_id != ".intval($data['old']['domain_id']));
                            foreach($tmp as $tmprec) {
                                // we normalize the folder entries because we need to compare them
                                $tmp_folder = preg_replace('/[\/]{2,}/', '/', $tmprec['web_folder']); // replace / occuring multiple times
@@ -1973,7 +1975,7 @@
                $this->awstats_delete($data, $web_config);
            }
            if($data['old']['type'] == 'vhostsubdomain') {
            if($data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
                $app->system->web_folder_protection($parent_web_document_root, true);
            }
@@ -2083,7 +2085,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1);
@@ -2184,7 +2186,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1);
@@ -2239,7 +2241,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($data['old']['path'], 0, 1) == '/') $data['old']['path'] = substr($data['old']['path'], 1);
server/plugins-available/nginx_plugin.inc.php
@@ -102,7 +102,7 @@
            $app->log("CA path error, file does not exist:".$web_config['CA_path'].'/openssl.cnf', LOGLEVEL_ERROR);
        //* Only vhosts can have a ssl cert
        if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain") return;
        if($data["new"]["type"] != "vhost" && $data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") return;
        // if(!is_dir($data['new']['document_root'].'/ssl')) exec('mkdir -p '.$data['new']['document_root'].'/ssl');
        if(!is_dir($data['new']['document_root'].'/ssl')) $app->system->mkdirpath($data['new']['document_root'].'/ssl');
@@ -314,7 +314,7 @@
        if($this->action != 'insert') $this->action = 'update';
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['parent_domain_id'] > 0) {
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['type'] != 'vhostalias' && $data['new']['parent_domain_id'] > 0) {
            $old_parent_domain_id = intval($data['old']['parent_domain_id']);
            $new_parent_domain_id = intval($data['new']['parent_domain_id']);
@@ -348,7 +348,7 @@
        }
        if($data['new']['document_root'] == '') {
            if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') $app->log('document_root not set', LOGLEVEL_WARN);
            if($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') $app->log('document_root not set', LOGLEVEL_WARN);
            return 0;
        }
        if($data['new']['system_user'] == 'root' or $data['new']['system_group'] == 'root') {
@@ -362,7 +362,7 @@
        $web_folder = 'web';
        $log_folder = 'log';
        if($data['new']['type'] == 'vhostsubdomain') {
        if($data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') {
            $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($data['new']['parent_domain_id']));
            $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['new']['domain']);
            if($subdomain_host == '') $subdomain_host = 'web'.$data['new']['domain_id'];
@@ -436,7 +436,7 @@
                }
            }
            if($data["new"]["type"] != "vhostsubdomain") {
            if($data["new"]["type"] != "vhostsubdomain" && $data["new"]["type"] != "vhostalias") {
                //* Move the site data
                $tmp_docroot = explode('/', $data['new']['document_root']);
                unset($tmp_docroot[count($tmp_docroot)-1]);
@@ -592,7 +592,7 @@
        // setting a local var here
        // normally $conf['templates'] = "/usr/local/ispconfig/server/conf";
        if($this->action == 'insert' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain')) {
        if($this->action == 'insert' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) {
            // Copy the error pages
            if($data['new']['errordocs']) {
@@ -638,7 +638,7 @@
            exec('chmod -R a+r '.escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/');
            //** Copy the error documents on update when the error document checkbox has been activated and was deactivated before
        } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) {
        } elseif ($this->action == 'update' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias') && $data['old']['errordocs'] == 0 && $data['new']['errordocs'] == 1) {
            $error_page_path = escapeshellcmd($data['new']['document_root']).'/' . $web_folder . '/error/';
            if (file_exists($conf['rootpath'] . '/conf-custom/error/'.substr(escapeshellcmd($conf['language']), 0, 2))) {
@@ -656,7 +656,7 @@
            exec('chown -R '.$data['new']['system_user'].':'.$data['new']['system_group'].' '.$error_page_path);
        }  // end copy error docs
        // Set the quota for the user, but only for vhosts, not vhostsubdomains
        // Set the quota for the user, but only for vhosts, not vhostsubdomains or vhostalias
        if($username != '' && $app->system->is_user($username) && $data['new']['type'] == 'vhost') {
            if($data['new']['hd_quota'] > 0) {
                $blocks_soft = $data['new']['hd_quota'] * 1024;
@@ -788,7 +788,9 @@
                //$app->system->chown($data['new']['document_root'].'/webdav',$username);
                //$app->system->chgrp($data['new']['document_root'].'/webdav',$groupname);
            }
        } elseif(($this->action == 'insert' && $data['new']['type'] == 'vhostsubdomain') or ($web_config['set_folder_permissions_on_update'] == 'y' && $data['new']['type'] == 'vhostsubdomain')) {
        } elseif((($data['new']['type'] == 'vhostsubdomain') || ($data['new']['type'] == 'vhostalias')) &&
                 (($this->action == 'insert') || ($web_config['set_folder_permissions_on_update'] == 'y'))) {
            if($web_config['security_level'] == 20) {
                $app->system->chmod($data['new']['document_root'].'/' . $web_folder, 0710);
                $app->system->chown($data['new']['document_root'].'/' . $web_folder, $username);
@@ -1293,7 +1295,7 @@
        }
        // get alias domains (co-domains and subdomains)
        $aliases = $app->db->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND active = 'y' AND type != 'vhostsubdomain'");
        $aliases = $app->db->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND active = 'y' AND (type != 'vhostsubdomain' OR type != 'vhostalias')");
        $alias_seo_redirects = array();
        if(is_array($aliases)) {
            foreach($aliases as $alias) {
@@ -1610,7 +1612,7 @@
        }
        //* Create awstats configuration
        if($data['new']['stats_type'] == 'awstats' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain')) {
        if($data['new']['stats_type'] == 'awstats' && ($data['new']['type'] == 'vhost' || $data['new']['type'] == 'vhostsubdomain' || $data['new']['type'] == 'vhostalias')) {
            $this->awstats_update($data, $web_config);
        }
@@ -1728,7 +1730,7 @@
        $app->uses('system');
        $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') $app->system->web_folder_protection($data['old']['document_root'], false);
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') $app->system->web_folder_protection($data['old']['document_root'], false);
        //* Check if this is a chrooted setup
        if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
@@ -1740,7 +1742,7 @@
        //* Remove the mounts
        $log_folder = 'log';
        $web_folder = '';
        if($data['old']['type'] == 'vhostsubdomain') {
        if($data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
            $tmp = $app->db->queryOneRecord('SELECT `domain`,`document_root` FROM web_domain WHERE domain_id = '.intval($data['old']['parent_domain_id']));
            if($tmp['domain'] != ''){
                $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $data['old']['domain']);
@@ -1786,7 +1788,7 @@
            unset($subdomain_hosts);
        }
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain'){
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias'){
            if(is_array($log_folders) && !empty($log_folders)){
                foreach($log_folders as $log_folder){
                    //if($app->system->is_mounted($data['old']['document_root'].'/'.$log_folder)) exec('umount '.escapeshellarg($data['old']['document_root'].'/'.$log_folder));
@@ -1810,7 +1812,7 @@
        }
        unset($log_folders);
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['parent_domain_id'] > 0) {
        if($data['old']['type'] != 'vhost' && $data['old']['type'] != 'vhostsubdomain' && $data['old']['type'] != 'vhostalias' && $data['old']['parent_domain_id'] > 0) {
            //* This is a alias domain or subdomain, so we have to update the website instead
            $parent_domain_id = intval($data['old']['parent_domain_id']);
            $tmp = $app->db->queryOneRecord('SELECT * FROM web_domain WHERE domain_id = '.$parent_domain_id." AND active = 'y'");
@@ -1844,7 +1846,7 @@
            $app->system->unlink($vhost_file);
            $app->log('Removing vhost file: '.$vhost_file, LOGLEVEL_DEBUG);
            if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') {
            if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
                $docroot = escapeshellcmd($data['old']['document_root']);
                if($docroot != '' && !stristr($docroot, '..')) {
                    if($data['old']['type'] == 'vhost') {
@@ -1867,7 +1869,7 @@
                        } else {
                            // read all vhost subdomains with same parent domain
                            $used_paths = array();
                            $tmp = $app->db->queryAllRecords("SELECT `web_folder` FROM web_domain WHERE type = 'vhostsubdomain' AND parent_domain_id = ".intval($data['old']['parent_domain_id'])." AND domain_id != ".intval($data['old']['domain_id']));
                            $tmp = $app->db->queryAllRecords("SELECT `web_folder` FROM web_domain WHERE (type = 'vhostsubdomain' OR type = 'vhostalias') AND parent_domain_id = ".intval($data['old']['parent_domain_id'])." AND domain_id != ".intval($data['old']['domain_id']));
                            foreach($tmp as $tmprec) {
                                // we normalize the folder entries because we need to compare them
                                $tmp_folder = preg_replace('/[\/]{2,}/', '/', $tmprec['web_folder']); // replace / occuring multiple times
@@ -2023,7 +2025,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1);
@@ -2102,7 +2104,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($folder['path'], 0, 1) == '/') $folder['path'] = substr($folder['path'], 1);
@@ -2139,7 +2141,7 @@
        }
        $web_folder = 'web';
        if($website['type'] == 'vhostsubdomain') $web_folder = $website['web_folder'];
        if($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') $web_folder = $website['web_folder'];
        //* Get the folder path.
        if(substr($data['old']['path'], 0, 1) == '/') $data['old']['path'] = substr($data['old']['path'], 1);
@@ -2210,7 +2212,7 @@
                    $website_auth_location['path'] .= '/';
                }
                $basic_auth_locations[] = array('htpasswd_location' => '/'.$website_auth_location['path'],
                    'htpasswd_path' => $website['document_root'].'/' . ($website['type'] == 'vhostsubdomain' ? $website['web_folder'] : 'web') . '/'.$website_auth_location['path']);
                    'htpasswd_path' => $website['document_root'].'/' . (($website['type'] == 'vhostsubdomain' || $website['type'] == 'vhostalias') ? $website['web_folder'] : 'web') . '/'.$website_auth_location['path']);
            }
        }
        return $basic_auth_locations;
@@ -2722,7 +2724,7 @@
                // web domain doesn't match hostname
                if(substr($hostname, -strlen($web['domain'])) != $web['domain']) continue;
                // own vhost and therefore server {} container of its own
                //if($web['type'] == 'vhostsubdomain') continue;
                //if($web['type'] == 'vhostsubdomain' || $web['type'] == 'vhostalias') continue;
                // alias domains/subdomains using rewrites and therefore a server {} container of their own
                //if(($web['type'] == 'alias' || $web['type'] == 'subdomain') && $web['redirect_type'] != '' && $web['redirect_path'] != '') continue;
@@ -2733,7 +2735,7 @@
                    if($web['domain'] == $hostname){
                        if($web['domain_id'] == $domain_id || $web['parent_domain_id'] == $domain_id){
                            // own vhost and therefore server {} container of its own
                            if($web['type'] == 'vhostsubdomain') return false;
                            if($web['type'] == 'vhostsubdomain' || $web['type'] == 'vhostalias') return false;
                            // alias domains/subdomains using rewrites and therefore a server {} container of their own
                            if(($web['type'] == 'alias' || $web['type'] == 'subdomain') && $web['redirect_type'] != '' && $web['redirect_path'] != '') return false;
                            return true;
@@ -2747,7 +2749,7 @@
                    if($web['domain'] == $hostname || $web['subdomain'].'.'.$web['domain'] == $hostname){
                        if($web['domain_id'] == $domain_id || $web['parent_domain_id'] == $domain_id){
                            // own vhost and therefore server {} container of its own
                            if($web['type'] == 'vhostsubdomain') return false;
                            if($web['type'] == 'vhostsubdomain' || $web['type'] == 'vhostalias') return false;
                            // alias domains/subdomains using rewrites and therefore a server {} container of their own
                            if(($web['type'] == 'alias' || $web['type'] == 'subdomain') && $web['redirect_type'] != '' && $web['redirect_path'] != '') return false;
                            return true;
@@ -2760,7 +2762,7 @@
                if(preg_match($pattern, $hostname)){
                    if($web['domain_id'] == $domain_id || $web['parent_domain_id'] == $domain_id){
                        // own vhost and therefore server {} container of its own
                        if($web['type'] == 'vhostsubdomain') return false;
                        if($web['type'] == 'vhostsubdomain' || $web['type'] == 'vhostalias') return false;
                        // alias domains/subdomains using rewrites and therefore a server {} container of their own
                        if(($web['type'] == 'alias' || $web['type'] == 'subdomain') && $web['redirect_type'] != '' && $web['redirect_path'] != '') return false;
                        return true;
server/plugins-available/nginx_reverseproxy_plugin.inc.php
@@ -63,7 +63,7 @@
        if($this->action != 'insert') $this->action = 'update';
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['parent_domain_id'] > 0) {
        if($data['new']['type'] != 'vhost' && $data['new']['type'] != 'vhostsubdomain' && $data['new']['type'] != 'vhostalias' && $data['new']['parent_domain_id'] > 0) {
            $old_parent_domain_id = intval($data['old']['parent_domain_id']);
            $new_parent_domain_id = intval($data['new']['parent_domain_id']);
@@ -130,7 +130,7 @@
        // get alias domains (co-domains and subdomains)
        $aliases = $app->dbmaster->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND type != 'vhostsubdomain' AND active = 'y'");
        $aliases = $app->dbmaster->queryAllRecords('SELECT * FROM web_domain WHERE parent_domain_id = '.$data['new']['domain_id']." AND (type != 'vhostsubdomain' OR type != 'vhostalias') AND active = 'y'");
        $server_alias = array();
        switch($data['new']['subdomain']) {
        case 'www':
@@ -280,7 +280,7 @@
        $nginx_config = $app->getconf->get_server_config($conf['server_id'], 'web');
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain') {
        if($data['old']['type'] == 'vhost' || $data['old']['type'] == 'vhostsubdomain' || $data['old']['type'] == 'vhostalias') {
            //* This is a website
            // Deleting the vhost file, symlink and the data directory