2017-10-24 19:16:36 +05:00
import sys
import subprocess
import shutil
import installLog as logging
import argparse
import os
import shlex
from firewallUtilities import FirewallUtilities
2018-02-04 21:15:30 +05:00
import time
2017-10-24 19:16:36 +05:00
class preFlightsChecks :
2018-03-08 22:19:23 +05:00
cyberPanelMirror = " mirror.cyberpanel.net/pip "
2018-03-04 13:37:58 +05:00
2017-12-09 22:30:10 +05:00
def __init__ ( self , rootPath , ip , path , cwd , cyberPanelPath ) :
2017-10-24 19:16:36 +05:00
self . ipAddr = ip
self . path = path
self . cwd = cwd
self . server_root_path = rootPath
2017-12-09 22:30:10 +05:00
self . cyberPanelPath = cyberPanelPath
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
@staticmethod
def stdOut ( message ) :
print ( " \n \n " )
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] ######################################################################### \n " )
print ( " [ " + time . strftime ( " % I- % M- % S- %a - % b- % Y " ) + " ] " + message + " \n " )
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] ######################################################################### \n " )
def checkIfSeLinuxDisabled ( self ) :
2017-12-09 22:30:10 +05:00
try :
2018-02-04 21:15:30 +05:00
command = " sestatus "
output = subprocess . check_output ( shlex . split ( command ) )
2017-12-09 22:30:10 +05:00
2018-02-10 12:10:38 +05:00
if output . find ( " disabled " ) > - 1 or output . find ( " permissive " ) > - 1 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " SELinux Check OK. [checkIfSeLinuxDisabled] " )
preFlightsChecks . stdOut ( " SELinux Check OK. " )
return 1
else :
logging . InstallLog . writeToFile ( " SELinux is enabled, please disable SELinux and restart the installation! " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
except BaseException , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [checkIfSeLinuxDisabled] " )
2018-02-10 12:10:38 +05:00
logging . InstallLog . writeToFile ( " SELinux Check OK. [checkIfSeLinuxDisabled] " )
preFlightsChecks . stdOut ( " SELinux Check OK. " )
return 1
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
def checkPythonVersion ( self ) :
if sys . version_info [ 0 ] == 2 and sys . version_info [ 1 ] == 7 :
return 1
else :
preFlightsChecks . stdOut ( " You are running Unsupported python version, please install python 2.7 " )
sys . exit ( )
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
def setup_account_cyberpanel ( self ) :
try :
count = 0
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = " yum install sudo -y "
2017-12-09 22:30:10 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " SUDO install failed, trying again, try number: " + str ( count ) )
2017-12-09 22:30:10 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " We are not able to install SUDO, exiting the installer. [setup_account_cyberpanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-12-09 22:30:10 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " SUDO successfully installed! " )
preFlightsChecks . stdOut ( " SUDO successfully installed! " )
2017-12-09 22:30:10 +05:00
break
2018-02-04 21:15:30 +05:00
##
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = " adduser cyberpanel "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Not able to add user cyberpanel to system, trying again, try number: " + str ( count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile ( " We are not able add user cyberpanel to system, exiting the installer. [setup_account_cyberpanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " CyberPanel user added! " )
preFlightsChecks . stdOut ( " CyberPanel user added! " )
break
2017-11-05 03:02:51 +05:00
##
2018-02-04 21:15:30 +05:00
count = 0
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
command = " usermod -aG wheel cyberpanel "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " We are trying to add CyberPanel user to SUDO group, trying again, try number: " + str ( count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile ( " Not able to add user CyberPanel to SUDO group, exiting the installer. [setup_account_cyberpanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " CyberPanel user was successfully added to SUDO group! " )
preFlightsChecks . stdOut ( " CyberPanel user was successfully added to SUDO group! " )
break
2017-11-05 03:02:51 +05:00
###############################
path = " /etc/sudoers "
2017-12-09 22:30:10 +05:00
data = open ( path , ' r ' ) . readlines ( )
2017-11-05 03:02:51 +05:00
2017-12-09 22:30:10 +05:00
writeToFile = open ( path , ' w ' )
2017-11-05 03:02:51 +05:00
for items in data :
2017-12-09 22:30:10 +05:00
if items . find ( " wheel ALL=(ALL) NOPASSWD: ALL " ) > - 1 :
2017-11-05 03:02:51 +05:00
writeToFile . writelines ( " % wheel ALL=(ALL) NOPASSWD: ALL " )
else :
writeToFile . writelines ( items )
writeToFile . close ( )
###############################
2018-02-04 21:15:30 +05:00
count = 0
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
command = " mkdir /etc/letsencrypt "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " We are trying to create Let ' s Encrypt directory to store SSLs, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to create Let ' s Encrypt directory to store SSLs. Installer can continue without this.. [setup_account_cyberpanel] " )
else :
logging . InstallLog . writeToFile ( " Successfully created Let ' s Encrypt directory! " )
preFlightsChecks . stdOut ( " Successfully created Let ' s Encrypt directory! " )
break
2017-11-05 03:02:51 +05:00
##
except :
logging . InstallLog . writeToFile ( " [116] setup_account_cyberpanel " )
2018-02-04 21:15:30 +05:00
def yum_update ( self ) :
try :
count = 0
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' yum update -y '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " YUM UPDATE FAILED, trying again, try number: " + str ( count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile ( " YUM update failed to run, we are being optimistic that installer will still be able to complete installation. [yum_update] " )
break
else :
logging . InstallLog . writeToFile ( " YUM UPDATE ran successfully. " )
preFlightsChecks . stdOut ( " YUM UPDATE ran successfully. " )
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [yum_update] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [yum_update] " )
return 0
return 1
2017-10-24 19:16:36 +05:00
def installCyberPanelRepo ( self ) :
cmd = [ ]
count = 0
while ( 1 ) :
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 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to add CyberPanel official repository, trying again, try number: " + str ( count ) + " \n " )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to add CyberPanel official repository, exiting installer! [installCyberPanelRepo] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " CyberPanel Repo added! " )
preFlightsChecks . stdOut ( " CyberPanel Repo added! " )
2017-10-24 19:16:36 +05:00
break
2017-12-09 22:30:10 +05:00
def enableEPELRepo ( self ) :
try :
cmd = [ ]
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
while ( 1 ) :
cmd . append ( " yum " )
cmd . append ( " -y " )
cmd . append ( " install " )
cmd . append ( " epel-release " )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to add EPEL repository, trying again, try number: " + str ( count ) + " \n " )
2017-12-09 22:30:10 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to add EPEL repository, exiting installer! [enableEPELRepo] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
2017-12-09 22:30:10 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " EPEL Repo added! " )
preFlightsChecks . stdOut ( " EPEL Repo added! " )
2017-12-09 22:30:10 +05:00
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableEPELRepo] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableEPELRepo] " )
return 0
return 1
2017-10-24 19:16:36 +05:00
def install_pip ( self ) :
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " yum -y install python-pip "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install PIP, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install PIP, exiting installer! [install_pip] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " PIP successfully installed! " )
preFlightsChecks . stdOut ( " PIP successfully installed! " )
2017-10-24 19:16:36 +05:00
break
2018-02-04 21:15:30 +05:00
def install_python_dev ( self ) :
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " yum -y install python-devel "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " We are trying to install python development tools, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install python development tools, exiting installer! [install_python_dev] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Python development tools successfully installed! " )
preFlightsChecks . stdOut ( " Python development tools successfully installed! " )
2017-10-24 19:16:36 +05:00
break
2018-02-04 21:15:30 +05:00
def install_gcc ( self ) :
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " yum -y install gcc "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install GCC, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install GCC, exiting installer! [install_gcc] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " GCC Successfully installed! " )
preFlightsChecks . stdOut ( " GCC Successfully installed! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
def install_python_setup_tools ( self ) :
count = 0
while ( 1 ) :
command = " yum -y install python-setuptools "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Unable to install Python setup tools, trying again, try number: " + str (
count ) + " \n " )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile (
" Unable to install Python setup tools, exiting installer! [install_python_setup_tools] " )
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Python setup tools Successfully installed! " )
print ( " [ " + time . strftime ( " % I- % M- % S- %a - % b- % Y " ) + " ] " + " Python setup tools Successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def install_python_requests ( self ) :
try :
import requests
2018-03-08 22:19:23 +05:00
## Un-install ULRLIB3 and requests
command = " pip uninstall --yes urllib3 "
res = subprocess . call ( shlex . split ( command ) )
command = " pip uninstall --yes requests "
res = subprocess . call ( shlex . split ( command ) )
## Install specific versions
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /urllib3-1.22.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Unable to install urllib3 module, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install urllib3 module, exiting installer! [install_python_requests] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " urllib3 module Successfully installed! " )
preFlightsChecks . stdOut ( " urllib3 module Successfully installed! " )
break
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /requests-2.18.4.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Unable to install requests module, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install requests module, exiting installer! [install_python_requests] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " Requests module Successfully installed! " )
preFlightsChecks . stdOut ( " Requests module Successfully installed! " )
break
2017-10-24 19:16:36 +05:00
except :
2018-03-08 22:19:23 +05:00
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-03-08 22:19:23 +05:00
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /urllib3-1.22.tar.gz "
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-03-08 22:19:23 +05:00
preFlightsChecks . stdOut (
" Unable to install urllib3 module, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-03-08 22:19:23 +05:00
logging . InstallLog . writeToFile (
" Unable to install urllib3 module, exiting installer! [install_python_requests] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " urllib3 module Successfully installed! " )
preFlightsChecks . stdOut ( " urllib3 module Successfully installed! " )
break
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /requests-2.18.4.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Unable to install requests module, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install requests module, exiting installer! [install_python_requests] " )
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Requests module Successfully installed! " )
preFlightsChecks . stdOut ( " Requests module Successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def install_pexpect ( self ) :
try :
import pexpect
2018-03-08 22:19:23 +05:00
command = " pip uninstall --yes pexpect "
res = subprocess . call ( shlex . split ( command ) )
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /pexpect-4.4.0.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install pexpect, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install pexpect, exiting installer! [install_pexpect] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " pexpect successfully installed! " )
preFlightsChecks . stdOut ( " pexpect successfully installed! " )
break
2017-10-24 19:16:36 +05:00
except :
count = 0
while ( 1 ) :
2018-03-08 22:19:23 +05:00
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /pexpect-4.4.0.tar.gz "
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install pexpect, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install pexpect, exiting installer! [install_pexpect] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " pexpect successfully installed! " )
preFlightsChecks . stdOut ( " pexpect successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def install_django ( self ) :
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " pip install django==1.11 "
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install DJANGO, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install DJANGO, exiting installer! [install_django] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " DJANGO successfully installed! " )
preFlightsChecks . stdOut ( " DJANGO successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def install_python_mysql_library ( self ) :
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " yum -y install MySQL-python "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install MySQL-python, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install MySQL-python, exiting installer! [install_python_mysql_library] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " MySQL-python successfully installed! " )
preFlightsChecks . stdOut ( " MySQL-python successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def install_gunicorn ( self ) :
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " easy_install gunicorn "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install GUNICORN, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install GUNICORN, exiting installer! [install_gunicorn] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " GUNICORN successfully installed! " )
preFlightsChecks . stdOut ( " GUNICORN successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def setup_gunicorn ( self ) :
try :
os . chdir ( self . cwd )
2018-02-04 21:15:30 +05:00
##
logging . InstallLog . writeToFile ( " Configuring Gunicorn.. " )
2017-10-24 19:16:36 +05:00
service = " /etc/systemd/system/gunicorn.service "
socket = " /etc/systemd/system/gunicorn.socket "
conf = " /etc/tmpfiles.d/gunicorn.conf "
shutil . copy ( " gun-configs/gunicorn.service " , service )
shutil . copy ( " gun-configs/gunicorn.socket " , socket )
shutil . copy ( " gun-configs/gunicorn.conf " , conf )
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Gunicorn Configured! " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
### Enable at system startup
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = " systemctl enable gunicorn.socket "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to enable Gunicorn at system startup, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Gunicorn will not start after system restart, you can manually enable using systemctl enable gunicorn.socket! [setup_gunicorn] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
break
else :
logging . InstallLog . writeToFile ( " Gunicorn can now start after system restart! " )
preFlightsChecks . stdOut ( " Gunicorn can now start after system restart! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
##
2017-10-24 19:16:36 +05:00
count = 0
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = " systemctl start gunicorn.socket "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Starting Gunicorn now, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to start Gunicorn, exiting installer! [setup_gunicorn] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Gunicorn successfully started! " )
preFlightsChecks . stdOut ( " Gunicorn successfully started! " )
2017-10-24 19:16:36 +05:00
break
2018-02-04 21:15:30 +05:00
except BaseException , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_gunicorn] " )
preFlightsChecks . stdOut ( " Not able to setup gunicorn, see install log. " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
def install_psutil ( self ) :
2017-10-24 19:16:36 +05:00
try :
2018-02-04 21:15:30 +05:00
import psutil
2018-03-08 22:19:23 +05:00
##
command = " pip uninstall --yes psutil "
res = subprocess . call ( shlex . split ( command ) )
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /psutil-5.4.3.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install psutil, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install psutil, exiting installer! [install_psutil] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " psutil successfully installed! " )
preFlightsChecks . stdOut ( " psutil successfully installed! " )
break
2017-10-24 19:16:36 +05:00
except :
count = 0
while ( 1 ) :
2018-03-08 22:19:23 +05:00
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /psutil-5.4.3.tar.gz "
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install psutil, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install psutil, exiting installer! [install_psutil] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " psutil successfully installed! " )
preFlightsChecks . stdOut ( " psutil successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def fix_selinux_issue ( self ) :
2017-11-05 03:02:51 +05:00
try :
cmd = [ ]
2017-10-24 19:16:36 +05:00
2017-11-05 03:02:51 +05:00
cmd . append ( " setsebool " )
cmd . append ( " -P " )
cmd . append ( " httpd_can_network_connect " )
cmd . append ( " 1 " )
2017-10-24 19:16:36 +05:00
2017-11-05 03:02:51 +05:00
res = subprocess . call ( cmd )
if res == 1 :
logging . InstallLog . writeToFile ( " fix_selinux_issue problem " )
else :
pass
2017-12-09 22:30:10 +05:00
except :
2017-10-24 19:16:36 +05:00
logging . InstallLog . writeToFile ( " fix_selinux_issue problem " )
def install_psmisc ( self ) :
count = 0
while ( 1 ) :
2018-02-04 21:15:30 +05:00
command = " yum -y install psmisc "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install psmisc, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install psmisc, exiting installer! [install_psmisc] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " psmisc successfully installed! " )
preFlightsChecks . stdOut ( " psmisc successfully installed! " )
2017-10-24 19:16:36 +05:00
break
def download_install_CyberPanel ( self , mysqlPassword ) :
try :
2018-02-04 21:15:30 +05:00
## On OpenVZ there is an issue with requests module, which needs to upgrade requests module
2017-10-24 19:16:36 +05:00
if subprocess . check_output ( ' systemd-detect-virt ' ) . find ( " openvz " ) > - 1 :
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
command = " pip install --upgrade requests "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to upgrade requests, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install upgrade requests, exiting installer! [download_install_CyberPanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " requests module successfully upgraded! " )
preFlightsChecks . stdOut ( " requests module successfully upgraded! " )
break
2017-10-24 19:16:36 +05:00
except :
pass
2018-02-04 21:15:30 +05:00
##
2017-10-24 19:16:36 +05:00
os . chdir ( self . path )
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2018-04-20 23:49:49 +05:00
command = " wget http://cyberpanel.net/CyberPanel.1.6.3.tar.gz "
2018-04-04 02:17:12 +05:00
#command = "wget http://cyberpanel.net/CyberPanelTemp.tar.gz"
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to download CyberPanel, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to download CyberPanel, exiting installer! [download_install_CyberPanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " CyberPanel successfully downloaded! " )
preFlightsChecks . stdOut ( " CyberPanel successfully downloaded! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
##
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2018-04-20 23:49:49 +05:00
command = " tar zxf CyberPanel.1.6.3.tar.gz "
2018-04-04 02:17:12 +05:00
#command = "tar zxf CyberPanelTemp.tar.gz"
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to extract CyberPanel, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to extract CyberPanel. You can try to install on fresh OS again, exiting installer! [download_install_CyberPanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " Successfully extracted CyberPanel! " )
preFlightsChecks . stdOut ( " Successfully extracted CyberPanel! " )
break
2017-10-24 19:16:36 +05:00
### update password:
passFile = " /etc/cyberpanel/mysqlPassword "
f = open ( passFile )
data = f . read ( )
password = data . split ( ' \n ' , 1 ) [ 0 ]
2018-02-04 21:15:30 +05:00
### Put correct mysql passwords in settings file!
logging . InstallLog . writeToFile ( " Updating settings.py! " )
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
path = self . cyberPanelPath + " /CyberCP/settings.py "
2017-10-24 19:16:36 +05:00
data = open ( path , " r " ) . readlines ( )
writeDataToFile = open ( path , " w " )
counter = 0
for items in data :
if items . find ( " ' PASSWORD ' : " ) > - 1 :
if counter == 0 :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + mysqlPassword + " ' , " + " \n " )
counter = counter + 1
else :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + password + " ' , " + " \n " )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " settings.py updated! " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
### Applying migrations
2017-10-24 19:16:36 +05:00
os . chdir ( " CyberCP " )
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = " python manage.py makemigrations "
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to prepare migrations file, trying again, try number: " + str ( count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to prepare migrations file. You can try to install on fresh OS again, exiting installer! [download_install_CyberPanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " Successfully prepared migrations file! " )
preFlightsChecks . stdOut ( " Successfully prepared migrations file! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
command = " python manage.py migrate "
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to execute the migrations file, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to execute the migrations file, exiting installer! [download_install_CyberPanel] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " Migrations file successfully executed! " )
preFlightsChecks . stdOut ( " Migrations file successfully executed! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
## Moving static content to lscpd location
2017-10-24 19:16:36 +05:00
command = ' mv static /usr/local/lscp/cyberpanel '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Could not move static content! " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Static content moved! " )
preFlightsChecks . stdOut ( " Static content moved! " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
## fix permissions
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2018-01-18 22:37:12 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2018-01-18 22:37:12 +05:00
command = " chmod -R 744 /usr/local/CyberCP "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
2018-02-04 21:15:30 +05:00
count = count + 1
preFlightsChecks . stdOut ( " Changing permissions for ' /usr/local/CyberCP ' failed, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for ' /usr/local/CyberCP ' , we are being optimistic that it is still going to work :) [download_install_CyberPanel] " )
break
2018-01-18 22:37:12 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Permissions successfully changed for ' /usr/local/CyberCP ' " )
preFlightsChecks . stdOut ( " Permissions successfully changed for ' /usr/local/CyberCP ' " )
break
2018-01-23 20:37:44 +05:00
2018-02-04 21:15:30 +05:00
## change owner
2018-01-23 20:37:44 +05:00
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2018-01-23 20:37:44 +05:00
command = " chown -R cyberpanel:cyberpanel /usr/local/CyberCP "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
2018-02-04 21:15:30 +05:00
count = count + 1
preFlightsChecks . stdOut ( " Unable to change owner for ' /usr/local/CyberCP ' , trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change owner for ' /usr/local/CyberCP ' , we are being optimistic that it is still going to work :) [download_install_CyberPanel] " )
break
2018-01-23 20:37:44 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Owner for ' /usr/local/CyberCP ' successfully changed! " )
preFlightsChecks . stdOut ( " Owner for ' /usr/local/CyberCP ' successfully changed! " )
break
2018-01-23 20:37:44 +05:00
2017-12-09 22:30:10 +05:00
def install_unzip ( self ) :
2017-10-24 19:16:36 +05:00
try :
2017-12-09 22:30:10 +05:00
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2017-12-09 22:30:10 +05:00
command = ' yum -y install unzip '
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install unzip, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install unzip, exiting installer! [install_unzip] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " unzip successfully installed! " )
preFlightsChecks . stdOut ( " unzip Successfully installed! " )
2017-10-24 19:16:36 +05:00
break
2017-12-09 22:30:10 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [install_unzip] " )
2017-10-24 19:16:36 +05:00
return 0
2017-12-09 22:30:10 +05:00
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [install_unzip] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
2017-12-09 22:30:10 +05:00
def install_zip ( self ) :
2017-10-24 19:16:36 +05:00
try :
count = 0
while ( 1 ) :
2017-12-09 22:30:10 +05:00
command = ' yum -y install zip '
2017-10-24 19:16:36 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Unable to install zip, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install zip, exiting installer! [install_zip] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
2017-10-24 19:16:36 +05:00
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " zip successfully installed! " )
preFlightsChecks . stdOut ( " zip successfully installed! " )
2017-10-24 19:16:36 +05:00
break
except OSError , msg :
2017-12-09 22:30:10 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_zip] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-12-09 22:30:10 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_zip] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
def download_install_phpmyadmin ( self ) :
try :
os . chdir ( " /usr/local/lscp/cyberpanel/ " )
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' wget https://files.phpmyadmin.net/phpMyAdmin/4.7.7/phpMyAdmin-4.7.7-all-languages.zip '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to download PYPMYAdmin, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to download PYPMYAdmin, exiting installer! [download_install_phpmyadmin] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " PHPMYAdmin successfully downloaded! " )
preFlightsChecks . stdOut ( " PHPMYAdmin successfully downloaded! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' unzip phpMyAdmin-4.7.7-all-languages.zip '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Unable to unzip PHPMYAdmin, trying again, try number: " + str (
count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to unzip PHPMYAdmin, exiting installer! [download_install_phpmyadmin] " )
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " PHPMYAdmin unzipped! " )
print (
" [ " + time . strftime ( " % I- % M- % S- %a - % b- % Y " ) + " ] " + " PHPMYAdmin unzipped! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
###
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
os . remove ( " phpMyAdmin-4.7.7-all-languages.zip " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' mv phpMyAdmin-4.7.7-all-languages phpmyadmin '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Unable to install PHPMYAdmin, trying again, try number: " + str (
count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install PHPMYAdmin, exiting installer! [download_install_phpmyadmin] " )
print ( " [ " + time . strftime (
" % I- % M- % S- %a - % b- % Y " ) + " ] " + " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " PHPMYAdmin Successfully installed! " )
print (
" [ " + time . strftime ( " % I- % M- % S- %a - % b- % Y " ) + " ] " + " PHPMYAdmin Successfully installed! " )
break
2017-10-24 19:16:36 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [download_install_phpmyadmin] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [download_install_phpmyadmin] " )
return 0
return 1
###################################################### Email setup
def install_postfix_davecot ( self ) :
try :
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' yum -y --enablerepo=centosplus install postfix '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install Postfix, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install Postfix, you will not be able to send mails and rest should work fine! [install_postfix_davecot] " )
break
else :
logging . InstallLog . writeToFile ( " Postfix successfully installed! " )
preFlightsChecks . stdOut ( " Postfix successfully installed! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' yum -y install dovecot dovecot-mysql '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install Dovecot and Dovecot-MySQL, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install install Dovecot and Dovecot-MySQL, you will not be able to send mails and rest should work fine! [install_postfix_davecot] " )
break
else :
logging . InstallLog . writeToFile ( " Dovecot and Dovecot-MySQL successfully installed! " )
preFlightsChecks . stdOut ( " Dovecot and Dovecot-MySQL successfully installed! " )
break
2017-10-24 19:16:36 +05:00
except OSError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_postfix_davecot] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_postfix_davecot] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
def setup_email_Passwords ( self , mysqlPassword ) :
try :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Setting up authentication for Postfix and Dovecot... " )
2017-10-24 19:16:36 +05:00
os . chdir ( self . cwd )
mysql_virtual_domains = " email-configs/mysql-virtual_domains.cf "
mysql_virtual_forwardings = " email-configs/mysql-virtual_forwardings.cf "
mysql_virtual_mailboxes = " email-configs/mysql-virtual_mailboxes.cf "
mysql_virtual_email2email = " email-configs/mysql-virtual_email2email.cf "
davecotmysql = " email-configs/dovecot-sql.conf.ext "
### update password:
data = open ( davecotmysql , " r " ) . readlines ( )
writeDataToFile = open ( davecotmysql , " w " )
dataWritten = " connect = host=127.0.0.1 dbname=cyberpanel user=cyberpanel password= " + mysqlPassword + " port=3307 \n "
for items in data :
if items . find ( " connect " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
### update password:
data = open ( mysql_virtual_domains , " r " ) . readlines ( )
writeDataToFile = open ( mysql_virtual_domains , " w " )
dataWritten = " password = " + mysqlPassword + " \n "
for items in data :
if items . find ( " password " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
### update password:
data = open ( mysql_virtual_forwardings , " r " ) . readlines ( )
writeDataToFile = open ( mysql_virtual_forwardings , " w " )
dataWritten = " password = " + mysqlPassword + " \n "
for items in data :
if items . find ( " password " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
### update password:
data = open ( mysql_virtual_mailboxes , " r " ) . readlines ( )
writeDataToFile = open ( mysql_virtual_mailboxes , " w " )
dataWritten = " password = " + mysqlPassword + " \n "
for items in data :
if items . find ( " password " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
### update password:
data = open ( mysql_virtual_email2email , " r " ) . readlines ( )
writeDataToFile = open ( mysql_virtual_email2email , " w " )
dataWritten = " password = " + mysqlPassword + " \n "
for items in data :
if items . find ( " password " ) > - 1 :
writeDataToFile . writelines ( dataWritten )
else :
writeDataToFile . writelines ( items )
writeDataToFile . close ( )
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Authentication for Postfix and Dovecot set. " )
2017-10-24 19:16:36 +05:00
except OSError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_email_Passwords] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_email_Passwords] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
def setup_postfix_davecot_config ( self ) :
try :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Configuring postfix and dovecot... " )
2017-10-24 19:16:36 +05:00
os . chdir ( self . cwd )
mysql_virtual_domains = " /etc/postfix/mysql-virtual_domains.cf "
mysql_virtual_forwardings = " /etc/postfix/mysql-virtual_forwardings.cf "
mysql_virtual_mailboxes = " /etc/postfix/mysql-virtual_mailboxes.cf "
mysql_virtual_email2email = " /etc/postfix/mysql-virtual_email2email.cf "
main = " /etc/postfix/main.cf "
master = " /etc/postfix/master.cf "
davecot = " /etc/dovecot/dovecot.conf "
davecotmysql = " /etc/dovecot/dovecot-sql.conf.ext "
if os . path . exists ( mysql_virtual_domains ) :
os . remove ( mysql_virtual_domains )
if os . path . exists ( mysql_virtual_forwardings ) :
os . remove ( mysql_virtual_forwardings )
if os . path . exists ( mysql_virtual_mailboxes ) :
os . remove ( mysql_virtual_mailboxes )
if os . path . exists ( mysql_virtual_email2email ) :
os . remove ( mysql_virtual_email2email )
if os . path . exists ( main ) :
os . remove ( main )
if os . path . exists ( master ) :
os . remove ( master )
if os . path . exists ( davecot ) :
os . remove ( davecot )
if os . path . exists ( davecotmysql ) :
os . remove ( davecotmysql )
###############Getting SSL
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
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 /etc/postfix/key.pem -out /etc/postfix/cert.pem '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to generate SSL for Postfix, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to generate SSL for Postfix, you will not be able to send emails and rest should work fine!! [setup_postfix_davecot_config] " )
return
else :
logging . InstallLog . writeToFile ( " SSL for Postfix generated! " )
preFlightsChecks . stdOut ( " SSL for Postfix generated! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-11-02 02:09:47 +05:00
2018-02-04 21:15:30 +05:00
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 /etc/dovecot/key.pem -out /etc/dovecot/cert.pem '
2017-11-02 02:09:47 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-11-02 02:09:47 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-11-02 02:09:47 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to generate ssl for Dovecot, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to generate SSL for Dovecot, you will not be able to send emails and rest should work fine! [setup_postfix_davecot_config] " )
return
else :
logging . InstallLog . writeToFile ( " SSL generated for Dovecot! " )
preFlightsChecks . stdOut ( " SSL generated for Dovecot! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
########### Copy config files
2017-10-24 19:16:36 +05:00
shutil . copy ( " email-configs/mysql-virtual_domains.cf " , " /etc/postfix/mysql-virtual_domains.cf " )
shutil . copy ( " email-configs/mysql-virtual_forwardings.cf " , " /etc/postfix/mysql-virtual_forwardings.cf " )
shutil . copy ( " email-configs/mysql-virtual_mailboxes.cf " , " /etc/postfix/mysql-virtual_mailboxes.cf " )
shutil . copy ( " email-configs/mysql-virtual_email2email.cf " , " /etc/postfix/mysql-virtual_email2email.cf " )
shutil . copy ( " email-configs/main.cf " , main )
shutil . copy ( " email-configs/master.cf " , master )
shutil . copy ( " email-configs/dovecot.conf " , davecot )
shutil . copy ( " email-configs/dovecot-sql.conf.ext " , davecotmysql )
######################################## Permissions
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= /etc/postfix/mysql-virtual_domains.cf '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for mysql-virtual_domains.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable change permissions for mysql-virtual_domains.cf. [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for mysql-virtual_domains.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for mysql-virtual_domains.cf! " )
break
2017-10-24 19:16:36 +05:00
##
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
command = ' chmod o= /etc/postfix/mysql-virtual_forwardings.cf '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for mysql-virtual_forwardings.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for mysql-virtual_forwardings.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for mysql-virtual_forwardings.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for mysql-virtual_forwardings.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= /etc/postfix/mysql-virtual_mailboxes.cf '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for mysql-virtual_mailboxes.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for mysql-virtual_mailboxes.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for mysql-virtual_mailboxes.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for mysql-virtual_mailboxes.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= /etc/postfix/mysql-virtual_email2email.cf '
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for mysql-virtual_email2email.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for mysql-virtual_email2email.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for mysql-virtual_email2email.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for mysql-virtual_email2email.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= ' + main
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for /etc/postfix/main.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /etc/postfix/main.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for /etc/postfix/main.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for /etc/postfix/main.cf! " )
break
2017-10-24 19:16:36 +05:00
##
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= ' + master
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for /etc/postfix/master.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /etc/postfix/master.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for /etc/postfix/master.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for /etc/postfix/master.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' chgrp postfix /etc/postfix/mysql-virtual_domains.cf '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for mysql-virtual_domains.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for mysql-virtual_domains.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for mysql-virtual_domains.cf! " )
preFlightsChecks . stdOut ( " Group changed for mysql-virtual_domains.cf! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' chgrp postfix /etc/postfix/mysql-virtual_forwardings.cf '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for mysql-virtual_forwardings.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for mysql-virtual_forwardings.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for mysql-virtual_forwardings.cf! " )
preFlightsChecks . stdOut ( " Group changed for mysql-virtual_forwardings.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' chgrp postfix /etc/postfix/mysql-virtual_mailboxes.cf '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for mysql-virtual_mailboxes.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for mysql-virtual_mailboxes.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for mysql-virtual_mailboxes.cf! " )
preFlightsChecks . stdOut ( " Group changed for mysql-virtual_mailboxes.cf! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chgrp postfix /etc/postfix/mysql-virtual_email2email.cf '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for mysql-virtual_email2email.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for mysql-virtual_email2email.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for mysql-virtual_email2email.cf! " )
preFlightsChecks . stdOut ( " Group changed for mysql-virtual_email2email.cf! " )
break
2017-10-24 19:16:36 +05:00
##
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
command = ' chgrp postfix ' + main
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for /etc/postfix/main.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for /etc/postfix/main.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for /etc/postfix/main.cf! " )
preFlightsChecks . stdOut ( " Group changed for /etc/postfix/main.cf! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chgrp postfix ' + master
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for /etc/postfix/master.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for /etc/postfix/master.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for /etc/postfix/master.cf! " )
preFlightsChecks . stdOut ( " Group changed for /etc/postfix/master.cf! " )
break
2017-10-24 19:16:36 +05:00
######################################## users and groups
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' groupadd -g 5000 vmail '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to add system group vmail, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to add system group vmail! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " System group vmail created successfully! " )
preFlightsChecks . stdOut ( " System group vmail created successfully! " )
break
##
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' useradd -g vmail -u 5000 vmail -d /home/vmail -m '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to add system user vmail, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to add system user vmail! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " System user vmail created successfully! " )
preFlightsChecks . stdOut ( " System user vmail created successfully! " )
break
2017-10-24 19:16:36 +05:00
######################################## Further configurations
2018-02-04 21:15:30 +05:00
#hostname = socket.gethostname()
2017-10-24 19:16:36 +05:00
################################### Restart postix
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl enable postfix.service '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to add Postfix to system startup, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to enable Postfix to run at system restart you can manually do this using systemctl enable postfix.service! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " postfix.service successfully enabled! " )
preFlightsChecks . stdOut ( " postfix.service successfully enabled! " )
break
##
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl start postfix.service '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to start Postfix, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to start Postfix, you can not send email until you manually start Postfix using systemctl start postfix.service! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " postfix.service started successfully! " )
preFlightsChecks . stdOut ( " postfix.service started successfully! " )
break
2017-10-24 19:16:36 +05:00
######################################## Permissions
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change group for /etc/dovecot/dovecot-sql.conf.ext, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change group for /etc/dovecot/dovecot-sql.conf.ext! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Group changed for /etc/dovecot/dovecot-sql.conf.ext! " )
preFlightsChecks . stdOut ( " Group changed for /etc/dovecot/dovecot-sql.conf.ext! " )
break
##
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod o= /etc/dovecot/dovecot-sql.conf.ext '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for /etc/dovecot/dovecot-sql.conf.ext, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /etc/dovecot/dovecot-sql.conf.ext! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for /etc/dovecot/dovecot-sql.conf.ext! " )
preFlightsChecks . stdOut ( " Permissions changed for /etc/dovecot/dovecot-sql.conf.ext! " )
break
2017-10-24 19:16:36 +05:00
################################### Restart davecot
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl enable dovecot.service '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to enable dovecot.service, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to enable dovecot.service! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " dovecot.service successfully enabled! " )
preFlightsChecks . stdOut ( " dovecot.service successfully enabled! " )
break
##
count = 0
while ( 1 ) :
command = ' systemctl start dovecot.service '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to start dovecot.service, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to start dovecot.service! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " dovecot.service successfully started! " )
preFlightsChecks . stdOut ( " dovecot.service successfully started! " )
break
##
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl restart postfix.service '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to restart postfix.service, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to restart postfix.service! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " dovecot.service successfully restarted! " )
preFlightsChecks . stdOut ( " postfix.service successfully restarted! " )
break
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
## chaging permissions for main.cf
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
command = " chmod 755 " + main
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for /etc/postfix/main.cf, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /etc/postfix/main.cf! [setup_postfix_davecot_config] " )
break
else :
logging . InstallLog . writeToFile ( " Permissions changed for /etc/postfix/main.cf! " )
preFlightsChecks . stdOut ( " Permissions changed for /etc/postfix/main.cf! " )
break
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Postfix and Dovecot configured " )
2017-12-09 22:30:10 +05:00
2017-10-24 19:16:36 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_postfix_davecot_config] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_postfix_davecot_config] " )
return 0
return 1
def downoad_and_install_raindloop ( self ) :
try :
2018-02-04 21:15:30 +05:00
###########
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' chown -R nobody:nobody /usr/local/lscp/cyberpanel/ '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to change owner for /usr/local/lscp/cyberpanel/, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to change owner for /usr/local/lscp/cyberpanel/, but installer can continue! [downoad_and_install_raindloop] " )
break
else :
logging . InstallLog . writeToFile ( " Owner changed for /usr/local/lscp/cyberpanel/! " )
preFlightsChecks . stdOut ( " Owner changed for /usr/local/lscp/cyberpanel/! " )
break
#######
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
os . chdir ( " /usr/local/lscp/cyberpanel " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 1
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to download Rainloop, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to download Rainloop, installation can continue but you will not be able to send emails! [downoad_and_install_raindloop] " )
return
else :
logging . InstallLog . writeToFile ( " Rainloop Downloaded! " )
preFlightsChecks . stdOut ( " Rainloop Downloaded! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' unzip rainloop-community-latest.zip -d /usr/local/lscp/cyberpanel/rainloop '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to unzip rainloop, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " We could not unzip Rainloop, so you will not be able to send emails! [downoad_and_install_raindloop] " )
return
else :
logging . InstallLog . writeToFile ( " Rainloop successfully unzipped! " )
preFlightsChecks . stdOut ( " Rainloop successfully unzipped! " )
break
2017-10-24 19:16:36 +05:00
os . remove ( " rainloop-community-latest.zip " )
2018-02-04 21:15:30 +05:00
#######
2017-10-24 19:16:36 +05:00
os . chdir ( " /usr/local/lscp/cyberpanel/rainloop " )
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' find . -type d -exec chmod 755 {} \ ; '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to change permissions for Rainloop, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to change permissions for Rainloop, so you will not be able to send emails!! [downoad_and_install_raindloop] " )
break
else :
logging . InstallLog . writeToFile ( " Rainloop permissions changed! " )
print (
" [ " + time . strftime ( " % I- % M- % S- %a - % b- % Y " ) + " ] " + " Rainloop permissions changed! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' find . -type f -exec chmod 644 {} \ ; '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to change permissions for Rainloop, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to change permissions for Rainloop, so you will not be able to send emails!! [downoad_and_install_raindloop] " )
break
else :
logging . InstallLog . writeToFile ( " Rainloop permissions changed! " )
preFlightsChecks . stdOut ( " Rainloop permissions changed! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chown -R nobody:nobody . '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to change owner for Rainloop, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Failed to change owner for Rainloop, so you will not be able to send emails!! [downoad_and_install_raindloop] " )
break
else :
logging . InstallLog . writeToFile ( " Rainloop owner changed! " )
preFlightsChecks . stdOut ( " Rainloop owner changed! " )
break
2017-10-24 19:16:36 +05:00
except OSError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [downoad_and_install_rainloop] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [downoad_and_install_rainloop] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
2018-02-04 21:15:30 +05:00
###################################################### Email setup ends!
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
def reStartLiteSpeed ( self ) :
2017-10-24 19:16:36 +05:00
try :
2018-02-04 21:15:30 +05:00
count = 0
while ( 1 ) :
cmd = [ ]
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd . append ( self . server_root_path + " bin/lswsctrl " )
cmd . append ( " restart " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to restart OpenLiteSpeed, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to restart OpenLiteSpeed! [reStartLiteSpeed] " )
break
else :
logging . InstallLog . writeToFile ( " OpenLiteSpeed restarted Successfully! " )
preFlightsChecks . stdOut ( " OpenLiteSpeed restarted Successfully! " )
break
2017-10-24 19:16:36 +05:00
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 installFirewalld ( self ) :
try :
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Enabling Firewall! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' yum -y install firewalld '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to install FirewallD, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install FirewallD, funtions related to Firewall will not work! [installFirewalld] " )
break
else :
logging . InstallLog . writeToFile ( " FirewallD successfully installed! " )
preFlightsChecks . stdOut ( " FirewallD successfully installed! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' systemctl start firewalld '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to start FirewallD, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to start FirewallD, you can manually start it later using systemctl start firewalld! [installFirewalld] " )
break
else :
logging . InstallLog . writeToFile ( " FirewallD successfully started! " )
preFlightsChecks . stdOut ( " FirewallD successfully started! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl enable firewalld '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to enable FirewallD at system startup, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " FirewallD may not start after restart, you need to manually run systemctl enable firewalld ! [installFirewalld] " )
break
else :
logging . InstallLog . writeToFile ( " FirewallD successfully enabled on system startup! " )
preFlightsChecks . stdOut ( " FirewallD successfully enabled on system startup! " )
break
2017-10-24 19:16:36 +05:00
FirewallUtilities . addRule ( " tcp " , " 8090 " )
FirewallUtilities . addRule ( " tcp " , " 80 " )
FirewallUtilities . addRule ( " tcp " , " 443 " )
FirewallUtilities . addRule ( " tcp " , " 21 " )
FirewallUtilities . addRule ( " tcp " , " 25 " )
FirewallUtilities . addRule ( " tcp " , " 587 " )
FirewallUtilities . addRule ( " tcp " , " 465 " )
FirewallUtilities . addRule ( " tcp " , " 110 " )
FirewallUtilities . addRule ( " tcp " , " 143 " )
FirewallUtilities . addRule ( " tcp " , " 993 " )
FirewallUtilities . addRule ( " udp " , " 53 " )
FirewallUtilities . addRule ( " tcp " , " 53 " )
2017-12-09 22:30:10 +05:00
FirewallUtilities . addRule ( " tcp " , " 40110-40210 " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " FirewallD installed and configured! " )
preFlightsChecks . stdOut ( " FirewallD installed and configured! " )
2017-10-24 19:16:36 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installFirewalld] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installFirewalld] " )
return 0
return 1
2018-02-04 21:15:30 +05:00
## from here
2017-10-24 19:16:36 +05:00
def setupLSCPDDaemon ( self ) :
try :
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Trying to setup LSCPD Daemon! " )
logging . InstallLog . writeToFile ( " Trying to setup LSCPD Daemon! " )
2017-10-24 19:16:36 +05:00
os . chdir ( self . cwd )
shutil . copy ( " lscpd/lscpd.service " , " /etc/systemd/system/lscpd.service " )
shutil . copy ( " lscpd/lscpdctrl " , " /usr/local/lscp/bin/lscpdctrl " )
2018-02-04 21:15:30 +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-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' chmod +x /usr/local/lscp/bin/lscpdctrl '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to change permissions for /usr/local/lscp/bin/lscpdctrl, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /usr/local/lscp/bin/lscpdctrl [setupLSCPDDaemon] " )
break
else :
logging . InstallLog . writeToFile ( " Successfully changed permissions for /usr/local/lscp/bin/lscpdctrl! " )
preFlightsChecks . stdOut ( " Successfully changed permissions for /usr/local/lscp/bin/lscpdctrl! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
##
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
count = 1
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl enable lscpd.service '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to enable LSCPD on system startup, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to change permissions for /usr/local/lscp/bin/lscpdctrl, you can do it manually using systemctl enable lscpd.service [setupLSCPDDaemon] " )
break
else :
logging . InstallLog . writeToFile ( " LSCPD Successfully enabled at system startup! " )
preFlightsChecks . stdOut ( " LSCPD Successfully enabled at system startup! " )
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-02-04 21:15:30 +05:00
while ( 1 ) :
command = ' systemctl start lscpd '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Unable to start LSCPD, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to start LSCPD! [setupLSCPDDaemon] " )
break
else :
logging . InstallLog . writeToFile ( " LSCPD successfully started! " )
preFlightsChecks . stdOut ( " LSCPD successfully started! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " LSCPD Daemon Set! " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " LSCPD Daemon Set! " )
2017-10-24 19:16:36 +05:00
except OSError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setupLSCPDDaemon] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [setupLSCPDDaemon] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
def setup_cron ( self ) :
try :
2017-11-05 21:07:12 +05:00
## first install crontab
file = open ( " installLogs.txt " , ' a ' )
2018-02-04 21:15:30 +05:00
count = 0
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
command = ' yum install cronie -y '
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd , stdout = file )
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to install cronie, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install cronie, cron jobs will not work. [setup_cron] " )
break
else :
logging . InstallLog . writeToFile ( " Cronie successfully installed! " )
preFlightsChecks . stdOut ( " Cronie successfully installed! " )
break
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl enable crond '
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-11-05 21:07:12 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd , stdout = file )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to enable cronie on system startup, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " We are not able to enable cron jobs at system startup, you can manually run systemctl enable crond. [setup_cron] " )
break
else :
logging . InstallLog . writeToFile ( " Cronie successfully enabled at system startup! " )
preFlightsChecks . stdOut ( " Cronie successfully enabled at system startup! " )
break
count = 0
while ( 1 ) :
command = ' systemctl start crond '
cmd = shlex . split ( command )
res = subprocess . call ( cmd , stdout = file )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to start crond, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " We are not able to start crond, you can manually run systemctl start crond. [setup_cron] " )
break
else :
logging . InstallLog . writeToFile ( " Crond successfully started! " )
preFlightsChecks . stdOut ( " Crond successfully started! " )
break
2017-11-05 21:07:12 +05:00
##
2017-12-09 22:30:10 +05:00
cronFile = open ( " /etc/crontab " , " a " )
cronFile . writelines ( " 0 * * * * root python /usr/local/CyberCP/plogical/findBWUsage.py " + " \n " )
2017-10-24 19:16:36 +05:00
cronFile . close ( )
command = ' chmod +x /usr/local/CyberCP/plogical/findBWUsage.py '
cmd = shlex . split ( command )
2017-12-09 22:30:10 +05:00
res = subprocess . call ( cmd , stdout = file )
2017-10-24 19:16:36 +05:00
if res == 1 :
logging . InstallLog . writeToFile ( " 1428 [setup_cron] " )
else :
pass
2018-02-04 21:15:30 +05:00
count = 0
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
command = ' systemctl restart crond.service '
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
res = subprocess . call ( cmd , stdout = file )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to restart crond, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " We are not able to restart crond, you can manually run systemctl restart crond. [setup_cron] " )
break
else :
logging . InstallLog . writeToFile ( " Crond successfully restarted! " )
preFlightsChecks . stdOut ( " Crond successfully restarted! " )
break
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
file . close ( )
2017-10-24 19:16:36 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_cron] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setup_cron] " )
return 0
return 1
def install_default_keys ( self ) :
try :
count = 0
path = " /root/.ssh "
if not os . path . exists ( path ) :
os . mkdir ( path )
while ( 1 ) :
command = " ssh-keygen -f /root/.ssh/cyberpanel -t rsa -N ' ' "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Trying to setup default SSH keys, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to setup default SSH keys. [install_default_keys] " )
2017-10-24 19:16:36 +05:00
break
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Succcessfully created default SSH keys! " )
preFlightsChecks . stdOut ( " Succcessfully created default SSH keys! " )
2017-10-24 19:16:36 +05:00
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [install_default_keys] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [install_default_keys] " )
return 0
return 1
def install_rsync ( self ) :
try :
count = 0
while ( 1 ) :
command = ' yum -y install rsync '
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
2018-02-04 21:15:30 +05:00
preFlightsChecks . stdOut ( " Trying to install rsync, trying again, try number: " + str ( count ) )
2017-10-24 19:16:36 +05:00
if count == 3 :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Unable to install rsync, some of backup functions will not work. [install_rsync] " )
2017-10-24 19:16:36 +05:00
break
else :
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Succcessfully installed rsync! " )
preFlightsChecks . stdOut ( " Succcessfully installed rsync! " )
2017-10-24 19:16:36 +05:00
break
except OSError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_rsync] " )
2017-10-24 19:16:36 +05:00
return 0
except ValueError , msg :
2017-11-02 02:09:47 +05:00
logging . InstallLog . writeToFile ( str ( msg ) + " [install_rsync] " )
2017-10-24 19:16:36 +05:00
return 0
return 1
2017-12-16 11:59:47 +05:00
def test_Requests ( self ) :
try :
import requests
getVersion = requests . get ( ' https://cyberpanel.net/version.txt ' )
latest = getVersion . json ( )
except BaseException , msg :
2018-03-08 22:19:23 +05:00
command = " pip uninstall --yes urllib3 "
subprocess . call ( shlex . split ( command ) )
2017-12-16 11:59:47 +05:00
command = " pip uninstall --yes requests "
subprocess . call ( shlex . split ( command ) )
2018-03-08 22:19:23 +05:00
count = 0
while ( 1 ) :
2017-12-16 11:59:47 +05:00
2018-03-08 22:19:23 +05:00
command = " pip install http://mirror.cyberpanel.net/urllib3-1.22.tar.gz "
2017-12-16 11:59:47 +05:00
2018-03-08 22:19:23 +05:00
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Unable to install urllib3 module, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install urllib3 module, exiting installer! [install_python_requests] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " urllib3 module Successfully installed! " )
preFlightsChecks . stdOut ( " urllib3 module Successfully installed! " )
break
count = 0
while ( 1 ) :
command = " pip install http://mirror.cyberpanel.net/requests-2.18.4.tar.gz "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Unable to install requests module, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Unable to install requests module, exiting installer! [install_python_requests] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " Requests module Successfully installed! " )
preFlightsChecks . stdOut ( " Requests module Successfully installed! " )
break
2017-12-16 11:59:47 +05:00
2018-02-04 21:15:30 +05:00
def installation_successfull ( self ) :
print ( " ################################################################### " )
print ( " CyberPanel Successfully Installed " )
print ( " " )
print ( " " )
print ( " " )
print ( " Visit: https:// " + self . ipAddr + " :8090 " )
print ( " Username: admin " )
print ( " Password: 1234567 " )
print ( " ################################################################### " )
def installCertBot ( self ) :
try :
2018-03-08 22:19:23 +05:00
command = " pip uninstall --yes pyOpenSSL "
res = subprocess . call ( shlex . split ( command ) )
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
command = " pip uninstall --yes certbot "
res = subprocess . call ( shlex . split ( command ) )
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /pyOpenSSL-17.5.0.tar.gz "
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
res = subprocess . call ( shlex . split ( command ) )
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install pyOpenSSL, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install pyOpenSSL, exiting installer! [installCertBot] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " pyOpenSSL successfully installed! [pip] " )
preFlightsChecks . stdOut ( " pyOpenSSL successfully installed! [pip] " )
break
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
count = 0
while ( 1 ) :
command = " pip install http:// " + preFlightsChecks . cyberPanelMirror + " /certbot-0.21.1.tar.gz "
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
res = subprocess . call ( shlex . split ( command ) )
2018-02-04 21:15:30 +05:00
2018-03-08 22:19:23 +05:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install CertBot, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install CertBot, exiting installer! [installCertBot] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
sys . exit ( )
else :
logging . InstallLog . writeToFile ( " CertBot successfully installed! [pip] " )
preFlightsChecks . stdOut ( " CertBot successfully installed! [pip] " )
break
2017-12-16 11:59:47 +05:00
2018-02-04 21:15:30 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installCertBot] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installCertBot] " )
return 0
return 1
2017-10-24 19:16:36 +05:00
2018-03-26 20:39:56 +05:00
def modSecPreReqs ( self ) :
try :
pathToRemoveGarbageFile = os . path . join ( self . server_root_path , " modules/mod_security.so " )
os . remove ( pathToRemoveGarbageFile )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [modSecPreReqs] " )
return 0
2018-04-20 23:49:49 +05:00
def installTLDExtract ( self ) :
try :
count = 0
while ( 1 ) :
command = " pip install tldextract "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install tldextract, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install tldextract! [installTLDExtract] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
else :
logging . InstallLog . writeToFile ( " tldextract successfully installed! [pip] " )
preFlightsChecks . stdOut ( " tldextract successfully installed! [pip] " )
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installTLDExtract] " )
return 0
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
def main ( ) :
2017-10-24 19:16:36 +05:00
parser = argparse . ArgumentParser ( description = ' CyberPanel Installer ' )
parser . add_argument ( ' publicip ' , help = ' Please enter public IP for your VPS or dedicated server. ' )
args = parser . parse_args ( )
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " Starting CyberPanel installation.. " )
preFlightsChecks . stdOut ( " Starting CyberPanel installation.. " )
2018-02-13 11:45:44 +05:00
## Writing public IP
os . mkdir ( " /etc/cyberpanel " )
machineIP = open ( " /etc/cyberpanel/machineIP " , " w " )
machineIP . writelines ( args . publicip )
machineIP . close ( )
2017-10-24 19:16:36 +05:00
cwd = os . getcwd ( )
2017-12-09 22:30:10 +05:00
checks = preFlightsChecks ( " /usr/local/lsws/ " , args . publicip , " /usr/local " , cwd , " /usr/local/CyberCP " )
2017-10-24 19:16:36 +05:00
2018-02-04 21:15:30 +05:00
if checks . checkIfSeLinuxDisabled ( ) == 1 :
pass
else :
return
2017-10-24 19:16:36 +05:00
checks . checkPythonVersion ( )
2017-12-09 22:30:10 +05:00
checks . setup_account_cyberpanel ( )
2017-10-24 19:16:36 +05:00
checks . yum_update ( )
checks . installCyberPanelRepo ( )
checks . enableEPELRepo ( )
checks . install_pip ( )
checks . install_python_dev ( )
checks . install_gcc ( )
checks . install_python_setup_tools ( )
checks . install_django ( )
checks . install_pexpect ( )
checks . install_python_mysql_library ( )
checks . install_gunicorn ( )
checks . install_psutil ( )
checks . setup_gunicorn ( )
import installCyberPanel
installCyberPanel . Main ( cwd )
checks . fix_selinux_issue ( )
checks . install_psmisc ( )
checks . install_postfix_davecot ( )
checks . setup_email_Passwords ( installCyberPanel . InstallCyberPanel . mysqlPassword )
checks . setup_postfix_davecot_config ( )
checks . install_unzip ( )
2017-12-09 22:30:10 +05:00
checks . install_zip ( )
2017-10-24 19:16:36 +05:00
checks . install_rsync ( )
checks . downoad_and_install_raindloop ( )
checks . download_install_phpmyadmin ( )
checks . installFirewalld ( )
checks . setupLSCPDDaemon ( )
checks . install_python_requests ( )
checks . install_default_keys ( )
2018-02-04 21:15:30 +05:00
checks . installCertBot ( )
2017-12-16 11:59:47 +05:00
checks . test_Requests ( )
2017-11-02 02:09:47 +05:00
checks . download_install_CyberPanel ( installCyberPanel . InstallCyberPanel . mysqlPassword )
checks . setup_cron ( )
2018-04-20 23:49:49 +05:00
checks . installTLDExtract ( )
2018-03-26 20:39:56 +05:00
checks . modSecPreReqs ( )
2018-02-04 21:15:30 +05:00
checks . installation_successfull ( )
logging . InstallLog . writeToFile ( " CyberPanel installation successfully completed! " )
2017-11-02 02:09:47 +05:00
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
if __name__ == " __main__ " :
main ( )