File "directadmin.php"
Full path: /home/kosmetik/public_html/wp-content/plugins/really-simple-ssl/lets-encrypt/integrations/directadmin/directadmin.php
File
size: 3.79 B
MIME-type: text/x-php
Charset: utf-8
Download Open Edit Advanced Editor Back
<?php
defined('ABSPATH') or die;
require_once rsssl_le_path . 'integrations/directadmin/httpsocket.php';
require_once rsssl_le_path . 'integrations/directadmin/functions.php';
class rsssl_directadmin
{
public $host;
private $login;
private $password;
public $ssl_installation_url;
public function __construct()
{
$password = RSSSL_LE()->letsencrypt_handler->decode(rsssl_get_value('directadmin_password'));
$host = rsssl_get_value('directadmin_host');
$this->host = str_replace(array('http://', 'https://', ':2222'), '', $host);
$this->login = rsssl_get_value('directadmin_username');
$this->password = $password;
$this->ssl_installation_url = 'https://' . $this->host . "";
}
public function credentials_available()
{
if (!empty($this->host) && !empty($this->password) && !empty($this->login)) {
return true;
}
return false;
}
public function installSSL($domains)
{
$response = false;
if (is_array($domains) && count($domains) > 0) {
foreach ($domains as $domain) {
$response_item = $this->installSSLPerDomain($domain);
if (!$response) {
$response = $response_item;
}
if ($response->status !== 'success') {
$response = $response_item;
}
}
}
if (!$response) {
$response = new RSSSL_RESPONSE('error', 'stop', __("No valid list of domains.", "really-simple-ssl"));
}
return $response;
}
public function installSSLPerDomain($domain)
{
$key_file = get_option('rsssl_private_key_path');
$cert_file = get_option('rsssl_certificate_path');
$cabundle_file = get_option('rsssl_intermediate_path');
try {
$server_ssl = true;
$server_port = 2222;
$sock = new HTTPSocket();
if ($server_ssl) {
$sock->connect("ssl://" . $this->host, $server_port);
} else {
$sock->connect($this->host, $server_port);
}
$sock->set_login($this->login, $this->password);
$sock->method = "POST";
$sock->query('/CMD_API_SSL', array('domain' => $domain, 'action' => 'save', 'type' => 'paste', 'certificate' => file_get_contents($key_file) . file_get_contents($cert_file)));
$response = $sock->fetch_parsed_body();
error_log(print_r($response, true));
$status = 'warning';
$action = 'continue';
$message = rsssl_get_manual_instructions_text($this->ssl_installation_url);
if (empty($response['details']) && stripos($response[0], 'Error')) {
$sock->query('/CMD_SSL', array('domain' => $domain, 'action' => 'save', 'type' => 'cacert', 'active' => 'yes', 'cacert' => file_get_contents($cabundle_file)));
$response = $sock->fetch_parsed_body();
error_log(print_r($response, true));
if (empty($response['details']) && stripos($response[0], 'Error')) {
$status = 'success';
$action = 'finalize';
$message = sprintf(__("SSL successfully installed on %s", "really-simple-ssl"), $domain);
update_option('rsssl_le_certificate_installed_by_rsssl', 'directadmin');
delete_option('rsssl_installation_error');
}
}
} catch (Exception $e) {
error_log(print_r($e, true));
update_option('rsssl_installation_error', 'directadmin');
$status = 'warning';
$action = 'continue';
$message = $e->getMessage();
}
return new RSSSL_RESPONSE($status, $action, $message);
}
}