public function applyCertificates()
{
if (defined('CRON')) {
$domainPath = '/usr/local/directadmin/data/users/' . $this->account->getUsername() . '/domains/' . $this->getDomain();
file_put_contents($domainPath . '.key', $this->domainKeys->getPrivate());
chown($domainPath . '.key', 'diradmin');
chgrp($domainPath . '.key', 'diradmin');
chmod($domainPath . '.key', 0600);
file_put_contents($domainPath . '.cert', $this->getCertificate());
chown($domainPath . '.cert', 'diradmin');
chgrp($domainPath . '.cert', 'diradmin');
chmod($domainPath . '.cert', 0600);
file_put_contents($domainPath . '.cacert', implode("\n", $this->getCertificateAuthorityCertificates()));
chown($domainPath . '.cacert', 'diradmin');
chgrp($domainPath . '.cacert', 'diradmin');
chmod($domainPath . '.cacert', 0600);
$config = new Config($domainPath . '.conf');
$config->config('SSLCertificateKeyFile', $domainPath . '.key');
$config->config('SSLCertificateFile', $domainPath . '.cert');
$config->config('SSLCACertificateFile', $domainPath . '.cacert');
$config->config('ssl', 'ON');
} else {
$sock = $this->getSocket();
$sock->set_method('POST');
$sock->query('/CMD_API_SSL', ['domain' => $this->getDomain(), 'action' => 'save', 'type' => 'paste', 'certificate' => $this->domainKeys->getPrivate() . PHP_EOL . $this->getCertificate(), 'submit' => 'Save']);
$result = $sock->fetch_parsed_body();
if ($result['error'] != 0) {
throw new \Exception('Error while executing first API request: ' . $result['details']);
}
$sock->set_method('POST');
$sock->query('/CMD_API_SSL', ['domain' => $this->getDomain(), 'action' => 'save', 'type' => 'cacert', 'active' => 'yes', 'cacert' => implode("\n", $this->getCertificateAuthorityCertificates()), 'submit' => 'Save']);
$result = $sock->fetch_parsed_body();
if ($result['error'] != 0) {
throw new \Exception('Error while executing second API request: ' . $result['details']);
}
}
return true;
}