/** * Export virtual hosts * @param DatabaseSqlite3 &$db Database object * @return boolean */ public function exportVirtualHosts(&$db) { // Smarty template if ($this->smarty === null) { $this->smarty = TemplateFactory::create(); if ($this->smarty === false) { return false; } } // Get all virtual hosts and generate SNI configurations $vhosts = VirtualHostFactory::populate($db); // Loop foreach ($vhosts as &$v) { // Extra check for a CA bundle if (is_file(Config::read('pkitls|directoryCerts') . '/' . $v->domainName . '.cabundle')) { $v->CABUNDLE = true; } else { $v->CABUNDLE = false; } } // Assign variables $this->smarty->assignByRef('VHOSTS', $vhosts); $rc = $this->saveConfigFile(Config::read('dovecot|directoryConfD') . '/10-ssl.conf', '10sslconf', 'dovecot.tpl', $this->smarty); if ($rc === false) { return false; } else { return true; } }
/** * Export virtual hosts * @param DatabaseSqlite3 &$db Database object * @return boolean */ public function exportVirtualHosts(&$db) { // Smarty template if ($this->smarty === null) { $this->smarty = TemplateFactory::create(); if ($this->smarty === false) { return false; } } // Get all virtual hosts and generate individual configurations $vhosts = VirtualHostFactory::populate($db); // Loop 1 (gather parked domains) foreach ($vhosts as &$v) { // Skip virtual hosts if ($v->parkedUnder == '') { continue; } // Add parked domain to its parent virtual host $vhosts[$v->parkedUnder]->parkedDomains[] = $v->domainName; } // Loop 2 (generate virtual hosts) foreach ($vhosts as &$v) { // Skip parked domains if ($v->parkedUnder != '') { continue; } // Assign variables $this->smarty->assignByRef('SERVERNAME', $v->domainName); $this->smarty->assignByRef('UNIXNAME', $v->unixName); $this->smarty->assignByRef('IPADDRESS', $v->ipAddress); $this->smarty->assignByRef('HOME', $v->home); if (is_file(Config::read('pkitls|directoryCerts') . '/' . $v->domainName . '.chain')) { $this->smarty->assign('CHAIN', true); } else { $this->smarty->assign('CHAIN', false); } if (is_file(Config::read('pkitls|directoryCerts') . '/' . $v->domainName . '.cabundle')) { $this->smarty->assign('CABUNDLE', true); } else { $this->smarty->assign('CABUNDLE', false); } if (isset($v->parkedDomains)) { $this->smarty->assignByRef('PARKEDDOMAINS', $v->parkedDomains); } else { $this->smarty->assign('PARKEDDOMAINS', array()); } // Save configuration file $rc = $this->saveConfigFile(Config::read('apache|directoryConfD') . '/' . $v->domainName . '.conf', '', 'virtualhostapache.tpl', $this->smarty); if ($rc === false) { return false; } } return true; }
/** * Export virtual hosts * @param DatabaseSqlite3 &$db Database object * @return boolean */ public function exportVirtualHosts(&$db) { // Smarty template if ($this->smarty === null) { $this->smarty = TemplateFactory::create(); if ($this->smarty === false) { return false; } } // OpenDKIM support if (Config::read('opendkim') === 'enabled') { // Default public key file $signatureFile = '/etc/opendkim/keys/default.txt'; if (!is_file($signatureFile)) { Log::error('OpenDKIM public key file not found: ' . $signatureFile); return false; } // Get public key signature $signature = file_get_contents($signatureFile); if ($signature === false) { Log::error('Error while reading the OpenDKIM public key file: ' . signatureFile); return false; } // Filter input $signature = str_replace(array("\n", "\t", '"'), '', $signature); // Extract the TXT part of the signature $rc = preg_match('/\\((.*)\\)/U', $signature, $matches); if ($rc !== 1 || !isset($matches[1])) { Log::error('Error while extracting the signature from the OpenDKIM public key file: ' . signatureFile); return false; } // Remove extra white space within the string and trim $signature = trim(preg_replace('/\\s+/', ' ', $matches[1])); // Assign variable $this->smarty->assignByRef('OPENDKIM', $signature); } else { $this->smarty->assign('OPENDKIM', ''); } // Get all virtual hosts and generate zones $vhosts = VirtualHostFactory::populate($db); // Loop foreach ($vhosts as &$v) { // Assign variables $this->smarty->assignByRef('DOMAINNAME', $v->domainName); $this->smarty->assignByRef('IPADDRESS', $v->ipAddress); $this->smarty->assign('SERIAL', date('Ymd') . $v->domainZoneVersion); $this->smarty->assignByRef('NAMESERVERS', $v->ns); $this->smarty->assignByRef('MAILEXCHANGE', $v->mx); // Generate zone configuration file $rc = $this->saveConfigFile(Config::read('nsd|directoryConfD') . '/' . $v->domainName . '.conf', 'nsdzoneconf', 'nsd.tpl', $this->smarty); if ($rc === false) { return false; } // Generate zone file $rc = $this->saveConfigFile(Config::read('nsd|directoryConfD') . '/' . $v->domainName . '.zone', 'nsdzone', 'nsd.tpl', $this->smarty); if ($rc === false) { return false; } } return true; }