2018-10-25 16:18:47 -04:00
import sys
2017-10-24 19:16:36 +05:00
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
2018-06-11 21:04:55 +05:00
import string
import random
2018-10-25 16:47:26 -04:00
from os . path import *
from stat import *
2017-10-24 19:16:36 +05:00
2018-05-29 20:20:05 +05:00
# There can not be peace without first a great suffering.
2017-10-24 19:16:36 +05:00
2018-10-25 16:10:01 -04:00
#distros
centos = 0
ubuntu = 1
2018-10-25 16:47:26 -04:00
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
2018-10-25 16:10:01 -04:00
def __init__ ( self , rootPath , ip , path , cwd , cyberPanelPath , distro ) :
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
2018-10-25 16:10:01 -04:00
self . distro = distro
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2017-12-09 22:30:10 +05:00
2018-02-04 21:15:30 +05:00
def setup_account_cyberpanel ( self ) :
2018-10-26 09:52:07 -04:00
self . stdOut ( " Setup Cyberpanel account, distro: " + str ( self . distro ) )
2018-02-04 21:15:30 +05:00
try :
count = 0
2017-12-09 22:30:10 +05:00
2018-10-25 16:10:01 -04:00
if distro == centos :
while ( 1 ) :
command = " yum install sudo -y "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-12-09 22:30:10 +05:00
2018-10-25 16:10:01 -04:00
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " SUDO install failed, trying again, try number: " + str ( count ) )
if count == 3 :
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 " )
os . _exit ( 0 )
else :
logging . InstallLog . writeToFile ( " SUDO successfully installed! " )
preFlightsChecks . stdOut ( " SUDO successfully installed! " )
break
2017-12-09 22:30:10 +05:00
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-10-25 16:10:01 -04:00
if distro == ubuntu :
2018-10-26 09:52:07 -04:00
self . stdOut ( " Add Cyberpanel user " )
2018-10-25 16:10:01 -04:00
command = " useradd cyberpanel -g sudo "
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2018-10-25 16:10:01 -04:00
if res != 0 and res != 9 :
logging . InstallLog . writeToFile ( " Can not create cyberpanel user, error # " + str ( res ) )
preFlightsChecks . stdOut ( " Can not create cyberpanel user, error # " + str ( res ) )
os . _exit ( 0 )
if res == 0 :
logging . InstallLog . writeToFile ( " CyberPanel user added " )
preFlightsChecks . stdOut ( " CyberPanel user added " )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
else :
while ( 1 ) :
command = " adduser cyberpanel "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04: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 " )
os . _exit ( 0 )
else :
logging . InstallLog . writeToFile ( " CyberPanel user added! " )
preFlightsChecks . stdOut ( " CyberPanel user added! " )
break
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
##
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
count = 0
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
while ( 1 ) :
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
command = " usermod -aG wheel cyberpanel "
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
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 " )
os . _exit ( 0 )
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
2018-10-25 16:10:01 -04:00
###############################
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
path = " /etc/sudoers "
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
data = open ( path , ' r ' ) . readlines ( )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
writeToFile = open ( path , ' w ' )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
for items in data :
if items . find ( " wheel ALL=(ALL) NOPASSWD: ALL " ) > - 1 :
writeToFile . writelines ( " % wheel ALL=(ALL) NOPASSWD: ALL " )
else :
writeToFile . writelines ( items )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
writeToFile . close ( )
2017-11-05 03:02:51 +05:00
2018-10-25 16:10:01 -04:00
###############################
2017-11-05 03:02:51 +05:00
2018-02-04 21:15:30 +05:00
count = 0
2018-10-26 09:52:07 -04:00
self . stdOut ( " Create /etc/letsencrypt directory " )
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-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2017-11-05 03:02:51 +05:00
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install Cyberpanel repo " )
2017-10-24 19:16:36 +05:00
cmd = [ ]
count = 0
2018-10-25 16:47:26 -04:00
if distro == ubuntu :
2018-10-25 16:10:01 -04:00
try :
filename = " enable_lst_debain_repo.sh "
command = " wget http://rpms.litespeedtech.com/debian/ " + filename
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res != 0 :
2018-10-25 16:18:47 -04:00
logging . InstallLog . writeToFile ( " Unable to download Ubuntu CyberPanel installer! [installCyberPanelRepo]: "
2018-10-25 16:10:01 -04:00
" Error # " + str ( res ) )
2018-10-25 16:18:47 -04:00
preFlightsChecks . stdOut ( " Unable to download Ubuntu CyberPanel installer! [installCyberPanelRepo]: "
" Error # " + str ( res ) )
2018-10-25 16:47:26 -04:00
os . _exit ( os . EX_NOINPUT )
2018-10-25 16:10:01 -04:00
2018-10-25 16:47:26 -04:00
os . chmod ( filename , S_IRWXU | S_IRWXG )
2018-10-25 16:10:01 -04:00
command = " ./ " + filename
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res != 0 :
2018-10-25 16:18:47 -04:00
logging . InstallLog . writeToFile ( " Unable to install Ubuntu CyberPanel! [installCyberPanelRepo]: "
2018-10-25 16:10:01 -04:00
" Error # " + str ( res ) )
2018-10-25 16:18:47 -04:00
preFlightsChecks . stdOut ( " Unable to install Ubuntu CyberPanel! [installCyberPanelRepo]: "
2018-10-25 16:10:01 -04:00
" Error # " + str ( res ) )
2018-10-25 16:47:26 -04:00
os . _exit ( os . EX_NOINPUT )
2018-10-25 16:10:01 -04:00
except OSError as err :
2018-10-25 16:47:26 -04:00
logging . InstallLog . writeToFile ( " Exception during CyberPanel install: " + str ( err ) )
preFlightsChecks . stdOut ( " Exception during CyberPanel install: " + str ( err ) )
2018-10-25 16:10:01 -04:00
os . _exit ( os . EX_OSERR )
except :
logging . InstallLog . writeToFile ( " Exception during CyberPanel install " )
preFlightsChecks . stdOut ( " Exception during CyberPanel install " )
os . _exit ( os . EX_SOFTWARE )
else :
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
preFlightsChecks . stdOut ( " Unable to add CyberPanel official repository, trying again, try number: " + str ( count ) + " \n " )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to add CyberPanel official repository, exiting installer! [installCyberPanelRepo] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
else :
logging . InstallLog . writeToFile ( " CyberPanel Repo added! " )
preFlightsChecks . stdOut ( " CyberPanel Repo added! " )
break
return 0
2017-10-24 19:16:36 +05:00
2017-12-09 22:30:10 +05:00
def enableEPELRepo ( self ) :
try :
cmd = [ ]
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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] " )
2018-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2017-12-09 22:30:10 +05:00
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableEPELRepo] " )
2018-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2017-12-09 22:30:10 +05:00
return 0
return 1
2017-10-24 19:16:36 +05:00
2018-10-25 16:10:01 -04:00
2017-10-24 19:16:36 +05:00
def install_pip ( self ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install pip " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == ubuntu :
command = " apt-get -y install python-pip "
else :
command = " yum -y install python-pip "
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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-10-25 16:10:01 -04:00
2018-02-04 21:15:30 +05:00
def install_python_dev ( self ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install python development environment " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:47:26 -04:00
if distro == centos :
2018-10-25 16:10:01 -04:00
command = " yum -y install python-devel "
else :
command = " apt-get -y install python-dev "
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 ( " 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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-10-25 16:10:01 -04:00
2018-02-04 21:15:30 +05:00
def install_gcc ( self ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install gcc " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = " yum -y install gcc "
2018-10-25 16:47:26 -04:00
else :
2018-10-25 16:10:01 -04:00
command = " apt-get -y install gcc "
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install python setup tools " ) ;
2018-02-04 21:15:30 +05:00
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] " )
2018-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install python requests " )
2017-10-24 19:16:36 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install Django " )
2017-10-24 19:16:36 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install MySQL python library " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = " yum -y install MySQL-python "
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = " apt-get -y install libmysqlclient-dev "
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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
2018-10-26 09:11:17 -04:00
if distro == ubuntu :
2018-10-25 16:10:01 -04:00
command = " pip install MySQL-python "
2018-10-25 16:47:26 -04:00
res = subprocess . call ( shlex . split ( command ) )
2018-10-25 16:10:01 -04:00
if res != 0 :
logging . InstallLog . writeToFile (
" Unable to install MySQL-python, exiting installer! [install_python_mysql_library] Error: " + str ( res ) )
preFlightsChecks . stdOut (
" Unable to install MySQL-python, exiting installer! [install_python_mysql_library] Error: " + str ( res ) )
os . _exit ( os . EX_OSERR )
2018-10-26 09:11:17 -04:00
2017-10-24 19:16:36 +05:00
def install_gunicorn ( self ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install GUnicorn " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == ubuntu :
command = " pip install gunicorn "
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = " easy_install gunicorn "
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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
2018-10-26 09:11:17 -04:00
2017-10-24 19:16:36 +05:00
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
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install psutil " )
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install psmisc " )
2017-10-24 19:16:36 +05:00
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = " yum -y install psmisc "
else :
command = " apt-get -y install psmisc "
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 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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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
2018-05-29 20:20:05 +05:00
def download_install_CyberPanel ( self , mysqlPassword , mysql ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Download and install Cyberpanel " )
2017-10-24 19:16:36 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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-10-19 22:47:15 +05:00
command = " wget http://cyberpanel.net/CyberPanel.1.7.2.tar.gz "
#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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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-10-19 22:47:15 +05:00
command = " tar zxf CyberPanel.1.7.2.tar.gz "
#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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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 :
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
if items . find ( " ' PASSWORD ' : " ) > - 1 :
if counter == 0 :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + mysqlPassword + " ' , " + " \n " )
counter = counter + 1
else :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + password + " ' , " + " \n " )
2017-10-24 19:16:36 +05:00
2018-05-29 20:20:05 +05:00
else :
writeDataToFile . writelines ( items )
2017-10-24 19:16:36 +05:00
else :
2018-05-29 20:20:05 +05:00
if items . find ( " ' PASSWORD ' : " ) > - 1 :
if counter == 0 :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + mysqlPassword + " ' , " + " \n " )
counter = counter + 1
else :
writeDataToFile . writelines ( " ' PASSWORD ' : ' " + password + " ' , " + " \n " )
elif items . find ( ' 127.0.0.1 ' ) > - 1 :
writeDataToFile . writelines ( " ' HOST ' : ' localhost ' , \n " )
elif items . find ( " ' PORT ' : ' 3307 ' " ) > - 1 :
writeDataToFile . writelines ( " ' PORT ' : ' ' , \n " )
else :
writeDataToFile . writelines ( items )
2017-10-24 19:16:36 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install unzip " )
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 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum -y install unzip '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install unzip '
2017-12-09 22:30:10 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install zip " )
2017-10-24 19:16:36 +05:00
try :
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum -y install zip '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install PHP MyAdmin " )
2017-10-24 19:16:36 +05:00
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 ) :
2018-07-05 15:22:48 +05:00
command = ' wget https://files.phpmyadmin.net/phpMyAdmin/4.8.2/phpMyAdmin-4.8.2-all-languages.zip '
2018-02-04 21:15:30 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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 ) :
2018-07-05 15:22:48 +05:00
command = ' unzip phpMyAdmin-4.8.2-all-languages.zip '
2018-02-04 21:15:30 +05:00
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] " )
2018-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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-07-05 15:22:48 +05:00
os . remove ( " phpMyAdmin-4.8.2-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 ) :
2018-07-05 15:22:48 +05:00
command = ' mv phpMyAdmin-4.8.2-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] " )
2018-07-05 15:22:48 +05:00
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
os . _exit ( 0 )
2018-02-04 21:15:30 +05:00
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
2018-06-11 21:04:55 +05:00
## Write secret phrase
rString = ' ' . join ( [ random . choice ( string . ascii_letters + string . digits ) for n in xrange ( 32 ) ] )
data = open ( ' phpmyadmin/config.sample.inc.php ' , ' r ' ) . readlines ( )
writeToFile = open ( ' phpmyadmin/config.inc.php ' , ' w ' )
for items in data :
if items . find ( ' blowfish_secret ' ) > - 1 :
writeToFile . writelines ( " $cfg[ ' blowfish_secret ' ] = ' " + rString + " ' ; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ \n " )
else :
writeToFile . writelines ( items )
writeToFile . writelines ( " $cfg[ ' TempDir ' ] = ' /usr/local/lscp/cyberpanel/phpmyadmin/tmp ' ; \n " )
writeToFile . close ( )
os . mkdir ( ' /usr/local/lscp/cyberpanel/phpmyadmin/tmp ' )
2018-10-12 18:18:10 +05:00
command = ' chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/phpmyadmin '
2018-06-11 21:04:55 +05:00
subprocess . call ( shlex . split ( command ) )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install dovecot " )
2017-10-24 19:16:36 +05:00
try :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum remove postfix -y '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y remove postfix '
2017-10-24 19:16:36 +05:00
2018-10-13 18:31:47 +05:00
subprocess . call ( shlex . split ( command ) )
2017-10-24 19:16:36 +05:00
2018-10-13 18:31:47 +05:00
count = 0
2018-02-04 21:15:30 +05:00
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum install -y http://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64//postfix3-3.2.4-1.gf.el7.x86_64.rpm '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install dovecot-imapd dovecot-pop3d '
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
2018-10-13 18:31:47 +05:00
while ( 1 ) :
2018-10-25 16:58:15 -04:00
if distro == centos :
2018-10-25 16:10:01 -04:00
command = ' yum install -y http://mirror.ghettoforge.org/distributions/gf/el/7/plus/x86_64//postfix3-mysql-3.2.4-1.gf.el7.x86_64.rpm '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install mysql-server '
2018-10-13 18:31:47 +05:00
cmd = shlex . split ( command )
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
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-10-25 16:58:15 -04:00
if distro == centos :
2018-10-25 16:10:01 -04:00
command = ' yum -y install dovecot dovecot-mysql '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install 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
2018-05-29 20:20:05 +05:00
def setup_email_Passwords ( self , mysqlPassword , mysql ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Setup email passwords " )
2017-10-24 19:16:36 +05:00
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 )
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
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 "
else :
mysql_virtual_domains = " email-configs-one/mysql-virtual_domains.cf "
mysql_virtual_forwardings = " email-configs-one/mysql-virtual_forwardings.cf "
mysql_virtual_mailboxes = " email-configs-one/mysql-virtual_mailboxes.cf "
mysql_virtual_email2email = " email-configs-one/mysql-virtual_email2email.cf "
davecotmysql = " email-configs-one/dovecot-sql.conf.ext "
2017-10-24 19:16:36 +05:00
### update password:
data = open ( davecotmysql , " r " ) . readlines ( )
writeDataToFile = open ( davecotmysql , " w " )
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
dataWritten = " connect = host=127.0.0.1 dbname=cyberpanel user=cyberpanel password= " + mysqlPassword + " port=3307 \n "
else :
dataWritten = " connect = host=localhost dbname=cyberpanel user=cyberpanel password= " + mysqlPassword + " port=3306 \n "
2017-10-24 19:16:36 +05:00
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
2018-05-29 20:20:05 +05:00
def setup_postfix_davecot_config ( self , mysql ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Configuring postfix and dovecot " )
2017-10-24 19:16:36 +05:00
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 ) :
2018-07-19 22:38:37 +05:00
command = ' openssl req -newkey rsa:1024 -new -nodes -x509 -days 3650 -subj " /C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com " -keyout /etc/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 :
2018-07-05 15:22:48 +05:00
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] " )
2018-02-04 21:15:30 +05:00
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-07-19 22:38:37 +05:00
command = ' openssl req -newkey rsa:1024 -new -nodes -x509 -days 3650 -subj " /C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com " -keyout /etc/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
2018-05-29 20:20:05 +05:00
if mysql == ' Two ' :
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 )
else :
shutil . copy ( " email-configs-one/mysql-virtual_domains.cf " , " /etc/postfix/mysql-virtual_domains.cf " )
shutil . copy ( " email-configs-one/mysql-virtual_forwardings.cf " , " /etc/postfix/mysql-virtual_forwardings.cf " )
shutil . copy ( " email-configs-one/mysql-virtual_mailboxes.cf " , " /etc/postfix/mysql-virtual_mailboxes.cf " )
shutil . copy ( " email-configs-one/mysql-virtual_email2email.cf " , " /etc/postfix/mysql-virtual_email2email.cf " )
shutil . copy ( " email-configs-one/main.cf " , main )
shutil . copy ( " email-configs-one/master.cf " , master )
shutil . copy ( " email-configs-one/dovecot.conf " , davecot )
shutil . copy ( " email-configs-one/dovecot-sql.conf.ext " , davecotmysql )
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 = ' 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 :
2018-07-05 15:22:48 +05:00
logging . InstallLog . writeToFile ( " Unable to change permissions for mysql-virtual_domains.cf. [setup_postfix_davecot_config] " )
2018-02-04 21:15:30 +05:00
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 ) :
2018-10-12 18:18:10 +05:00
command = ' chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/ '
2018-02-04 21:15:30 +05:00
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-10-12 18:18:10 +05:00
command = ' chown -R lscpd:lscpd . '
2018-02-04 21:15:30 +05:00
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Restarting Litespeed " )
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 ) :
2018-10-25 16:58:15 -04:00
if distro == ubuntu :
2018-10-25 16:10:01 -04:00
return 0 # Uses AppArmor
2017-10-24 19:16:36 +05:00
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
######
2018-07-19 22:38:37 +05:00
command = ' systemctl restart dbus '
cmd = shlex . split ( command )
subprocess . call ( cmd )
2018-07-28 01:25:51 +05:00
command = ' systemctl restart systemd-logind '
cmd = shlex . split ( command )
subprocess . call ( cmd )
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 ) :
command = ' chmod +x /usr/local/lscp/bin/lscpdctrl '
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 /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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Install and setup cron " )
2017-10-24 19:16:36 +05:00
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
while ( 1 ) :
2017-11-05 21:07:12 +05:00
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum install cronie -y '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install cron '
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 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' systemctl enable crond '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' systemctl enable cron '
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
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 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' systemctl start crond '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' systemctl start cron '
2018-02-04 21:15:30 +05:00
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 " )
2018-06-30 15:29:56 +05:00
cronFile . writelines ( " 0 * * * * root /usr/local/CyberCP/postfixSenderPolicy/client.py hourlyCleanup " + " \n " )
cronFile . writelines ( " 0 0 1 * * root /usr/local/CyberCP/postfixSenderPolicy/client.py monthlyCleanup " + " \n " )
2017-10-24 19:16:36 +05:00
cronFile . close ( )
command = ' chmod +x /usr/local/CyberCP/plogical/findBWUsage.py '
2018-06-30 15:29:56 +05:00
cmd = shlex . split ( command )
2018-07-05 15:22:48 +05:00
res = subprocess . call ( cmd , stdout = file )
if res == 1 :
logging . InstallLog . writeToFile ( " 1427 [setup_cron] " )
else :
pass
2017-10-24 19:16:36 +05:00
2018-06-30 15:29:56 +05:00
command = ' chmod +x /usr/local/CyberCP/postfixSenderPolicy/client.py '
2017-10-24 19:16:36 +05:00
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 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' systemctl restart crond.service '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' systemctl restart cron.service '
2018-02-04 21:15:30 +05:00
cmd = shlex . split ( command )
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Installing default certificates " )
2017-10-24 19:16:36 +05:00
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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Installing rsync " )
2017-10-24 19:16:36 +05:00
try :
count = 0
while ( 1 ) :
2018-10-26 09:52:07 -04:00
if distro == centos :
2018-10-25 16:10:01 -04:00
command = ' yum -y install rsync '
2018-10-25 16:58:15 -04:00
else :
2018-10-25 16:10:01 -04:00
command = ' apt-get -y install rsync '
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 ( " 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 ) :
2018-10-26 09:11:17 -04:00
self . stdOut ( " Testing Requests... " )
2017-12-16 11:59:47 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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 " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-03-08 22:19:23 +05:00
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] " )
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
2018-10-17 23:20:02 +05:00
def installPYDNS ( self ) :
try :
count = 0
while ( 1 ) :
command = " pip install pydns "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install pydns, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install pydns! [installTLDExtract] " )
else :
logging . InstallLog . writeToFile ( " pydns successfully installed! [pip] " )
preFlightsChecks . stdOut ( " pydns successfully installed! [pip] " )
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installTLDExtract] " )
return 0
2018-05-01 00:49:47 +05:00
def installOpenDKIM ( self ) :
try :
count = 0
while ( 1 ) :
2018-10-25 16:10:01 -04:00
if distro == centos :
command = ' yum -y install opendkim '
else :
command = ' apt-get -y install opendkim '
2018-05-01 00:49:47 +05:00
cmd = shlex . split ( command )
res = subprocess . call ( cmd )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut ( " Trying to install opendkim, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile ( " Unable to install opendkim, your mail may not end up in inbox. [installOpenDKIM] " )
break
else :
logging . InstallLog . writeToFile ( " Succcessfully installed opendkim! " )
preFlightsChecks . stdOut ( " Succcessfully installed opendkim! " )
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installOpenDKIM] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installOpenDKIM] " )
return 0
return 1
def configureOpenDKIM ( self ) :
try :
## Configure OpenDKIM specific settings
openDKIMConfigurePath = " /etc/opendkim.conf "
configData = """
Mode sv
Canonicalization relaxed / simple
KeyTable refile : / etc / opendkim / KeyTable
SigningTable refile : / etc / opendkim / SigningTable
ExternalIgnoreList refile : / etc / opendkim / TrustedHosts
InternalHosts refile : / etc / opendkim / TrustedHosts
"""
writeToFile = open ( openDKIMConfigurePath , ' a ' )
writeToFile . write ( configData )
writeToFile . close ( )
## Configure postfix specific settings
postfixFilePath = " /etc/postfix/main.cf "
configData = """
smtpd_milters = inet : 127.0 .0 .1 : 8891
non_smtpd_milters = $ smtpd_milters
milter_default_action = accept
"""
writeToFile = open ( postfixFilePath , ' a ' )
writeToFile . write ( configData )
writeToFile . close ( )
#### Restarting Postfix and OpenDKIM
command = " systemctl start opendkim "
subprocess . call ( shlex . split ( command ) )
command = " systemctl enable opendkim "
subprocess . call ( shlex . split ( command ) )
##
command = " systemctl start postfix "
subprocess . call ( shlex . split ( command ) )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [configureOpenDKIM] " )
return 0
except ValueError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [configureOpenDKIM] " )
return 0
return 1
2018-05-06 14:18:41 +05:00
def installdnsPython ( self ) :
try :
count = 0
while ( 1 ) :
command = " pip install dnspython "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install dnspython, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install dnspython! [installdnsPython] " )
else :
logging . InstallLog . writeToFile ( " dnspython successfully installed! [pip] " )
preFlightsChecks . stdOut ( " dnspython successfully installed! [pip] " )
break
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [installdnsPython] " )
return 0
2018-06-05 00:53:45 +05:00
def setupCLI ( self ) :
try :
count = 0
while ( 1 ) :
command = " ln -s /usr/local/CyberCP/cli/cyberPanel.py /usr/bin/cyberpanel "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to setup CLI, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to setup CLI! [setupCLI] " )
else :
logging . InstallLog . writeToFile ( " CLI setup successfull! " )
preFlightsChecks . stdOut ( " CLI setup successfull! " )
break
command = " chmod +x /usr/local/CyberCP/cli/cyberPanel.py "
res = subprocess . call ( shlex . split ( command ) )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setupCLI] " )
return 0
2018-07-13 21:45:40 +05:00
def setupPHPAndComposer ( self ) :
try :
command = " cp /usr/local/lsws/lsphp71/bin/php /usr/bin/ "
res = subprocess . call ( shlex . split ( command ) )
os . chdir ( self . cwd )
command = " chmod +x composer.sh "
res = subprocess . call ( shlex . split ( command ) )
command = " ./composer.sh "
res = subprocess . call ( shlex . split ( command ) )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setupPHPAndComposer] " )
return 0
2018-06-27 00:16:50 +05:00
@staticmethod
def setupVirtualEnv ( ) :
try :
##
count = 0
while ( 1 ) :
command = " yum install -y libattr-devel xz-devel gpgme-devel mariadb-devel curl-devel "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install project dependant modules, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install project dependant modules! [setupVirtualEnv] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-06-27 00:16:50 +05:00
else :
logging . InstallLog . writeToFile ( " Project dependant modules installed successfully! " )
preFlightsChecks . stdOut ( " Project dependant modules installed successfully!! " )
break
##
count = 0
while ( 1 ) :
command = " pip install virtualenv "
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install virtualenv, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed install virtualenv! [setupVirtualEnv] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-06-27 00:16:50 +05:00
else :
logging . InstallLog . writeToFile ( " virtualenv installed successfully! " )
preFlightsChecks . stdOut ( " virtualenv installed successfully! " )
break
####
count = 0
while ( 1 ) :
2018-07-05 15:22:48 +05:00
command = " virtualenv --system-site-packages /usr/local/CyberCP "
2018-06-27 00:16:50 +05:00
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to setup virtualenv, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to setup virtualenv! [setupVirtualEnv] " )
preFlightsChecks . stdOut ( " Installation failed, consult: /var/log/installLogs.txt " )
2018-07-05 15:22:48 +05:00
os . _exit ( 0 )
2018-06-27 00:16:50 +05:00
else :
logging . InstallLog . writeToFile ( " virtualenv setuped successfully! " )
preFlightsChecks . stdOut ( " virtualenv setuped successfully! " )
break
##
env_path = ' /usr/local/CyberCP '
subprocess . call ( [ ' virtualenv ' , env_path ] )
activate_this = os . path . join ( env_path , ' bin ' , ' activate_this.py ' )
execfile ( activate_this , dict ( __file__ = activate_this ) )
##
count = 0
while ( 1 ) :
2018-07-05 15:22:48 +05:00
command = " pip install --ignore-installed -r /usr/local/CyberCP/requirments.txt "
2018-06-27 00:16:50 +05:00
res = subprocess . call ( shlex . split ( command ) )
if res == 1 :
count = count + 1
preFlightsChecks . stdOut (
" Trying to install project dependant modules, trying again, try number: " + str ( count ) )
if count == 3 :
logging . InstallLog . writeToFile (
" Failed to install project dependant modules! [setupVirtualEnv] " )
2018-07-05 15:22:48 +05:00
break
2018-06-27 00:16:50 +05:00
else :
logging . InstallLog . writeToFile ( " Project dependant modules installed successfully! " )
preFlightsChecks . stdOut ( " Project dependant modules installed successfully!! " )
break
command = " systemctl restart gunicorn.socket "
res = subprocess . call ( shlex . split ( command ) )
2018-07-05 15:22:48 +05:00
command = " virtualenv --system-site-packages /usr/local/CyberCP "
res = subprocess . call ( shlex . split ( command ) )
2018-06-27 00:16:50 +05:00
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [setupVirtualEnv] " )
return 0
2018-07-23 22:11:42 +05:00
@staticmethod
def enableDisableDNS ( state ) :
try :
servicePath = ' /home/cyberpanel/powerdns '
if state == ' Off ' :
command = ' sudo systemctl stop pdns '
subprocess . call ( shlex . split ( command ) )
command = ' sudo systemctl disable pdns '
subprocess . call ( shlex . split ( command ) )
try :
os . remove ( servicePath )
except :
pass
else :
writeToFile = open ( servicePath , ' w+ ' )
writeToFile . close ( )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableDisableDNS] " )
return 0
@staticmethod
def enableDisableEmail ( state ) :
try :
servicePath = ' /home/cyberpanel/postfix '
if state == ' Off ' :
command = ' sudo systemctl stop postfix '
subprocess . call ( shlex . split ( command ) )
command = ' sudo systemctl disable postfix '
subprocess . call ( shlex . split ( command ) )
try :
os . remove ( servicePath )
except :
pass
else :
writeToFile = open ( servicePath , ' w+ ' )
writeToFile . close ( )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableDisableEmail] " )
return 0
@staticmethod
def enableDisableFTP ( state ) :
try :
servicePath = ' /home/cyberpanel/pureftpd '
if state == ' Off ' :
command = ' sudo systemctl stop pure-ftpd '
subprocess . call ( shlex . split ( command ) )
command = ' sudo systemctl disable pure-ftpd '
subprocess . call ( shlex . split ( command ) )
try :
os . remove ( servicePath )
except :
pass
else :
writeToFile = open ( servicePath , ' w+ ' )
writeToFile . close ( )
except OSError , msg :
logging . InstallLog . writeToFile ( str ( msg ) + " [enableDisableEmail] " )
return 0
2018-06-27 00:16:50 +05:00
2018-10-25 16:10:01 -04:00
def get_distro ( ) :
2018-10-26 09:52:07 -04:00
distro = centos
2018-10-25 16:47:26 -04:00
distro_file = " "
if exists ( " /etc/lsb-release " ) :
distro_file = " /etc/lsb-release "
with open ( distro_file ) as f :
2018-10-25 16:10:01 -04:00
for line in f :
2018-10-26 09:52:07 -04:00
if line == " DISTRIB_ID=Ubuntu \n " :
2018-10-25 16:10:01 -04:00
distro = ubuntu
2018-04-20 23:49:49 +05:00
2018-10-25 16:47:26 -04:00
elif exists ( " /etc/os-release " ) :
distro_file = " /etc/os-release "
2018-10-26 09:52:07 -04:00
distro = centos
2018-10-25 16:10:01 -04:00
else :
logging . InstallLog . writeToFile ( " Can ' t find linux release file - fatal error " )
preFlightsChecks . stdOut ( " Can ' t find linux release file - fatal error " )
os . _exit ( os . EX_UNAVAILABLE )
2017-10-24 19:16:36 +05:00
2018-10-25 16:10:01 -04:00
if distro == - 1 :
2018-10-25 16:47:26 -04:00
logging . InstallLog . writeToFile ( " Can ' t find distro name in " + distro_file + " - fatal error " )
preFlightsChecks . stdOut ( " Can ' t find distro name in " + distro_file + " - fatal error " )
2018-10-25 16:10:01 -04:00
os . _exit ( os . EX_UNAVAILABLE )
return distro
2018-10-25 16:47:26 -04: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. ' )
2018-06-01 02:08:21 +05:00
parser . add_argument ( ' --mysql ' , help = ' Specify number of MySQL instances to be used. ' )
2018-07-23 22:11:42 +05:00
parser . add_argument ( ' --postfix ' , help = ' Enable or disable Email Service. ' )
parser . add_argument ( ' --powerdns ' , help = ' Enable or disable DNS Service. ' )
parser . add_argument ( ' --ftp ' , help = ' Enable or disable ftp Service. ' )
2017-10-24 19:16:36 +05:00
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
2018-10-26 09:52:07 -04:00
try :
os . mkdir ( " /etc/cyberpanel " )
except :
pass
2018-02-13 11:45:44 +05:00
machineIP = open ( " /etc/cyberpanel/machineIP " , " w " )
machineIP . writelines ( args . publicip )
machineIP . close ( )
2017-10-24 19:16:36 +05:00
cwd = os . getcwd ( )
2018-10-25 16:47:26 -04:00
distro = get_distro ( )
2018-10-26 09:52:07 -04:00
preFlightsChecks . stdOut ( " Distro: " + str ( distro ) )
2018-10-25 16:47:26 -04:00
checks = preFlightsChecks ( " /usr/local/lsws/ " , args . publicip , " /usr/local " , cwd , " /usr/local/CyberCP " , distro )
2018-10-25 16:10:01 -04:00
if distro == ubuntu :
os . chdir ( " /etc/cyberpanel " )
2017-10-24 19:16:36 +05:00
2018-08-12 14:53:05 +05:00
if args . mysql == None :
2018-06-01 02:08:21 +05:00
mysql = ' One '
2018-08-12 14:53:05 +05:00
preFlightsChecks . stdOut ( " Single MySQL instance version will be installed. " )
else :
mysql = args . mysql
2018-10-25 16:10:01 -04:00
preFlightsChecks . stdOut ( " Double MySQL instance version will be installed. " )
2018-06-01 02:08:21 +05:00
2017-10-24 19:16:36 +05:00
checks . checkPythonVersion ( )
2017-12-09 22:30:10 +05:00
checks . setup_account_cyberpanel ( )
2018-10-25 16:10:01 -04:00
if distro == centos :
checks . yum_update ( )
2017-10-24 19:16:36 +05:00
checks . installCyberPanelRepo ( )
2018-10-25 16:10:01 -04:00
if distro == centos :
checks . enableEPELRepo ( )
2017-10-24 19:16:36 +05:00
checks . install_pip ( )
checks . install_python_dev ( )
checks . install_gcc ( )
2018-10-25 16:10:01 -04:00
if distro == centos :
checks . install_python_setup_tools ( )
2017-10-24 19:16:36 +05:00
checks . install_django ( )
checks . install_pexpect ( )
checks . install_python_mysql_library ( )
checks . install_gunicorn ( )
checks . install_psutil ( )
checks . setup_gunicorn ( )
import installCyberPanel
2018-06-01 02:08:21 +05:00
installCyberPanel . Main ( cwd , mysql )
2017-10-24 19:16:36 +05:00
checks . fix_selinux_issue ( )
checks . install_psmisc ( )
checks . install_postfix_davecot ( )
2018-06-01 02:08:21 +05:00
checks . setup_email_Passwords ( installCyberPanel . InstallCyberPanel . mysqlPassword , mysql )
checks . setup_postfix_davecot_config ( mysql )
2017-10-24 19:16:36 +05:00
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 ( )
2018-10-17 23:20:02 +05:00
checks . installPYDNS ( )
2018-06-01 02:08:21 +05:00
checks . download_install_CyberPanel ( installCyberPanel . InstallCyberPanel . mysqlPassword , mysql )
2018-06-05 00:53:45 +05:00
checks . setupCLI ( )
2017-11-02 02:09:47 +05:00
checks . setup_cron ( )
2018-04-20 23:49:49 +05:00
checks . installTLDExtract ( )
2018-05-06 14:18:41 +05:00
#checks.installdnsPython()
2018-05-01 00:49:47 +05:00
## Install and Configure OpenDKIM.
checks . installOpenDKIM ( )
checks . configureOpenDKIM ( )
2018-03-26 20:39:56 +05:00
checks . modSecPreReqs ( )
2018-06-27 00:16:50 +05:00
checks . setupVirtualEnv ( )
2018-07-13 21:45:40 +05:00
checks . setupPHPAndComposer ( )
2018-07-23 22:11:42 +05:00
2018-08-12 14:53:05 +05:00
if args . postfix != None :
checks . enableDisableEmail ( args . postfix )
else :
preFlightsChecks . stdOut ( " Postfix will be installed and enabled. " )
2018-07-23 22:11:42 +05:00
checks . enableDisableEmail ( ' On ' )
2018-08-12 14:53:05 +05:00
if args . powerdns != None :
checks . enableDisableDNS ( args . powerdns )
else :
preFlightsChecks . stdOut ( " PowerDNS will be installed and enabled. " )
2018-07-23 22:11:42 +05:00
checks . enableDisableDNS ( ' On ' )
2018-08-12 14:53:05 +05:00
if args . ftp != None :
checks . enableDisableFTP ( args . ftp )
else :
preFlightsChecks . stdOut ( " Pure-FTPD will be installed and enabled. " )
2018-07-23 22:11:42 +05:00
checks . enableDisableFTP ( ' On ' )
2018-02-04 21:15:30 +05:00
logging . InstallLog . writeToFile ( " CyberPanel installation successfully completed! " )
2017-11-02 02:09:47 +05:00
2017-10-24 19:16:36 +05:00
2018-10-26 09:52:07 -04:00
if __name__ == " __main__ " :
2018-10-25 16:47:26 -04:00
main ( )
2018-10-25 16:10:01 -04:00