| | |
| | | */ |
| | | |
| | | class installer_dist extends installer_base { |
| | | |
| | | public function configure_mailman($status = 'insert') { |
| | | global $conf; |
| | | |
| | | $config_dir = $conf['mailman']['config_dir'].'/'; |
| | | $full_file_name = $config_dir.'mm_cfg.py'; |
| | | //* Backup exiting file |
| | | if(is_file($full_file_name)) { |
| | | copy($full_file_name, $config_dir.'mm_cfg.py~'); |
| | | } |
| | | |
| | | // load files |
| | | $content = rf('tpl/mm_cfg.py.master'); |
| | | $old_file = rf($full_file_name); |
| | | |
| | | $old_options = array(); |
| | | $lines = explode("\n", $old_file); |
| | | foreach ($lines as $line) |
| | | { |
| | | if (trim($line) != '' && substr($line, 0, 1) != '#') |
| | | { |
| | | @list($key, $value) = @explode("=", $line); |
| | | if (!empty($value)) |
| | | { |
| | | $key = rtrim($key); |
| | | $old_options[$key] = trim($value); |
| | | } |
| | | } |
| | | } |
| | | |
| | | $config_dir = $conf['mailman']['config_dir'].'/'; |
| | | $full_file_name = $config_dir.'virtual_to_transport.sh'; |
| | | |
| | | //* Backup exiting virtual_to_transport.sh script |
| | | if(is_file($full_file_name)) { |
| | | copy($full_file_name, $config_dir.'virtual_to_transport.sh~'); |
| | | } |
| | | |
| | | copy('tpl/mailman-virtual_to_transport.sh',$full_file_name); |
| | | chgrp($full_file_name,'mailman'); |
| | | chmod($full_file_name,0750); |
| | | |
| | | if(!is_file('/var/lib/mailman/data/transport-mailman')) touch('/var/lib/mailman/data/transport-mailman'); |
| | | exec('/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'); |
| | | |
| | | exec('/usr/lib/mailman/bin/genaliases 2>/dev/null'); |
| | | |
| | | $virtual_domains = ''; |
| | | if($status == 'update') |
| | | { |
| | | // create virtual_domains list |
| | | $domainAll = $this->db->queryAllRecords("SELECT domain FROM mail_mailinglist GROUP BY domain"); |
| | | |
| | | if(is_array($domainAll)) { |
| | | foreach($domainAll as $domain) |
| | | { |
| | | if ($domainAll[0]['domain'] == $domain['domain']) |
| | | $virtual_domains .= "'".$domain['domain']."'"; |
| | | else |
| | | $virtual_domains .= ", '".$domain['domain']."'"; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | $virtual_domains = "' '"; |
| | | |
| | | $content = str_replace('{hostname}', $conf['hostname'], $content); |
| | | if(!isset($old_options['DEFAULT_SERVER_LANGUAGE'])) $old_options['DEFAULT_SERVER_LANGUAGE'] = ''; |
| | | $content = str_replace('{default_language}', $old_options['DEFAULT_SERVER_LANGUAGE'], $content); |
| | | $content = str_replace('{virtual_domains}', $virtual_domains, $content); |
| | | |
| | | wf($full_file_name, $content); |
| | | } |
| | | |
| | | function configure_postfix($options = '') |
| | | { |
| | |
| | | 'smtpd_tls_security_level = may', |
| | | 'smtpd_tls_cert_file = '.$config_dir.'/smtpd.cert', |
| | | 'smtpd_tls_key_file = '.$config_dir.'/smtpd.key', |
| | | 'transport_maps = proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf', |
| | | 'transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:'.$config_dir.'/mysql-virtual_transports.cf', |
| | | 'relay_domains = mysql:'.$config_dir.'/mysql-virtual_relaydomains.cf', |
| | | 'relay_recipient_maps = mysql:'.$config_dir.'/mysql-virtual_relayrecipientmaps.cf', |
| | | 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps', |
| | |
| | | $command = 'groupadd sshusers'; |
| | | if(!is_group('sshusers')) caselog($command.' &> /dev/null 2> /dev/null', __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command"); |
| | | |
| | | // create PHP-FPM pool dir |
| | | exec('mkdir -p '.$conf['nginx']['php_fpm_pool_dir']); |
| | | |
| | | $content = rf('/etc/php5/fpm/php-fpm.conf'); |
| | | if(stripos($content, 'include=/etc/php5/fpm/pool.d/*.conf') === false){ |
| | | af('/etc/php5/fpm/php-fpm.conf',"\ninclude=/etc/php5/fpm/pool.d/*.conf"); |
| | | } |
| | | unset($content); |
| | | if(!@is_file($conf['nginx']['php_fpm_ini_path'])){ |
| | | if(@is_file('/etc/php5/cli/php.ini')){ |
| | | exec('cp -f /etc/php5/cli/php.ini '.$conf['nginx']['php_fpm_ini_path']); |
| | | } elseif(@is_file('/etc/php5/fastcgi/php.ini')){ |
| | | exec('cp -f /etc/php5/fastcgi/php.ini '.$conf['nginx']['php_fpm_ini_path']); |
| | | } elseif(@is_file('/etc/php5/apache2/php.ini')){ |
| | | exec('cp -f /etc/php5/apache2/php.ini '.$conf['nginx']['php_fpm_ini_path']); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | public function configure_nginx(){ |
| | |
| | | exec("chmod -R 770 $install_dir/server/aps_packages"); |
| | | |
| | | //* make sure that the server config file (not the interface one) is only readable by the root user |
| | | exec("chmod 600 $install_dir/server/lib/$configfile"); |
| | | exec("chown root:root $install_dir/server/lib/$configfile"); |
| | | chmod($install_dir.'/server/lib/config.inc.php', 0600); |
| | | chown($install_dir.'/server/lib/config.inc.php', 'root'); |
| | | chgrp($install_dir.'/server/lib/config.inc.php', 'root'); |
| | | |
| | | //* Make sure thet the interface config file is readable by user ispconfig only |
| | | chmod($install_dir.'/interface/lib/config.inc.php', 0600); |
| | | chown($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); |
| | | chgrp($install_dir.'/interface/lib/config.inc.php', 'ispconfig'); |
| | | |
| | | if(@is_file("$install_dir/server/lib/mysql_clientdb.conf")) { |
| | | exec("chmod 600 $install_dir/server/lib/mysql_clientdb.conf"); |
| | | exec("chown root:root $install_dir/server/lib/mysql_clientdb.conf"); |
| | |
| | | } else { |
| | | $content = str_replace('{ssl_comment}', '#', $content); |
| | | } |
| | | if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { |
| | | $content = str_replace('{ssl_bundle_comment}', '', $content); |
| | | } else { |
| | | $content = str_replace('{ssl_bundle_comment}', '#', $content); |
| | | } |
| | | |
| | | $content = str_replace('/var/www/', '/srv/www/', $content); |
| | | |
| | | wf("$vhost_conf_dir/ispconfig.vhost", $content); |
| | | |
| | | if(!is_file('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { |
| | | $content = rf('tpl/apache_ispconfig_fcgi_starter.master'); |
| | | $content = str_replace('{fastcgi_bin}', $conf['fastcgi']['fastcgi_bin'], $content); |
| | | $content = str_replace('{fastcgi_phpini_path}', $conf['fastcgi']['fastcgi_phpini_path'], $content); |
| | | exec('mkdir -p /srv/www/php-fcgi-scripts/ispconfig'); |
| | | exec('cp tpl/apache_ispconfig_fcgi_starter.master /srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); |
| | | wf('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter', $content); |
| | | exec('chmod +x /srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter'); |
| | | exec('ln -s /usr/local/ispconfig/interface/web /srv/www/ispconfig'); |
| | | exec('chown -R ispconfig:ispconfig /srv/www/php-fcgi-scripts/ispconfig'); |
| | |
| | | $content = str_replace('{vhost_port}', $conf['nginx']['vhost_port'], $content); |
| | | |
| | | if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { |
| | | $content = str_replace('{ssl_on}', ' ssl', $content); |
| | | $content = str_replace('{ssl_on}', ' on', $content); |
| | | $content = str_replace('{ssl_comment}', '', $content); |
| | | $content = str_replace('{fastcgi_ssl}', 'on', $content); |
| | | } else { |
| | | $content = str_replace('{ssl_on}', '', $content); |
| | | $content = str_replace('{ssl_on}', ' off', $content); |
| | | $content = str_replace('{ssl_comment}', '#', $content); |
| | | $content = str_replace('{fastcgi_ssl}', 'off', $content); |
| | | } |
| | |
| | | exec('chown -R ispconfig:ispconfig '.escapeshellarg($install_dir.'/interface/invoices')); |
| | | } |
| | | |
| | | //* Create the ispconfig auth log file and set uid/gid |
| | | if(!is_file($conf['ispconfig_log_dir'].'/auth.log')) { |
| | | touch($conf['ispconfig_log_dir'].'/auth.log'); |
| | | } |
| | | exec('chown ispconfig:ispconfig '. $conf['ispconfig_log_dir'].'/auth.log'); |
| | | exec('chmod 660 '. $conf['ispconfig_log_dir'].'/auth.log'); |
| | | |
| | | //* Remove Domain module as its functions are available in the client module now |
| | | if(@is_dir('/usr/local/ispconfig/interface/web/domain')) exec('rm -rf /usr/local/ispconfig/interface/web/domain'); |
| | | |