mcramer
2012-08-19 ac099e20112a513e47f91916e4b3c06009e36d0e
FS#2385 - Extend client limits

17 files modified
530 ■■■■■ changed files
install/sql/incremental/upd_0036.sql 22 ●●●●● patch | view | raw | blame | history
install/sql/ispconfig3.sql 18 ●●●●● patch | view | raw | blame | history
interface/web/client/form/client.tform.php 54 ●●●●● patch | view | raw | blame | history
interface/web/client/form/client_template.tform.php 54 ●●●●● patch | view | raw | blame | history
interface/web/client/form/reseller.tform.php 54 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_client.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_client_template.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/de_reseller.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_client.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_client_template.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/lib/lang/en_reseller.lng 9 ●●●●● patch | view | raw | blame | history
interface/web/client/templates/client_edit_limits.htm 54 ●●●●● patch | view | raw | blame | history
interface/web/client/templates/client_template_edit_limits.htm 54 ●●●●● patch | view | raw | blame | history
interface/web/client/templates/reseller_edit_limits.htm 54 ●●●●● patch | view | raw | blame | history
interface/web/sites/form/web_domain.tform.php 13 ●●●●● patch | view | raw | blame | history
interface/web/sites/templates/web_domain_edit.htm 42 ●●●●● patch | view | raw | blame | history
interface/web/sites/web_domain_edit.php 57 ●●●●● patch | view | raw | blame | history
install/sql/incremental/upd_0036.sql
@@ -2,4 +2,26 @@
ALTER TABLE  `web_domain` ADD  `perl` enum('n','y') NOT NULL default 'n' AFTER  `python`;
-- --------------------------------------------------------
ALTER TABLE `client` ADD `limit_cgi` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `web_php_options`,
                     ADD `limit_ssi` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_cgi`,
                     ADD `limit_perl` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_ssi`,
                     ADD `limit_ruby` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_perl`,
                     ADD `limit_python` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_ruby`,
                     ADD `force_suexec` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y' AFTER `limit_python`,
                     ADD `limit_hterror` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `force_suexec`,
                     ADD `limit_wildcard` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_hterror`,
                     ADD `limit_ssl` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_wildcard`;
ALTER TABLE `client_template` ADD `limit_cgi` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `web_php_options`,
                              ADD `limit_ssi` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_cgi`,
                              ADD `limit_perl` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_ssi`,
                              ADD `limit_ruby` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_perl`,
                              ADD `limit_python` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_ruby`,
                              ADD `force_suexec` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'y' AFTER `limit_python`,
                              ADD `limit_hterror` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `force_suexec`,
                              ADD `limit_wildcard` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_hterror`,
                              ADD `limit_ssl` ENUM( 'n', 'y' ) NOT NULL DEFAULT 'n' AFTER `limit_wildcard`;
install/sql/ispconfig3.sql
@@ -179,6 +179,15 @@
  `limit_web_domain` int(11) NOT NULL DEFAULT '-1',
  `limit_web_quota` int(11) NOT NULL DEFAULT '-1',
  `web_php_options` varchar(255) NOT NULL DEFAULT 'no,fast-cgi,cgi,mod,suphp',
  `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_perl` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_python` enum('n','y') NOT NULL DEFAULT 'n',
  `force_suexec` enum('n','y') NOT NULL DEFAULT 'y',
  `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_web_subdomain` int(11) NOT NULL DEFAULT '-1',
  `limit_web_aliasdomain` int(11) NOT NULL DEFAULT '-1',
  `limit_ftp_user` int(11) NOT NULL DEFAULT '-1',
@@ -265,6 +274,15 @@
  `limit_web_domain` int(11) NOT NULL default '-1',
  `limit_web_quota` int(11) NOT NULL default '-1',
  `web_php_options` varchar(255) NOT NULL DEFAULT 'no',
  `limit_cgi` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ssi` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_perl` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ruby` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_python` enum('n','y') NOT NULL DEFAULT 'n',
  `force_suexec` enum('n','y') NOT NULL DEFAULT 'y',
  `limit_hterror` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_wildcard` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_ssl` enum('n','y') NOT NULL DEFAULT 'n',
  `limit_web_subdomain` int(11) NOT NULL default '-1',
  `limit_web_aliasdomain` int(11) NOT NULL default '-1',
  `limit_ftp_user` int(11) NOT NULL default '-1',
interface/web/client/form/client.tform.php
@@ -688,6 +688,60 @@
            'valuelimit' => 'client:web_php_options',
            'value'        => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM')
        ),
        'limit_cgi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_perl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ruby' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_python' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'force_suexec' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'y',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_hterror' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_wildcard' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_web_aliasdomain' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
interface/web/client/form/client_template.tform.php
@@ -333,6 +333,60 @@
            'valuelimit' => 'client:web_php_options',
            'value'        => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM')
        ),
        'limit_cgi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_perl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ruby' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_python' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'force_suexec' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'y',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_hterror' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_wildcard' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_web_aliasdomain' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
interface/web/client/form/reseller.tform.php
@@ -622,6 +622,60 @@
            'separator' => ',',
            'value'        => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM')
        ),
        'limit_cgi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssi' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_perl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ruby' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_python' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'force_suexec' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'y',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_hterror' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_wildcard' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_ssl' => array (
            'datatype'    => 'VARCHAR',
            'formtype'    => 'CHECKBOX',
            'default'    => 'n',
            'value'        => array(0 => 'n',1 => 'y')
        ),
        'limit_web_aliasdomain' => array (
            'datatype'    => 'INTEGER',
            'formtype'    => 'TEXT',
interface/web/client/lib/lang/de_client.lng
@@ -87,6 +87,15 @@
$wb["delete_additional_template_txt"] = 'Zusätzliches Template löschen';
$wb['ssh_chroot_txt'] = 'SSH-Chroot Optionen';
$wb['web_php_options_txt'] = 'PHP Optionen';
$wb["limit_cgi_txt"] = "CGI verfügbar";
$wb["limit_ssi_txt"] = "SSI verfügbar";
$wb["limit_perl_txt"] = "Perl verfügbar";
$wb["limit_ruby_txt"] = "Ruby verfügbar";
$wb["limit_python_txt"] = "Python verfügbar";
$wb["force_suexec_txt"] = "SuEXEC erzwungen";
$wb["limit_hterror_txt"] = "Eigene Fehlerseiten verfügbar";
$wb["limit_wildcard_txt"] = "Wildcard Subdomain verfügbar";
$wb["limit_ssl_txt"] = "SSL verfügbar";
$wb['limit_client_error'] = 'Die maximale Anzahl an Kunden wurde erreicht.';
$wb['limit_mailaliasdomain_txt'] = 'Max. Anzahl an Domain-Aliases';
$wb['limit_mailaliasdomain_error_notint'] = 'Das E-Mail Domain-Alias Limit muss eine Zahl sein.';
interface/web/client/lib/lang/de_client_template.lng
@@ -67,6 +67,15 @@
$wb['limit_openvz_vm_error_notint'] = 'Das Limit virtueller Server muss eine Zahl sein.';
$wb['ssh_chroot_txt'] = 'SSH-Chroot Optionen';
$wb['web_php_options_txt'] = 'PHP-Optionen';
$wb["limit_cgi_txt"] = "CGI verfügbar";
$wb["limit_ssi_txt"] = "SSI verfügbar";
$wb["limit_perl_txt"] = "Perl verfügbar";
$wb["limit_ruby_txt"] = "Ruby verfügbar";
$wb["limit_python_txt"] = "Python verfügbar";
$wb["force_suexec_txt"] = "SuEXEC erzwungen";
$wb["limit_hterror_txt"] = "Eigene Fehlerseiten verfügbar";
$wb["limit_wildcard_txt"] = "Wildcard Subdomain verfügbar";
$wb["limit_ssl_txt"] = "SSL verfügbar";
$wb['template_type_txt'] = 'Template-Typ';
$wb['template_name_txt'] = 'Template-Name';
$wb["web_limits_txt"] = 'Web-Limits';
interface/web/client/lib/lang/de_reseller.lng
@@ -87,6 +87,15 @@
$wb["delete_additional_template_txt"] = 'Zusätzliches Template löschen';
$wb['ssh_chroot_txt'] = 'SSH-Chroot Optionen';
$wb['web_php_options_txt'] = 'PHP-Optionen';
$wb["limit_cgi_txt"] = "CGI verfügbar";
$wb["limit_ssi_txt"] = "SSI verfügbar";
$wb["limit_perl_txt"] = "Perl verfügbar";
$wb["limit_ruby_txt"] = "Ruby verfügbar";
$wb["limit_python_txt"] = "Python verfügbar";
$wb["force_suexec_txt"] = "SuEXEC erzwungen";
$wb["limit_hterror_txt"] = "Eigene Fehlerseiten verfügbar";
$wb["limit_wildcard_txt"] = "Wildcard Subdomain verfügbar";
$wb["limit_ssl_txt"] = "SSL verfügbar";
$wb['limit_client_error'] = 'Die maximale Anzahl an Kunden wurde erreicht.';
$wb['limit_client_error_positive'] = 'Die Anzahl an Kunden muss > 0 sein';
$wb['limit_web_quota_txt'] = 'Web Quota';
interface/web/client/lib/lang/en_client.lng
@@ -98,6 +98,15 @@
$wb["delete_additional_template_txt"] = 'Delete additional template';
$wb["ssh_chroot_txt"] = 'SSH-Chroot Options';
$wb["web_php_options_txt"] = 'PHP Options';
$wb["limit_cgi_txt"] = "CGI available";
$wb["limit_ssi_txt"] = "SSI available";
$wb["limit_perl_txt"] = "Perl available";
$wb["limit_ruby_txt"] = "Ruby available";
$wb["limit_python_txt"] = "Python available";
$wb["force_suexec_txt"] = "SuEXEC forced";
$wb["limit_hterror_txt"] = "Custom error docs available";
$wb["limit_wildcard_txt"] = "Wildcard subdomain available";
$wb["limit_ssl_txt"] = "SSL available";
$wb["limit_client_error"] = 'The max. number of clients is reached.';
$wb["limit_web_quota_txt"] = 'Web Quota';
$wb["limit_traffic_quota_txt"] = 'Traffic Quota';
interface/web/client/lib/lang/en_client_template.lng
@@ -70,6 +70,15 @@
$wb["limit_openvz_vm_error_notint"] = 'The virtual server limit must be a number.';
$wb["ssh_chroot_txt"] = 'SSH-Chroot Options';
$wb["web_php_options_txt"] = 'PHP Options';
$wb["limit_cgi_txt"] = "CGI available";
$wb["limit_ssi_txt"] = "SSI available";
$wb["limit_perl_txt"] = "Perl available";
$wb["limit_ruby_txt"] = "Ruby available";
$wb["limit_python_txt"] = "Python available";
$wb["force_suexec_txt"] = "SuEXEC forced";
$wb["limit_hterror_txt"] = "Custom error docs available";
$wb["limit_wildcard_txt"] = "Wildcard subdomain available";
$wb["limit_ssl_txt"] = "SSL available";
$wb["web_limits_txt"] = 'Web Limits';
$wb["email_limits_txt"] = 'Email Limits';
$wb["database_limits_txt"] = 'Database Limits';
interface/web/client/lib/lang/en_reseller.lng
@@ -97,6 +97,15 @@
$wb["delete_additional_template_txt"] = 'Delete additional template';
$wb["ssh_chroot_txt"] = 'SSH-Chroot Options';
$wb["web_php_options_txt"] = 'PHP Options';
$wb["limit_cgi_txt"] = "CGI available";
$wb["limit_ssi_txt"] = "SSI available";
$wb["limit_perl_txt"] = "Perl available";
$wb["limit_ruby_txt"] = "Ruby available";
$wb["limit_python_txt"] = "Python available";
$wb["force_suexec_txt"] = "SuEXEC forced";
$wb["limit_hterror_txt"] = "Custom error docs available";
$wb["limit_wildcard_txt"] = "Wildcard subdomain available";
$wb["limit_ssl_txt"] = "SSL available";
$wb["limit_client_error"] = 'The max. number of clients is reached.';
$wb["limit_client_error_positive"] = 'The number of clients must be > 0';
$wb["limit_web_quota_txt"] = 'Web Quota';
interface/web/client/templates/client_edit_limits.htm
@@ -62,6 +62,60 @@
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_cgi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_cgi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_perl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_perl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ruby_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ruby'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_python_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_python'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='force_suexec_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='force_suexec'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_hterror_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_hterror'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_wildcard_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_wildcard'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
                    <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                </div>
interface/web/client/templates/client_template_edit_limits.htm
@@ -26,6 +26,60 @@
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_cgi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_cgi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_perl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_perl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ruby_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ruby'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_python_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_python'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='force_suexec_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='force_suexec'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_hterror_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_hterror'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_wildcard_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_wildcard'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
                    <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                </div>
interface/web/client/templates/reseller_edit_limits.htm
@@ -57,6 +57,60 @@
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_cgi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_cgi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssi_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssi'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_perl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_perl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ruby_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ruby'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_python_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_python'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='force_suexec_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='force_suexec'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_hterror_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_hterror'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_wildcard_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_wildcard'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <p class="label">{tmpl_var name='limit_ssl_txt'}</p>
                    <div class="multiField">
                        {tmpl_var name='limit_ssl'}
                    </div>
                </div>
                <div class="ctrlHolder">
                    <label for="limit_web_aliasdomain">{tmpl_var name='limit_web_aliasdomain_txt'}</label>
                    <input name="limit_web_aliasdomain" id="limit_web_aliasdomain" value="{tmpl_var name='limit_web_aliasdomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                </div>
interface/web/sites/form/web_domain.tform.php
@@ -62,6 +62,15 @@
    $web_domain_edit_readonly = true;
}
$wildcard_available = true;
$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_wildcard'] != 'y') $wildcard_available = false;
    if($client['limit_ssl'] != 'y') $ssl_available = false;
}
$form["tabs"]['domain'] = array (
    'title'     => "Domain",
@@ -203,7 +212,7 @@
            'datatype'    => 'VARCHAR',
            'formtype'    => 'SELECT',
            'default'    => 'www',
            'value'        => array('none' => 'none_txt', 'www' => 'www.', '*' => '*.')
            'value'        => ($wildcard_available ? array('none' => 'none_txt', 'www' => 'www.', '*' => '*.') : array('none' => 'none_txt', 'www' => 'www.'))
        ),
        'ssl' => array (
            'datatype'    => 'VARCHAR',
@@ -300,6 +309,7 @@
    )
);
if($ssl_available) {
$form["tabs"]['ssl'] = array (
    'title'     => "SSL",
    'width'     => 100,
@@ -433,6 +443,7 @@
    ##################################
    )
);
}
//* Statistics
$form["tabs"]['stats'] = array (
interface/web/sites/templates/web_domain_edit.htm
@@ -67,48 +67,48 @@
                <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>
            <div class="ctrlHolder">
            <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>
            <div class="ctrlHolder">
            </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>
            <div class="ctrlHolder apache">
            </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>
            <div class="ctrlHolder apache">
            </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>
            <div class="ctrlHolder apache">
            </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>
            <div class="ctrlHolder apache">
            </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>
            <div class="ctrlHolder">
            </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>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="subdomain">{tmpl_var name='subdomain_txt'}</label>
@@ -116,12 +116,12 @@
                    {tmpl_var name='subdomain'}
                </select>
            </div>
            <div class="ctrlHolder">
            <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>
            </div></tmpl_if>
            <div class="ctrlHolder">
                <label for="php">{tmpl_var name='php_txt'}</label>
                <select name="php" id="php" class="selectInput formLengthHalf">
@@ -145,7 +145,7 @@
        <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_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
            <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_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
        </div>
    </div>
@@ -236,6 +236,14 @@
        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_domain_edit.php');
        });
    <tmpl_else>
        jQuery('#dom-edit-submit').click(function() {
            submitForm('pageForm','sites/web_domain_edit.php');
        });
    </tmpl_if>
            
</script>
interface/web/sites/web_domain_edit.php
@@ -89,13 +89,14 @@
        
        $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.default_webserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
            $client = $app->db->queryOneRecord("SELECT client.limit_web_domain, 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($client['default_webserver'], 'web');
@@ -160,12 +161,16 @@
            $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 = $_SESSION["s"]["user"]["default_group"];
            $client = $app->db->queryOneRecord("SELECT client.client_id, client.limit_web_domain, client.default_webserver, client.contact_name, CONCAT(client.company_name,' :: ',client.contact_name) as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
            $client = $app->db->queryOneRecord("SELECT client.client_id, client.limit_web_domain, client.default_webserver, client.contact_name, CONCAT(client.company_name,' :: ',client.contact_name) 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($client['default_webserver'], 'web');
@@ -243,6 +248,10 @@
            }
            $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]);
            //* Admin: If the logged in user is admin
        } else {
@@ -333,6 +342,7 @@
            }
            $app->tpl->setVar("client_group_id",$client_select);
            foreach($read_limits as $limit) $app->tpl->setVar($limit, 'y');
        }
        $ssl_domain_select = '';
@@ -404,6 +414,12 @@
        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;
@@ -412,10 +428,23 @@
        $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, default_webserver, parent_client_id, limit_web_quota FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
            $client = $app->db->queryOneRecord("SELECT limit_traffic_quota, limit_web_domain, 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'] = '-';
            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'] = '-';
            //* Check the website quota of the client
            if(isset($_POST["hd_quota"]) && $client["limit_web_quota"] >= 0) {
@@ -489,8 +518,20 @@
            // 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 FROM web_domain WHERE domain_id = ".intval($this->id));
                $tmp = $app->db->queryOneRecord("SELECT server_id, `cgi`, `ssi`, `perl`, `ruby`, `python`, `suexec`, `errordocs`, `subdomain`, `ssl` FROM web_domain WHERE domain_id = ".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 {
@@ -606,12 +647,18 @@
            //* 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 domain from web_domain WHERE domain_id = ".$this->id);
            $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);
        }