Esempio n. 1
0
 /**
  * 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;
     }
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
 /**
  * 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;
 }