Advertisement
RussianAdmins

cwp-el7-latest

Apr 15th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 41.95 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ########################################################################
  4. # Use of code or any part of it is strictly prohibited. File protected by copyright law and provided under license.
  5. # To Use any part of this code you need to get a writen approval from the code owner: info@centos-webpanel.com
  6. ########################################################################
  7. #
  8. # CWP instaler for CentOS 7
  9. #
  10. ########################################################################
  11.  
  12. help() {
  13.   echo "Usage: $0 [OPTIONS]
  14.  -r, --restart       Restart server after install  [yes]  default: no
  15.  -p, --phpfpm        Install PHP-FPM  [5.4|5.5|5.6|7.0|7.1|7.2|7.3]  default: no
  16.  -s, --softaculous   Install Softaculous  [yes]  default: no
  17.  -m, --modsecurity   Install ModSecurity CWAF  [yes]  default: no
  18.  -h, --help          Print this help
  19.  
  20.  Example: sh $0 -r yes --phpfpm 7.2 --softaculous yes --modsecurity yes"
  21.     exit 1
  22. }
  23.  
  24. for argument; do
  25.     delimiter=""
  26.     case "$argument" in
  27.         --restart)              arguments="${arguments}-r " ;;
  28.         --phpfpm)               arguments="${arguments}-p " ;;
  29.         --softaculous)          arguments="${arguments}-s " ;;
  30.         --modsecurity)          arguments="${arguments}-m " ;;
  31.  
  32.         --help)                 arguments="${arguments}-h " ;;
  33.         *)                      [[ "${argument:0:1}" == "-" ]] || delimiter="\""
  34.                                 arguments="${arguments}${delimiter}${argument}${delimiter} ";;
  35.     esac
  36. done
  37. eval set -- "$arguments"
  38.  
  39. while getopts "r:p:s:m:h" Oflags; do
  40.     case $Oflags in
  41.         r) restart=$OPTARG ;;            # Restart server after install
  42.         p) phpfpm=$OPTARG ;;             # Install PHP-FPM
  43.         s) softaculous=$OPTARG ;;        # Install Softaculous
  44.         m) modsecurity=$OPTARG ;;        # Install ModSecurity CWAF
  45.  
  46.         h) help ;;                       # Print help
  47.         *) help ;;                       # Print help
  48.     esac
  49. done
  50.  
  51. if [[ $EUID -ne 0 ]]; then
  52.    echo "This script must be run as root"
  53.    exit 1
  54. fi
  55.  
  56. if [ -e "/usr/local/cwpsrv/" ]; then
  57.     echo
  58.     echo "CWP is already installed on your server."
  59.     echo "If you want to update it, run this command: sh /scripts/update_cwp"
  60.     echo
  61.     exit 1
  62. fi
  63. yum -y upgrade
  64. type mysql 2> /dev/null && MYSQLCHK="on" || MYSQLCHK="off"
  65.  
  66. # MySQL checker
  67. if [ "$MYSQLCHK" = "on" ]; then
  68. # Check if current password from /root/.my.cnf is works
  69. if [ -f /root/.my.cnf ]; then
  70.     passwd1=`awk -F\" '{print $2}' /root/.my.cnf| sed 's/[[:space:]]//g' |sed ':a;N;$!ba;s/\n//g'`  # CPanel password in /etc/.my.cnf
  71.     passwd2=`/bin/cat /root/.my.cnf |grep -i password |sed 's/[[:space:]]//g' |sed 's/password=//'` # Non-CPanel password in /etc/.my.cnf
  72.    if [ -z "ls -lA /root |grep -i migration" ]; then
  73.      passwd=$passwd2
  74.    else
  75.      passwd=$passwd1
  76.    fi
  77. fi
  78. test=`mysql -u root -p$passwd -e "show databases;" -B|head -n1`
  79. if [ "$test" = "Database" ]; then
  80. password=$passwd
  81. else
  82.     #check pwd if works
  83.     while [ "$check" != "Database" ]
  84.     do
  85.         echo "Enter MySQL root Password: "
  86.         read -p "MySQL root password []:" password
  87.         check=`mysql -u root -p$password -e "show databases;" -B|head -n1`
  88.         if [ "$check" = "Database" ]; then
  89.             echo "Password OK!!"
  90.         else
  91.             echo "MySQL root passwordis invalid!!!"
  92.             echo "You can remove MySQL server using command: yum remove mysql"
  93.             echo "after mysql is removed run installer again."
  94.             echo ""
  95.             echo "if exists you can check your mysql password in file: /root/.my.cnf"
  96.             echo ""
  97.             if [ -e "/root/.my.cnf" ]; then
  98.                 echo ""
  99.                 cat /root/.my.cnf
  100.                 echo ""
  101.             fi
  102.         fi
  103.     done
  104. fi
  105. else
  106.     password=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  107. # MariaDB repository if not CloudLinux
  108. CLOUDLINUXCHECK=`grep -i cloudlinux /etc/redhat-release`
  109. if [ -z "$CLOUDLINUXCHECK" ];then
  110. cat > /etc/yum.repos.d/mariadb.repo <<EOF
  111. # MariaDB 10.1 CentOS repository list - created 2019-07-03 08:40 UTC
  112. # http://downloads.mariadb.org/mariadb/repositories/
  113. [mariadb]
  114. name = MariaDB
  115. baseurl = http://yum.mariadb.org/10.1/centos7-amd64
  116. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  117. gpgcheck=1
  118. enabled=1
  119. EOF
  120. fi
  121. fi
  122.  
  123. # Add CWP Repository
  124. cat > /etc/yum.repos.d/cwp.repo <<EOF
  125. [cwp]
  126. name=CentOS Web Panel repo for Linux 7 - \$basearch
  127. baseurl=http://repo.centos-webpanel.com/repo/7/\$basearch
  128. failovermethod=priority
  129. enabled=1
  130. gpgcheck=0
  131. priority=1
  132. EOF
  133.  
  134. # Enable epel respository
  135. yum -y install epel-release wget screen
  136. yum -y makecache fast
  137.  
  138. #Umask Fix
  139. sed -ie "s/umask\=002/umask\=022/g" /etc/bashrc >/dev/null 2>&1
  140.  
  141. CHKDATE=`date +%Y`
  142. if [ "$CHKDATE" -le "2014" ];then
  143.     echo "You have incorrect date set on your server!"
  144.     echo `date`
  145.     exit 1
  146. fi
  147.  
  148. #Install dependecies
  149. if [ $MYSQLCHK = "off" ]; then
  150. yum -y install MariaDB MariaDB-server
  151. NEW_INSTALL=1
  152. fi
  153. yum -y install gcc gcc-c++ make automake autoconf rsync cpulimit nano links e2fsprogs rsyslog net-tools man mlocate which screen sysstat
  154. yum -y install at zip git unzip cronie perl-libwww-perl perl-LWP-Protocol-https perl-Crypt-SSLeay
  155. yum -y remove apr exim sendmail
  156. yum -y install apr apr-util postfix dovecot dovecot-mysql dovecot-pigeonhole cyrus-sasl-devel cyrus-sasl-sql subversion bind bind-utils bind-libs file
  157.  
  158. VERSION=`mysql -V |awk '{print $5}' |sed "s/-[[:alpha:]].*$//"`
  159. if [ -z "`mysql -V |grep -i mariadb`" ]; then # There is MySQL server
  160.  if [[ "$VERSION" > "5.6.9" ]]; then
  161.     NEW=1
  162.     else
  163.     NEW=0
  164.  fi
  165. else # There is MariaDB server 10.4
  166.  if [[ "$VERSION" > "10.4" ]]; then
  167.     NEW=1
  168.     else
  169.     NEW=0
  170.     yum -y upgrade
  171.  fi
  172. fi
  173.  
  174. pubip=`curl -s http://centos-webpanel.com/webpanel/main.php?app=showip`
  175. fqdn=`/bin/hostname -f`
  176.  
  177. # Check for hostname -f command issue
  178. hostnameissuecheck=$?
  179. if [ $hostnameissuecheck -ne 0 ];then
  180.         fqdn=`/bin/hostname`
  181. fi
  182.  
  183. echo ""
  184. echo "PREPARING THE SERVER"
  185. echo "##########################"
  186.  
  187. if [ -e "/etc/selinux/config" ]; then
  188. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  189. setenforce 0
  190. fi
  191.  
  192. # Disable Firewalld as we use CSF/LFD
  193. systemctl stop firewalld
  194. systemctl disable firewalld
  195.  
  196. ## APACHE INSTALLER ##
  197. echo
  198. echo "#############################################"
  199. echo "Please wait... installing web server files..."
  200. echo "#############################################"
  201. echo
  202.  
  203. yum -y install apr apr-util cwp-httpd 2>&1 |tee /tmp/cwp.log
  204. yum -y install cwp-suphp
  205.  
  206. if [ ! -e "/usr/local/apache/bin/httpd" ]
  207. then
  208. echo
  209. echo "Compiler requires 512 MB RAM + SWAP"
  210. echo "Installation FAILED at httpd"
  211. echo "Installation FAILED at httpd" >> /tmp/cwp.log
  212. curl http://dl1.centos-webpanel.com/files/s_scripts/sinfo.sh|sh 2>&1 >> /tmp/cwp.log
  213. curl -F"operation=upload" -F"file=@/tmp/cwp.log" http://error-reporting.control-webpanel.com/?service=installer
  214. echo "Please contact CWP support about this issue and include the last few lines from the error:"
  215. echo "http://centos-webpanel.com/contact"
  216. exit 1
  217. fi
  218.  
  219. echo
  220. echo "#############################################"
  221. echo "Please wait... Installing PHP ..."
  222. echo "#############################################"
  223. echo
  224.  
  225. yum -y install cwp-php --enablerepo=epel 2>&1 |tee /tmp/cwp.log
  226.  
  227. if [ ! -e "/usr/local/bin/php" ]
  228. then
  229. echo
  230. echo "Compiler requires 512 MB RAM + SWAP"
  231. echo "Installation FAILED at php"
  232. echo "Installation FAILED at php" >> /tmp/cwp.log
  233. curl http://dl1.centos-webpanel.com/files/s_scripts/sinfo.sh|sh 2>&1 >> /tmp/cwp.log
  234. curl -F"operation=upload" -F"file=@/tmp/cwp.log" http://error-reporting.control-webpanel.com/?service=installer
  235. echo "Please contact CWP support about this issue and include the last few lines from the error:"
  236. echo "http://centos-webpanel.com/contact"
  237. exit 1
  238. fi
  239.  
  240. if [ -e "/usr/local/bin/php-config" ]
  241. then
  242. CHKEXTENSIONTDIR=`/usr/local/bin/php-config --extension-dir`;grep ^extension_dir /usr/local/php/php.ini || echo "extension_dir='$CHKEXTENSIONTDIR'" >> /usr/local/php/php.ini
  243. fi
  244. # Installing CWP server
  245. yum -y install cwpsrv cwpphp --enablerepo=epel
  246.  
  247. if [ ! -e "/usr/local/cwpsrv/bin/cwpsrv" ]
  248. then
  249. echo
  250. echo "Compiler requires 512 MB RAM + SWAP"
  251. echo "Installation FAILED at cwpsrv"
  252. echo "Installation FAILED at cwpsrv" > /tmp/cwp.log
  253. curl http://dl1.centos-webpanel.com/files/s_scripts/sinfo.sh|sh 2>&1 >> /tmp/cwp.log
  254. curl -F"operation=upload" -F"file=@/tmp/cwp.log" http://error-reporting.control-webpanel.com/?service=installer
  255. echo "Please contact CWP support about this issue and include the last few lines from the error:"
  256. echo "http://centos-webpanel.com/contact"
  257. exit 1
  258. fi
  259.  
  260. if [ ! -e "/usr/local/cwp/php71/bin/php" ]
  261. then
  262. echo
  263. echo "Compiler requires 512 MB RAM + SWAP"
  264. echo "Installation FAILED at cwp phpfpm"
  265. echo "Installation FAILED at cwp phpfpm" > /tmp/cwp.log
  266. curl http://dl1.centos-webpanel.com/files/s_scripts/sinfo.sh|sh 2>&1 >> /tmp/cwp.log
  267. curl -F"operation=upload" -F"file=@/tmp/cwp.log" http://error-reporting.control-webpanel.com/?service=installer
  268. echo "Please contact CWP support about this issue and include the last few lines from the error:"
  269. echo "http://centos-webpanel.com/contact"
  270. exit 1
  271. fi
  272.  
  273. if ! [[ -d /usr/local/src/ ]]; then mkdir -p /usr/local/src ; fi
  274.  
  275. # SSL Installer
  276. openssl genrsa -out /etc/pki/tls/cwp-$pubip.key 2048
  277. openssl req -new -x509 -key /etc/pki/tls/cwp-$pubip.key -out /etc/pki/tls/cwp-$pubip.cert -days 3650 -subj /CN=$pubip
  278.  
  279. # CONFIGURE MYSQL
  280. ###################
  281.  
  282. cd /usr/local/src
  283. if [ $NEW_INSTALL = 1 ]; then
  284. echo "## CONFIGURE MYSQL"
  285. echo "###################"
  286. sed -i "s|old_passwords=1|#old_passwords=1|" /etc/my.cnf
  287. /bin/systemctl daemon-reload
  288. if [ -e "/var/run/mariadb" ];then
  289. chown -R mysql:mysql /var/run/mariadb/
  290. fi
  291. /bin/systemctl restart  mariadb.service
  292. /bin/systemctl enable mariadb.service
  293. mysqladmin -u root password $password
  294. mysql -u root -p$password -e "DROP DATABASE test";
  295. mysql -u root -p$password -e "DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'";
  296. mysql -u root -p$password -e "DELETE FROM mysql.user WHERE User=''";
  297. mysql -u root -p$password -e "FLUSH PRIVILEGES";
  298. fi
  299.  
  300. cat > /root/.my.cnf <<EOF
  301. [client]
  302. password=$password
  303. user=root
  304. EOF
  305. chmod 600 /root/.my.cnf
  306.  
  307. # CONFIGURE APACHE
  308. ####################
  309. #touch /usr/local/apache/conf.d/vhosts.conf
  310. sed -i "s|#Include conf/extra/httpd-userdir.conf|Include conf/extra/httpd-userdir.conf|" /usr/local/apache/conf/httpd.conf
  311.  
  312. # Apache Server Status
  313. cat > /usr/local/apache/conf.d/server-status.conf <<EOF
  314. <Location /server-status>
  315.     SetHandler server-status
  316.     Order deny,allow
  317.     Allow from localhost
  318. </Location>
  319. EOF
  320.  
  321. if ! [[ -L /etc/systemd/system/multi-user.target.wants/httpd.service ]]; then
  322. ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/system/multi-user.target.wants/httpd.service
  323. fi
  324.  
  325. /bin/systemctl daemon-reload
  326.  
  327. # Set PHP Config
  328. sed -i "s|\;date\.timezone \=.*|date\.timezone = Etc/UTC|" /usr/local/php/php.ini
  329.  
  330. echo "127.0.0.1 "$fqdn >> /etc/hosts
  331. /bin/systemctl enable httpd.service
  332. /bin/systemctl restart httpd.service
  333.  
  334. # Mail Server Config
  335. sed -i "s|inet_interfaces = localhost|inet_interfaces = all|" /etc/postfix/main.cf
  336. sed -i "s|mydestination = $myhostname, localhost.$mydomain, localhost|mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, $domain|" /etc/postfix/main.cf
  337. sed -i "s|#home_mailbox = Maildir/|home_mailbox = Maildir/|" /etc/postfix/main.cf
  338.  
  339. #install csf firewall
  340. echo "Installing CSF Firewall"
  341. echo "#######################"
  342. cd /tmp
  343. rm -fv csf.tgz
  344. wget https://download.configserver.com/csf.tgz
  345. tar -xzf csf.tgz
  346. cd csf
  347. sh install.sh
  348. sed -i "s|465,587,993,995|465,587,993,995,2030,2031,2082,2083,2086,2087,2095,2096|" /etc/csf/csf.conf
  349. sed -i "s|80,110,113,443|80,110,113,443,2030,2031,2082,2083,2086,2087,2095,2096|" /etc/csf/csf.conf
  350. sed -i 's|TESTING = "1"|TESTING = "0"|' /etc/csf/csf.conf
  351. echo "# Run external commands before csf configures iptables" >> /usr/local/csf/bin/csfpre.sh
  352. echo "# Run external commands after csf configures iptables" >> /usr/local/csf/bin/csfpost.sh
  353. csf -x
  354.  
  355. cat >> /etc/csf/csf.pignore <<EOF
  356. # CWP CUSTOM
  357. exe:/usr/sbin/clamd
  358. exe:/usr/sbin/opendkim
  359. exe:/usr/libexec/mysqld
  360. exe:/usr/sbin/mysqld
  361. exe:/usr/bin/postgres
  362. exe:/usr/bin/mongod
  363. exe:/usr/libexec/dovecot/anvil
  364. exe:/usr/libexec/dovecot/auth
  365. exe:/usr/libexec/dovecot/imap-login
  366. exe:/usr/libexec/dovecot/dict
  367. exe:/usr/libexec/dovecot/pop3-login
  368. exe:/usr/local/cwp/php71/sbin/php-fpm
  369.  
  370. exe:/usr/libexec/postfix/tlsmgr
  371. exe:/usr/libexec/postfix/qmgr
  372. exe:/usr/libexec/postfix/pickup
  373. exe:/usr/libexec/postfix/smtpd
  374. exe:/usr/libexec/postfix/smtp
  375. exe:/usr/libexec/postfix/bounce
  376. exe:/usr/libexec/postfix/scache
  377. exe:/usr/libexec/postfix/anvil
  378. exe:/usr/libexec/postfix/cleanup
  379. exe:/usr/libexec/postfix/proxymap
  380. exe:/usr/libexec/postfix/trivial-rewrite
  381. exe:/usr/libexec/postfix/local
  382. exe:/usr/libexec/postfix/pipe
  383. exe:/usr/libexec/postfix/spawn
  384.  
  385. exe:/usr/sbin/varnishd
  386. exe:/usr/sbin/nginx
  387.  
  388. exe:/usr/bin/perl
  389. user:amavis
  390. cmd:/usr/sbin/amavisd
  391. user:netdata
  392. EOF
  393.  
  394. touch /var/lib/csf/csf.tempban
  395. touch /var/lib/csf/csf.tempallow
  396.  
  397. # Till the CSF/LFD turned on
  398. #iptables -I INPUT -m tcp -p tcp --dport 2030 -j ACCEPT
  399.  
  400. # CWP BruteForce Protection
  401. sed -i "s|CUSTOM1_LOG.*|CUSTOM1_LOG = \"/var/log/cwp_client_login.log\"|g" /etc/csf/csf.conf
  402. sed -i "s|^HTACCESS_LOG.*|HTACCESS_LOG = \"/usr/local/apache/logs/error_log\"|g" /etc/csf/csf.conf
  403. sed -i "s|^MODSEC_LOG.*|MODSEC_LOG = \"/usr/local/apache/logs/error_log\"|g" /etc/csf/csf.conf
  404. sed -i "s|^POP3D_LOG.*|POP3D_LOG = \"/var/log/dovecot-info.log\"|g" /etc/csf/csf.conf
  405. sed -i "s|^IMAPD_LOG.*|IMAPD_LOG = \"/var/log/dovecot-info.log\"|g" /etc/csf/csf.conf
  406. sed -i "s|^SMTPAUTH_LOG.*|SMTPAUTH_LOG = \"/var/log/maillog\"|g" /etc/csf/csf.conf
  407.  
  408. cat > /usr/local/csf/bin/regex.custom.pm <<EOF
  409. #!/usr/bin/perl
  410. sub custom_line {
  411.         my \$line = shift;
  412.         my \$lgfile = shift;
  413. # Do not edit before this point
  414. if ((\$globlogs{CUSTOM1_LOG}{\$lgfile}) and (\$line =~ /^\S+\s+\S+\s+(\S+)\s+Failed Login from:\s+(\S+) on: (\S+)/)) {
  415.                return ("Failed CWP-Login login for User: \$1 from IP: \$2 URL: \$3",\$2,"cwplogin","5","2030,2031","1");
  416. }
  417. # Do not edit beyond this point
  418.         return 0;
  419. }
  420. 1;
  421. EOF
  422.  
  423. #Dovecot bug fix
  424. touch /var/log/dovecot-debug.log
  425. touch /var/log/dovecot-info.log
  426. touch /var/log/dovecot.log
  427. chmod 600 /var/log/dovecot-debug.log
  428. chmod 600 /var/log/dovecot-info.log
  429. chmod 600 /var/log/dovecot.log
  430. usermod -G mail dovecot
  431.  
  432. # WebPanel Install
  433. echo "Installing CWP Files"
  434. echo "#######################"
  435. mkdir /usr/local/cwpsrv/htdocs
  436. cd /usr/local/cwpsrv/htdocs
  437.  
  438. wget dl1.centos-webpanel.com/files/cwp/el7/cwp-el7-0.9.8.845.zip
  439. unzip -o -q cwp-el7-0.9.8.845.zip
  440. rm -f cwp-el7-0.9.8.845.zip
  441.  
  442. if [ ! -e "/usr/local/cwpsrv/var/services" ];then
  443. mkdir -p /usr/local/cwpsrv/var/services/
  444. fi
  445. cd /usr/local/cwpsrv/var/services/
  446. wget dl1.centos-webpanel.com/files/cwp/el7/cwp-services.zip
  447. unzip -o -q cwp-services.zip
  448. rm -f cwp-services.zip
  449.  
  450. cd /usr/local/cwpsrv/htdocs/resources/admin/include
  451. wget -q http://dl1.centos-webpanel.com/files/cwp/sql/db_conn.txt
  452. mv db_conn.txt db_conn.php
  453. cd /usr/local/cwpsrv/htdocs/resources/admin/modules
  454. wget -q http://dl1.centos-webpanel.com/files/cwp/modules/example.txt
  455. mv example.txt example.php
  456.  
  457. # phpMyAdmin Installer
  458. echo "Installing phpMyAdmin"
  459. echo "#######################"
  460. cd /usr/local/cwpsrv/var/services
  461. wget -q http://dl1.centos-webpanel.com/files/mysql/phpMyAdmin-4.6.6-all-languages.zip
  462. unzip -o -q phpMyAdmin-4.6.6-all-languages.zip
  463. mv phpMyAdmin-4.6.6-all-languages pma
  464. rm -Rf phpMyAdmin-4.6.6-all-languages.zip pma/setup
  465.  
  466. # webFTP Installer
  467. cd /usr/local/apache/htdocs/
  468. wget -q dl1.centos-webpanel.com/files/cwp/addons/webftp_simple.zip
  469. unzip -o -q webftp_simple.zip
  470. rm -f webftp_simple.zip
  471.  
  472. # Default website setup
  473. cp /usr/local/cwpsrv/htdocs/resources/admin/tpl/new_account_tpl/* /usr/local/apache/htdocs/.
  474.  
  475. # WebPanel Settings
  476. mv /usr/local/cwpsrv/var/services/pma/config.sample.inc.php /usr/local/cwpsrv/var/services/pma/config.inc.php
  477. ran_password=$(</dev/urandom tr -dc A-Za-z0-9 | head -c32)
  478. sed -i "s|\['blowfish_secret'\] = ''|\['blowfish_secret'\] = '${ran_password}'|" /usr/local/cwpsrv/var/services/pma/config.inc.php
  479. ran_password2=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  480. sed -i "s|\$crypt_pwd = ''|\$crypt_pwd = '${ran_password2}'|" /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  481. sed -i "s|\$db_pass = ''|\$db_pass = '$password'|" /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  482. chmod 600 /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  483.  
  484. if [ -e "/var/lib/php/session" ];then
  485. chmod 777 /var/lib/php/session/
  486. fi
  487.  
  488. # PHP Short tags fix
  489. sed -i "s|short_open_tag = Off|short_open_tag = On|" /usr/local/cwp/php/php.ini
  490. sed -i "s|short_open_tag = Off|short_open_tag = On|" /usr/local/php/php.ini
  491.  
  492. # Setup Cron
  493. cat > /etc/cron.daily/cwp <<EOF
  494. /usr/local/cwp/php71/bin/php -d max_execution_time=1000000 -q /usr/local/cwpsrv/htdocs/resources/admin/include/cron.php
  495. /usr/local/cwp/php71/bin/php -d max_execution_time=1000000 -q /usr/local/cwpsrv/htdocs/resources/admin/include/cron_backup.php
  496. EOF
  497. chmod +x /etc/cron.daily/cwp
  498.  
  499. # MySQL Database import
  500. curl 'http://dl1.centos-webpanel.com/files/cwp/sql/root_cwp.sql'|mysql -uroot -p$password
  501. curl 'http://dl1.centos-webpanel.com/files/cwp/sql/oauthv2.sql'|mysql -uroot -p$password
  502.  
  503. mysql -u root -p$password << EOF
  504. use root_cwp;
  505. UPDATE settings SET shared_ip="$pubip";
  506. EOF
  507.  
  508. # Disable named for antiDDoS security
  509. /bin/systemctl enable named
  510.  
  511. # Google DNS
  512. CHECKDNS=`dig a centos-webpanel.com @8.8.8.8 +short`
  513. CHECKDNSERROR=$?
  514. if [ $CHECKDNSERROR -eq 0 ];then
  515. echo "nameserver 8.8.8.8" > /etc/resolv.conf
  516. echo "nameserver 8.8.4.4" >> /etc/resolv.conf
  517. fi
  518.  
  519. sed -i "s|127.0.0.1|any|" /etc/named.conf
  520. sed -i "s|localhost|any|" /etc/named.conf
  521. sed -i 's/recursion yes/recursion no/g' /etc/named.conf
  522.  
  523. # MAIL SERVER INSTALLER
  524.  
  525. # clean yum
  526. yum clean all
  527.  
  528. ##########################################################
  529. # MAIL SERVER
  530. ##########################################################
  531.  
  532. # check MySQL root password
  533. mysql_root_password=$password
  534. if [ -z "${mysql_root_password}" ]; then
  535.   read -p "MySQL root password []:" mysql_root_password
  536. fi
  537.  
  538. #clear
  539. echo "#########################################################"
  540. echo "          CentOS Web Panel MailServer Installer          "
  541. echo "#########################################################"
  542. echo
  543. echo "visit for help: www.centos-webpanel.com"
  544. echo
  545.  
  546. check=`mysql -u root -p$mysql_root_password -e "show databases;" -B|head -n1`
  547. if [ "$check" = "Database" ]; then
  548.     echo "Password OK!!"
  549. else
  550.         echo "MySQL root password is invalid!!!"
  551.         echo "Check password and run this script again."
  552.         exit 1
  553.  
  554. fi
  555.  
  556. ## Needed to add password in root folder
  557. if [ $NEW = 0 ]; then
  558. mysql -u root -p$mysql_root_password -e "UPDATE mysql.user SET Password = PASSWORD('$mysql_root_password') WHERE user = 'root';"
  559. mysql -u root -p$mysql_root_password -e "FLUSH PRIVILEGES;"
  560. else
  561. mysql -u root -p$mysql_root_password <<EOF
  562. FLUSH PRIVILEGES;
  563. ALTER USER 'root'@'localhost' IDENTIFIED BY '$mysql_root_password';
  564. EOF
  565. fi
  566.  
  567. # password generator
  568. postfix_pwd=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  569. cnf_hostname=`/bin/hostname -f`
  570.  
  571. # Check for hostname -f command issue
  572. hostnameissuecheck=$?
  573. if [ $hostnameissuecheck -ne 0 ];then
  574.         cnf_hostname=`/bin/hostname`
  575. fi
  576.  
  577. # create database and user
  578.  
  579.  
  580. mysql -u root -p$mysql_root_password <<EOF
  581. DROP USER IF EXISTS 'postfix'@'localhost';
  582. CREATE DATABASE IF NOT EXISTS postfix;
  583. CREATE USER IF NOT EXISTS 'postfix'@'localhost' IDENTIFIED BY '$postfix_pwd';
  584. GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost';
  585. EOF
  586.  
  587. # MySQL Database import
  588. curl 'http://centos-webpanel.com/webpanel/main.php?dl=postfix.sql'|mysql -uroot -p$mysql_root_password -h localhost postfix
  589.  
  590. yum -y install perl-MailTools perl-MIME-EncWords perl-MIME-Charset perl-Email-Valid perl-Test-Pod perl-TimeDate
  591. yum -y install perl-Mail-Sender perl-Log-Log4perl imapsync offlineimap
  592. yum -y install perl-Razor-Agent perl-Convert-BinHex crypto-utils
  593. yum --enablerepo=epel -y install clamav clamav-data clamav-lib clamav-server clamav-update clamav-server-systemd clamav-scanner-systemd amavisd-new
  594.  
  595. # Fix knowns issues with amavisd and ClamAV
  596.  
  597. sed -i '/^Example$/d' /etc/clamd.d/scan.conf
  598. sed -i '/^Example$/d' /etc/freshclam.conf
  599. sed -i 's/^#LocalSocket/LocalSocket/' /etc/clamd.d/scan.conf
  600. sed -i 's/^LocalSocketGroup.*$/LocalSocketGroup amavis/' /etc/clamd.d/scan.conf
  601. usermod -a -G amavis clamscan
  602. cd /usr/lib/systemd/system
  603. mv clamd\@.service clamd.service
  604. sed -i 's/^ExecStart.*$/ExecStart = \/usr\/sbin\/clamd -c \/etc\/clamd.d\/amavisd.conf --foreground=yes/' clamd.service
  605. sed -i "s/^Type \= forking/Type \= simple/" clamd.service
  606. mv clamd\@scan.service clamd-scan.service
  607. sed -i 's/clamd@.service/clamd.service/' clamd-scan.service
  608. #sed -i 's/Wants\=clamd.*$/Wants\=clamd.service/' /usr/lib/systemd/system/amavisd.service
  609. #sed -i '/^NoNewPrivileges.*$/d' /usr/lib/systemd/system/amavisd.service
  610. systemctl daemon-reload
  611. # End of fix
  612.  
  613. # GET MAIL configs
  614. cd /
  615. wget -q http://dl1.centos-webpanel.com/files/mail/el7/mail_server.zip
  616. unzip -o -q /mail_server.zip
  617. rm -f /mail_server.zip
  618.  
  619. #User add
  620. mkdir /var/vmail
  621. chmod 770 /var/vmail
  622. useradd -r -u 101 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual mailbox" vmail
  623. chown vmail:mail /var/vmail
  624.  
  625. touch /etc/postfix/virtual_regexp
  626.  
  627. #vacation
  628. useradd -r -d /var/spool/vacation -s /sbin/nologin -c "Virtual vacation" vacation
  629.  
  630. if [ ! -e "/var/spool/vacation" ];then
  631. mkdir /var/spool/vacation
  632. fi
  633.  
  634. chmod 770 /var/spool/vacation
  635. cd /var/spool/vacation/
  636. #ln -s /etc/postfix/vacation.pl /var/spool/vacation/vacation.pl
  637. ln -s /etc/postfix/vacation.php /var/spool/vacation/vacation.php
  638. chmod +x /etc/postfix/vacation.php
  639. usermod -G mail vacation
  640. chown vacation /etc/postfix/vacation.php
  641. #chown postfix.mail /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  642. #chmod 440 /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  643.  
  644. echo "autoreply.$cnf_hostname vacation:" > /etc/postfix/transport
  645. postmap /etc/postfix/transport
  646. chown -R vacation:vacation /var/spool/vacation
  647. echo "127.0.0.1 autoreply.$cnf_hostname" >> /etc/hosts
  648.  
  649. #sieve
  650. mkdir -p /var/sieve/
  651. cat > /var/sieve/globalfilter.sieve <<EOF
  652. require "fileinto";
  653. if exists "X-Spam-Flag" {
  654. if header :contains "X-Spam-Flag" "NO" {
  655. } else {
  656. fileinto "Spam";
  657. stop;
  658. }
  659. }
  660. if header :contains "subject" ["***SPAM***"] {
  661. fileinto "Spam";
  662. stop;
  663. }
  664. EOF
  665. chown -R vmail:mail /var/sieve
  666.  
  667. #razor-admin -register -user=some_user -pass=somepas
  668. #freshclam
  669. #service clamd restart
  670.  
  671. ##### SSL Cert START #####
  672. # SSL Self signed certificate
  673. cd /root
  674. DOMAIN="$cnf_hostname"
  675. if [ -z "$DOMAIN" ]; then
  676. echo "Hostname is not properly set!"
  677. exit 11
  678. fi
  679.  
  680. fail_if_error() {
  681. [ $1 != 0 ] && {
  682. unset PASSPHRASE
  683. exit 10
  684. }
  685. }
  686.  
  687. # Generate a passphrase
  688. export PASSPHRASE=$(head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 128; echo)
  689.  
  690. # Certificate details; replace items in angle brackets with your own info
  691. subj="
  692. C=HR
  693. ST=Zagreb
  694. O=CentOS Web Panel
  695. localityName=HR
  696. commonName=$DOMAIN
  697. organizationalUnitName=CentOS Web Panel
  698. emailAddress=info@studio4host.com
  699. "
  700.  
  701. # Generate the server private key
  702. openssl genrsa -des3 -out $DOMAIN.key -passout env:PASSPHRASE 2048
  703. fail_if_error $?
  704.  
  705. # Generate the CSR
  706. openssl req \
  707. -new \
  708. -batch \
  709. -subj "$(echo -n "$subj" | tr "\n" "/")" \
  710. -key $DOMAIN.key \
  711. -out $DOMAIN.csr \
  712. -passin env:PASSPHRASE
  713. fail_if_error $?
  714. cp $DOMAIN.key $DOMAIN.key.org
  715. fail_if_error $?
  716.  
  717. # Strip the password so we don't have to type it every time we restart Apache
  718. openssl rsa -in $DOMAIN.key.org -out $DOMAIN.key -passin env:PASSPHRASE
  719. fail_if_error $?
  720.  
  721. # Generate the cert (good for 10 years)
  722. openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
  723. fail_if_error $?
  724.  
  725. mv /root/$cnf_hostname.key /etc/pki/tls/private/hostname.key
  726. mv /root/$cnf_hostname.crt /etc/pki/tls/certs/hostname.crt
  727. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/$cnf_hostname.key
  728. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/$cnf_hostname.crt
  729.  
  730. # Services Certs
  731. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-cwp.crt
  732. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-dovecot.crt
  733. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-http.crt
  734. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-postfix.crt
  735.  
  736. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-cwp.key
  737. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-dovecot.key
  738. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-http.key
  739. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-postfix.key
  740.  
  741. cat /etc/pki/tls/private/hostname.key > /etc/pki/tls/certs/server-ftp.crt
  742. cat /etc/pki/tls/certs/hostname.crt >> /etc/pki/tls/certs/server-ftp.crt
  743.  
  744. echo " " > /etc/pki/tls/certs/$cnf_hostname.bundle
  745. ##### END SSL Cert #####
  746.  
  747. #FTPD configuration
  748. if [ ! -e "/etc/pure-ftpd/pure-ftpd.conf" ]
  749. then
  750. yum -y install pure-ftpd --enablerepo=epel
  751. touch /etc/pure-ftpd/pureftpd.passwd
  752. pure-pw mkdb /etc/pure-ftpd/pureftpd.pdb -f /etc/pure-ftpd/pureftpd.passwd -m
  753. fi
  754.  
  755. if [ ! -e "/etc/pure-ftpd/pure-ftpd.conf" ]
  756. then
  757. echo "Installation FAILED at pure-ftpd"
  758. echo "Please contact CWP support about this issue and include the last few lines from the error:"
  759. echo "http://centos-webpanel.com/contact"
  760. exit 1
  761. fi
  762.  
  763. sed -i 's|.*pureftpd.pdb.*|PureDB /etc/pure-ftpd/pureftpd.pdb|g' /etc/pure-ftpd/pure-ftpd.conf
  764. sed -i 's|.*PAMAuthentication.*yes|PAMAuthentication    yes|g' /etc/pure-ftpd/pure-ftpd.conf
  765. sed -i 's|.*UnixAuthentication.*yes|UnixAuthentication       yes|g' /etc/pure-ftpd/pure-ftpd.conf
  766. # CentOS 7.6 fix for pure-ftpd
  767. grep "^/sbin/nologin$" /etc/shells || echo "/sbin/nologin" >> /etc/shells
  768.  
  769. systemctl enable pure-ftpd
  770. systemctl restart pure-ftpd
  771.  
  772. # /etc/postfix/main.cf
  773. sed -i "s|MY_HOSTNAME|$cnf_hostname|g" /etc/postfix/main.cf
  774. sed -i "s|MY_HOSTNAME|autoreply.$cnf_hostname|g" /etc/postfix/mysql-virtual_vacation.cf
  775. sed -i "s|MY_DOMAIN|$cnf_hostname|g" /etc/postfix/main.cf
  776.  
  777. # MySQL PWD Fix for postfix
  778. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-relay_domains_maps.cf
  779. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-virtual_alias_maps.cf
  780. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-virtual_domains_maps.cf
  781. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
  782. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-virtual_mailbox_maps.cf
  783. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /etc/postfix/mysql-virtual_vacation.cf
  784.  
  785. sed -i '/^.*smtpd_bind_address.*$/d' /etc/postfix/master.cf
  786. sed -i '/^.*virtual_mailbox_limit_maps.*$/d' /etc/postfix/main.cf
  787.  
  788. # Postfix Web panel SQL setup
  789. if [ ! -e "/usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php" ]
  790. then
  791. cd /usr/local/cwpsrv/htdocs/resources/admin/include
  792. wget -q http://centos-webpanel.com/webpanel/main.php?dl=postfix.txt
  793. mv main.php?dl=postfix.txt postfix.php
  794. fi
  795. sed -i "s|\$db_pass_postfix = ''|\$db_pass_postfix = '$postfix_pwd'|" /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  796. chmod 600 /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  797.  
  798. # Vacation fix
  799. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/vacation.conf
  800. sed -i "s|AUTO_REPLAY|autoreply.$cnf_hostname|" /etc/postfix/vacation.conf
  801.  
  802. # DOVECOT fix
  803. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/dovecot/dovecot-dict-quota.conf
  804. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/dovecot/dovecot-mysql.conf
  805. sed -i "s|MY_DOMAIN|$cnf_hostname|" /etc/dovecot/dovecot.conf
  806. sed -i "s|MY_DOMAIN|$cnf_hostname|" /etc/dovecot/dovecot.conf
  807.  
  808. ##### ROUNDCUBE INSTALLER #####
  809. /usr/local/cwp/php71/bin/pear install Mail_mime
  810. /usr/local/cwp/php71/bin/pear install Net_SMTP
  811. /usr/local/cwp/php71/bin/pear install channel://pear.php.net/Net_IDNA2-0.1.1
  812.  
  813. #SIEVE REQUIREMENTS
  814. # >=5.3.0, roundcube/plugin-installer: >=0.1.3, roundcube/net_sieve: "1.5.0
  815. /usr/local/cwp/php71/bin/pear install Net_Sieve
  816.  
  817. if [ -z "${mysql_roundcube_password}" ]; then
  818.   tmp=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  819.   mysql_roundcube_password=${mysql_roundcube_password:-${tmp}}
  820.   echo "MySQL roundcube: ${mysql_roundcube_password}" >> .passwords
  821. fi
  822.  
  823. if [ -z "${mysql_root_password}" ]; then
  824.   read -p "MySQL root password []:" mysql_root_password
  825. fi
  826.  
  827. wget -P /usr/local/cwpsrv/var/services http://dl1.centos-webpanel.com/files/mail/roundcubemail-1.2.3.tar.gz
  828. tar -C /usr/local/cwpsrv/var/services -zxf /usr/local/cwpsrv/var/services/roundcubemail-*.tar.gz
  829. rm -f /usr/local/cwpsrv/var/services/roundcubemail-*.tar.gz
  830. mv /usr/local/cwpsrv/var/services/roundcubemail-* /usr/local/cwpsrv/var/services/roundcube
  831. chown cwpsvc:cwpsvc -R /usr/local/cwpsrv/var/services/roundcube
  832. chmod 777 -R /usr/local/cwpsrv/var/services/roundcube/temp/
  833. chmod 777 -R /usr/local/cwpsrv/var/services/roundcube/logs/
  834.  
  835. sed -e "s|mypassword|${mysql_roundcube_password}|" <<'EOF' | mysql -u root -p"${mysql_root_password}"
  836. USE mysql;
  837. CREATE DATABASE IF NOT EXISTS roundcube;
  838. GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'mypassword';
  839. FLUSH PRIVILEGES;
  840. EOF
  841.  
  842. mysql -u root -p"${mysql_root_password}" 'roundcube' < /usr/local/cwpsrv/var/services/roundcube/SQL/mysql.initial.sql
  843.  
  844. cp /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php.sample /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  845.  
  846. sed -i "s|^\(\$config\['default_host'\] =\).*$|\1 \'localhost\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  847. sed -i "s|^\(\$config\['smtp_server'\] =\).*$|\1 \'localhost\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  848. sed -i "s|^\(\$config\['smtp_user'\] =\).*$|\1 \'%u\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  849. sed -i "s|^\(\$config\['smtp_pass'\] =\).*$|\1 \'%p\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  850. #sed -i "s|^\(\$config\['support_url'\] =\).*$|\1 \'mailto:${E}\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  851. sed -i "s|^\(\$config\['quota_zero_as_unlimited'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  852. sed -i "s|^\(\$config\['preview_pane'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  853. sed -i "s|^\(\$config\['read_when_deleted'\] =\).*$|\1 false;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  854. sed -i "s|^\(\$config\['check_all_folders'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  855. sed -i "s|^\(\$config\['display_next'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  856. sed -i "s|^\(\$config\['top_posting'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  857. sed -i "s|^\(\$config\['sig_above'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  858. sed -i "s|^\(\$config\['login_lc'\] =\).*$|\1 2;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  859. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /usr/local/cwpsrv/var/services/roundcube/plugins/password/config.inc.php
  860. sed -i "s|^\(\$config\['db_dsnw'\] =\).*$|\1 \'mysqli://roundcube:${mysql_roundcube_password}@localhost/roundcube\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  861. rm -rf /usr/local/cwpsrv/var/services/roundcube/installer
  862. sh /usr/local/cwpsrv/htdocs/resources/scripts/mail_roundcube_update
  863. chown -R cwpsvc:cwpsvc /usr/local/cwpsrv/var/services/roundcube
  864.  
  865. # MAIL SECURITY
  866. chmod 640 /etc/postfix/mysql-*.cf
  867. chmod 640 /etc/dovecot/dovecot-*.conf
  868. chmod 640 /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  869. chown root.mail /etc/postfix/mysql-*.cf
  870. chown root.mail /etc/dovecot/dovecot-*.conf
  871.  
  872. # Setup Login Screen
  873. [[ $(grep "bash_cwp" /root/.bash_profile) == "" ]] && echo "sh /root/.bash_cwp" >>  /root/.bash_profile
  874.  
  875. cat > /root/.bash_cwp <<EOF
  876. echo ""                                                                                                                                                  
  877. echo "********************************************"                                                                                                      
  878. echo " Welcome to CWP (CentOS WebPanel) server"                                                                                                          
  879. echo "********************************************"                                                                                                      
  880. echo ""                                                                                                                                                  
  881. echo "CWP Wiki: http://wiki.centos-webpanel.com"                                                                                                        
  882. echo "CWP Forum: http://forum.centos-webpanel.com"                                                                                                      
  883. echo "CWP Support: http://centos-webpanel.com/support-services"                                                                                          
  884. echo ""                                                                                                                                                  
  885. w                                                                                                                                                        
  886. echo ""
  887. EOF
  888.  
  889. if [ ! -e "/scripts" ]
  890. then
  891.         cd /;ln -s /usr/local/cwpsrv/htdocs/resources/scripts /scripts
  892.         chmod +x /scripts/*
  893. fi
  894.  
  895. # Chkconfig
  896. # iptables -F
  897. /bin/systemctl daemon-reload
  898. /bin/systemctl enable httpd
  899. /bin/systemctl enable cwpsrv
  900. /bin/systemctl enable mariadb
  901. /bin/systemctl enable postfix
  902. /bin/systemctl enable dovecot
  903. /bin/systemctl daemon-reload
  904.  
  905. # Lets make php easier for usage
  906. ln -s /usr/local/bin/php /bin/php
  907. ln -s /usr/local/bin/php /usr/bin/php
  908.  
  909. # service restart
  910. /bin/systemctl restart httpd
  911. /bin/systemctl restart cwpsrv
  912.  
  913. chown vmail.mail /var/log/dovecot*
  914. mkdir /usr/local/apache/htdocs/.well-known
  915. chown -R nobody:nobody /usr/local/apache/htdocs/*
  916. chown -R cwpsvc.cwpsvc /usr/local/cwpsrv/var/services
  917. /usr/bin/chattr +i /usr/local/cwpsrv/htdocs/admin
  918.  
  919. # All non standart ports are closed by default
  920. iptables -A INPUT ! -i lo -p tcp -m state --state NEW -m tcp --dport 2030 -j ACCEPT
  921. iptables -A INPUT ! -i lo -p tcp -m state --state NEW -m tcp --dport 2031 -j ACCEPT
  922. service iptables save
  923.  
  924. # NAT-ed networking setup detection
  925. checklocal=`/sbin/ip addr sh | grep $pubip`
  926.  
  927. if [ -z "$checklocal" ];then
  928.         mkdir -p /usr/local/cwp/.conf/
  929.         touch /usr/local/cwp/.conf/nat_check.conf
  930. fi
  931.  
  932. # PHPFPM Installer
  933. if [ ! -z "$phpfpm" ]; then
  934.     CWPDLLINK="http://dl1.centos-webpanel.com/files/php/selector/el7/"
  935.     mkdir -p /usr/local/cwp/.conf/php-fpm_conf/
  936.  
  937.     if [ "$phpfpm" = "5.3" ];then
  938.         wget -q ${CWPDLLINK}php53.conf -O /usr/local/cwp/.conf/php-fpm_conf/php53.conf
  939.     elif [ "$phpfpm" = "5.4" ]; then
  940.         wget -q ${CWPDLLINK}php54.conf -O /usr/local/cwp/.conf/php-fpm_conf/php54.conf
  941.     elif [ "$phpfpm" = "5.5" ]; then
  942.         wget -q ${CWPDLLINK}php55.conf -O /usr/local/cwp/.conf/php-fpm_conf/php55.conf
  943.     elif [ "$phpfpm" = "5.6" ]; then
  944.         wget -q ${CWPDLLINK}php56.conf -O /usr/local/cwp/.conf/php-fpm_conf/php56.conf
  945.     elif [ "$phpfpm" = "7.0" ]; then
  946.         wget -q ${CWPDLLINK}php70.conf -O /usr/local/cwp/.conf/php-fpm_conf/php70.conf
  947.     elif [ "$phpfpm" = "7.1" ]; then
  948.         wget -q ${CWPDLLINK}php71.conf -O /usr/local/cwp/.conf/php-fpm_conf/php71.conf
  949.     elif [ "$phpfpm" = "7.2" ]; then
  950.         wget -q ${CWPDLLINK}php72.conf -O /usr/local/cwp/.conf/php-fpm_conf/php72.conf
  951.     elif [ "$phpfpm" = "7.3" ]; then
  952.         wget -q ${CWPDLLINK}php73.conf -O /usr/local/cwp/.conf/php-fpm_conf/php73.conf
  953.     fi
  954.  
  955.     wget -q ${CWPDLLINK}php-fpm-${phpfpm}.sh -O /usr/local/src/php-fpm-${phpfpm}.sh
  956.     wget -q ${CWPDLLINK}php-build.sh -O /usr/local/src/php-build.sh
  957.     sed -i "s|CONFIGURE_VERSIONS_TO_BUILD|sh /usr/local/src/php-fpm-${phpfpm}.sh;|g" /usr/local/src/php-build.sh
  958.     sh /usr/local/src/php-build.sh 2>&1 |tee /var/log/php-selector-rebuild.log
  959. fi
  960.  
  961. # Softaculous Installer
  962. if [ "$softaculous" = "yes" ];then
  963.     IONCUBELOADED=`/usr/local/cwp/php71/bin/php -v|grep ionCube`
  964.     IONCUBECONF=`grep ioncube_loader /usr/local/cwp/php71/php.ini`
  965.     SOFTACULOUSPWD=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  966.     SOFTACULOUSAPI=`grep softaculous /usr/local/cwp/.conf/.api_keys`
  967.  
  968.     if [ -z "$IONCUBELOADED" ];then
  969.         if [ -z "$IONCUBECONF" ];then
  970.             echo "zend_extension = /usr/local/ioncube/ioncube_loader_lin_7.0.so" >> /usr/local/cwp/php71/php.ini
  971.         fi
  972.     fi
  973.  
  974.     if [ -z "$SOFTACULOUSAPI" ];then
  975.         echo "softaculous:${SOFTACULOUSPWD}:1: " > /usr/local/cwp/.conf/.api_keys
  976.     fi
  977.  
  978.     if [ ! -e "/usr/local/cwp/php" ];then
  979.         ln -s /usr/local/cwp/php71/ /usr/local/cwp/php
  980.     fi
  981.  
  982.     cd /usr/local/src;rm -f install.sh;wget -N http://files.softaculous.com/install.sh;chmod 755 install.sh;
  983.     cd /usr/local/src/;sh /usr/local/src/install.sh --quick
  984.  
  985.     if [ -e "/usr/local/cwpsrv/conf.d/softaculous.conf" ];then
  986.         rm -f /usr/local/cwpsrv/conf.d/softaculous.conf
  987.     fi
  988.  
  989.     if [ -e "/usr/local/cwpsrv/conf/include/softaculous.conf" ];then
  990.         rm -f /usr/local/cwpsrv/conf/include/softaculous.conf
  991.     fi
  992.  
  993.     cd /usr/local/cwpsrv/conf/include; wget http://dl1.centos-webpanel.com/files/3rdparty/softaculous/el7/softaculous.conf
  994. fi
  995.  
  996. if [ "$modsecurity" = "yes" ];then
  997.     MODSECCONF="/usr/local/cwp/.conf/mod_security.conf"
  998.     MODSECMAINCONF="/usr/local/apache/conf.d/mod_security.conf"
  999.     RHELLIBDIR=`if [[ \`uname -m\` != "x86_64" ]]; then libdir=/usr/lib/ ; else libdir=/usr/lib64/ ; fi;echo $libdir`
  1000.  
  1001.     # Install dependencies
  1002.     yum -y install libxml2 libxml2-devel pcre-devel curl-devel expat-devel apr-devel apr-util-devel libuuid-devel gcc --enablerepo=cwp
  1003.  
  1004.     # Install Mod_Security for CWP
  1005.     cd /usr/local/src
  1006.     wget -q http://dl1.centos-webpanel.com/files/apache/modsecurity-2.9.1.tar.gz
  1007.     tar -xzf modsecurity-2.9.1.tar.gz
  1008.     cd /usr/local/src/modsecurity-2.9.1
  1009.     ./configure --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/bin/apr-1-config --with-apu=/usr/bin/apu-1-config
  1010.     make clean
  1011.     make
  1012.     make install
  1013.  
  1014.     # Create CWP Conf file
  1015.     touch $MODSECCONF
  1016.  
  1017.     # Create Mod_Security Configuration
  1018.     if [ -e "/usr/local/apache/modules/mod_security2.so" ];then
  1019.         echo "modsecurityinstall = 1" >> $MODSECCONF
  1020.  
  1021.         cat > $MODSECMAINCONF <<EOF
  1022. LoadFile ${RHELLIBDIR}libxml2.so
  1023. LoadFile ${RHELLIBDIR}liblua-5.1.so
  1024.  
  1025. <IfModule !unique_id_module>
  1026.   LoadModule unique_id_module modules/mod_unique_id.so
  1027. </IfModule>
  1028.  
  1029. <IfModule !mod_security2.c>
  1030.   LoadModule security2_module  modules/mod_security2.so
  1031. </IfModule>
  1032.  
  1033. <IfModule mod_security2.c>
  1034.   <IfModule mod_ruid2.c>
  1035.     SecAuditLogStorageDir /usr/local/apache/logs/modsec_audit
  1036.     SecAuditLogType Concurrent
  1037.   </IfModule>
  1038.   <IfModule itk.c>
  1039.     SecAuditLogStorageDir /usr/local/apache/logs/modsec_audit
  1040.     SecAuditLogType Concurrent
  1041.   </IfModule>
  1042.  
  1043.   SecRuleEngine On
  1044.   SecAuditEngine RelevantOnly
  1045.   SecAuditLog /usr/local/apache/logs/modsec_audit.log
  1046.   SecDebugLog /usr/local/apache/logs/modsec_debug.log
  1047.   SecAuditLogType Serial
  1048.   SecDebugLogLevel 0
  1049.   SecRequestBodyAccess On
  1050.   SecDataDir /tmp
  1051.   SecTmpDir /tmp
  1052.   SecUploadDir /tmp
  1053.   SecCollectionTimeout 600
  1054.   SecPcreMatchLimit 1250000
  1055.   SecPcreMatchLimitRecursion 1250000
  1056.   Include "/usr/local/apache/modsecurity-cwaf/cwaf.conf"
  1057. </IfModule>
  1058. EOF
  1059.  
  1060.         # Install CWP Mod_Security Rules
  1061.         if [ -e "/usr/local/apache/" ];then
  1062.             cd /usr/local/apache/
  1063.             rm -Rf modsecurity-cwaf modsecurity-cwaf.zip
  1064.             wget -q http://dl1.centos-webpanel.com/files/apache/mod-security/modsecurity-cwaf.zip
  1065.             unzip modsecurity-cwaf.zip
  1066.  
  1067.             cd /usr/local/apache/modsecurity-cwaf/rules
  1068.             rm -f comodo_waf.zip
  1069.             wget -q http://dl1.centos-webpanel.com/files/apache/mod-security/comodo_waf.zip
  1070.             unzip -o comodo_waf.zip;rm -f comodo_waf.zip
  1071.  
  1072.             echo "modsecurityrules = 3" >> $MODSECCONF
  1073.             mkdir /usr/local/apache/logs/tmp;chown nobody.root /usr/local/apache/logs/tmp
  1074.         fi
  1075.     fi
  1076. fi
  1077.  
  1078. # Apache-only conf
  1079. cat > /usr/local/cwp/.conf/web_servers.conf <<EOF
  1080. {
  1081.     "webserver_setup": "apache-only",
  1082.     "apache-main": true,
  1083.     "php-cgi": true,
  1084.     "php-fpm": true,
  1085.     "apache_template-type-default": "default",
  1086.     "apache_template-name-default": "default"
  1087. }
  1088. EOF
  1089.  
  1090. # Secure home folder
  1091. chmod 711 /home
  1092.  
  1093. sh /scripts/restart_cwpsrv
  1094. service httpd restart
  1095. service postfix restart
  1096. service dovecot restart
  1097. service named restart
  1098.  
  1099. clear
  1100. echo "#############################"
  1101. echo "#      CWP Installed        #"
  1102. echo "#############################"
  1103. echo ""
  1104. echo "Go to CentOS WebPanel Admin GUI at http://SERVER_IP:2030/"
  1105. echo ""
  1106. echo "http://${pubip}:2030"
  1107. echo "SSL: https://${pubip}:2031"
  1108. echo -e "---------------------"
  1109. echo "Username: root"
  1110. echo "Password: ssh server root password"
  1111. echo "MySQL root Password: $password"
  1112. echo
  1113. echo "#########################################################"
  1114. echo "          CentOS Web Panel MailServer Installer          "
  1115. echo "#########################################################"
  1116. #echo "Roundcube MySQL Password: ${mysql_roundcube_password}"
  1117. #echo "Postfix MySQL Password: ${postfix_pwd}"
  1118. echo "SSL Cert name (hostname): ${cnf_hostname}"
  1119. echo "SSL Cert file location /etc/pki/tls/ private|certs"
  1120. echo "#########################################################"
  1121. echo
  1122. echo "Visit for help: www.centos-webpanel.com"
  1123. echo "Write down login details and press ENTER for server reboot!"
  1124.  
  1125. if [ "$restart" = "yes" ]; then
  1126.     echo "restarting server...."
  1127.     shutdown -r now
  1128. else
  1129.     echo "Please reboot the server!"
  1130.     echo "Reboot command: shutdown -r now"
  1131. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement