Advertisement
Guest User

Untitled

a guest
Jun 4th, 2017
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.46 KB | None | 0 0
  1. #!/bin/bash
  2. ########################################################################
  3. # Use of code or any part of it is strictly prohibited. File protected by copyright law and provided under license.
  4. # To Use any part of this code you need to get a writen approval from the code owner: info@centos-webpanel.com
  5. ########################################################################
  6. #
  7. #
  8. clear
  9. echo "#################################################################"
  10. echo "# CentOS Web Panel (CWP) Installer #"
  11. echo "#################################################################"
  12. echo ""
  13. echo "visit www.centos-webpanel.com"
  14. echo ""
  15.  
  16. if [ ! -e "/etc/redhat-release" ]; then
  17. echo "You need to have CentOS, RedHat or CloudLinux system!"
  18. exit 0
  19. fi
  20.  
  21. arch=$(uname -m)
  22. if [[ $arch == "i686" ]]; then
  23. platform="x86"
  24. mariadb="x86"
  25. else
  26. platform="x86-64"
  27. mariadb="amd64"
  28. fi
  29.  
  30. CHKDATE=`date +%Y`
  31. if [ "$CHKDATE" -le "2014" ];then
  32. echo "You have incorrect date set on your server!"
  33. echo `date`
  34. exit 1
  35. fi
  36.  
  37. type mysql 2> /dev/null && MYSQLCHK="on" || MYSQLCHK="off"
  38.  
  39.  
  40. # MySQL checker
  41. if [ "$MYSQLCHK" = "on" ]; then
  42. #check pwd if works
  43. while [ "$check" != "Database" ]
  44. do
  45. echo "Enter MySQL root Password: "
  46. read -p "MySQL root password []:" password
  47. check=`mysql -u root -p$password -e "show databases;" -B|head -n1`
  48. if [ "$check" = "Database" ]; then
  49. echo "Password OK!!"
  50. else
  51. echo "MySQL root passwordis invalid!!!"
  52. echo "You can remove MySQL server using command: yum remove mysql"
  53. echo "after mysql is removed run installer again."
  54. echo ""
  55. echo "if exists you can check your mysql password in file: /root/.my.cnf"
  56. echo ""
  57. if [ -e "/root/.my.cnf" ]; then
  58. echo ""
  59. cat /root/.my.cnf
  60. echo ""
  61. fi
  62. fi
  63. done
  64.  
  65.  
  66. else
  67. password=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  68. fi
  69.  
  70.  
  71. service httpd stop
  72. service mysql stop
  73.  
  74. yum -y update ca-certificates
  75. yum -y install wget chkconfig epel-release
  76. yum -y erase apr httpd
  77.  
  78. #Fix epel ssl issue
  79. sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo
  80.  
  81. # Check if version el5
  82. centosversion=`rpm -qa \*-release | grep -Ei "oracle|redhat|centos|cloudlinux" | cut -d"-" -f3`
  83.  
  84. if [ $centosversion -eq "5" ]; then
  85. echo
  86. echo "#######################################"
  87. echo "# el5 version detected"
  88. echo "#######################################"
  89. echo
  90. echo
  91. echo "We recommend you to use CentOS 6 servers for full functionality!"
  92. echo "Press ENTER to continue with CentOS 5 installation"
  93. read CENTOS5CONFIRM
  94. fi
  95.  
  96. if [ $centosversion -eq "7" ]; then
  97. echo
  98. echo "#######################################"
  99. echo "# el7 version detected"
  100. echo "#######################################"
  101. echo
  102. cd /usr/local/src
  103. wget -q http://dl1.centos-webpanel.com/files/cwp-el7-latest
  104. sh cwp-el7-latest
  105. rm -f cwp-el7-latest
  106. exit 0
  107. fi
  108.  
  109. if [ $centosversion -eq "6" ]; then
  110. echo
  111. echo "#######################################"
  112. echo "# el6 version detected"
  113. echo "#######################################"
  114. echo
  115. #Install SQL
  116. if [ "$mariadb" = "x86" ];then
  117. # INSTALLING 32bit MARIADB
  118. cat > /etc/yum.repos.d/MariaDB.repo <<EOF
  119. [mariadb]
  120. name = MariaDB
  121. baseurl = http://yum.mariadb.org/10.1/centos6-x86
  122. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  123. gpgcheck=0
  124. EOF
  125. else
  126. # INSTALLING 64bit MARIADB
  127. cat > /etc/yum.repos.d/MariaDB.repo <<EOF
  128. [mariadb]
  129. name = MariaDB
  130. baseurl = http://yum.mariadb.org/10.1/centos6-amd64
  131. gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
  132. gpgcheck=0
  133. EOF
  134. fi
  135.  
  136. yum install MariaDB-server MariaDB-client -y
  137. chkconfig --levels 235 mysql on
  138. sed -i "s|old_passwords=1|#old_passwords=1|" /etc/my.cnf
  139.  
  140. ln -s /etc/init.d/mysql /etc/init.d/mysqld
  141. service mysql start
  142. mysqladmin -u root password $password
  143. mysql -u root -p$password -e "DROP DATABASE test";
  144. mysql -u root -p$password -e "DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'";
  145. mysql -u root -p$password -e "DELETE FROM mysql.user WHERE User=''";
  146. mysql -u root -p$password -e "FLUSH PRIVILEGES";
  147.  
  148. # ADD SQL ROOT PASSWORD
  149. cat > /root/.my.cnf <<EOF
  150. [client]
  151. password=$password
  152. user=root
  153. EOF
  154.  
  155. # SECURE SQL ROOT PASSWORD
  156. chmod 600 /root/.my.cnf
  157.  
  158. # RESTART SQL TO ACCEPT THE NEW CHANGES
  159. service mysqld restart
  160.  
  161. if [ ! -e "/var/lib/mysql" ];then
  162. echo "Installation FAILED at SQL !!!"
  163. exit 1
  164. fi
  165. fi
  166.  
  167. if [ $centosversion -eq "7" ]; then
  168. echo
  169. echo "#######################################"
  170. echo "# el7 version detected"
  171. echo "#######################################"
  172. echo
  173. cd /usr/local/src
  174. wget -q http://dl1.centos-webpanel.com/files/cwp-el7-latest
  175. sh cwp-el7-latest
  176. rm -f cwp-el7-latest
  177. exit 0
  178. fi
  179.  
  180. # Check /tmp
  181. if [[ `cat /etc/fstab | grep -E 'tmp.*noexec'` != "" ]]; then mount -o remount,exec /tmp >/dev/null 2>&1 ; fi
  182.  
  183. #Umask Fix
  184. sed -ie "s/umask\=002/umask=022/g" /etc/bashrc >/dev/null 2>&1
  185.  
  186. # Install CWP repo
  187. cat > /etc/yum.repos.d/cwp.repo <<EOF
  188. [cwp]
  189. name=CentOS Web Panel repo for Linux 6 - \$basearch
  190. baseurl=http://repo.centos-webpanel.com/repo/6/\$basearch
  191. failovermethod=priority
  192. enabled=1
  193. gpgcheck=0
  194. EOF
  195.  
  196. #Install dependecies
  197. yum -y install apr apr-util bzip2-devel gcc libxml2-devel openssl-devel pcre-devel sqlite-devel curl curl-devel libc-client-devel libmcrypt-devel libxslt-devel libpng-devel automake autoconf gcc-c++ freetype-devel libjpeg-devel which sysstat
  198. yum -y install make rsync at bzip2-devel zip git unzip cronie perl-libwww-perl bash-completion
  199. yum -y install rsync cpulimit nano links bzip2-devel
  200. #yum -y install postfix dovecot dovecot-mysql
  201. yum -y install bind bind-utils bind-libs
  202.  
  203. pubip=`curl -s http://centos-webpanel.com/webpanel/main.php?app=showip`
  204. #pubip=`curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
  205.  
  206. fqdn=`/bin/hostname`
  207. echo ""
  208. echo "PREPARING THE SERVER"
  209. echo "##########################"
  210.  
  211. if [ -e "/etc/selinux/config" ]; then
  212. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  213. setenforce 0
  214. fi
  215.  
  216. if [ -e "/etc/init.d/sendmail" ]
  217. then
  218. chkconfig --levels 235 sendmail off
  219. /etc/init.d/sendmail stop
  220. fi
  221.  
  222. service iptables save
  223. service iptables stop
  224.  
  225. ## PACKAGE INSTALLER
  226. #yum -y install make zip unzip git ld-linux.so.2 libbz2.so.1 libdb-4.7.so libgd.so.2 vsftpd
  227.  
  228. echo
  229. echo "#############################################"
  230. echo "Please wait... installing web server files..."
  231. echo "#############################################"
  232. echo
  233.  
  234.  
  235.  
  236. #FTPD configuration
  237. if [ ! -e "/etc/pure-ftpd/pure-ftpd.conf" ]
  238. then
  239. yum -y install pure-ftpd --enablerepo=epel
  240. touch /etc/pure-ftpd/pure-ftpd.passwd
  241. pure-pw mkdb /etc/pure-ftpd/pureftpd.pdb -f /etc/pure-ftpd/pure-ftpd.passwd -m
  242. fi
  243.  
  244. if [ ! -e "/etc/pure-ftpd/pure-ftpd.conf" ]
  245. then
  246. echo "Installation FAILED at pure-ftpd"
  247. exit 1
  248. fi
  249.  
  250. sed -i 's|.*pureftpd.pdb.*|PureDB /etc/pure-ftpd/pureftpd.pdb|g' /etc/pure-ftpd/pure-ftpd.conf
  251. sed -i 's|.*PAMAuthentication.*yes|PAMAuthentication yes|g' /etc/pure-ftpd/pure-ftpd.conf
  252. sed -i 's|.*UnixAuthentication.*yes|UnixAuthentication yes|g' /etc/pure-ftpd/pure-ftpd.conf
  253.  
  254. ## APACHE INSTALLER ##
  255. mkdir -p /usr/local/src
  256. cd /usr/local/src
  257.  
  258. yum -y install apr apr-util cwp-httpd
  259. yum -y install cwp-suphp
  260.  
  261. yum -y install cwp-php
  262.  
  263.  
  264. if [ -e "/usr/local/bin/php-config" ]
  265. then
  266. 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
  267. fi
  268.  
  269. yum -y install cwpsrv
  270.  
  271.  
  272. yum -y install cwpphp
  273.  
  274. # CONFIGURE APACHE
  275. ####################
  276. touch /usr/local/apache/conf.d/vhosts.conf
  277. sed -i "s|#Include conf/extra/httpd-userdir.conf|Include conf/extra/httpd-userdir.conf|" /usr/local/apache/conf/httpd.conf
  278. sed -i "s|#LoadModule userdir_module modules.*$|LoadModule userdir_module modules/mod_userdir.so|" /usr/local/apache/conf/httpd.conf
  279.  
  280.  
  281. # Apache Server Status
  282. cat > /usr/local/apache/conf.d/server-status.conf <<EOF
  283. <Location /server-status>
  284. SetHandler server-status
  285. Order deny,allow
  286. Allow from localhost
  287. </Location>
  288. EOF
  289.  
  290.  
  291. # Set PHP Config
  292. sed -i "s|\;date\.timezone \=.*|date\.timezone = Etc/UTC|" /usr/local/php/php.ini
  293.  
  294. echo "127.0.0.1 "$fqdn >> /etc/hosts
  295. chkconfig --levels 235 httpd on
  296. service httpd restart
  297.  
  298. # Install CSF/LFD Firewall
  299. cd /tmp
  300. rm -fv csf.tgz
  301. wget -q http://download.configserver.com/csf.tgz
  302. tar -xzf csf.tgz
  303. cd csf
  304. sh install.sh
  305. sed -i "s|465,587,993,995|465,587,993,995,2030,2031,2082,2083,2086,2087,2095,2096|" /etc/csf/csf.conf
  306. sed -i "s|80,110,113,443|80,110,113,443,2030,2031,2082,2083,2086,2087,2095,2096|" /etc/csf/csf.conf
  307. sed -i 's|TESTING = "1"|TESTING = "0"|' /etc/csf/csf.conf
  308. echo "# Run external commands before csf configures iptables" >> /usr/local/csf/bin/csfpre.sh
  309. echo "# Run external commands after csf configures iptables" >> /usr/local/csf/bin/csfpost.sh
  310. csf -x
  311.  
  312. cat >> /etc/csf/csf.pignore <<EOF
  313. # CWP CUSTOM
  314. exe:/usr/sbin/clamd
  315. exe:/usr/sbin/opendkim
  316. exe:/usr/libexec/mysqld
  317. exe:/usr/sbin/mysqld
  318. exe:/usr/libexec/dovecot/anvil
  319. exe:/usr/libexec/dovecot/auth
  320. exe:/usr/libexec/dovecot/imap-login
  321. exe:/usr/libexec/dovecot/dict
  322. exe:/usr/libexec/dovecot/pop3-login
  323.  
  324. exe:/usr/libexec/postfix/tlsmgr
  325. exe:/usr/libexec/postfix/qmgr
  326. exe:/usr/libexec/postfix/pickup
  327. exe:/usr/libexec/postfix/smtpd
  328. exe:/usr/libexec/postfix/smtp
  329. exe:/usr/libexec/postfix/bounce
  330. exe:/usr/libexec/postfix/scache
  331. exe:/usr/libexec/postfix/anvil
  332. exe:/usr/libexec/postfix/cleanup
  333. exe:/usr/libexec/postfix/proxymap
  334. exe:/usr/libexec/postfix/trivial-rewrite
  335. exe:/usr/libexec/postfix/local
  336. exe:/usr/libexec/postfix/pipe
  337. exe:/usr/libexec/postfix/spawn
  338.  
  339. exe:/usr/sbin/varnishd
  340. exe:/usr/sbin/nginx
  341.  
  342. exe:/usr/bin/perl
  343. user:amavis
  344. cmd:/usr/sbin/amavisd
  345. EOF
  346.  
  347. # CWP BruteForce Protection
  348. sed -i "s|CUSTOM1_LOG.*|CUSTOM1_LOG = \"/var/log/cwp_client_login.log\"|g" /etc/csf/csf.conf
  349. cat > /usr/local/csf/bin/regex.custom.pm <<EOF
  350. #!/usr/bin/perl
  351. sub custom_line {
  352. my \$line = shift;
  353. my \$lgfile = shift;
  354. # Do not edit before this point
  355. if ((\$globlogs{CUSTOM1_LOG}{\$lgfile}) and (\$line =~ /^\S+\s+\S+\s+(\S+)\s+Failed Login from:\s+(\S+) on: (\S+)/)) {
  356. return ("Failed CWP-Login login for User: \$1 from IP: \$2 URL: \$3",\$2,"cwplogin","5","2030,2031","1");
  357. }
  358. # Do not edit beyond this point
  359. return 0;
  360. }
  361. 1;
  362. EOF
  363.  
  364. #Dovecot bug fix
  365. touch /var/log/dovecot-debug.log
  366. touch /var/log/dovecot-info.log
  367. touch /var/log/dovecot.log
  368. chmod 600 /var/log/dovecot-debug.log
  369. chmod 600 /var/log/dovecot-info.log
  370. chmod 600 /var/log/dovecot.log
  371.  
  372.  
  373. # WebPanel Install
  374. mkdir -p /usr/local/cwpsrv/htdocs
  375. cd /usr/local/cwpsrv/htdocs
  376.  
  377. cd /usr/local/cwpsrv/htdocs
  378. wget -q dl1.centos-webpanel.com/files/cwp/cwp2-0.9.8.244.zip
  379. unzip -o cwp2-0.9.8.244.zip
  380. rm -f cwp2-0.9.8.244.zip
  381.  
  382. cd /usr/local/cwpsrv/htdocs/resources/admin/include
  383. wget -q http://dl1.centos-webpanel.com/files/cwp/sql/db_conn.txt
  384. mv db_conn.txt db_conn.php
  385. cd /usr/local/cwpsrv/htdocs/resources/admin/modules
  386. wget -q http://dl1.centos-webpanel.com/files/cwp/modules/example.txt
  387. mv example.txt example.php
  388.  
  389.  
  390. # phpMyAdmin Installer
  391. cd /usr/local/cwpsrv/var/services
  392. wget -q http://dl1.centos-webpanel.com/files/mysql/phpMyAdmin-4.6.6-all-languages.zip
  393. unzip -o phpMyAdmin-4.6.6-all-languages.zip
  394. mv phpMyAdmin-4.6.6-all-languages pma
  395. rm -Rf phpMyAdmin-4.6.6-all-languages.zip pma/setup
  396.  
  397. # webFTP Installer
  398. cd /usr/local/apache/htdocs/
  399. wget -q dl1.centos-webpanel.com/files/cwp/addons/webftp_simple.zip
  400. unzip -o webftp_simple.zip
  401. rm -f webftp_simple.zip
  402.  
  403.  
  404. # Default website setup
  405. cp /usr/local/cwpsrv/htdocs/resources/admin/tpl/new_account_tpl/* /usr/local/apache/htdocs/.
  406.  
  407.  
  408. # WebPanel Settings
  409. mv /usr/local/cwpsrv/var/services/pma/config.sample.inc.php /usr/local/cwpsrv/var/services/pma/config.inc.php
  410. ran_password=$(</dev/urandom tr -dc A-Za-z0-9 | head -c32)
  411. sed -i "s|\['blowfish_secret'\] = ''|\['blowfish_secret'\] = '${ran_password}'|" /usr/local/cwpsrv/var/services/pma/config.inc.php
  412. ran_password2=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  413. sed -i "s|\$crypt_pwd = ''|\$crypt_pwd = '${ran_password2}'|" /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  414. sed -i "s|\$db_pass = ''|\$db_pass = '$password'|" /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  415. chmod 600 /usr/local/cwpsrv/htdocs/resources/admin/include/db_conn.php
  416. chmod 777 /var/lib/php/session/
  417.  
  418. # PHP Short tags fix
  419. sed -i "s|short_open_tag = Off|short_open_tag = On|" /usr/local/cwp/php71/php.ini
  420. sed -i "s|short_open_tag = Off|short_open_tag = On|" /usr/local/php/php.ini
  421.  
  422. # Setup Cron
  423. cat > /etc/cron.daily/cwp <<EOF
  424. /usr/local/cwp/php71/bin/php -d max_execution_time=1000000 -q /usr/local/cwpsrv/htdocs/resources/admin/include/cron.php
  425. /usr/local/cwp/php71/bin/php -d max_execution_time=1000000 -q /usr/local/cwpsrv/htdocs/resources/admin/include/cron_backup.php
  426. EOF
  427. chmod +x /etc/cron.daily/cwp
  428.  
  429. # MySQL Database import
  430. curl 'http://dl1.centos-webpanel.com/files/cwp/sql/root_cwp.sql'|mysql -uroot -p$password
  431.  
  432. mysql -u root -p$password << EOF
  433. use root_cwp;
  434. UPDATE settings SET shared_ip="$pubip";
  435. EOF
  436.  
  437.  
  438. # Disable named for antiDDoS security
  439. chkconfig named on
  440.  
  441. # DNS Setup
  442. if [ $centosversion -eq "5" ]; then
  443. ln -s /etc/named.rfc1912.zones /etc/named.conf
  444. fi
  445. echo "nameserver 8.8.8.8" > /etc/resolv.conf
  446. echo "nameserver 8.8.4.4" >> /etc/resolv.conf
  447. sed -i "s|127.0.0.1|any|" /etc/named.conf
  448. sed -i "s|localhost|any|" /etc/named.conf
  449. sed -i 's/recursion yes/recursion no/g' /etc/named.conf
  450.  
  451. # MAIL SERVER INSTALLER
  452.  
  453. # clean yum
  454. yum clean all
  455.  
  456.  
  457. ######## Replace and read from root foder
  458. #if [ ! -e "/usr/local/cwpsrv/htdocs/mysql.txt" ]
  459. #then
  460. #echo "\"$password\"" > /etc/webpanel/mysql.txt
  461. #fi
  462.  
  463. ##########################################################
  464. # MAIL SERVER
  465. ##########################################################
  466.  
  467.  
  468. # check MySQL root password
  469. mysql_root_password=$password
  470. if [ -z "${mysql_root_password}" ]; then
  471. read -p "MySQL root password []:" mysql_root_password
  472. fi
  473.  
  474. clear
  475. echo "#########################################################"
  476. echo " CentOS Web Panel MailServer Installer "
  477. echo "#########################################################"
  478. echo
  479. echo "visit for help: www.centos-webpanel.com"
  480. echo
  481.  
  482. check=`mysql -u root -p$mysql_root_password -e "show databases;" -B|head -n1`
  483. if [ "$check" = "Database" ]; then
  484. echo "Password OK!!"
  485. else
  486. echo "MySQL root password is invalid!!!"
  487. echo "Check password and run this script again."
  488. exit 0
  489.  
  490. fi
  491.  
  492. ## Needed to add password in root folder
  493. mysql -u root -p$mysql_root_password -e "UPDATE mysql.user SET Password = PASSWORD('$mysql_root_password') WHERE user = 'root';"
  494. mysql -u root -p$mysql_root_password -e "FLUSH PRIVILEGES;"
  495.  
  496. # password generator
  497. postfix_pwd=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  498. cnf_hostname=`/bin/hostname`
  499.  
  500. # create database and user
  501. mysql -u root -p$mysql_root_password -e "CREATE DATABASE postfix;"
  502. mysql -u root -p$mysql_root_password -e "CREATE USER postfix@localhost IDENTIFIED BY '$postfix_pwd';"
  503. mysql -u root -p$mysql_root_password -e "GRANT ALL PRIVILEGES ON postfix . * TO postfix@localhost;"
  504.  
  505. # MySQL Database import
  506. curl 'http://centos-webpanel.com/webpanel/main.php?dl=postfix.sql'|mysql -uroot -p$mysql_root_password -h localhost postfix
  507.  
  508. yum -y remove sendmail exim
  509. yum -y install postfix dovecot dovecot-mysql dovecot-pigeonhole cyrus-sasl-devel cyrus-sasl-sql subversion crontabs sysstat
  510. yum -y install perl-MailTools perl-MIME-EncWords perl-MIME-Charset perl-Email-Valid perl-Test-Pod perl-TimeDate
  511. yum -y install perl-Mail-Sender perl-Log-Log4perl imapsync offlineimap
  512. yum -y install perl-Razor-Agent perl-Convert-BinHex crypto-utils
  513. yum -y install amavisd-new clamav clamd --disablerepo=rpmforge-webpanel
  514.  
  515. # Mail Server Config
  516. sed -i "s|inet_interfaces = localhost|inet_interfaces = all|" /etc/postfix/main.cf
  517. sed -i "s|mydestination = $myhostname, localhost.$mydomain, localhost|mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, $domain|" /etc/postfix/main.cf
  518. sed -i "s|#home_mailbox = Maildir/|home_mailbox = Maildir/|" /etc/postfix/main.cf
  519.  
  520. # GET MAIL configs
  521. cd /
  522. wget -q http://dl1.centos-webpanel.com/files/mail/mail_server2.zip
  523. unzip -o /mail_server2.zip
  524. rm -f /mail_server2.zip
  525.  
  526. #User add
  527. mkdir /var/vmail
  528. chmod 770 /var/vmail
  529. useradd -r -u 101 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual mailbox" vmail
  530. chown vmail:mail /var/vmail
  531.  
  532. touch /etc/postfix/virtual_regexp
  533.  
  534. #vacation
  535. useradd -r -d /var/spool/vacation -s /sbin/nologin -c "Virtual vacation" vacation
  536. mkdir /var/spool/vacation
  537. chmod 770 /var/spool/vacation
  538. cd /var/spool/vacation/
  539. #ln -s /etc/postfix/vacation.pl /var/spool/vacation/vacation.pl
  540. ln -s /etc/postfix/vacation.php /var/spool/vacation/vacation.php
  541. chmod +x /etc/postfix/vacation.php
  542. usermod -G mail vacation
  543. chown postfix.mail /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  544. chmod 440 /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  545.  
  546. echo "autoreply.$cnf_hostname vacation:" > /etc/postfix/transport
  547. postmap /etc/postfix/transport
  548. chown -R vacation:vacation /var/spool/vacation
  549. echo "127.0.0.1 autoreply.$cnf_hostname" >> /etc/hosts
  550.  
  551. #sieve
  552. mkdir -p /var/sieve/
  553. cat > /var/sieve/globalfilter.sieve <<EOF
  554. require "fileinto";
  555. if exists "X-Spam-Flag" {
  556. if header :contains "X-Spam-Flag" "NO" {
  557. } else {
  558. fileinto "Spam";
  559. stop;
  560. }
  561. }
  562. if header :contains "subject" ["***SPAM***"] {
  563. fileinto "Spam";
  564. stop;
  565. }
  566. EOF
  567. chown -R vmail:mail /var/sieve
  568.  
  569.  
  570. #razor-admin -register -user=some_user -pass=somepas
  571. freshclam
  572. service clamd restart
  573.  
  574. ##### SSL Certifikat START #####
  575. # SSL Self signed certificate
  576. cd /root
  577. DOMAIN="$cnf_hostname"
  578. if [ -z "$DOMAIN" ]; then
  579. echo "Usage: $(basename $0) <domain>"
  580. exit 11
  581. fi
  582.  
  583. fail_if_error() {
  584. [ $1 != 0 ] && {
  585. unset PASSPHRASE
  586. exit 10
  587. }
  588. }
  589.  
  590. # Generate a passphrase
  591. export PASSPHRASE=$(head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 128; echo)
  592.  
  593. # Certificate details; replace items in angle brackets with your own info
  594. subj="
  595. C=HR
  596. ST=Zagreb
  597. O=CentOS Web Panel
  598. localityName=HR
  599. commonName=$DOMAIN
  600. organizationalUnitName=CentOS Web Panel
  601. emailAddress=info@studio4host.com
  602. "
  603.  
  604. # Generate the server private key
  605. openssl genrsa -des3 -out $DOMAIN.key -passout env:PASSPHRASE 2048
  606. fail_if_error $?
  607.  
  608. # Generate the CSR
  609. openssl req \
  610. -new \
  611. -batch \
  612. -subj "$(echo -n "$subj" | tr "\n" "/")" \
  613. -key $DOMAIN.key \
  614. -out $DOMAIN.csr \
  615. -passin env:PASSPHRASE
  616. fail_if_error $?
  617. cp $DOMAIN.key $DOMAIN.key.org
  618. fail_if_error $?
  619.  
  620. # Strip the password so we don't have to type it every time we restart Apache
  621. openssl rsa -in $DOMAIN.key.org -out $DOMAIN.key -passin env:PASSPHRASE
  622. fail_if_error $?
  623.  
  624. # Generate the cert (good for 10 years)
  625. openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
  626. fail_if_error $?
  627.  
  628. mv /root/$cnf_hostname.key /etc/pki/tls/private/hostname.key
  629. mv /root/$cnf_hostname.crt /etc/pki/tls/certs/hostname.crt
  630. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/$cnf_hostname.key
  631. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/$cnf_hostname.crt
  632. echo " " > /etc/pki/tls/certs/$cnf_hostname.bundle
  633.  
  634. # Services Certs
  635. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-cwp.crt
  636. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-dovecot.crt
  637. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-ftp.crt
  638. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-http.crt
  639. ln -s /etc/pki/tls/certs/hostname.crt /etc/pki/tls/certs/server-postfix.crt
  640.  
  641. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-cwp.key
  642. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-dovecot.key
  643. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-ftp.key
  644. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-http.key
  645. ln -s /etc/pki/tls/private/hostname.key /etc/pki/tls/private/server-postfix.key
  646.  
  647. ##### END SSL Certifikat START #####
  648.  
  649. # /etc/postfix/main.cf
  650. sed -i "s|MY_HOSTNAME|$cnf_hostname|" /etc/postfix/main.cf
  651. sed -i "s|MY_HOSTNAME|autoreply.$cnf_hostname|" /etc/postfix/mysql-virtual_vacation.cf
  652. sed -i "s|MY_DOMAIN|$cnf_hostname|" /etc/postfix/main.cf
  653.  
  654. # MySQL PWD Fix for postfix
  655. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-relay_domains_maps.cf
  656. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-virtual_alias_maps.cf
  657. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-virtual_domains_maps.cf
  658. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
  659. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-virtual_mailbox_maps.cf
  660. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/mysql-virtual_vacation.cf
  661.  
  662. # Postfix Web panel SQL setup
  663. if [ ! -e "/usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php" ]
  664. then
  665. cd /usr/local/cwpsrv/htdocs/resources/admin/include
  666. wget -q http://centos-webpanel.com/webpanel/main.php?dl=postfix.txt
  667. mv main.php?dl=postfix.txt postfix.php
  668. fi
  669. sed -i "s|\$db_pass_postfix = ''|\$db_pass_postfix = '$postfix_pwd'|" /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  670. chmod 600 /usr/local/cwpsrv/htdocs/resources/admin/include/postfix.php
  671.  
  672. # Vacation fix
  673. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/postfix/vacation.conf
  674. sed -i "s|AUTO_REPLAY|autoreply.$cnf_hostname|" /etc/postfix/vacation.conf
  675.  
  676. # DOVECOT fix
  677. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/dovecot/dovecot-dict-quota.conf
  678. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|" /etc/dovecot/dovecot-mysql.conf
  679. sed -i "s|MY_DOMAIN|$cnf_hostname|" /etc/dovecot/dovecot.conf
  680. sed -i "s|MY_DOMAIN|$cnf_hostname|" /etc/dovecot/dovecot.conf
  681.  
  682.  
  683. ##### ROUNDCUBE INSTALLER #####
  684. /usr/local/cwp/php71/bin/pear install Mail_mime
  685. /usr/local/cwp/php71/bin/pear install Net_SMTP
  686. /usr/local/cwp/php71/bin/pear install channel://pear.php.net/Net_IDNA2-0.1.1
  687.  
  688. #SIEVE REQUIREMENTS
  689. # >=5.3.0, roundcube/plugin-installer: >=0.1.3, roundcube/net_sieve: "1.5.0
  690. /usr/local/cwp/php71/bin/pear install Net_Sieve
  691.  
  692. if [ -z "${mysql_roundcube_password}" ]; then
  693. tmp=$(</dev/urandom tr -dc A-Za-z0-9 | head -c12)
  694. mysql_roundcube_password=${mysql_roundcube_password:-${tmp}}
  695. echo "MySQL roundcube: ${mysql_roundcube_password}" >> .passwords
  696. fi
  697.  
  698. if [ -z "${mysql_root_password}" ]; then
  699. read -p "MySQL root password []:" mysql_root_password
  700. fi
  701.  
  702. wget -P /usr/local/cwpsrv/var/services http://dl1.centos-webpanel.com/files/mail/roundcubemail-1.2.3.tar.gz
  703. tar -C /usr/local/cwpsrv/var/services -zxvf /usr/local/cwpsrv/var/services/roundcubemail-*.tar.gz
  704. rm -f /usr/local/cwpsrv/var/services/roundcubemail-*.tar.gz
  705. mv /usr/local/cwpsrv/var/services/roundcubemail-* /usr/local/cwpsrv/var/services/roundcube
  706. chown cwpsvc:cwpsvc -R /usr/local/cwpsrv/var/services/roundcube
  707. chmod 777 -R /usr/local/cwpsrv/var/services/roundcube/temp/
  708. chmod 777 -R /usr/local/cwpsrv/var/services/roundcube/logs/
  709.  
  710. sed -e "s|mypassword|${mysql_roundcube_password}|" <<'EOF' | mysql -u root -p"${mysql_root_password}"
  711. USE mysql;
  712. CREATE DATABASE IF NOT EXISTS roundcube;
  713. GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube'@'localhost' IDENTIFIED BY 'mypassword';
  714. FLUSH PRIVILEGES;
  715. EOF
  716.  
  717. mysql -u root -p"${mysql_root_password}" 'roundcube' < /usr/local/cwpsrv/var/services/roundcube/SQL/mysql.initial.sql
  718.  
  719. cp /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php.sample /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  720.  
  721. sed -i "s|^\(\$config\['default_host'\] =\).*$|\1 \'localhost\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  722. sed -i "s|^\(\$config\['smtp_server'\] =\).*$|\1 \'localhost\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  723. sed -i "s|^\(\$config\['smtp_user'\] =\).*$|\1 \'%u\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  724. sed -i "s|^\(\$config\['smtp_pass'\] =\).*$|\1 \'%p\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  725. #sed -i "s|^\(\$config\['support_url'\] =\).*$|\1 \'mailto:${E}\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  726. sed -i "s|^\(\$config\['quota_zero_as_unlimited'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  727. sed -i "s|^\(\$config\['preview_pane'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  728. sed -i "s|^\(\$config\['read_when_deleted'\] =\).*$|\1 false;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  729. sed -i "s|^\(\$config\['check_all_folders'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  730. sed -i "s|^\(\$config\['display_next'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  731. sed -i "s|^\(\$config\['top_posting'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  732. sed -i "s|^\(\$config\['sig_above'\] =\).*$|\1 true;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  733. sed -i "s|^\(\$config\['login_lc'\] =\).*$|\1 2;|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  734. sed -i "s|MYSQL_PASSWORD|$postfix_pwd|g" /usr/local/cwpsrv/var/services/roundcube/plugins/password/config.inc.php
  735. sed -i "s|^\(\$config\['db_dsnw'\] =\).*$|\1 \'mysqli://roundcube:${mysql_roundcube_password}@localhost/roundcube\';|" /usr/local/cwpsrv/var/services/roundcube/config/config.inc.php
  736. rm -rf /usr/local/cwpsrv/var/services/roundcube/installer
  737. chown -R cwpsvc:cwpsvc /usr/local/cwpsrv/var/services/roundcube
  738.  
  739. # Setup Login Screen
  740. [[ $(grep "bash_cwp" /root/.bash_profile) == "" ]] && echo "sh /root/.bash_cwp" >> /root/.bash_profile
  741.  
  742. cat > /root/.bash_cwp <<EOF
  743. echo ""
  744. echo "********************************************"
  745. echo "Welcome to CWP (CentOS WebPanel) server"
  746. echo "Restart CWP using: service cwpsrv restart"
  747. echo "********************************************"
  748. echo ""
  749. echo "CWP Wiki: http://wiki.centos-webpanel.com"
  750. echo "CWP Forum: http://forum.centos-webpanel.com"
  751. echo "CWP Support: http://centos-webpanel.com/support-services"
  752. echo ""
  753. w
  754. echo ""
  755. EOF
  756.  
  757. # FIX /etc/init.d links
  758. yum -y remove httpd
  759. cd /etc/init.d/
  760. rm -f /etc/init.d/httpd
  761. wget -q http://dl1.centos-webpanel.com/files/s_scripts/httpd
  762. chmod +x /etc/init.d/httpd
  763.  
  764. if [ ! -e "/scripts" ]
  765. then
  766. cd /;ln -s /usr/local/cwpsrv/htdocs/resources/scripts /scripts
  767. fi
  768.  
  769. # FIX QUOTA for first few users caused by UID & GID
  770. sed -i 's/^UID_MIN.*/UID_MIN 700/' /etc/login.defs
  771. sed -i 's/^GID_MIN.*/GID_MIN 700/' /etc/login.defs
  772.  
  773. # Email AutoResponder Fix
  774. chmod +x /usr/sbin/sendmail.postfix
  775.  
  776. # NAT-ed networking setup detection
  777. checklocal=`/sbin/ip addr sh | grep $pubip`
  778.  
  779. if [ -z "$checklocal" ];then
  780. mkdir -p /usr/local/cwp/.conf/
  781. touch /usr/local/cwp/.conf/nat_check.conf
  782. fi
  783.  
  784. # Chkconfig
  785. # iptables -F
  786. chkconfig iptables off
  787. chkconfig httpd on
  788. chkconfig cwpsrv on
  789. chkconfig mysqld on
  790. chkconfig pure-ftpd on
  791. chkconfig postfix on
  792. chkconfig dovecot on
  793.  
  794. # Lets make php easier for usage
  795. ln -s /usr/local/bin/php /bin/php
  796. ln -s /usr/local/bin/php /usr/bin/php
  797.  
  798. # service restart
  799. service httpd restart
  800. service cwpsrvd restart
  801.  
  802. # Check /tmp
  803. if [[ `cat /etc/fstab | grep -E 'tmp.*noexec'` != "" ]]; then mount -o remount /tmp >/dev/null 2>&1 ; fi
  804.  
  805. chown vmail.mail /var/log/dovecot*
  806. chown -R nobody:nobody /usr/local/apache/htdocs/*
  807. /usr/bin/chattr +i /usr/local/cwpsrv/htdocs/admin
  808.  
  809. # NAT-ed networking setup detection
  810. checklocal=`/sbin/ip addr sh | grep $pubip`
  811.  
  812. if [ -z "$checklocal" ];then
  813. mkdir -p /usr/local/cwp/.conf/
  814. touch /usr/local/cwp/.conf/nat_check.conf
  815. fi
  816.  
  817. clear
  818. echo "#############################"
  819. echo "# CWP Installed #"
  820. echo "#############################"
  821. echo ""
  822. echo "go to CentOS WebPanel Admin GUI at http://SERVER_IP:2030/"
  823. echo ""
  824. echo "http://${pubip}:2030"
  825. echo "SSL: https://${pubip}:2031"
  826. echo -e "---------------------"
  827. echo "Username: root"
  828. echo "Password: ssh server root password"
  829. echo "MySQL root Password: $password"
  830. echo
  831. echo "#########################################################"
  832. echo " CentOS Web Panel MailServer Installer "
  833. echo "#########################################################"
  834. #echo "Roundcube MySQL Password: ${mysql_roundcube_password}"
  835. #echo "Postfix MySQL Password: ${postfix_pwd}"
  836. echo "SSL Cert name (hostname): ${cnf_hostname}"
  837. echo "SSL Cert file location /etc/pki/tls/ private|certs"
  838. echo "#########################################################"
  839. echo
  840. echo "visit for help: www.centos-webpanel.com"
  841. echo "Write down login details and press ENTER for server reboot!"
  842. read -p "Press ENTER for server reboot!"
  843. shutdown -r now
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement