...
 
Commits (4)
......@@ -102,6 +102,11 @@ $dist = get_distname();
if($dist['id'] == '') die('Linux distribution or version not recognized.');
//** Check the PHP Version
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
die('PHP 7 is not supported by ISPConfig 3.0.5. Plesae use ISPConfig version 3.1 instead.');
}
//** Include the autoinstaller configuration (for non-interactive setups)
error_reporting(E_ALL ^ E_NOTICE);
......
......@@ -2292,7 +2292,7 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`,
-- Dumping data for table `sys_config`
--
INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p8');
INSERT INTO sys_config VALUES ('db','db_version','3.0.5.4p9');
INSERT INTO sys_config VALUES ('interface','session_timeout','0');
SET FOREIGN_KEY_CHECKS = 1;
......@@ -56,7 +56,7 @@ $revision = str_replace(array('Revision:','$',' '), '', $svn_revision);
//** Application
define('ISPC_APP_TITLE', 'ISPConfig');
define('ISPC_APP_VERSION', '3.0.5.4p8');
define('ISPC_APP_VERSION', '3.0.5.4p9');
define('DEVSYSTEM', 0);
......
......@@ -107,6 +107,11 @@ unset($conf);
if($dist['id'] == '') die('Linux distribution or version not recognized.');
//** Check the PHP Version
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
die('PHP 7 is not supported by ISPConfig 3.0.5. Plesae use ISPConfig version 3.1 instead.');
}
//** Include the autoinstaller configuration (for non-interactive setups)
error_reporting(E_ALL ^ E_NOTICE);
......
......@@ -44,7 +44,7 @@ $revision = str_replace(array('Revision:', '$', ' '), '', $svn_revision);
//** Application
define('ISPC_APP_TITLE', 'ISPConfig');
define('ISPC_APP_VERSION', '3.0.5.4p8');
define('ISPC_APP_VERSION', '3.0.5.4p9');
define('DEVSYSTEM', 0);
......
......@@ -232,12 +232,6 @@ $form["tabs"]['domain'] = array (
'default' => 'n',
'value' => array(0 => 'n', 1 => 'y')
),
'ssl_letsencrypt' => array (
'datatype' => 'VARCHAR',
'formtype' => 'CHECKBOX',
'default' => 'n',
'value' => array(0 => 'n', 1 => 'y')
),
'php' => array (
'datatype' => 'VARCHAR',
'formtype' => 'SELECT',
......
......@@ -28,7 +28,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
......
......@@ -26,7 +26,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Собствени страници за грешки';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Клиент';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Suas Páginas de Erro';
$wb['subdomain_txt'] = 'Auto-Subdomínio';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Cliente';
......
......@@ -27,7 +27,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['subdomain_txt'] = 'Automatická subdoména';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klient';
......
......@@ -27,7 +27,6 @@ $wb['traffic_quota_txt'] = 'Transfervolumenbeschränkung';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Kunde';
......
......@@ -30,7 +30,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Προσωπικά έγγραφα σφάλματος';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Πελάτης';
......
......@@ -33,7 +33,6 @@ $wb["ssi_txt"] = 'SSI';
$wb["errordocs_txt"] = 'Own Error-Documents';
$wb["subdomain_txt"] = 'Auto-Subdomain';
$wb["ssl_txt"] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb["suexec_txt"] = 'SuEXEC';
$wb["php_txt"] = 'PHP';
$wb["client_txt"] = 'Client';
......
......@@ -25,7 +25,6 @@ $wb['traffic_quota_txt'] = 'Liikenneraja';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Asiakas';
......
......@@ -25,7 +25,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Pages derreurs personnalisées';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
......
......@@ -30,7 +30,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Vlastite error stranice';
$wb['subdomain_txt'] = 'Automatska poddomena';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klijent';
......
......@@ -26,7 +26,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Saját hibaoldal';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['disabled_txt'] = 'Letiltva';
......
......@@ -28,7 +28,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Dokumen-Kesalahan Pribadi';
$wb['subdomain_txt'] = 'Subdomain Otomatis';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klien';
......
......@@ -26,7 +26,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Errori personalizzati';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Cliente';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = '独自のエラーページを使う';
$wb['subdomain_txt'] = '自動サブドメイン';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'クライアント';
......
......@@ -30,7 +30,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-documenten';
$wb['subdomain_txt'] = 'Auto-subdomein';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klant';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Własne strony błędów';
$wb['subdomain_txt'] = 'Automatyczna subdomena';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klient';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Páginas de Erro';
$wb['subdomain_txt'] = 'Auto-Subdomínio';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Cliente';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['subdomain_txt'] = 'Auto-Subdomain';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
......
......@@ -25,7 +25,6 @@ $wb['traffic_quota_txt'] = 'Квота трафика';
$wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Клиент';
......
......@@ -26,7 +26,6 @@ $wb['cgi_txt'] = 'CGI';
$wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Own Error-Documents';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Client';
......
......@@ -27,7 +27,6 @@ $wb['ssi_txt'] = 'SSI';
$wb['errordocs_txt'] = 'Vlastné Error-Dokumenty';
$wb['subdomain_txt'] = 'Auto-Subdomény';
$wb['ssl_txt'] = 'SSL';
$wb['ssl_letsencrypt_txt'] = 'Let\'s Encrypt';
$wb['suexec_txt'] = 'SuEXEC';
$wb['php_txt'] = 'PHP';
$wb['client_txt'] = 'Klient';
......
......@@ -130,12 +130,6 @@
<div class="multiField">
{tmpl_var name='ssl'}
</div>
</div>
<div class="ctrlHolder">
<p class="label">{tmpl_var name='ssl_letsencrypt_txt'}</p>
<div class="multiField">
{tmpl_var name='ssl_letsencrypt'}
</div>
</div></tmpl_if>
<div class="ctrlHolder">
<label for="php">{tmpl_var name='php_txt'}</label>
......@@ -267,11 +261,5 @@
submitForm('pageForm','sites/web_domain_edit.php');
});
</tmpl_if>
jQuery('input#ssl_letsencrypt').bind('change', function() {
if(jQuery('input#ssl_letsencrypt').is(":checked")) jQuery('input#ssl').prop('checked', true);
});
jQuery('input#ssl').bind('change', function() {
if(jQuery('input#ssl_letsencrypt').is(":checked")) jQuery('input#ssl_letsencrypt').prop('checked', false);
});
</script>
</script>
\ No newline at end of file
......@@ -162,6 +162,32 @@ class page_action extends tform_actions {
//* make sure that the domain is lowercase
if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
// Check custom PHP version
if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') {
// Check php-fpm mode
if($this->dataRecord['php'] == 'php-fpm'){
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
// Check fast-cgi mode
} elseif($this->dataRecord['php'] == 'fast-cgi') {
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
} else {
// Other PHP modes do not have custom versions, so we force the value to be empty
$this->dataRecord['fastcgi_php_version'] = '';
}
}
parent::onSubmit();
}
......
......@@ -767,6 +767,33 @@ class page_action extends tform_actions {
$app->tform->errorMessage .= $app->tform->lng("invalid_custom_php_ini_settings_txt").'<br>';
}
}
// Check custom PHP version
if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') {
// Check php-fpm mode
if($this->dataRecord['php'] == 'php-fpm'){
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
// Check fast-cgi mode
} elseif($this->dataRecord['php'] == 'fast-cgi') {
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
} else {
// Other PHP modes do not have custom versions, so we force the value to be empty
$this->dataRecord['fastcgi_php_version'] = '';
}
}
parent::onSubmit();
}
......
......@@ -170,6 +170,32 @@ class page_action extends tform_actions {
//* make sure that the domain is lowercase
if(isset($this->dataRecord["domain"])) $this->dataRecord["domain"] = strtolower($this->dataRecord["domain"]);
// Check custom PHP version
if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') {
// Check php-fpm mode
if($this->dataRecord['php'] == 'php-fpm'){
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
// Check fast-cgi mode
} elseif($this->dataRecord['php'] == 'fast-cgi') {
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
} else {
// Other PHP modes do not have custom versions, so we force the value to be empty
$this->dataRecord['fastcgi_php_version'] = '';
}
}
parent::onSubmit();
}
......
......@@ -562,6 +562,32 @@ class page_action extends tform_actions {
$app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>';
}
}
// Check custom PHP version
if(isset($this->dataRecord['fastcgi_php_version']) && $this->dataRecord['fastcgi_php_version'] != '') {
// Check php-fpm mode
if($this->dataRecord['php'] == 'php-fpm'){
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fpm_init_script,':',php_fpm_ini_dir,':',php_fpm_pool_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fpm_init_script'].':'.$tmp['php_fpm_ini_dir'].':'.$tmp['php_fpm_pool_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
// Check fast-cgi mode
} elseif($this->dataRecord['php'] == 'fast-cgi') {
$tmp = $app->db->queryOneRecord("SELECT * FROM server_php WHERE CONCAT(name,':',php_fastcgi_binary,':',php_fastcgi_ini_dir) = '".$app->db->quote($this->dataRecord['fastcgi_php_version'])."'");
if(is_array($tmp)) {
$this->dataRecord['fastcgi_php_version'] = $tmp['name'].':'.$tmp['php_fastcgi_binary'].':'.$tmp['php_fastcgi_ini_dir'];
} else {
$this->dataRecord['fastcgi_php_version'] = '';
}
unset($tmp);
} else {
// Other PHP modes do not have custom versions, so we force the value to be empty
$this->dataRecord['fastcgi_php_version'] = '';
}
}
parent::onSubmit();
}
......
......@@ -950,92 +950,6 @@ class apache2_plugin {
}
*/
//* Generate Let's Encrypt SSL certificat
if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') {
$data['new']['ssl_domain'] = $domain;
$vhost_data['ssl_domain'] = $domain;
//* be sure to have good domain
$lddomain = (string) "$domain";
if($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*") {
$lddomain .= (string) " --domains www." . $domain;
}
$crt_tmp_file = "/etc/letsencrypt/live/".$domain."/cert.pem";
$key_tmp_file = "/etc/letsencrypt/live/".$domain."/privkey.pem";
$bundle_tmp_file = "/etc/letsencrypt/live/".$domain."/chain.pem";
$webroot = $data['new']['document_root']."/web";
//* 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(is_dir($webroot . "/.well-known/")) {
$app->log("Remove old challenge directory", LOGLEVEL_DEBUG);
$this->_exec("rm -rf " . $webroot . "/.well-known/");
}
$app->log("Create challenge directory", LOGLEVEL_DEBUG);
$app->system->mkdirpath($webroot . "/.well-known/");
$app->system->chown($webroot . "/.well-known/", $data['new']['system_user']);
$app->system->chgrp($webroot . "/.well-known/", $data['new']['system_group']);
$app->system->mkdirpath($webroot . "/.well-known/acme-challenge");
$app->system->chown($webroot . "/.well-known/acme-challenge/", $data['new']['system_user']);
$app->system->chgrp($webroot . "/.well-known/acme-challenge/", $data['new']['system_group']);
$app->system->chmod($webroot . "/.well-known/acme-challenge", "g+s");
$this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth -a webroot --email postmaster@$domain --domains $lddomain --webroot-path $webroot");
};
//* check is been correctly created
if(file_exists($crt_tmp_file) OR file_exists($key_tmp_file)) {
$date = date("YmdHis");
if(is_file($key_file)) {
$app->system->copy($key_file, $key_file.'.old'.$date);
$app->system->chmod($key_file.'.old.'.$date, 0400);
$app->system->unlink($key_file);
}
if ($web_config["website_symlinks_rel"] == 'y') {
$this->create_relative_link(escapeshellcmd($key_tmp_file), escapeshellcmd($key_file));
} else {
exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file));
}
if(is_file($crt_file)) {
$app->system->copy($crt_file, $crt_file.'.old.'.$date);
$app->system->chmod($crt_file.'.old.'.$date, 0400);
$app->system->unlink($crt_file);
}
if($web_config["website_symlinks_rel"] == 'y') {
$this->create_relative_link(escapeshellcmd($crt_tmp_file), escapeshellcmd($crt_file));
} else {
exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file));
}
if(is_file($bundle_file)) {
$app->system->copy($bundle_file, $bundle_file.'.old.'.$date);
$app->system->chmod($bundle_file.'.old.'.$date, 0400);
$app->system->unlink($bundle_file);
}
if($web_config["website_symlinks_rel"] == 'y') {
$this->create_relative_link(escapeshellcmd($bundle_tmp_file), escapeshellcmd($bundle_file));
} else {
exec("ln -s ".escapeshellcmd($bundle_tmp_file)." ".escapeshellcmd($bundle_file));
}
/* 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']."'");
/* 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']."'");
}
};
if(@is_file($bundle_file)) $vhost_data['has_bundle_cert'] = 1;
//$vhost_data['document_root'] = $data['new']['document_root'].'/' . $web_folder;
......
......@@ -1102,87 +1102,10 @@ class nginx_plugin {
// Check if a SSL cert exists
$ssl_dir = $data['new']['document_root'].'/ssl';
if(!isset($data['new']['ssl_domain']) OR empty($data['new']['ssl_domain'])) { $data['new']['ssl_domain'] = $data['new']['domain']; }
$domain = $data['new']['ssl_domain'];
$tpl->setVar('ssl_domain', $domain);
$key_file = $ssl_dir.'/'.$domain.'.key';
$crt_file = $ssl_dir.'/'.$domain.'.crt';
$tpl->setVar('ssl_letsencrypt', "n");
//* Generate Let's Encrypt SSL certificat
if($data['new']['ssl'] == 'y' && $data['new']['ssl_letsencrypt'] == 'y') {
//* be sure to have good domain
$lddomain = (string) "$domain";
if($data['new']['subdomain'] == "www" OR $data['new']['subdomain'] == "*") {
$lddomain .= (string) " --domains www." . $domain;
}
$tpl->setVar('ssl_letsencrypt', "y");
//* TODO: check dns entry is correct
$crt_tmp_file = "/etc/letsencrypt/live/".$domain."/fullchain.pem";
$key_tmp_file = "/etc/letsencrypt/live/".$domain."/privkey.pem";
$webroot = $data['new']['document_root']."/web";
//* 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(is_dir($webroot . "/.well-known/")) {
$app->log("Remove old challenge directory", LOGLEVEL_DEBUG);
$this->_exec("rm -rf " . $webroot . "/.well-known/");
}
$app->log("Create challenge directory", LOGLEVEL_DEBUG);
$app->system->mkdirpath($webroot . "/.well-known/");
$app->system->chown($webroot . "/.well-known/", $$data['new']['system_user']);
$app->system->chgrp($webroot . "/.well-known/", $data['new']['system_group']);
$app->system->mkdirpath($webroot . "/.well-known/acme-challenge");
$app->system->chown($webroot . "/.well-known/acme-challenge/", $data['new']['system_user']);
$app->system->chgrp($webroot . "/.well-known/acme-challenge/", $data['new']['system_group']);
$app->system->chmod($webroot . "/.well-known/acme-challenge", "g+s");
$this->_exec("/root/.local/share/letsencrypt/bin/letsencrypt auth -a webroot --email postmaster@$domain --domains $lddomain --webroot-path $webroot");
};
//* check is been correctly created
if(file_exists($crt_tmp_file) OR file_exists($key_tmp_file)) {
$date = date("YmdHis");
//* TODO: check if is a symlink, if target same keep it, either remove it
if(is_file($key_file)) {
$app->system->copy($key_file, $key_file.'.old'.$date);
$app->system->chmod($key_file.'.old.'.$date, 0400);
$app->system->unlink($key_file);
}
if ($web_config["website_symlinks_rel"] == 'y') {
$this->create_relative_link(escapeshellcmd($key_tmp_file), escapeshellcmd($key_file));
} else {
exec("ln -s ".escapeshellcmd($key_tmp_file)." ".escapeshellcmd($key_file));
}
if(is_file($crt_file)) {
$app->system->copy($crt_file, $crt_file.'.old.'.$date);
$app->system->chmod($crt_file.'.old.'.$date, 0400);
$app->system->unlink($crt_file);
}
if($web_config["website_symlinks_rel"] == 'y') {
$this->create_relative_link(escapeshellcmd($crt_tmp_file), escapeshellcmd($crt_file));
} else {
exec("ln -s ".escapeshellcmd($crt_tmp_file)." ".escapeshellcmd($crt_file));
}
/* 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_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_key = '' WHERE domain = '".$data['new']['domain']."'");
$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = '".$data['new']['domain']."'");
}
};
if($domain!='' && $data['new']['ssl'] == 'y' && @is_file($crt_file) && @is_file($key_file) && (@filesize($crt_file)>0) && (@filesize($key_file)>0)) {
$vhost_data['ssl_enabled'] = 1;
$app->log('Enable SSL for: '.$domain, LOGLEVEL_DEBUG);
......