mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-02 03:16:15 +01:00
1182 lines
38 KiB
Python
1182 lines
38 KiB
Python
import shutil
|
|
import sys
|
|
import subprocess
|
|
import os
|
|
import pexpect
|
|
import random
|
|
from mysqlUtilities import mysqlUtilities
|
|
import installLog as logging
|
|
import shlex
|
|
import randomPassword
|
|
|
|
|
|
class InstallCyberPanel:
|
|
|
|
mysql_Root_password = ""
|
|
mysqlPassword = ""
|
|
|
|
def __init__(self,rootPath,cwd):
|
|
self.server_root_path = rootPath
|
|
self.cwd = cwd
|
|
|
|
|
|
def installLiteSpeed(self):
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
command = 'yum install -y openlitespeed'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install Litespeed ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Openlitespeed is not installed from repo" + " [installLiteSpeed]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" Litespeed Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installLiteSpeed]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installLiteSpeed]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def install_ls_panel_config(self):
|
|
|
|
try:
|
|
|
|
shutil.rmtree("/usr/local/lsws/conf")
|
|
|
|
os.chdir(self.cwd)
|
|
|
|
shutil.copytree("litespeed/conf", "/usr/local/lsws/conf")
|
|
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [install_ls_panel_config]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [install_ls_panel_config]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def reStartLiteSpeed(self):
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
cmd.append(self.server_root_path+"bin/lswsctrl")
|
|
cmd.append("restart")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not restart Litespeed server ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("[reStartLiteSpeed]")
|
|
else:
|
|
print("###############################################")
|
|
print(" Litespeed Re-Started ")
|
|
print("###############################################")
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [reStartLiteSpeed]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [reStartLiteSpeed]")
|
|
return 0
|
|
return 1
|
|
|
|
def changePortTo80(self):
|
|
try:
|
|
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()
|
|
|
|
except IOError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [changePortTo80]")
|
|
return 0
|
|
|
|
return self.reStartLiteSpeed()
|
|
|
|
def addLiteSpeedRepo(self):
|
|
try:
|
|
cmd = []
|
|
|
|
cmd.append("rpm")
|
|
cmd.append("-ivh")
|
|
cmd.append("http://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el7.noarch.rpm")
|
|
res = subprocess.call(cmd)
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add Litespeed repo " )
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("[addLiteSpeedRepo]")
|
|
else:
|
|
print("###############################################")
|
|
print(" Litespeed Repo Added ")
|
|
print("###############################################")
|
|
|
|
except OSError,msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [addLiteSpeedRepo]")
|
|
return 0
|
|
except ValueError,msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [addLiteSpeedRepo]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def installAllPHPVersions(self):
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
command = 'yum -y groupinstall lsphp-all'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install PHP Binaries ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("initial PHP Binaries not installed properly [installAllPHPVersions]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" PHP Binaries installed ")
|
|
print("###############################################")
|
|
|
|
## only php 71
|
|
|
|
|
|
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'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install PHP 71 ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("PHP71 Binaries not installed properly [installAllPHPVersions]")
|
|
|
|
else:
|
|
print("###############################################")
|
|
print(" PHP 71 installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installAllPHPVersion]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installAllPHPVersion]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def installAllPHPToLitespeed(self):
|
|
try:
|
|
os.chdir(self.cwd)
|
|
|
|
|
|
path = self.server_root_path + "conf/"
|
|
|
|
if not os.path.exists(path+"phpconfigs"):
|
|
shutil.copytree("phpconfigs",path+"phpconfigs")
|
|
|
|
except IOError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installAllPHPToLitespeed]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def setup_mariadb_repo(self):
|
|
try:
|
|
|
|
os.chdir(self.cwd)
|
|
|
|
shutil.copy("mysql/MariaDB.repo","/etc/yum.repos.d/MariaDB.repo")
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [setup_mariadb_repo]")
|
|
return 0
|
|
except BaseException, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [setup_mariadb_repo]")
|
|
return 0
|
|
|
|
|
|
|
|
def installMySQL(self):
|
|
|
|
try:
|
|
|
|
############## Install mariadb ######################
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
command = 'yum -y install mariadb-server'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install MariaDB ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not install MYSQL [installMySQL]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" MariaDB Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
## fix configurations
|
|
|
|
pathConf = "/etc/my.cnf"
|
|
pathServiceFile = "/etc/systemd/system/mysqld@.service"
|
|
|
|
if os.path.exists(pathConf):
|
|
os.remove(pathConf)
|
|
|
|
if os.path.exists(pathServiceFile):
|
|
os.remove(pathServiceFile)
|
|
|
|
os.chdir(self.cwd)
|
|
|
|
shutil.copy("mysql/my.cnf",pathConf)
|
|
shutil.copy("mysql/mysqld@.service",pathServiceFile)
|
|
|
|
command = "mysql_install_db --user=mysql --datadir=/var/lib/mysql1"
|
|
|
|
subprocess.call(shlex.split(command))
|
|
|
|
command = "systemctl start mysqld@1"
|
|
|
|
subprocess.call(shlex.split(command))
|
|
|
|
command = "systemctl enable mysqld@1"
|
|
|
|
subprocess.call(shlex.split(command))
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installMySQL]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installMySQL]")
|
|
return 0
|
|
|
|
|
|
############## Start mariadb ######################
|
|
|
|
self.startMariaDB()
|
|
|
|
############## Enable mariadb at system startup ######################
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
cmd.append("systemctl")
|
|
cmd.append("enable")
|
|
cmd.append("mariadb")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add mariadb to startup ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not add mariadb to startup [installMySQL]")
|
|
else:
|
|
print("###############################################")
|
|
print(" MariaDB Addded to startup ")
|
|
print("###############################################")
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " Could not add mariadb to startup [installMySQL]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " Could not add mariadb to startup [installMySQL]")
|
|
return 0
|
|
|
|
|
|
return 1
|
|
|
|
def secureMysqlInstallation(self):
|
|
try:
|
|
expectation = "Enter current password"
|
|
securemysql = pexpect.spawn("mysql_secure_installation", timeout=5)
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("")
|
|
|
|
expectation = "root password? [Y/n]"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("Y")
|
|
|
|
expectation = "New password:"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline(self.mysql_password)
|
|
|
|
expectation = "new password:"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline(self.mysql_password)
|
|
|
|
expectation = "anonymous users? [Y/n]"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("Y")
|
|
|
|
expectation = "root login remotely? [Y/n]"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("Y")
|
|
|
|
expectation = "test database and access to it? [Y/n]"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("Y")
|
|
|
|
expectation = "Reload privilege tables now? [Y/n]"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("Y")
|
|
|
|
securemysql.wait()
|
|
|
|
if (securemysql.before.find("Thanks for using MariaDB!") > -1 or securemysql.after.find(
|
|
"Thanks for using MariaDB!") > -1):
|
|
return 1
|
|
|
|
except pexpect.EOF, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [secureMysqlInstallation]")
|
|
except pexpect.TIMEOUT, msg:
|
|
print securemysql.after
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [secureMysqlInstallation]")
|
|
except BaseException, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + "[secureMysqlInstallation]")
|
|
|
|
return 0
|
|
|
|
def changeMYSQLRootPassword(self):
|
|
try:
|
|
expectation = "Enter password:"
|
|
securemysql = pexpect.spawn("mysql -u root -p", timeout=5)
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("")
|
|
|
|
expectation = "clear the current input statement."
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("use mysql;")
|
|
|
|
expectation = "Database changed"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("update user set password=PASSWORD('"+InstallCyberPanel.mysql_Root_password+"') where User='root';")
|
|
|
|
expectation = "Query OK"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("flush privileges;")
|
|
|
|
expectation = "Query OK"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("quit")
|
|
|
|
securemysql.wait()
|
|
|
|
|
|
except pexpect.EOF, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [changeMYSQLRootPassword]")
|
|
except pexpect.TIMEOUT, msg:
|
|
print securemysql.before
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [changeMYSQLRootPassword]")
|
|
except BaseException, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + "[changeMYSQLRootPassword]")
|
|
|
|
return 0
|
|
|
|
def changeMYSQLRootPasswordCyberPanel(self):
|
|
try:
|
|
expectation = "Enter password:"
|
|
securemysql = pexpect.spawn("mysql --host=127.0.0.1 --port=3307 -u root -p", timeout=5)
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("")
|
|
|
|
expectation = "clear the current input statement."
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("use mysql;")
|
|
|
|
expectation = "Database changed"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("update user set password=PASSWORD('"+InstallCyberPanel.mysql_Root_password+"') where User='root';")
|
|
|
|
expectation = "Query OK"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("flush privileges;")
|
|
|
|
expectation = "Query OK"
|
|
securemysql.expect(expectation)
|
|
securemysql.sendline("quit")
|
|
|
|
securemysql.wait()
|
|
|
|
|
|
except pexpect.EOF, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [changeMYSQLRootPasswordCyberPanel]")
|
|
except pexpect.TIMEOUT, msg:
|
|
print securemysql.before
|
|
logging.InstallLog.writeToFile(str(msg) + " Exception EOF [changeMYSQLRootPasswordCyberPanel]")
|
|
except BaseException, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + "[changeMYSQLRootPasswordCyberPanel]")
|
|
|
|
return 0
|
|
|
|
|
|
def startMariaDB(self):
|
|
|
|
############## Start mariadb ######################
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
cmd.append("systemctl")
|
|
cmd.append("start")
|
|
cmd.append("mariadb")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not start MariaDB ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not start MariaDB [startMariaDB]")
|
|
else:
|
|
print("###############################################")
|
|
print(" MariaDB Started ")
|
|
print("###############################################")
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startMariaDB]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startMariaDB]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def installPureFTPD(self):
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
cmd.append("yum")
|
|
cmd.append("install")
|
|
cmd.append("-y")
|
|
cmd.append("pure-ftpd")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install PureFTPD ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not install PureFTPD [installPureFTPD]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" PureFTPD Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
|
|
####### Install pureftpd to system startup
|
|
|
|
cmd = []
|
|
|
|
cmd.append("systemctl")
|
|
cmd.append("enable")
|
|
cmd.append("pure-ftpd")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add pureftpd to startup ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not add pureftpd to startup [installPureFTPD]")
|
|
else:
|
|
print("###############################################")
|
|
print(" pureftpd Addded to startup ")
|
|
print("###############################################")
|
|
|
|
|
|
|
|
|
|
###### FTP Groups and user settings settings
|
|
|
|
|
|
cmd = []
|
|
|
|
cmd.append("groupadd")
|
|
cmd.append("-g")
|
|
cmd.append("2001")
|
|
cmd.append("ftpgroup")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add FTP Group ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not add FTP Group [installPureFTPD]")
|
|
else:
|
|
print("###############################################")
|
|
print(" FTP Group Added ")
|
|
print("###############################################")
|
|
|
|
cmd = []
|
|
|
|
cmd.append("useradd")
|
|
cmd.append("-u")
|
|
cmd.append("2001")
|
|
cmd.append("-s")
|
|
cmd.append("/bin/false")
|
|
cmd.append("-d")
|
|
cmd.append("/bin/null")
|
|
cmd.append("-c")
|
|
cmd.append('"pureftpd user"')
|
|
cmd.append("-g")
|
|
cmd.append("ftpgroup")
|
|
cmd.append("ftpuser")
|
|
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add FTP User ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not add FTP group [installPureFTPD]")
|
|
else:
|
|
print("###############################################")
|
|
print(" FTP User Added ")
|
|
print("###############################################")
|
|
|
|
cmd = []
|
|
|
|
cmd.append("usermod")
|
|
cmd.append("-a")
|
|
cmd.append("-G")
|
|
cmd.append("nobody")
|
|
cmd.append("ftpuser")
|
|
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not add FTP User ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not add FTP User [installPureFTPD]")
|
|
else:
|
|
print("###############################################")
|
|
print(" FTP User Added ")
|
|
print("###############################################")
|
|
|
|
|
|
commad = "usermod -a -G cyberpanel ftpuser"
|
|
|
|
cmd = shlex.split(commad)
|
|
|
|
subprocess.call(cmd)
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installPureFTPD]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installPureFTPD]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def startPureFTPD(self):
|
|
|
|
############## Start mariadb ######################
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
cmd.append("systemctl")
|
|
cmd.append("start")
|
|
cmd.append("pure-ftpd")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not start pureftpd ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not start pureftpd [installPureFTPD]")
|
|
else:
|
|
print("###############################################")
|
|
print(" pureftpd Started ")
|
|
print("###############################################")
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startPureFTPD]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startPureFTPD]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def installPureFTPDConfigurations(self):
|
|
|
|
try:
|
|
os.chdir(self.cwd)
|
|
ftpdPath = "/etc/pure-ftpd"
|
|
|
|
if os.path.exists(ftpdPath):
|
|
shutil.rmtree(ftpdPath)
|
|
shutil.copytree("pure-ftpd",ftpdPath)
|
|
else:
|
|
shutil.copytree("pure-ftpd", ftpdPath)
|
|
|
|
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)
|
|
|
|
writeDataToFile.close()
|
|
|
|
except IOError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installPureFTPDConfigurations]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def installPowerDNS(self):
|
|
|
|
try:
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
command = 'yum -y install epel-release yum-plugin-priorities'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("plugin-priorities [installPowerDNS]")
|
|
else:
|
|
pass
|
|
|
|
command = 'curl -o /etc/yum.repos.d/powerdns-auth-master.repo https://repo.powerdns.com/repo-files/centos-auth-master.repo'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("636 [installPowerDNS]")
|
|
else:
|
|
pass
|
|
|
|
command = 'yum -y install pdns pdns-backend-mysql'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Can not install PowerDNS ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Can not install PowerDNS [installPowerDNS]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" PowerDNS Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [powerDNS]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [powerDNS]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
def installPowerDNSConfigurations(self,mysqlPassword):
|
|
|
|
try:
|
|
os.chdir(self.cwd)
|
|
dnsPath = "/etc/pdns/pdns.conf"
|
|
|
|
if os.path.exists(dnsPath):
|
|
os.remove(dnsPath)
|
|
shutil.copy("dns/pdns.conf", dnsPath)
|
|
else:
|
|
shutil.copy("dns/pdns.conf", dnsPath)
|
|
|
|
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)
|
|
|
|
writeDataToFile.close()
|
|
|
|
|
|
except IOError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installPowerDNSConfigurations]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def startPowerDNS(self):
|
|
|
|
############## Start mariadb ######################
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
cmd.append("systemctl")
|
|
cmd.append("enable")
|
|
cmd.append("pdns")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not start PowerDNS ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Could not start PowerDNS" + " [startPowerDNS]")
|
|
else:
|
|
print("###############################################")
|
|
print(" PowerDNS Started ")
|
|
print("###############################################")
|
|
|
|
command = 'systemctl start pdns'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("734 [startPowerDNS]")
|
|
else:
|
|
pass
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startPowerDNS]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [startPowerDNS]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
def installCertBot(self):
|
|
|
|
try:
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
cmd.append("yum")
|
|
cmd.append("-y")
|
|
cmd.append("install")
|
|
cmd.append("yum-utils")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install yum utils ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("yum utils not installed" + " [installCertBot]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" yum utils Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
cmd.append("yum-config-manager")
|
|
cmd.append("--enable")
|
|
cmd.append("rhui-REGION-rhel-server-extras")
|
|
cmd.append("rhui-REGION-rhel-server-optional")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install yum-config-manager ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("yum-config-manager --enable failed" + " [installCertBot]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" yum-config-manager Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
cmd = []
|
|
|
|
count = 0
|
|
|
|
while (1):
|
|
|
|
if subprocess.check_output('systemd-detect-virt').find("openvz") > -1:
|
|
|
|
command = "pip install pyOpenSSL==16.2.0"
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
subprocess.call(cmd)
|
|
|
|
command = "pip install certbot"
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install CertBot ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Certbot not installed" + " [installCertBot]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" Certbot Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
else:
|
|
|
|
cmd.append("yum")
|
|
cmd.append("-y")
|
|
cmd.append("install")
|
|
cmd.append("certbot")
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
print("###############################################")
|
|
print(" Could not install CertBot ")
|
|
print("###############################################")
|
|
logging.InstallLog.writeToFile("Certbot not installed" + " [installCertBot]")
|
|
count = count + 1
|
|
print("Trying again, try number: " + str(count)+"\n")
|
|
if count == 3:
|
|
break
|
|
else:
|
|
print("###############################################")
|
|
print(" Certbot Installed ")
|
|
print("###############################################")
|
|
break
|
|
|
|
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installCertBot]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installCertBot]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
|
|
def installLSCPD(self):
|
|
try:
|
|
|
|
os.chdir(self.cwd)
|
|
|
|
command = 'yum -y install epel-release'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("836 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
command = 'yum -y install gcc gcc-c++ make autoconf glibc rcs'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("846 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
|
|
command = 'yum -y install pcre-devel openssl-devel expat-devel geoip-devel zlib-devel udns-devel'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("860 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
|
|
command = 'tar zxf openlitespeed-1.4.28.tgz'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("872 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
os.chdir("openlitespeed-1.4.28")
|
|
|
|
command = './configure --with-lscpd --prefix=/usr/local/lscp'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("885 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
command = 'make'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("896 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
command = 'make install'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("907 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
command = 'openssl req -newkey rsa:2048 -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'
|
|
|
|
cmd = shlex.split(command)
|
|
|
|
res = subprocess.call(cmd)
|
|
|
|
if res == 1:
|
|
logging.InstallLog.writeToFile("918 [installLSCPD]")
|
|
else:
|
|
pass
|
|
|
|
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
|
|
|
|
|
|
if res == 0:
|
|
|
|
print("###############################################")
|
|
print(" LSCPD Installed ")
|
|
print("###############################################")
|
|
|
|
|
|
except OSError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installLSCPD]")
|
|
return 0
|
|
except ValueError, msg:
|
|
logging.InstallLog.writeToFile(str(msg) + " [installLSCPD]")
|
|
return 0
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
|
|
|
def Main(cwd):
|
|
InstallCyberPanel.mysqlPassword = randomPassword.generate_pass()
|
|
|
|
InstallCyberPanel.mysql_Root_password = randomPassword.generate_pass()
|
|
|
|
os.mkdir("/etc/cyberpanel")
|
|
|
|
|
|
password = open("/etc/cyberpanel/mysqlPassword","w")
|
|
password.writelines(InstallCyberPanel.mysql_Root_password)
|
|
password.close()
|
|
|
|
|
|
installer = InstallCyberPanel("/usr/local/lsws/",cwd)
|
|
|
|
|
|
installer.installLiteSpeed()
|
|
installer.install_ls_panel_config()
|
|
installer.changePortTo80()
|
|
|
|
#installer.addLiteSpeedRepo()
|
|
|
|
installer.installAllPHPVersions()
|
|
installer.installAllPHPToLitespeed()
|
|
|
|
installer.setup_mariadb_repo()
|
|
installer.installMySQL()
|
|
installer.changeMYSQLRootPassword()
|
|
installer.changeMYSQLRootPasswordCyberPanel()
|
|
installer.startMariaDB()
|
|
|
|
mysqlUtilities.createDatabaseCyberPanel("cyberpanel","cyberpanel",InstallCyberPanel.mysqlPassword)
|
|
|
|
|
|
installer.installPureFTPD()
|
|
installer.installPureFTPDConfigurations()
|
|
installer.startPureFTPD()
|
|
|
|
installer.installPowerDNS()
|
|
installer.installPowerDNSConfigurations(InstallCyberPanel.mysqlPassword)
|
|
installer.startPowerDNS()
|
|
|
|
|
|
installer.installCertBot()
|
|
installer.installLSCPD()
|
|
|
|
|
|
|
|
def test():
|
|
installer = InstallCyberPanel("/usr/local/lsws/", "/home")
|
|
installer.installLSCPD() |