From 9ca1e3b8acc34e15ff4bdbdd4b61402da06b4227 Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Mon, 05 Jan 2015 01:40:07 -0500
Subject: [PATCH] Merge branch 'master' of git.ispconfig.org:ispconfig/ispconfig3
---
server/conf/nginx_vhost.conf.master | 6 +-
interface/web/admin/templates/server_config_web_edit.htm | 8 ++
interface/web/mail/lib/lang/en_mail_forward.lng | 1
interface/web/sites/lib/lang/en_web_vhost_domain.lng | 1
interface/web/client/lib/lang/en_reseller.lng | 1
install/tpl/server.ini.master | 1
interface/web/admin/form/server_config.tform.php | 9 +++
interface/web/client/lib/lang/en_client.lng | 1
interface/web/admin/lib/lang/de_server_config.lng | 1
interface/web/mail/lib/lang/de_mail_forward.lng | 1
install/sql/ispconfig3.sql | 1
interface/lib/classes/db_mysql.inc.php | 2
interface/web/sites/form/web_vhost_domain.tform.php | 9 +++
interface/web/sites/web_vhost_domain_edit.php | 6 ++
server/conf/apache_apps.vhost.master | 10 ++
server/lib/classes/db_mysql.inc.php | 2
interface/web/sites/templates/web_vhost_domain_advanced.htm | 2
interface/web/client/form/client.tform.php | 7 ++
interface/lib/classes/validate_client.inc.php | 78 ++++++++++++++++++++++++++
interface/web/admin/lib/lang/en_server_config.lng | 1
interface/web/client/lib/lang/de_reseller.lng | 3
interface/web/client/lib/lang/de_client.lng | 3
interface/web/sites/lib/lang/de_web_vhost_domain.lng | 1
install/sql/incremental/upd_0080.sql | 1
interface/web/client/form/reseller.tform.php | 7 ++
interface/web/sites/templates/web_vhost_domain_ssl.htm | 10 +++
26 files changed, 160 insertions(+), 13 deletions(-)
diff --git a/install/sql/incremental/upd_0080.sql b/install/sql/incremental/upd_0080.sql
new file mode 100644
index 0000000..fcdcb62
--- /dev/null
+++ b/install/sql/incremental/upd_0080.sql
@@ -0,0 +1 @@
+ALTER TABLE `web_domain` ADD COLUMN `enable_spdy` ENUM('y','n') NULL DEFAULT 'n' AFTER `proxy_directives`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 6af74fb..b6390e7 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1877,6 +1877,7 @@
`traffic_quota_lock` enum('n','y') NOT NULL default 'n',
`fastcgi_php_version` varchar(255) DEFAULT NULL,
`proxy_directives` mediumtext,
+ `enable_spdy` ENUM('y','n') NULL DEFAULT 'n',
`last_quota_notification` date NULL default NULL,
`rewrite_rules` mediumtext,
`added_date` date NOT NULL DEFAULT '0000-00-00',
diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index c563650..7805988 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -85,6 +85,7 @@
php_ini_path_cgi=/etc/php5/cgi/php.ini
check_apache_config=y
enable_sni=y
+enable_spdy=n
enable_ip_wildcard=y
overtraffic_notify_admin=y
overtraffic_notify_client=y
diff --git a/interface/lib/classes/db_mysql.inc.php b/interface/lib/classes/db_mysql.inc.php
index c8d569b..d9ec9b8 100644
--- a/interface/lib/classes/db_mysql.inc.php
+++ b/interface/lib/classes/db_mysql.inc.php
@@ -86,7 +86,7 @@
$this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!');
return false;
}
- if(!((bool)mysqli_query( $this->_iConnId, "USE $this->dbName"))) {
+ if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) {
$this->close();
$this->_sqlerror('Datenbank nicht gefunden / Database not found');
return false;
diff --git a/interface/lib/classes/validate_client.inc.php b/interface/lib/classes/validate_client.inc.php
index 0f90a5b..198701b 100644
--- a/interface/lib/classes/validate_client.inc.php
+++ b/interface/lib/classes/validate_client.inc.php
@@ -136,7 +136,85 @@
}
}
+ function check_vat_id ($field_name, $field_value, $validator){
+ global $app, $page;
+
+ $vatid = trim($field_value);
+ if(isset($app->remoting_lib->primary_id)) {
+ $country = $app->remoting_lib->dataRecord['country'];
+ } else {
+ $country = $page->dataRecord['country'];
+ }
+
+ // check if country is member of EU
+ $country_details = $app->db->queryOneRecord("SELECT * FROM country WHERE iso = '".$country."'");
+ if($country_details['eu'] == 'y' && $vatid != ''){
+
+ $vatid = preg_replace('/\s+/', '', $vatid);
+ $vatid = str_replace(array('.', '-', ','), '', $vatid);
+ $cc = substr($vatid, 0, 2);
+ $vn = substr($vatid, 2);
+ // Test if the country of the VAT-ID matches the country of the customer
+ if($country != ''){
+ if(strtoupper($cc) != $country){
+ $errmsg = $validator['errmsg'];
+ if(isset($app->tform->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg]."<br>\r\n";
+ } else {
+ return $errmsg."<br>\r\n";
+ }
+ }
+ }
+
+ $client = new SoapClient("http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl");
+
+ if($client){
+ $params = array('countryCode' => $cc, 'vatNumber' => $vn);
+ try{
+ $r = $client->checkVat($params);
+ if($r->valid == true){
+ } else {
+ $errmsg = $validator['errmsg'];
+ if(isset($app->tform->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg]."<br>\r\n";
+ } else {
+ return $errmsg."<br>\r\n";
+ }
+ }
+
+ // This foreach shows every single line of the returned information
+ /*
+ foreach($r as $k=>$prop){
+ echo $k . ': ' . $prop;
+ }
+ */
+
+ } catch(SoapFault $e) {
+ //echo 'Error, see message: '.$e->faultstring;
+ switch ($e->faultstring) {
+ case 'INVALID_INPUT':
+ $errmsg = $validator['errmsg'];
+ if(isset($app->tform->wordbook[$errmsg])) {
+ return $app->tform->wordbook[$errmsg]."<br>\r\n";
+ } else {
+ return $errmsg."<br>\r\n";
+ }
+ break;
+ // the following cases shouldn't be the user's fault, so we return no error
+ case 'SERVICE_UNAVAILABLE':
+ case 'MS_UNAVAILABLE':
+ case 'TIMEOUT':
+ case 'SERVER_BUSY':
+ break;
+ }
+ }
+ } else {
+ // Connection to host not possible, europe.eu down?
+ // this shouldn't be the user's fault, so we return no error
+ }
+ }
+ }
}
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index debceae..190c8c4 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1021,6 +1021,15 @@
'width' => '40',
'maxlength' => '255'
),
+ 'enable_spdy' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array (
+ 0 => 'n',
+ 1 => 'y'
+ )
+ ),
'apps_vhost_port' => array(
'datatype' => 'VARCHAR',
'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 6a8e421..1447411 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -262,4 +262,5 @@
$wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.';
$wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung';
$wb['php_handler_txt'] = 'Standard-PHP-Handler';
+$wb['enable_spdy_txt'] = 'Stellt SPDY zur Verfügung';
?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index b628834..8affba0 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -263,4 +263,5 @@
$wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes';
$wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.';
$wb['php_ini_check_minutes_info_txt'] = '0 = no check';
+$wb['enable_spdy_txt'] = 'Makes SPDY available';
?>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 1ea5255..c4079bf 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -161,6 +161,14 @@
{tmpl_var name='enable_sni'}
</div>
</div>
+ <div class="ctrlHolder">
+ <p class="label">
+ <tmpl_var name="enable_spdy_txt">
+ </p>
+ <div class="multiField">
+ <tmpl_var name="enable_spdy">
+ </div>
+ </div>
<div class="ctrlHolder">
<label for="CA_path">{tmpl_var name='CA_path_txt'}</label>
<input name="CA_path" id="CA_path" value="{tmpl_var name='CA_path'}" size="40" maxlength="255" type="text" autocomplete="off" class="textInput" />
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 3625452..8d2ce89 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -367,7 +367,12 @@
'width' => '30',
'maxlength' => '255',
'rows' => '',
- 'cols' => ''
+ 'cols' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_client',
+ 'function' => 'check_vat_id',
+ 'errmsg'=> 'invalid_vat_id'),
+ ),
),
'company_id' => array (
'datatype' => 'VARCHAR',
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index 8efedf7..b70c765 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -364,7 +364,12 @@
'width' => '30',
'maxlength' => '255',
'rows' => '',
- 'cols' => ''
+ 'cols' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'CUSTOM',
+ 'class' => 'validate_client',
+ 'function' => 'check_vat_id',
+ 'errmsg'=> 'invalid_vat_id'),
+ ),
),
'company_id' => array (
'datatype' => 'VARCHAR',
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index e5ba066..7ee7226 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -110,7 +110,7 @@
$wb['limit_backup_txt'] = 'Backupfunktion verfügbar';
$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
$wb['customer_no_txt'] = 'Kundennummer';
-$wb['vat_id_txt'] = 'USt-ID';
+$wb['vat_id_txt'] = 'USt.-ID';
$wb['required_fields_txt'] = '* Benötigte Felder';
$wb['limit_mailmailinglist_txt'] = 'Max. Anzahl an Mailinglisten';
$wb['limit_mailmailinglist_error_notint'] = 'Das Mailinglisten Limit muss eine Zahl sein.';
@@ -176,4 +176,5 @@
$wb['reseller_txt'] = 'Reseller';
$wb['btn_save_txt'] = 'Speichern';
$wb['btn_cancel_txt'] = 'Abbrechen';
+$wb['invalid_vat_id'] = 'Die USt.-ID ist ungültig.';
?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 1595e56..541b5d2 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -106,7 +106,7 @@
$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
$wb['limit_dns_record_error_notint'] = 'Das DNS Eintrag Limit muss eine Zahl sein.';
$wb['customer_no_txt'] = 'Kundennummer';
-$wb['vat_id_txt'] = 'USt-ID';
+$wb['vat_id_txt'] = 'USt.-ID';
$wb['required_fields_txt'] = '* Benötigte Felder';
$wb['limit_webdav_user_txt'] = 'Max. Anzahl an WebDAV Benutzern';
$wb['limit_webdav_user_error_notint'] = 'Das WebDAV Benutzer Limit muss eine Zahl sein.';
@@ -160,4 +160,5 @@
$wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
$wb['client_limits_txt'] = 'Client Limits';
$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
+$wb['invalid_vat_id'] = 'Die USt.-ID ist ungültig.';
?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 225b304..e7e634b 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -179,4 +179,5 @@
$wb['reseller_txt'] = 'Reseller';
$wb['btn_save_txt'] = "Save";
$wb['btn_cancel_txt'] = "Cancel";
+$wb['invalid_vat_id'] = 'The VAT ID is invalid.';
?>
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index b94c30e..e23657c 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -178,4 +178,5 @@
$wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
$wb['client_limits_txt'] = 'Client Limits';
$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than "custom" is selected.';
+$wb['invalid_vat_id'] = 'The VAT ID is invalid.';
?>
diff --git a/interface/web/mail/lib/lang/de_mail_forward.lng b/interface/web/mail/lib/lang/de_mail_forward.lng
index a392ac4..e0ef8c7 100644
--- a/interface/web/mail/lib/lang/de_mail_forward.lng
+++ b/interface/web/mail/lib/lang/de_mail_forward.lng
@@ -6,4 +6,5 @@
$wb['duplicate_mailbox_txt'] = 'Es existiert bereits ein E-Mail Konto mit dieser Adresse.';
$wb['domain_txt'] = 'Domain';
$wb['source_txt'] = 'Quell E-Mail Adresse';
+$wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail Adresse an.';
?>
diff --git a/interface/web/mail/lib/lang/en_mail_forward.lng b/interface/web/mail/lib/lang/en_mail_forward.lng
index 4482593..5d371ee 100644
--- a/interface/web/mail/lib/lang/en_mail_forward.lng
+++ b/interface/web/mail/lib/lang/en_mail_forward.lng
@@ -6,4 +6,5 @@
$wb["duplicate_mailbox_txt"] = 'There is already a mailbox with this email address';
$wb['domain_txt'] = 'Domain';
$wb["source_txt"] = 'Source Email';
+$wb['email_error_isemail'] = 'Please enter a valid email address.';
?>
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 4d6b161..c342605 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -523,6 +523,15 @@
'default' => '',
'value' => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt')
),
+ 'enable_spdy' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array (
+ 0 => 'n',
+ 1 => 'y'
+ )
+ ),
//#################################
// ENDE Datatable fields
//#################################
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
index 7cce816..a6b866d 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
@@ -136,4 +136,5 @@
$wb['apache_directive_blocked_error'] = 'Die Apache Direktive wurde durch die Sicherheitsrichtline blockiert:';
$wb['btn_save_txt'] = 'Speichern';
$wb['btn_cancel_txt'] = 'Abbrechen';
+$wb['enable_spdy_txt'] = 'Aktiviere SPDY';
?>
diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
index 1f6b455..3be30d0 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
@@ -139,4 +139,5 @@
$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
$wb['btn_save_txt'] = "Save";
$wb['btn_cancel_txt'] = "Cancel";
+$wb['enable_spdy_txt'] = 'Enable SPDY';
?>
diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm
index d2c3bb8..8529819 100644
--- a/interface/web/sites/templates/web_vhost_domain_advanced.htm
+++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm
@@ -176,4 +176,4 @@
});
}
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm
index 4869c19..e910e22 100644
--- a/interface/web/sites/templates/web_vhost_domain_ssl.htm
+++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm
@@ -64,6 +64,14 @@
{tmpl_var name='ssl_action'}
</select>
</div>
+ {tmpl_if name="is_spdy_enabled"}
+ <div class="ctrlHolder">
+ <p class="label">{tmpl_var name='enable_spdy_txt'}</p>
+ <div class="multiField">
+ {tmpl_var name="enable_spdy"}
+ </div>
+ </div>
+ {/tmpl_if}
</fieldset>
<input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -74,4 +82,4 @@
</div>
</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 8935713..27ece43 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -699,6 +699,8 @@
$app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type);
+ $app->tpl->setVar('is_spdy_enabled', ($web_config['enable_spdy'] === 'y'));
+
parent::onShowEnd();
}
@@ -1068,6 +1070,10 @@
}
}
+ if($web_config['enable_spdy'] === 'n') {
+ unset($app->tform->formDef["tabs"]['ssl']['fields']['enable_spdy']);
+ }
+
parent::onSubmit();
}
diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master
index bc6c6bc..7d6d665 100644
--- a/server/conf/apache_apps.vhost.master
+++ b/server/conf/apache_apps.vhost.master
@@ -10,11 +10,17 @@
<VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}>
ServerAdmin webmaster@localhost
{tmpl_var name='apps_vhost_servername'}
-
+
<FilesMatch "\.ph(p3?|tml)$">
SetHandler None
</FilesMatch>
-
+
+ {tmpl_if name="enable_spdy" op="==" value="y"}
+ <IfModule spdy_module>
+ SpdyEnabled on
+ </IfModule>
+ {/tmpl_if}
+
<IfModule mod_php5.c>
DocumentRoot {tmpl_var name='apps_vhost_dir'}
AddType application/x-httpd-php .php
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 222bf29..5236a19 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -5,10 +5,10 @@
</tmpl_if>
<tmpl_if name='ssl_enabled'>
- listen <tmpl_var name='ip_address'>:443 ssl;
+ listen <tmpl_var name='ip_address'>:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
<tmpl_if name='ipv6_enabled'>
- listen [<tmpl_var name='ipv6_address'>]:443 ssl;
+ listen [<tmpl_var name='ipv6_address'>]:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};;
</tmpl_if>
ssl_certificate <tmpl_var name='document_root'>/ssl/<tmpl_var name='ssl_domain'>.crt;
ssl_certificate_key <tmpl_var name='document_root'>/ssl/<tmpl_var name='ssl_domain'>.key;
@@ -242,4 +242,4 @@
}
</tmpl_if>
}
-</tmpl_loop>
\ No newline at end of file
+</tmpl_loop>
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index c0eed64..6f443fb 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -86,7 +86,7 @@
$this->_sqlerror('Zugriff auf Datenbankserver fehlgeschlagen! / Database server not accessible!');
return false;
}
- if(!((bool)mysqli_query( $this->_iConnId, "USE $this->dbName"))) {
+ if(!((bool)mysqli_query( $this->_iConnId, 'USE `' . $this->dbName . '`'))) {
$this->close();
$this->_sqlerror('Datenbank nicht gefunden / Database not found');
return false;
--
Gitblit v1.9.1