function GUI_PHP() { // Create the fcgi directories tree for the GUI if it doesn't exists DaemonCommon::systemCreateDirectory(DaemonConfig::$distro->{'PHP_STARTER_DIR'} . '/master', DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_UID'}, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_GID'}, 0555); DaemonCommon::systemCreateDirectory(DaemonConfig::$distro->{'PHP_STARTER_DIR'} . '/master/php', DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_UID'}, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_GID'}, 0555); // PHP5 Starter script // Loading the template from /etc/easyscp/fcgi/parts/master, Building the new file // and Storing the new file in the working directory $tpl_param = array('PHP_STARTER_DIR' => DaemonConfig::$distro->{'PHP_STARTER_DIR'}, 'DOMAIN_NAME' => 'master', 'GUI_ROOT_DIR' => DaemonConfig::$cfg->{'GUI_ROOT_DIR'}, 'PHP_FASTCGI_BIN' => DaemonConfig::$distro->{'PHP_FASTCGI_BIN'}); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('fcgi/parts/master.php-fcgi-starter.tpl'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/fcgi/working/master.php-fcgi-starter'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_UID'}, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_GID'}, 0550)) { return 'Error: Failed to write ' . $confFile; } // Install the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/fcgi/working/master.php-fcgi-starter ' . DaemonConfig::$distro->{'PHP_STARTER_DIR'} . '/master/php-fcgi-starter', $result, $error); // PHP5 php.ini file // Loading the template from /etc/easyscp/fcgi/parts/master/php, Building the new file // and Store the new file in working directory $tpl_param = array('WWW_DIR' => DaemonConfig::$cfg->{'ROOT_DIR'}, 'DOMAIN_NAME' => 'gui', 'MAIL_DMN' => idn_to_ascii(DaemonConfig::$cfg->{'BASE_SERVER_VHOST'}), 'CONF_DIR' => DaemonConfig::$cfg->{'CONF_DIR'}, 'PEAR_DIR' => DaemonConfig::$distro->{'PEAR_DIR'}, 'RKHUNTER_LOG' => DaemonConfig::$distro->{'RKHUNTER_LOG'}, 'CHKROOTKIT_LOG' => DaemonConfig::$distro->{'CHKROOTKIT_LOG'}, 'OTHER_ROOTKIT_LOG' => DaemonConfig::$distro->{'OTHER_ROOTKIT_LOG'} != '' ? DaemonConfig::$distro->{'OTHER_ROOTKIT_LOG'} : '', 'EASYSCPC_DIR' => dirname(DaemonConfig::$cfg->{'SOCK_EASYSCPC'}), 'EASYSCPD_DIR' => dirname(DaemonConfig::$cfg->{'SOCK_EASYSCPD'}), 'PHP_STARTER_DIR' => DaemonConfig::$distro->{'PHP_STARTER_DIR'}, 'PHP_TIMEZONE' => DaemonConfig::$cfg->{'PHP_TIMEZONE'}); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('fcgi/parts/php/master.php_' . DaemonConfig::$cfg->{'DistVersion'} . '.ini'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/fcgi/working/master.php.ini'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_UID'}, DaemonConfig::$cfg->{'APACHE_SUEXEC_USER_PREF'} . DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_GID'}, 0440)) { return 'Error: Failed to write ' . $confFile; } // Install the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/fcgi/working/master.php.ini ' . DaemonConfig::$distro->{'PHP_STARTER_DIR'} . '/master/php/php.ini', $result, $error); return 'Ok'; }
/** * @return mixed */ public static function SaveProFTPdConfig() { System_Daemon::debug('Starting "DaemonConfigFTP::SaveProFTPdConfig" subprocess.'); $xml = simplexml_load_file(DaemonConfig::$cfg->{'CONF_DIR'} . '/EasySCP_Config_FTP.xml'); // Create config dir if it doesn't exists if (!file_exists(DaemonConfig::$distro->{'FTPD_CONF_DIR'})) { DaemonCommon::systemCreateDirectory(DaemonConfig::$distro->{'FTPD_CONF_DIR'}, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0755); } // Backup current proftpd.conf if exists if (file_exists(DaemonConfig::$distro->{'FTPD_CONF_FILE'})) { exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$distro->{'FTPD_CONF_FILE'} . ' ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/backup/proftpd.conf' . '_' . date("Y_m_d_H_i_s"), $result, $error); } // Loading the template from /etc/easyscp/proftpd/parts/, Building the new file // Store the new file in working directory $tpl_param = array('HOST_NAME' => idn_to_ascii(DaemonConfig::$cfg->{'SERVER_HOSTNAME'})); $tpl_param['UseIPv6'] = isset(DaemonConfig::$cfg->{'BASE_SERVER_IPv6'}) && DaemonConfig::$cfg->{'BASE_SERVER_IPv6'} != '' ? 'on' : 'off'; $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('proftpd/parts/proftpd_' . DaemonConfig::$cfg->{'DistVersion'} . '.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/proftpd.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0600)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/proftpd.conf ' . DaemonConfig::$distro->{'FTPD_CONF_FILE'}, $result, $error); $tpl_param = array('DATABASE_NAME' => $xml->{'DB_DATABASE'}, 'DATABASE_HOST' => $xml->{'DB_HOST'}, 'DATABASE_USER' => $xml->{'FTP_USER'}, 'DATABASE_PASS' => DB::decrypt_data($xml->{'FTP_PASSWORD'}), 'FTPD_MIN_UID' => DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_UID'}, 'FTPD_MIN_GID' => DaemonConfig::$cfg->{'APACHE_SUEXEC_MIN_GID'}); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('proftpd/parts/sql.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/sql.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0600)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/sql.conf ' . DaemonConfig::$distro->FTPD_SQL_CONF_FILE, $result, $error); if (file_exists(DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/parts/modules_' . DaemonConfig::$cfg->{'DistVersion'} . '.conf')) { exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/parts/modules_' . DaemonConfig::$cfg->{'DistVersion'} . '.conf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/modules.conf', $result, $error); DaemonCommon::systemSetFilePermissions(DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/modules.conf', DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0644); exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/modules.conf ' . DaemonConfig::$distro->FTPD_MODULES_CONF_FILE, $result, $error); } $tpl_param = array('APACHE_WWW_DIR' => DaemonConfig::$distro->{'APACHE_WWW_DIR'}); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('proftpd/parts/master.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/' . DaemonConfig::$cfg->{'SERVER_HOSTNAME'} . '.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0600)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/proftpd/working/' . DaemonConfig::$cfg->{'SERVER_HOSTNAME'} . '.conf ' . DaemonConfig::$distro->{'FTPD_CONF_DIR'} . '/' . DaemonConfig::$cfg->{'SERVER_HOSTNAME'} . '.conf', $result, $error); System_Daemon::debug('Finished "DaemonConfigFTP::SaveProFTPdConfig" subprocess.'); return true; }
/** * @return mixed */ public static function SavePDNSConfig() { System_Daemon::debug('Starting "DaemonConfigDNS::SavePDNSConfig" subprocess.'); if (!file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/')) { DaemonCommon::systemCreateDirectory(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/', DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640); } $xml = simplexml_load_file(DaemonConfig::$cfg->{'CONF_DIR'} . '/EasySCP_Config_DNS.xml'); $tpl_param = array('PDNS_USER' => $xml->{'PDNS_USER'}, 'PDNS_PASS' => DB::decrypt_data($xml->{'PDNS_PASS'}), 'HOSTNAME' => $xml->{'HOSTNAME'}); switch (DaemonConfig::$cfg->{'DistName'} . '_' . DaemonConfig::$cfg->{'DistVersion'}) { case 'CentOS_6': $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('pdns/parts/pdns.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640)) { return 'Error: Failed to write ' . $confFile; } break; case 'Debian_8': exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/parts/pdns_8.conf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf', $result, $error); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('pdns/parts/pdns.local.gmysql.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql.conf ' . DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.local.gmysql.conf', $result, $error); if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf'); } if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind.conf')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind.conf'); } break; case 'Ubuntu_14.04': exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/parts/pdns_14.04.conf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf', $result, $error); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('pdns/parts/pdns.local.gmysql.conf'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql.conf'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql.conf ' . DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.local.gmysql.conf', $result, $error); if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf'); } if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind.conf')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind.conf'); } break; default: exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -f ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/parts/pdns.conf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf', $result, $error); $tpl = DaemonCommon::getTemplate($tpl_param); $config = $tpl->fetch('pdns/parts/pdns.local.gmysql'); $confFile = DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql'; $tpl = NULL; unset($tpl); if (!DaemonCommon::systemWriteContentToFile($confFile, $config, DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640)) { return 'Error: Failed to write ' . $confFile; } // Installing the new file exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.local.gmysql ' . DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.local.gmysql', $result, $error); if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/../bindbackend.conf'); } if (file_exists(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind')) { unlink(DaemonConfig::$distro->{'PDNS_DB_DIR'} . '/pdns.simplebind'); } } // Backup current pdns.conf if exists if (file_exists(DaemonConfig::$distro->{'PDNS_CONF_FILE'})) { exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$distro->{'PDNS_CONF_FILE'} . ' ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/backup/pdns.conf' . '_' . date("Y_m_d_H_i_s"), $result, $error); } DaemonCommon::systemSetFilePermissions(DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf', DaemonConfig::$cfg->{'ROOT_USER'}, DaemonConfig::$cfg->{'ROOT_GROUP'}, 0640); exec(DaemonConfig::$cmd->{'CMD_CP'} . ' -pf ' . DaemonConfig::$cfg->{'CONF_DIR'} . '/pdns/working/pdns.conf ' . DaemonConfig::$distro->{'PDNS_CONF_FILE'}, $result, $error); System_Daemon::debug('Finished "DaemonConfigDNS::SavePDNSConfig" subprocess.'); return true; }
/** * @param array $domainData * @return boolean */ protected static function directoriesCreateHtdocsStructure($domainData) { $homeDir = DaemonConfig::$distro->APACHE_WWW_DIR . "/" . $domainData['domain_name']; if (isset($domainData['mount'])) { $homeDir .= "/" . $domainData['mount']; } $sysUser = DaemonConfig::$cfg->APACHE_SUEXEC_USER_PREF . $domainData['domain_uid']; $sysGroup = DaemonConfig::$cfg->APACHE_SUEXEC_USER_PREF . $domainData['domain_gid']; $retVal = DaemonCommon::systemCreateDirectory($homeDir, $sysUser, $sysGroup, 0755); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } if (!isset($domainData['mount'])) { $retVal = DaemonCommon::systemCreateDirectory($homeDir . '/backups', $sysUser, $sysGroup, 0755); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '/backups!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = self::directoriesCreateDisabled($domainData); if ($retVal !== true) { $msg = 'Failed to create disabled directory!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = DaemonCommon::systemCreateDirectory($homeDir . '/logs', $sysUser, $sysGroup, 0700); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '/logs!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = DaemonCommon::systemCreateDirectory($homeDir . '/phptmp', $sysUser, $sysGroup, 0770); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '/phptmp!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } } $retVal = DaemonCommon::systemCreateDirectory($homeDir . '/cgi-bin', $sysUser, $sysGroup, 0755); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '/cgi-bin!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = self::directoriesCreateError($domainData); if ($retVal !== true) { $msg = 'Failed to create error directory!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = self::directoriesCreateHtdocs($domainData); if ($retVal !== true) { $msg = 'Failed to create htdocs directory!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } $retVal = DaemonCommon::systemCreateDirectory($homeDir . '/statistics', $sysUser, $sysGroup, 0755); if ($retVal !== true) { $msg = 'Failed to create ' . $homeDir . '/statistics!'; System_Daemon::warning($msg); return $msg . '<br />' . $retVal; } return true; }