From 181ee7eedc5b73dfb893fa13bd5a5fa155e0562b Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Thu, 26 May 2016 09:03:14 -0400
Subject: [PATCH] Fixed #3855 - Added missing html template for form page System > Interface config > DNS
---
server/plugins-available/apache2_plugin.inc.php | 52 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 42 insertions(+), 10 deletions(-)
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 6bc4b97..8c1da78 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -369,6 +369,22 @@
$app->dbmaster->query("UPDATE web_domain SET ssl_request = ?, ssl_cert = ?, ssl_key = ? WHERE domain = ?", $ssl_request, $ssl_cert, $ssl_key2, $data['new']['domain']);
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
}
+
+ //* Check that the SSL key is not password protected
+ if($data["new"]["ssl_action"] == 'save') {
+ if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) {
+ $data["new"]["ssl_action"] = '';
+
+ $app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN);
+ $app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.');
+
+ /* Update the DB of the (local) Server */
+ $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+
+ /* Update also the master-DB of the Server-Farm */
+ $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+ }
+ }
//* Save a SSL certificate to disk
if($data["new"]["ssl_action"] == 'save') {
@@ -870,7 +886,7 @@
$file_system = explode(" ", $df_output)[0];
$primitive_root = explode(" ", $df_output)[1];
- if ( $file_system , array('ext2','ext3','ext4') ) {
+ if ( in_array($file_system , array('ext2','ext3','ext4'), true) ) {
exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null');
exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null');
} elseif ($file_system == 'xfs') {
@@ -1216,11 +1232,23 @@
//* check if we have already a Let's Encrypt cert
if(!file_exists($crt_tmp_file) && !file_exists($key_tmp_file)) {
$app->log("Create Let's Encrypt SSL Cert for: $domain", LOGLEVEL_DEBUG);
-
- if(file_exists("/root/.local/share/letsencrypt/bin/letsencrypt")) {
- $this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme");
+
+ $success = false;
+ $letsencrypt = array_shift( split("\n", `which letsencrypt /root/.local/share/letsencrypt/bin/letsencrypt`) );
+ if(is_executable($letsencrypt)) {
+ $success = $this->_exec($letsencrypt . " auth --text --agree-tos --authenticator webroot --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --email postmaster@$domain --domains $lddomain --webroot-path /usr/local/ispconfig/interface/acme");
}
- };
+ if(!$success) {
+ // error issuing cert
+ $app->log('Let\'s Encrypt SSL Cert for: ' . $domain . ' could not be issued.', LOGLEVEL_WARN);
+ $data['new']['ssl_letsencrypt'] = 'n';
+ if($data['old']['ssl'] == 'n') $data['new']['ssl'] = 'n';
+ /* Update the DB of the (local) Server */
+ $app->db->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']);
+ /* Update also the master-DB of the Server-Farm */
+ $app->dbmaster->query("UPDATE web_domain SET `ssl` = ?, `ssl_letsencrypt` = ? WHERE `domain` = ?", $data['new']['ssl'], 'n', $data['new']['domain']);
+ }
+ }
//* check is been correctly created
if(file_exists($crt_tmp_file) OR file_exists($key_tmp_file)) {
@@ -1263,11 +1291,11 @@
/* we don't need to store it.
/* Update the DB of the (local) Server */
- $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '$ssl_cert', ssl_key = '$ssl_key' WHERE domain = '".$data['new']['domain']."'");
- $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
+ $app->db->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']);
+ $app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
/* Update also the master-DB of the Server-Farm */
- $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '$ssl_cert', ssl_key = '$ssl_key' WHERE domain = '".$data['new']['domain']."'");
- $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
+ $app->dbmaster->query("UPDATE web_domain SET ssl_request = '', ssl_cert = '', ssl_key = '' WHERE domain = ?", $data['new']['domain']);
+ $app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
}
}
@@ -3347,8 +3375,12 @@
//* Wrapper for exec function for easier debugging
private function _exec($command) {
global $app;
+ $out = array();
+ $ret = 0;
$app->log('exec: '.$command, LOGLEVEL_DEBUG);
- exec($command);
+ exec($command, $out, $ret);
+ if($ret != 0) return false;
+ else return true;
}
private function _checkTcp ($host, $port) {
--
Gitblit v1.9.1