2017-10-24 19:16:36 +05:00
import shutil
import subprocess
import os
from mysqlUtilities import mysqlUtilities
import installLog as logging
import shlex
import randomPassword
2018-10-29 10:17:57 -04:00
import errno
2018-10-31 11:06:24 -04:00
import MySQLdb as mariadb
2018-11-06 00:19:58 +05:00
import install
2017-10-24 19:16:36 +05:00
2018-10-26 14:24:28 -04:00
#distros
centos = 0
ubuntu = 1
2017-10-24 19:16:36 +05:00
class InstallCyberPanel :
mysql_Root_password = " "
mysqlPassword = " "
2018-11-10 16:05:40 +05:00
def __init__ ( self , rootPath , cwd , distro , ent , serial = None ) :
2017-10-24 19:16:36 +05:00
self . server_root_path = rootPath
self . cwd = cwd
2018-11-06 00:19:58 +05:00
self . distro = distro
2018-11-10 16:05:40 +05:00
self . ent = ent
self . serial = serial
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
@staticmethod
2018-11-06 00:19:58 +05:00
def stdOut ( message , log = 0 , exit = 0 , code = os . EX_OK ) :
2018-10-29 09:04:11 -04:00
install . preFlightsChecks . stdOut ( message , log , exit , code )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
def installLiteSpeed ( self ) :
2018-11-10 16:05:40 +05:00
if self . ent == 0 :
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " apt-get -y install openlitespeed "
else :
command = ' yum install -y openlitespeed '
2018-11-10 16:05:40 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed. ' ,
1 , 1 , os . EX_OSERR )
2018-11-10 16:05:40 +05:00
else :
try :
2018-12-06 15:03:43 +05:00
try :
command = ' groupadd nobody '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' groupadd nobody ' ,
1 , 0 , os . EX_OSERR )
except :
pass
2018-11-10 16:05:40 +05:00
2018-12-06 15:03:43 +05:00
try :
command = ' usermod -a -G nobody nobody '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' groupadd nobody ' ,
1 , 0 , os . EX_OSERR )
except :
pass
command = ' wget https://www.litespeedtech.com/packages/5.0/lsws-5.3.4-ent-x86_64-linux.tar.gz '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 1 , os . EX_OSERR )
command = ' tar zxf lsws-5.3.4-ent-x86_64-linux.tar.gz '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 1 , os . EX_OSERR )
writeSerial = open ( ' lsws-5.3.4/serial.no ' , ' w ' )
writeSerial . writelines ( self . serial )
writeSerial . close ( )
shutil . copy ( ' litespeed/install.sh ' , ' lsws-5.3.4/ ' )
shutil . copy ( ' litespeed/functions.sh ' , ' lsws-5.3.4/ ' )
os . chdir ( ' lsws-5.3.4 ' )
command = ' chmod +x install.sh '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 1 , os . EX_OSERR )
command = ' chmod +x functions.sh '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 1 , os . EX_OSERR )
command = ' ./install.sh '
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 1 , os . EX_OSERR )
2018-11-10 16:05:40 +05:00
2018-12-06 15:03:43 +05:00
os . chdir ( self . cwd )
confPath = ' /usr/local/lsws/conf/ '
shutil . copy ( ' litespeed/httpd_config.xml ' , confPath )
shutil . copy ( ' litespeed/modsec.conf ' , confPath )
shutil . copy ( ' litespeed/httpd.conf ' , confPath )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
command = ' chown -R lsadm:lsadm ' + confPath
install . preFlightsChecks . call ( command , self . distro , ' [installLiteSpeed] ' ,
' Install LiteSpeed Webserver Enterprise. ' ,
1 , 0 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-11-10 16:05:40 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installLiteSpeed] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installLiteSpeed] " )
return 0
return 1
2017-10-24 19:16:36 +05:00
def reStartLiteSpeed ( self ) :
2018-12-06 15:03:43 +05:00
command = self . server_root_path + " bin/lswsctrl restart "
install . preFlightsChecks . call ( command , self . distro , ' [reStartLiteSpeed] ' ,
' Restart LiteSpeed WebServer ' ,
1 , 0 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
def fix_ols_configs ( self ) :
try :
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Fixing OpenLiteSpeed configurations! " , 1 )
2017-12-09 22:30:10 +05:00
## remove example virtual host
data = open ( self . server_root_path + " conf/httpd_config.conf " , ' r ' ) . readlines ( )
writeDataToFile = open ( self . server_root_path + " conf/httpd_config.conf " , ' w ' )
for items in data :
if items . find ( " map " ) > - 1 and items . find ( " Example " ) > - 1 :
continue
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " OpenLiteSpeed Configurations fixed! " , 1 )
2017-12-09 22:30:10 +05:00
except IOError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [fix_ols_configs] " )
return 0
return self . reStartLiteSpeed ( )
2017-10-24 19:16:36 +05:00
def changePortTo80 ( self ) :
try :
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Changing default port to 80.. " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
data = open ( self . server_root_path + " conf/httpd_config.conf " ) . readlines ( )
writeDataToFile = open ( self . server_root_path + " conf/httpd_config.conf " , ' w ' )
for items in data :
if ( items . find ( " *:8088 " ) > - 1 ) :
writeDataToFile . writelines ( items . replace ( " *:8088 " , " *:80 " ) )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Default port is now 80 for OpenLiteSpeed! " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
except IOError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [changePortTo80] " )
return 0
return self . reStartLiteSpeed ( )
2017-12-09 22:30:10 +05:00
def setupFileManager ( self ) :
2018-11-10 16:05:40 +05:00
if self . ent == 0 :
try :
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Setting up Filemanager files.. " , 1 )
2017-10-24 19:16:36 +05:00
2018-11-10 16:05:40 +05:00
os . chdir ( self . cwd )
2017-10-24 19:16:36 +05:00
2018-11-10 16:05:40 +05:00
fileManagerPath = self . server_root_path + " Example/html/FileManager "
shutil . copytree ( " FileManager " , fileManagerPath )
2017-12-09 22:30:10 +05:00
2018-11-10 16:05:40 +05:00
## remove unnecessary files
2017-12-09 22:30:10 +05:00
2018-11-10 16:05:40 +05:00
fileManagerPath = self . server_root_path + " Example/html/ "
2017-12-09 22:30:10 +05:00
2018-11-10 16:05:40 +05:00
shutil . rmtree ( fileManagerPath + " protected " )
shutil . rmtree ( fileManagerPath + " blocked " )
os . remove ( fileManagerPath + " phpinfo.php " )
os . remove ( fileManagerPath + " upload.html " )
os . remove ( fileManagerPath + " upload.php " )
2017-12-09 22:30:10 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Filemanager files are set! " , 1 )
2018-02-04 21:15:30 +05:00
2018-12-06 15:03:43 +05:00
except BaseException , msg :
2018-11-10 16:05:40 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setupFileManager] " )
else :
try :
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Setting up Filemanager files.. " , 1 )
2018-11-10 16:05:40 +05:00
os . chdir ( self . cwd )
fileManagerPath = self . server_root_path + " /FileManager "
shutil . copytree ( " FileManager " , fileManagerPath )
## remove unnecessary files
command = ' chmod -R 777 ' + fileManagerPath
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [setupFileManager] ' ,
' Change Filemanager permissions. ' ,
1 , 0 , os . EX_OSERR )
2018-11-10 16:05:40 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Filemanager files are set! " , 1 )
2018-11-10 16:05:40 +05:00
2018-12-06 15:03:43 +05:00
except BaseException , msg :
2018-11-10 16:05:40 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setupFileManager] " )
2017-10-24 19:16:36 +05:00
def installAllPHPVersions ( self ) :
2018-12-13 04:23:08 +05:00
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = ' DEBIAN_FRONTEND=noninteractive apt-get -y install ' \
' lsphp7? lsphp7?-common lsphp7?-curl lsphp7?-dev lsphp7?-imap lsphp7?-intl lsphp7?-json ' \
' lsphp7?-ldap lsphp7?-mysql lsphp7?-opcache lsphp7?-pspell lsphp7?-recode ' \
' lsphp7?-sqlite3 lsphp7?-tidy '
2018-12-14 00:43:28 +05:00
res = os . system ( command )
if res != 0 :
InstallCyberPanel . stdOut ( " Failed to install PHP on Ubuntu. " , 1 , 1 )
2018-12-06 15:03:43 +05:00
else :
command = ' yum -y groupinstall lsphp-all '
2018-12-14 00:43:28 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installAllPHPVersions] ' ,
2018-12-17 18:46:34 +05:00
' Install PHP ALL ' ,
2018-12-14 00:43:28 +05:00
1 , 1 , os . EX_OSERR )
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " LiteSpeed PHPs successfully installed! " , 1 )
## only php 71
if self . distro == centos :
command = ' yum install lsphp71 lsphp71-json lsphp71-xmlrpc lsphp71-xml lsphp71-tidy lsphp71-soap lsphp71-snmp ' \
' lsphp71-recode lsphp71-pspell lsphp71-process lsphp71-pgsql lsphp71-pear lsphp71-pdo lsphp71-opcache ' \
' lsphp71-odbc lsphp71-mysqlnd lsphp71-mcrypt lsphp71-mbstring lsphp71-ldap lsphp71-intl lsphp71-imap ' \
' lsphp71-gmp lsphp71-gd lsphp71-enchant lsphp71-dba lsphp71-common lsphp71-bcmath -y '
install . preFlightsChecks . call ( command , self . distro , ' [installAllPHPVersions] ' ,
2018-12-17 18:46:34 +05:00
' Install PHP 71 ' ,
1 , 0 , os . EX_OSERR )
2018-12-06 15:03:43 +05:00
## only php 72
command = ' yum install -y lsphp72 lsphp72-json lsphp72-xmlrpc lsphp72-xml lsphp72-tidy lsphp72-soap lsphp72-snmp ' \
' lsphp72-recode lsphp72-pspell lsphp72-process lsphp72-pgsql lsphp72-pear lsphp72-pdo lsphp72-opcache ' \
' lsphp72-odbc lsphp72-mysqlnd lsphp72-mcrypt lsphp72-mbstring lsphp72-ldap lsphp72-intl lsphp72-imap ' \
' lsphp72-gmp lsphp72-gd lsphp72-enchant lsphp72-dba lsphp72-common lsphp72-bcmath '
install . preFlightsChecks . call ( command , self . distro , ' [installAllPHPVersions] ' ,
2018-12-17 18:46:34 +05:00
' Install PHP 72 ' ,
1 , 0 , os . EX_OSERR )
## only php 72
command = ' yum install -y lsphp73 lsphp73-json lsphp73-xmlrpc lsphp73-xml lsphp73-tidy lsphp73-soap lsphp73-snmp ' \
' lsphp73-recode lsphp73-pspell lsphp73-process lsphp73-pgsql lsphp73-pear lsphp73-pdo lsphp73-opcache ' \
' lsphp73-odbc lsphp73-mysqlnd lsphp73-mcrypt lsphp73-mbstring lsphp73-ldap lsphp73-intl lsphp73-imap ' \
' lsphp73-gmp lsphp73-gd lsphp73-enchant lsphp73-dba lsphp73-common lsphp73-bcmath '
install . preFlightsChecks . call ( command , self . distro , ' [installAllPHPVersions] ' ,
' Install PHP 73 ' ,
1 , 0 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
def setup_mariadb_repo ( self ) :
2018-11-06 00:19:58 +05:00
try :
if self . distro == ubuntu :
2018-10-26 14:24:28 -04:00
# Only needed if the repo is broken or we need the latest version.
2018-11-06 00:19:58 +05:00
# command = "apt-get -y install software-properties-common"
# command = "apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8"
# command = "add-apt-repository 'deb [arch=amd64] http://mirror.zol.co.zw/mariadb/repo/10.3/ubuntu bionic main'"
return
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Setting up MariaDB Repo.. " , 1 )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
os . chdir ( self . cwd )
2017-10-24 19:16:36 +05:00
shutil . copy ( " mysql/MariaDB.repo " , " /etc/yum.repos.d/MariaDB.repo " )
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " MariaDB repo set! " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
except BaseException , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_mariadb_repo] " )
return 0
2018-05-29 20:20:05 +05:00
def installMySQL ( self , mysql ) :
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
############## Install mariadb ######################
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " apt-get -y install mariadb-server "
else :
command = ' yum -y install mariadb-server '
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installMySQL] ' ,
' Install MySQL ' ,
1 , 1 , os . EX_OSERR )
2018-11-06 00:19:58 +05:00
2018-12-06 15:03:43 +05:00
## Fix configurations if two MYSQL are used
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if mysql == ' Two ' :
logging . InstallLog . writeToFile ( " Setting up MariaDB configurations! " )
InstallCyberPanel . stdOut ( " Setting up MariaDB configurations! " )
2018-02-04 21:15:30 +05:00
2018-12-06 15:03:43 +05:00
pathConf = " /etc/my.cnf "
pathServiceFile = " /etc/systemd/system/mysqld@.service "
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if os . path . exists ( pathConf ) :
os . remove ( pathConf )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if os . path . exists ( pathServiceFile ) :
os . remove ( pathServiceFile )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
os . chdir ( self . cwd )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
shutil . copy ( " mysql/my.cnf " , pathConf )
shutil . copy ( " mysql/mysqld@.service " , pathServiceFile )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
logging . InstallLog . writeToFile ( " MariaDB configurations set! " )
InstallCyberPanel . stdOut ( " MariaDB configurations set! " )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
##
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
while ( 1 ) :
command = " mysql_install_db --user=mysql --datadir=/var/lib/mysql1 "
install . preFlightsChecks . call ( command , self . distro , ' [installMySQL] ' ,
' Install MySQL ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
##
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
while ( 1 ) :
command = " systemctl start mysqld@1 "
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-11-14 11:37:17 -05:00
if install . preFlightsChecks . resFailed ( self . distro , res ) :
2018-02-04 21:15:30 +05:00
count = count + 1
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut (
" Trying to start first MariaDB instance, trying again, try number: " + str ( count ) )
2018-02-04 21:15:30 +05:00
if count == 3 :
2018-12-06 15:03:43 +05:00
logging . InstallLog . writeToFile (
" Failed to start first MariaDB instance, exiting installer! [installMySQL] " )
InstallCyberPanel . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
else :
2018-12-06 15:03:43 +05:00
logging . InstallLog . writeToFile ( " First MariaDB instance successfully started! " )
InstallCyberPanel . stdOut ( " First MariaDB instance successfully started! " )
2018-02-04 21:15:30 +05:00
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
while ( 1 ) :
command = " systemctl enable mysqld@1 "
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-11-14 11:37:17 -05:00
if install . preFlightsChecks . resFailed ( self . distro , res ) :
2018-02-04 21:15:30 +05:00
count = count + 1
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut (
" Trying to enable first MariaDB instance to start and system restart, trying again, try number: " + str (
count ) )
2018-02-04 21:15:30 +05:00
if count == 3 :
2018-12-06 15:03:43 +05:00
logging . InstallLog . writeToFile (
" Failed to enable first MariaDB instance to run at system restart, exiting installer! [installMySQL] " )
2018-02-04 21:15:30 +05:00
InstallCyberPanel . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
else :
2018-12-06 15:03:43 +05:00
logging . InstallLog . writeToFile ( " First MariaDB instance successfully enabled at system restart! " )
InstallCyberPanel . stdOut ( " First MariaDB instance successfully enabled at system restart! " )
2018-02-04 21:15:30 +05:00
break
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
############## Start mariadb ######################
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
self . startMariaDB ( )
def changeMYSQLRootPassword ( self ) :
2018-12-13 04:23:08 +05:00
if self . distro == ubuntu :
passwordCMD = " use mysql;update user set password=PASSWORD( ' " + InstallCyberPanel . mysql_Root_password + " ' ) where User= ' root ' ;UPDATE user SET plugin= ' ' WHERE User= ' root ' ;flush privileges; "
else :
passwordCMD = " use mysql;update user set password=PASSWORD( ' " + InstallCyberPanel . mysql_Root_password + " ' ) where User= ' root ' ;flush privileges; "
2018-12-06 15:03:43 +05:00
command = ' mysql -u root -e " ' + passwordCMD + ' " '
install . preFlightsChecks . call ( command , self . distro , ' [changeMYSQLRootPassword] ' , ' MYSQL Root Password change. ' ,
1 , 1 , os . EX_OSERR )
def startMariaDB ( self ) :
############## Start mariadb ######################
command = " systemctl start mysql "
install . preFlightsChecks . call ( command , self . distro , ' [startMariaDB] ' ,
' Start MySQL ' ,
1 , 1 , os . EX_OSERR )
############## Enable mariadb at system startup ######################
2018-12-17 18:46:34 +05:00
if os . path . exists ( ' /etc/systemd/system/mysqld.service ' ) :
os . remove ( ' /etc/systemd/system/mysqld.service ' )
if os . path . exists ( ' /etc/systemd/system/mariadb.service ' ) :
os . remove ( ' /etc/systemd/system/mariadb.service ' )
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " systemctl enable mariadb "
else :
2018-12-17 18:46:34 +05:00
command = " systemctl enable mariadb "
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installMySQL] ' ,
2018-12-14 00:43:28 +05:00
' Enable MySQL ' ,
2018-12-17 18:46:34 +05:00
1 , 0 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-10-31 11:06:24 -04:00
def fixMariaDB ( self ) :
self . stdOut ( " Setup MariaDB so it can support Cyberpanel ' s needs " )
2018-10-31 11:37:42 -04:00
conn = mariadb . connect ( user = ' root ' , passwd = self . mysql_Root_password )
cursor = conn . cursor ( )
cursor . execute ( ' set global innodb_file_per_table = on; ' )
2018-10-31 11:42:51 -04:00
cursor . execute ( ' set global innodb_file_format = Barracuda; ' )
2018-10-31 11:37:42 -04:00
cursor . execute ( ' set global innodb_large_prefix = on; ' )
cursor . close ( )
conn . close ( )
2018-10-31 11:06:24 -04:00
try :
fileName = ' /etc/mysql/mariadb.conf.d/50-server.cnf '
data = open ( fileName , ' r ' ) . readlines ( )
writeDataToFile = open ( fileName , ' w ' )
for line in data :
2018-11-06 00:19:58 +05:00
writeDataToFile . write ( line . replace ( ' utf8mb4 ' , ' utf8 ' ) )
2018-10-31 11:06:24 -04:00
writeDataToFile . close ( )
except IOError as err :
self . stdOut ( " Error in setting: " + fileName + " : " + str ( err ) , 1 , 1 , os . EX_OSERR )
os . system ( ' systemctl restart mysql ' )
self . stdOut ( " MariaDB is now setup so it can support Cyberpanel ' s needs " )
2017-10-24 19:16:36 +05:00
def installPureFTPD ( self ) :
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = ' apt-get -y install ' + install . preFlightsChecks . pureFTPDServiceName ( self . distro )
else :
command = " yum install -y pure-ftpd "
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPD] ' ,
' Install FTP ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
####### Install pureftpd to system startup
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
command = " systemctl enable " + install . preFlightsChecks . pureFTPDServiceName ( self . distro )
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPD] ' ,
' Install FTP ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
###### FTP Groups and user settings settings
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
command = ' groupadd -g 2001 ftpgroup '
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPD] ' ,
' Install FTP ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
command = ' useradd -u 2001 -s /bin/false -d /bin/null -c " pureftpd user " -g ftpgroup ftpuser '
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPD] ' ,
' Install FTP ' ,
1 , 1 , os . EX_OSERR )
2018-11-07 08:54:16 -05:00
2017-10-24 19:16:36 +05:00
def startPureFTPD ( self ) :
2018-02-04 21:15:30 +05:00
############## Start pureftpd ######################
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = ' systemctl start pure-ftpd-mysql '
else :
command = ' systemctl start pure-ftpd '
install . preFlightsChecks . call ( command , self . distro , ' [startPureFTPD] ' ,
' Start FTP ' ,
1 , 0 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-05-29 20:20:05 +05:00
def installPureFTPDConfigurations ( self , mysql ) :
2017-10-24 19:16:36 +05:00
try :
2017-12-09 22:30:10 +05:00
## setup ssl for ftp
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Configuring PureFTPD.. " , 1 )
2018-02-04 21:15:30 +05:00
2017-12-09 22:30:10 +05:00
try :
os . mkdir ( " /etc/ssl/private " )
except :
logging . InstallLog . writeToFile ( " Could not create directory for FTP SSL " )
2018-12-06 15:03:43 +05:00
command = ' openssl req -newkey rsa:1024 -new -nodes -x509 -days 3650 -subj " /C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com " -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem '
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPDConfigurations] ' ,
' FTP Configurations ' ,
1 , 0 , os . EX_OSERR )
2017-12-09 22:30:10 +05:00
2017-10-24 19:16:36 +05:00
os . chdir ( self . cwd )
ftpdPath = " /etc/pure-ftpd "
if os . path . exists ( ftpdPath ) :
shutil . rmtree ( ftpdPath )
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
2018-11-07 16:00:00 -05:00
shutil . copytree ( " pure-ftpd " , ftpdPath )
2018-05-29 20:20:05 +05:00
else :
shutil . copytree ( " pure-ftpd-one " , ftpdPath )
2017-10-24 19:16:36 +05:00
else :
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
shutil . copytree ( " pure-ftpd " , ftpdPath )
else :
shutil . copytree ( " pure-ftpd-one " , ftpdPath )
2017-10-24 19:16:36 +05:00
2018-11-07 09:56:45 -05:00
if self . distro == ubuntu :
try :
os . mkdir ( ' /etc/pure-ftpd/conf ' )
os . mkdir ( ' /etc/pure-ftpd/auth ' )
2018-11-08 12:11:42 +05:00
os . mkdir ( ' /etc/pure-ftpd/db ' )
2018-11-07 09:56:45 -05:00
except OSError as err :
self . stdOut ( " Error creating extra pure-ftpd directories: " + str ( err ) , " . Should be ok " , 1 )
2017-10-24 19:16:36 +05:00
data = open ( ftpdPath + " /pureftpd-mysql.conf " , " r " ) . readlines ( )
writeDataToFile = open ( ftpdPath + " /pureftpd-mysql.conf " , " w " )
dataWritten = " MYSQLPassword " + InstallCyberPanel . mysqlPassword + ' \n '
for items in data :
if items . find ( " MYSQLPassword " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
2018-11-14 13:36:34 +05:00
2017-10-24 19:16:36 +05:00
writeDataToFile . close ( )
2018-11-08 12:11:42 +05:00
if self . distro == ubuntu :
command = ' apt install pure-ftpd-mysql -y '
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPDConfigurations] ' ,
' FTP Configurations ' ,
1 , 1 , os . EX_OSERR )
2018-11-08 12:11:42 +05:00
if os . path . exists ( ' /etc/pure-ftpd/db/mysql.conf ' ) :
os . remove ( ' /etc/pure-ftpd/db/mysql.conf ' )
shutil . copy ( ftpdPath + " /pureftpd-mysql.conf " , ' /etc/pure-ftpd/db/mysql.conf ' )
else :
shutil . copy ( ftpdPath + " /pureftpd-mysql.conf " , ' /etc/pure-ftpd/db/mysql.conf ' )
command = ' echo 1 > /etc/pure-ftpd/conf/TLS '
subprocess . call ( command , shell = True )
command = ' systemctl restart pure-ftpd-mysql.service '
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installPureFTPDConfigurations] ' ,
' FTP Configurations ' ,
1 , 0 , os . EX_OSERR )
2018-11-08 12:11:42 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " PureFTPD configured! " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
except IOError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installPureFTPDConfigurations] " )
return 0
def installPowerDNS ( self ) :
try :
count = 0
2018-10-29 09:04:11 -04:00
if self . distro == ubuntu :
command = ' systemctl stop systemd-resolved '
res = subprocess . call ( shlex . split ( command ) )
if res != 0 :
InstallCyberPanel . stdOut ( ' Unable to stop systemd.resolved, prohits install of PowerDNS, error # ' +
str ( res ) , 1 , 1 , os . EX_OSERR )
command = ' systemctl disable systemd-resolved.service '
res = subprocess . call ( shlex . split ( command ) )
if res != 0 :
2018-11-06 00:19:58 +05:00
InstallCyberPanel . stdOut (
' Unable to disable systemd.resolved, prohits install of PowerDNS, error # ' +
str ( res ) , 1 , 1 , os . EX_OSERR )
2018-10-29 10:17:57 -04:00
try :
os . rename ( ' /etc/resolv.conf ' , ' etc/resolved.conf ' )
except OSError as e :
2018-10-29 10:45:46 -04:00
if e . errno != errno . EEXIST and e . errno != errno . ENOENT :
2018-10-29 10:17:57 -04:00
InstallCyberPanel . stdOut ( " Unable to rename /etc/resolv.conf to install PowerDNS: " +
str ( e ) , 1 , 1 , os . EX_OSERR )
try :
os . remove ( ' /etc/resolv.conf ' )
except OSError as e1 :
InstallCyberPanel . stdOut ( " Unable to remove existing /etc/resolv.conf to install PowerDNS: " +
str ( e1 ) , 1 , 1 , os . EX_OSERR )
2018-10-29 11:27:50 -04:00
try :
f = open ( ' /etc/resolv.conf ' , ' w ' )
f . write ( ' nameserver 8.8.8.8 ' )
f . close ( )
except IOError as e :
InstallCyberPanel . stdOut ( " Unable to create /etc/resolv.conf: " + str ( e ) +
" . This may need to be fixed manually as ' echo \" nameserver 8.8.8.8 \" > "
" /etc/resolv.conf ' " , 1 , 1 , os . EX_OSERR )
2018-10-29 10:17:57 -04:00
2018-10-26 14:24:28 -04:00
if self . distro == centos :
2018-12-06 15:03:43 +05:00
command = ' yum -y install epel-release yum-plugin-priorities '
install . preFlightsChecks . call ( command , self . distro , ' [installPowerDNS] ' ,
' Install PowerDNS ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
command = ' curl -o /etc/yum.repos.d/powerdns-auth-master.repo ' \
' https://repo.powerdns.com/repo-files/centos-auth-master.repo '
install . preFlightsChecks . call ( command , self . distro , ' [installPowerDNS] ' ,
' Install PowerDNS ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " DEBIAN_FRONTEND=noninteractive apt-get -y install pdns-server pdns-backend-mysql "
else :
command = ' yum -y install pdns pdns-backend-mysql '
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installPowerDNS] ' ,
' Install PowerDNS ' ,
1 , 1 , os . EX_OSERR )
except BaseException , msg :
2017-10-24 19:16:36 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [powerDNS] " )
2018-11-06 00:19:58 +05:00
def installPowerDNSConfigurations ( self , mysqlPassword , mysql ) :
2017-10-24 19:16:36 +05:00
try :
2018-02-04 21:15:30 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Configuring PowerDNS.. " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
os . chdir ( self . cwd )
2018-10-30 17:33:43 -04:00
if self . distro == centos :
dnsPath = " /etc/pdns/pdns.conf "
else :
dnsPath = " /etc/powerdns/pdns.conf "
2017-10-24 19:16:36 +05:00
if os . path . exists ( dnsPath ) :
os . remove ( dnsPath )
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
shutil . copy ( " dns/pdns.conf " , dnsPath )
else :
shutil . copy ( " dns-one/pdns.conf " , dnsPath )
2017-10-24 19:16:36 +05:00
else :
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
shutil . copy ( " dns/pdns.conf " , dnsPath )
else :
shutil . copy ( " dns-one/pdns.conf " , dnsPath )
2017-10-24 19:16:36 +05:00
data = open ( dnsPath , " r " ) . readlines ( )
writeDataToFile = open ( dnsPath , " w " )
dataWritten = " gmysql-password= " + mysqlPassword + " \n "
for items in data :
if items . find ( " gmysql-password " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
2018-11-14 13:36:34 +05:00
2018-11-12 14:53:10 -05:00
#if self.distro == ubuntu:
# os.fchmod(writeDataToFile.fileno(), stat.S_IRUSR | stat.S_IWUSR)
2018-11-07 15:14:54 -05:00
2017-10-24 19:16:36 +05:00
writeDataToFile . close ( )
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " PowerDNS configured! " , 1 )
2018-02-04 21:15:30 +05:00
2017-10-24 19:16:36 +05:00
except IOError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installPowerDNSConfigurations] " )
return 0
return 1
def startPowerDNS ( self ) :
2018-02-04 21:15:30 +05:00
############## Start PowerDNS ######################
2017-10-24 19:16:36 +05:00
try :
2018-12-06 15:03:43 +05:00
command = ' systemctl enable pdns '
install . preFlightsChecks . call ( command , self . distro , ' [startPowerDNS] ' ,
' Start PowerDNS ' ,
1 , 0 , os . EX_OSERR )
command = ' systemctl start pdns '
install . preFlightsChecks . call ( command , self . distro , ' [startPowerDNS] ' ,
' Start PowerDNS ' ,
1 , 0 , os . EX_OSERR )
except BaseException , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [startPowerDNS] " )
2017-10-24 19:16:36 +05:00
def installLSCPD ( self ) :
try :
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " Starting LSCPD installation.. " , 1 )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
os . chdir ( self . cwd )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " apt-get -y install gcc g++ make autoconf rcs "
else :
command = ' yum -y install gcc gcc-c++ make autoconf glibc rcs '
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 1 , os . EX_OSERR )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
if self . distro == ubuntu :
command = " apt-get -y install libpcre3 libpcre3-dev openssl libexpat1 libexpat1-dev libgeoip-dev " \
" zlib1g zlib1g-dev libudns-dev whichman curl "
else :
command = ' yum -y install pcre-devel openssl-devel expat-devel geoip-devel zlib-devel udns-devel ' \
' which curl '
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 1 , os . EX_OSERR )
2017-12-09 22:30:10 +05:00
2018-12-06 15:03:43 +05:00
command = ' tar zxf lscp.tar.gz -C /usr/local/ '
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 1 , os . EX_OSERR )
2017-12-09 22:30:10 +05:00
2018-12-06 15:03:43 +05:00
command = ' openssl req -newkey rsa:1024 -new -nodes -x509 -days 3650 -subj " /C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com " -keyout /usr/local/lscp/key.pem -out /usr/local/lscp/cert.pem '
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 1 , os . EX_OSERR )
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
try :
os . remove ( " /usr/local/lscp/fcgi-bin/lsphp " )
shutil . copy ( " /usr/local/lsws/lsphp70/bin/lsphp " , " /usr/local/lscp/fcgi-bin/lsphp " )
except :
pass
2017-12-09 22:30:10 +05:00
2018-10-29 16:26:07 -04:00
if self . distro == centos :
command = ' adduser lscpd -M -d /usr/local/lscp '
else :
command = ' useradd lscpd -M -d /usr/local/lscp '
2018-10-12 18:18:10 +05:00
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 0 , os . EX_OSERR )
2018-10-12 18:18:10 +05:00
2018-10-29 16:26:07 -04:00
if self . distro == centos :
command = ' groupadd lscpd '
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 0 , os . EX_OSERR )
2018-10-29 16:26:07 -04:00
# Added group in useradd for Ubuntu
2018-10-12 18:18:10 +05:00
command = ' usermod -a -G lscpd lscpd '
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 0 , os . EX_OSERR )
2018-10-12 18:18:10 +05:00
command = ' usermod -a -G lsadm lscpd '
2018-12-06 15:03:43 +05:00
install . preFlightsChecks . call ( command , self . distro , ' [installLSCPD] ' ,
' Install LSCPD ' ,
1 , 0 , os . EX_OSERR )
2018-10-12 18:18:10 +05:00
os . mkdir ( ' /usr/local/lscp/cyberpanel ' )
2017-12-09 22:30:10 +05:00
2018-12-06 15:03:43 +05:00
InstallCyberPanel . stdOut ( " LSCPD successfully installed! " , 1 )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
except BaseException , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [startPowerDNS] " )
2017-10-24 19:16:36 +05:00
2018-11-21 14:50:27 +05:00
def Main ( cwd , mysql , distro , ent , serial = None ) :
2017-12-09 22:30:10 +05:00
2018-11-06 00:19:58 +05:00
InstallCyberPanel . mysqlPassword = randomPassword . generate_pass ( )
2017-10-24 19:16:36 +05:00
InstallCyberPanel . mysql_Root_password = randomPassword . generate_pass ( )
2018-10-30 15:51:22 -04:00
file_name = ' /etc/cyberpanel/mysqlPassword '
2018-10-30 15:58:45 -04:00
if os . access ( file_name , os . F_OK ) :
2018-10-30 15:51:22 -04:00
password = open ( file_name , ' r ' )
InstallCyberPanel . mysql_Root_password = password . readline ( )
else :
password = open ( file_name , " w " )
password . writelines ( InstallCyberPanel . mysql_Root_password )
2018-11-06 00:19:58 +05:00
2017-10-24 19:16:36 +05:00
password . close ( )
2018-10-30 15:51:22 -04:00
if distro == centos :
InstallCyberPanel . mysqlPassword = randomPassword . generate_pass ( )
else :
InstallCyberPanel . mysqlPassword = InstallCyberPanel . mysql_Root_password
2018-11-21 14:50:27 +05:00
installer = InstallCyberPanel ( " /usr/local/lsws/ " , cwd , distro , ent , serial )
2017-10-24 19:16:36 +05:00
installer . installLiteSpeed ( )
2018-11-10 16:05:40 +05:00
if ent == 0 :
installer . changePortTo80 ( )
2017-12-09 22:30:10 +05:00
installer . setupFileManager ( )
2017-10-24 19:16:36 +05:00
installer . installAllPHPVersions ( )
2018-11-10 16:05:40 +05:00
if ent == 0 :
installer . fix_ols_configs ( )
2017-12-09 22:30:10 +05:00
2018-11-06 00:19:58 +05:00
2017-10-24 19:16:36 +05:00
installer . setup_mariadb_repo ( )
2018-05-29 20:20:05 +05:00
installer . installMySQL ( mysql )
2018-10-31 11:53:03 -04:00
installer . changeMYSQLRootPassword ( )
2018-12-06 15:03:43 +05:00
#installer.changeMYSQLRootPasswordCyberPanel(mysql)
2017-10-24 19:16:36 +05:00
installer . startMariaDB ( )
2018-10-31 11:06:24 -04:00
if distro == ubuntu :
installer . fixMariaDB ( )
2017-10-24 19:16:36 +05:00
2018-12-06 15:03:43 +05:00
mysqlUtilities . createDatabase ( " cyberpanel " , " cyberpanel " , InstallCyberPanel . mysqlPassword )
2018-11-06 00:19:58 +05:00
2017-10-24 19:16:36 +05:00
installer . installPureFTPD ( )
2018-05-29 20:20:05 +05:00
installer . installPureFTPDConfigurations ( mysql )
2017-10-24 19:16:36 +05:00
installer . startPureFTPD ( )
installer . installPowerDNS ( )
2018-05-29 20:20:05 +05:00
installer . installPowerDNSConfigurations ( InstallCyberPanel . mysqlPassword , mysql )
2017-10-24 19:16:36 +05:00
installer . startPowerDNS ( )
installer . installLSCPD ( )