Advertisement
Guest User

Untitled

a guest
May 1st, 2017
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.58 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # --------------------------------------------------------------------------------
  4. # HOMER/SipCapture automated installation script for Debian/CentOs/OpenSUSE (BETA)
  5. # --------------------------------------------------------------------------------
  6. # This script is only intended as a quickstart to test and get familiar with HOMER.
  7. # It is not suitable for high-traffic nodes, complex capture scenarios, clusters.
  8. # The HOW-TO should be ALWAYS followed for a fully controlled, manual installation!
  9. # --------------------------------------------------------------------------------
  10. #
  11. # Copyright notice:
  12. #
  13. # (c) 2011-2016 Lorenzo Mangani <lorenzo.mangani@gmail.com>
  14. # (c) 2011-2016 Alexandr Dubovikov <alexandr.dubovikov@gmail.com>
  15. #
  16. # All rights reserved
  17. #
  18. # This script is part of the HOMER project (http://sipcapture.org)
  19. # The HOMER project is free software; you can redistribute it and/or
  20. # modify it under the terms of the GNU Affero General Public License as
  21. # published by the Free Software Foundation; either version 3 of
  22. # the License, or (at your option) any later version.
  23. #
  24. # You should have received a copy of the GNU Affero General Public License
  25. # along with this program. If not, see <http://www.gnu.org/licenses/>
  26. #
  27. # This script is distributed in the hope that it will be useful,
  28. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  29. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  30. # GNU Affero General Public License for more details.
  31. #
  32. # This copyright notice MUST APPEAR in all copies of the script!
  33. #
  34.  
  35. #####################################################################
  36. # #
  37. # WARNING: THIS SCRIPT IS NOW UPDATED TO SUPPORT HOMER 5.x #
  38. # PLEASE USE WITH CAUTION AND HELP US BY REPORTING BUGS! #
  39. # #
  40. #####################################################################
  41.  
  42. # HOMER Options, defaults
  43. DB_USER=homer_user
  44. DB_PASS=homer_password
  45. DB_HOST="127.0.0.1"
  46. LISTEN_PORT=9060
  47. LOCAL_IP=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
  48.  
  49. # HOMER MySQL Options, defaults
  50. sqluser=root
  51. sqlpassword=secret
  52.  
  53. #### NO CHANGES BELOW THIS LINE!
  54.  
  55. VERSION=5.0.1
  56. HOSTNAME=$(hostname)
  57.  
  58. logfile=/tmp/homer_installer.log
  59.  
  60. # LOG INSTALLER OUTPUT TO $logfile
  61. mkfifo ${logfile}.pipe
  62. tee < ${logfile}.pipe $logfile &
  63. exec &> ${logfile}.pipe
  64. rm ${logfile}.pipe
  65.  
  66. clear;
  67. echo "**************************************************************"
  68. echo " "
  69. echo " ,;;;;;, HOMER SIP CAPTURE (http://sipcapture.org) "
  70. echo " ;;;;;;;;;. Single-Node Auto-Installer (beta $VERSION)"
  71. echo " ;;;;;;;;;;;;; "
  72. echo " ;;;; ;;; ;;;; <--------------- INVITE --------------- "
  73. echo " ;;;; ;;; ;;;; --------------- 200 OK ---------------> "
  74. echo " ;;;; ... ;;;; "
  75. echo " ;;;; ;;;; WARNING: This installer is intended for "
  76. echo " ;;;; ;;; ;;;; dedicated/vanilla OS setups without any "
  77. echo " ,;;; ;;; ;;;; customization and with default settings "
  78. echo " ;;;;;;;;;;;;; "
  79. echo " :;;;;;;;;;; THIS SCRIPT IS PROVIDED AS-IS, USE AT "
  80. echo " ^;;;;;;;^ YOUR *OWN* RISK, REVIEW LICENSE & DOCS "
  81. echo " "
  82. echo "**************************************************************"
  83. echo;
  84.  
  85.  
  86. # Check if we're good on permissions
  87. if [ "$(id -u)" != "0" ]; then
  88. echo "ERROR: You must be a root user. Exiting..." 2>&1
  89. echo 2>&1
  90. exit 1
  91. fi
  92.  
  93. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
  94.  
  95. echo "OS: Dectecting System...."
  96. # Identify Linux Flavour
  97. if [ -f /etc/debian_version ] ; then
  98. DIST="DEBIAN"
  99. echo "OS: DEBIAN detected"
  100. elif [ -f /etc/redhat-release ] ; then
  101. DIST="CENTOS"
  102. VERS=$(cat /etc/redhat-release |cut -d' ' -f4 |cut -d'.' -f1)
  103. if [ "$VERS" = "7" ]; then
  104. echo "OS: CENTOS 7 detected"
  105. read -p "Support for CentOS is experimental and likely broken. Continue (y/N)? " choice
  106. case "$choice" in
  107. y|Y ) echo;;
  108. n|N ) echo "Exiting" && exit 1;;
  109. * ) echo "invalid" && exit 1 ;;
  110. esac
  111. fi
  112. # elif [ -f /etc/SuSE-release ] ; then
  113. # DIST="SUSE"
  114. # echo "OS: SUSE detected"
  115. else
  116. echo "ERROR:"
  117. echo "Sorry, this Installer does not support your OS yet!"
  118. echo "Please follow instructions in the HOW-TO for manual installation & setup"
  119. echo "available at http://sipcapture.org"
  120. echo
  121. exit 1
  122. fi
  123.  
  124.  
  125. read -p "This script expect a Vanilla OS and will override settings. Continue (y/N)? " choice
  126. case "$choice" in
  127. y|Y ) echo "Proceeding...";;
  128. n|N ) echo "Exiting" && exit 1;;
  129. * ) echo "invalid" && exit 1 ;;
  130. esac
  131.  
  132. # Setup Kamailio/Sipcapture from Packages
  133. echo
  134. echo "**************************************************************"
  135. echo " INSTALLING OS PACKAGES AND DEPENDENCIES FOR HOMER SIPCAPTURE"
  136. echo "**************************************************************"
  137. echo
  138. echo "This might take a while depending on system/network speed. Please stand by...."
  139. echo
  140.  
  141. case $DIST in
  142. 'DEBIAN')
  143. WEBROOT="/var/www/html/"
  144. WEBSERV="apache2"
  145. MYSQL="mysql"
  146. # General
  147. export DEBIAN_FRONTEND=noninteractive
  148. export LANG=en_US.utf8
  149. export LC_ALL="en_US.UTF-8"
  150. locale-gen "en_US.UTF-8" && dpkg-reconfigure locales
  151. apt-get update -qq
  152. apt-get install --no-install-recommends --no-install-suggests -yqq ca-certificates apache2 libapache2-mod-php5 php5 php5-cli php5-gd php-pear php5-dev php5-mysql php5-json php-services-json git wget pwgen
  153. #enable apache mod_php and mod_rewrite
  154. a2enmod php5
  155. a2enmod rewrite
  156. # Generate Certificates if not present
  157. if [ ! -f "/etc/ssl/localcerts/apache.key" ]; then
  158. mkdir -p /etc/ssl/localcerts
  159. openssl req -new -x509 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
  160. chmod 600 /etc/ssl/localcerts/apache*
  161. fi
  162. # activate ssl
  163. a2enmod ssl
  164.  
  165.  
  166. # MySQL
  167. apt-get install -y perl libdbi-perl libclass-dbi-mysql-perl --no-install-recommends
  168. apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys A4A9406876FCBD3C456770C88C718D3B5072E1F5
  169. echo "deb http://repo.mysql.com/apt/debian/ jessie mysql-5.7" > /etc/apt/sources.list.d/mysql.list
  170. apt-get update && apt-get install -y mysql-server libmysqlclient18
  171. # Kamailio + sipcapture module
  172. apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xfb40d3e6508ea4c8
  173. echo "deb http://deb.kamailio.org/kamailio44 jessie main" > /etc/apt/sources.list.d/kamailio.list
  174. echo "deb-src http://deb.kamailio.org/kamailio44 jessie main" >> /etc/apt/sources.list.d/kamailio.list
  175. apt-get update && apt-get install -f -yqq kamailio rsyslog kamailio-outbound-modules kamailio-geoip-modules kamailio-sctp-modules kamailio-tls-modules kamailio-websocket-modules kamailio-utils-modules kamailio-mysql-modules kamailio-extra-modules geoip-database geoip-database-extra
  176.  
  177.  
  178. cd /usr/src/
  179. if [ ! -d "/usr/src/homer-api" ]; then
  180. echo "GIT: Cloning Homer components..."
  181. git clone --depth 1 https://github.com/sipcapture/homer-api.git homer-api
  182. git clone --depth 1 https://github.com/sipcapture/homer-ui.git homer-ui
  183. git clone --depth 1 https://github.com/sipcapture/homer-config.git homer-config
  184. chmod +x /usr/src/homer-api/scripts/mysql/*
  185. cp /usr/src/homer-api/scripts/mysql/* /opt/
  186. ln -s /opt/homer_mysql_rotate /opt/homer_rotate
  187. else
  188. echo "GIT: Updating Homer components..."
  189. cd homer-api; git pull; cd ..
  190. cd homer-ui; git pull; cd ..
  191. cd homer-config; git pull; cd ..
  192. #copy any newly updated scripts
  193. chmod +x /usr/src/homer-api/scripts/mysql/*
  194. cp /usr/src/homer-api/scripts/mysql/* /opt/
  195. ln -s /opt/homer_mysql_rotate /opt/homer_rotate
  196. fi
  197.  
  198. cp -R /usr/src/homer-ui/* $WEBROOT/
  199. cp -R /usr/src/homer-api/api $WEBROOT/
  200. chown -R www-data:www-data $WEBROOT/store/
  201. chmod -R 0775 $WEBROOT/store/dashboard
  202.  
  203. SQL_LOCATION=/usr/src/homer-api/sql/mysql
  204.  
  205. cp /usr/src/homer-config/docker/configuration.php $WEBROOT/api/configuration.php
  206. cp /usr/src/homer-config/docker/preferences.php $WEBROOT/api/preferences.php
  207. cp /usr/src/homer-config/docker/vhost.conf /etc/apache2/sites-enabled/000-default.conf
  208.  
  209. cp /usr/src/homer-config/sipcapture/sipcapture.kamailio /etc/kamailio/kamailio.cfg
  210. chmod 775 /etc/kamailio/kamailio.cfg
  211.  
  212. (crontab -l ; echo "30 3 * * * /opt/homer_rotate >> /var/log/cron.log 2>&1") | crontab -
  213.  
  214. # Handy-dandy MySQL run function
  215. function MYSQL_RUN () {
  216.  
  217. echo 'Starting mysqld'
  218. /etc/init.d/mysql start
  219. #echo 'Waiting for mysqld to come online'
  220. while [ ! -x /var/run/mysqld/mysqld.sock ]; do
  221. sleep 1
  222. done
  223.  
  224. }
  225.  
  226. # MySQL data loading function
  227. function MYSQL_INITIAL_DATA_LOAD () {
  228.  
  229. echo "Enter the SQL User details for the HOMER Client:"
  230. echo "MYSQL Homer User: (empty for default)"
  231. read sqlhomeruser
  232. echo "MYSQL Homer Pass: (empty for randomized)"
  233. stty -echo
  234. read sqlhomerpassword
  235. echo "WARNING: Choose a password for MySQL ROOT account (empty by default!)"
  236. stty -echo
  237. read sqlpassword
  238. stty echo
  239.  
  240. if [ "$sqlhomeruser" = "" ] ; then
  241. echo "Using default username..."
  242. sqlhomeruser="homer"
  243. DB_USER="$sqlhomeruser"
  244. fi
  245.  
  246. if [ "$sqlhomerpassword" = "" ] ; then
  247. echo "Using random password... "
  248. sqlhomerpassword=$(cat /dev/urandom|tr -dc "a-zA-Z0-9"|fold -w 9|head -n 1)
  249. fi
  250.  
  251. DB_USER="$sqlhomeruser"
  252. DB_PASS="$sqlhomerpassword"
  253. DATADIR=/var/lib/mysql
  254.  
  255. echo "Beginning initial data load...."
  256.  
  257. #chown -R mysql:mysql "$DATADIR"
  258. #mysql_install_db --user=mysql --datadir="$DATADIR"
  259.  
  260. MYSQL_RUN
  261.  
  262. echo "Creating Databases..."
  263. mysql -u "$sqluser" < $SQL_LOCATION/homer_databases.sql
  264. # mysql -u "$sqluser" < $SQL_LOCATION/homer_user.sql
  265.  
  266. echo "Creating Tables..."
  267. mysql -u "$sqluser" homer_data < $SQL_LOCATION/schema_data.sql
  268. # patch password for centos
  269. # perl -p -i -e "s/test123/test1234/" $SQL_LOCATION/schema_configuration.sql
  270. mysql -u "$sqluser" homer_configuration < $SQL_LOCATION/schema_configuration.sql
  271. mysql -u "$sqluser" homer_statistic < $SQL_LOCATION/schema_statistic.sql
  272.  
  273. # echo "Creating local DB Node..."
  274. mysql -u "$sqluser" homer_configuration -e "INSERT INTO node VALUES(1,'mysql','homer_data','3306','"$DB_USER"','"$DB_PASS"','sip_capture','node1', 1);"
  275.  
  276. echo 'Setting root password....'
  277. mysql -u "$sqluser" -e "GRANT ALL ON *.* TO '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;";
  278. if [ "$sqlhomerpassword" = "" ] ; then
  279. echo "WARNING! MySQL root password is empty and insecure!"
  280. else
  281. mysql -u "$sqluser" -e "SET PASSWORD = PASSWORD('$sqlpassword');"
  282. fi
  283.  
  284. echo "Homer initial data load complete" > $DATADIR/.homer_initialized
  285.  
  286. }
  287.  
  288. # Initialize Database
  289. MYSQL_INITIAL_DATA_LOAD
  290.  
  291. # HOMER API CONFIG
  292. echo "Patching Homer configuration..."
  293. PATH_HOMER_CONFIG=$WEBROOT/api/configuration.php
  294. chmod 775 $PATH_HOMER_CONFIG
  295.  
  296. # Patch rotation script auth
  297. perl -p -i -e "s/homer_user/$DB_USER/" /opt/homer_rotate
  298. perl -p -i -e "s/homer_password/$DB_PASS/" /opt/homer_rotate
  299. perl -p -i -e "s/homer_user/$DB_USER/" /opt/rotation.ini
  300. perl -p -i -e "s/homer_password/$DB_PASS/" /opt/rotation.ini
  301.  
  302. # Replace values in template
  303. perl -p -i -e "s/\{\{ DB_PASS \}\}/$DB_PASS/" $PATH_HOMER_CONFIG
  304. perl -p -i -e "s/\{\{ DB_HOST \}\}/$DB_HOST/" $PATH_HOMER_CONFIG
  305. perl -p -i -e "s/\{\{ DB_USER \}\}/$DB_USER/" $PATH_HOMER_CONFIG
  306. # Set Permissions for webapp
  307. mkdir $WEBROOT/api/tmp
  308. chmod -R 0777 $WEBROOT/api/tmp/
  309. chmod -R 0775 $WEBROOT/store/dashboard*
  310.  
  311. # Reconfigure SQL rotation
  312. export PATH_ROTATION_SCRIPT=/opt/homer_rotate
  313. chmod 775 $PATH_ROTATION_SCRIPT
  314. chmod +x $PATH_ROTATION_SCRIPT
  315. perl -p -i -e "s/homer_user/$sqlhomeruser/" $PATH_ROTATION_SCRIPT
  316. perl -p -i -e "s/homer_password/$sqlhomerpassword/" $PATH_ROTATION_SCRIPT
  317. # Init rotation
  318. /opt/homer_rotate > /dev/null 2>&1
  319.  
  320. # KAMAILIO
  321. export PATH_KAMAILIO_CFG=/etc/kamailio/kamailio.cfg
  322. cp /usr/src/homer-config/sipcapture/sipcapture.kamailio $PATH_KAMAILIO_CFG
  323.  
  324. awk '/max_while_loops=100/{print $0 RS "mpath=\"//usr/lib/x86_64-linux-gnu/kamailio/modules/\"";next}1' $PATH_KAMAILIO_CFG >> $PATH_KAMAILIO_CFG.tmp | 2&>1 >/dev/null
  325. mv $PATH_KAMAILIO_CFG.tmp $PATH_KAMAILIO_CFG
  326.  
  327. # Replace values in template
  328. perl -p -i -e "s|^(#!substdef \"!HOMER_LISTEN_PORT)!.*|\1!${LISTEN_PORT}!g\"|" $PATH_KAMAILIO_CFG
  329. perl -p -i -e "s|^(#!substdef \"!HOMER_DB_USER)!.*|\1!${DB_USER}!g\"|" $PATH_KAMAILIO_CFG
  330. perl -p -i -e "s|^(#!substdef \"!HOMER_DB_PASSWORD)!.*|\1!${DB_PASS}!g\"|" $PATH_KAMAILIO_CFG
  331. sed -i -e "s/#RUN_KAMAILIO/RUN_KAMAILIO/g" /etc/default/kamailio
  332. sed -i -e "s/#CFGFILE/CFGFILE/g" /etc/default/kamailio
  333. sed -i -e "s/#USER/USER/g" /etc/default/kamailio
  334. sed -i -e "s/#GROUP/GROUP/g" /etc/default/kamailio
  335.  
  336. # Test the syntax.
  337. # kamailio -c $PATH_KAMAILIO_CFG
  338.  
  339. # Start Apache
  340. # apachectl -DFOREGROUND
  341. update-rc.d apache2 enable
  342. /etc/init.d/apache2 restart
  343.  
  344. # It's Homer time!
  345. update-rc.d kamailio enable
  346. /etc/init.d/kamailio restart
  347.  
  348. ;;
  349.  
  350. 'CENTOS')
  351. WEBROOT="/var/www/html/"
  352. WEBSERV="httpd"
  353. MYSQL="mysqld"
  354. yum -y install wget
  355. COMMON_PKGS=" autoconf automake bzip2 cpio curl curl-devel curl-devel expat-devel fileutils make gcc gcc-c++ gettext-devel gnutls-devel openssl openssl-devel openssl-devel mod_ssl perl patch unzip wget zip zlib zlib-devel bison flex pcre-devel libxml2-devel sox httpd php php-gd php-mysql php-json git php-mysql php-devel"
  356. VERS=$(cat /etc/redhat-release |cut -d' ' -f4 |cut -d'.' -f1)
  357. if [ "$VERS" = "6" ]; then
  358. wget http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
  359. yum -y localinstall mysql57-community-release-el6-7.noarch.rpm
  360. if [ ! "$?" == "0" ]; then
  361. echo
  362. echo "HALT! Something went wrong. Please resolve the errors above and try again."
  363. exit 1
  364. fi
  365. wget http://download.opensuse.org/repositories/home:/kamailio:/v4.4.x-rpms/CentOS_6/home:kamailio:v4.4.x-rpms.repo -O /etc/yum.repos.d/kamailio.repo
  366.  
  367. elif [ "$VERS" = "7" ]; then
  368. wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
  369. yum -y localinstall mysql57-community-release-el7-7.noarch.rpm
  370. if [ ! "$?" == "0" ]; then
  371. echo
  372. echo "HALT! Something went wrong. Please resolve the errors above and try again."
  373. exit 1
  374. fi
  375. wget http://download.opensuse.org/repositories/home:/kamailio:/v4.4.x-rpms/CentOS_7/home:kamailio:v4.4.x-rpms.repo -O /etc/yum.repos.d/kamailio.repo
  376. fi
  377. yum -y update
  378. yum -y install $COMMON_PKGS libdbi-dbd-mysql perl-DBD-MySQL mysql-community-server kamailio rsyslog kamailio-outbound kamailio-sctp kamailio-tls kamailio-websocket kamailio-jansson kamailio-mysql
  379. chkconfig mysqld on
  380. chkconfig httpd on
  381. chkconfig kamailio on
  382.  
  383. # HOMER GIT
  384. cd /usr/src/
  385. if [ ! -d "/usr/src/homer-api" ]; then
  386. echo "GIT: Cloning Homer components..."
  387. git clone --depth 1 https://github.com/sipcapture/homer-api.git homer-api
  388. git clone --depth 1 https://github.com/sipcapture/homer-ui.git homer-ui
  389. git clone --depth 1 https://github.com/sipcapture/homer-config.git homer-config
  390. chmod +x /usr/src/homer-api/scripts/mysql/*
  391. cp /usr/src/homer-api/scripts/mysql/* /opt/
  392. ln -s /opt/homer_mysql_rotate /opt/homer_rotate
  393. else
  394. echo "GIT: Updating Homer components..."
  395. cd homer-api; git pull; cd ..
  396. cd homer-ui; git pull; cd ..
  397. cd homer-config; git pull; cd ..
  398. #copy any newly updated scripts
  399. chmod +x /usr/src/homer-api/scripts/mysql/*
  400. cp /usr/src/homer-api/scripts/mysql/* /opt/
  401. ln -s /opt/homer_mysql_rotate /opt/homer_rotate
  402. fi
  403.  
  404. cp -R /usr/src/homer-ui/* $WEBROOT/
  405. cp -R /usr/src/homer-api/api $WEBROOT/
  406. chown -R www-data:www-data $WEBROOT/store/
  407. chmod -R 0775 $WEBROOT/store/dashboard
  408.  
  409. SQL_LOCATION=/usr/src/homer-api/sql/mysql
  410.  
  411. cp /usr/src/homer-config/docker/configuration.php $WEBROOT/api/configuration.php
  412. cp /usr/src/homer-config/docker/preferences.php $WEBROOT/api/preferences.php
  413. cp /usr/src/homer-config/docker/vhost.conf /etc/httpd/conf.d/sipcapture.conf
  414. #Kamailio 4 config
  415. cp /usr/src/homer-config/sipcapture/sipcapture.kamailio /etc/kamailio/kamailio.cfg
  416. chmod 775 /etc/kamailio/kamailio.cfg
  417.  
  418. (crontab -l ; echo "30 3 * * * /opt/homer_rotate >> /var/log/cron.log 2>&1") | crontab -
  419.  
  420. # Handy-dandy MySQL run function
  421. function MYSQL_RUN () {
  422.  
  423. echo 'Starting mysqld'
  424. service mysqld start
  425. echo 'Waiting for mysqld to start...'
  426. while [ ! -x /var/lib/mysql/mysql.sock ]; do
  427. sleep 1
  428. done
  429. }
  430.  
  431. # MySQL data loading function
  432. function MYSQL_INITIAL_DATA_LOAD () {
  433.  
  434. MYSQL_RUN
  435.  
  436. sqlpassword=$(grep 'temporary password' /var/log/mysqld.log | awk '{ print $(NF) }')
  437. echo "Starting mysql secure installation [ $sqlpassword ] "
  438. echo "Please follow the prompts: "
  439. sudo mysql_secure_installation -p"$sqlpassword" --use-default
  440. echo "------------"
  441. echo
  442. read -p "Please provide MYSQL root password: " sqlpassword
  443. while ! mysql -u root -p$sqlpassword -e ";" ; do
  444. read -p "Can't connect, please try again: " sqlpassword
  445. done
  446.  
  447. echo "Generating homer mysql user..."
  448. sqlhomeruser="homer"
  449. DB_USER="$sqlhomeruser"
  450. # echo "Using random password... "
  451. sqlhomerpassword=$(cat /dev/urandom|tr -dc "a-zA-Z0-9"|fold -w 9|head -n 1)
  452. DB_PASS="$sqlhomerpassword"
  453.  
  454. DATADIR=/var/lib/mysql
  455.  
  456.  
  457. echo "Beginning initial data load...."
  458.  
  459. #chown -R mysql:mysql "$DATADIR"
  460. #mysql_install_db --user=mysql --datadir="$DATADIR"
  461.  
  462. MYSQL_RUN
  463.  
  464. mysql -u "$sqluser" -p"$sqlpassword" -e "SET GLOBAL validate_password_policy=LOW; GRANT ALL ON *.* TO '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;";
  465.  
  466. echo "Creating Databases..."
  467. mysql -u "$DB_USER" -p"$DB_PASS" < $SQL_LOCATION/homer_databases.sql
  468. # mysql -u "$DB_USER" -p"$DB_PASS" < $SQL_LOCATION/homer_user.sql
  469.  
  470. echo "Creating Tables..."
  471. mysql -u "$DB_USER" -p"$DB_PASS" homer_data < $SQL_LOCATION/schema_data.sql
  472.  
  473. # patch password for centos min policy
  474. perl -p -i -e "s/test123/test1234/" $SQL_LOCATION/schema_configuration.sql
  475. perl -p -i -e "s/123test/1234test/" $SQL_LOCATION/schema_configuration.sql
  476.  
  477. mysql -u "$DB_USER" -p"$DB_PASS" homer_configuration < $SQL_LOCATION/schema_configuration.sql
  478. mysql -u "$DB_USER" -p"$DB_PASS" homer_statistic < $SQL_LOCATION/schema_statistic.sql
  479.  
  480. # echo "Creating local DB Node..."
  481. mysql -u "$DB_USER" -p"$DB_PASS" homer_configuration -e "INSERT INTO node VALUES(1,'mysql','homer_data','3306','"$DB_USER"','"$DB_PASS"','sip_capture','node1', 1);"
  482.  
  483. echo "Homer initial data load complete" > $DATADIR/.homer_initialized
  484.  
  485. }
  486.  
  487. # Initialize Database
  488. MYSQL_INITIAL_DATA_LOAD
  489.  
  490. # HOMER API CONFIG
  491. echo "Patching Homer configuration..."
  492. PATH_HOMER_CONFIG=$WEBROOT/api/configuration.php
  493. chmod 775 $PATH_HOMER_CONFIG
  494.  
  495. # Patch rotation script auth
  496. perl -p -i -e "s/homer_user/$DB_USER/" /opt/homer_rotate
  497. perl -p -i -e "s/homer_password/$DB_PASS/" /opt/homer_rotate
  498. perl -p -i -e "s/homer_user/$DB_USER/" /opt/rotation.ini
  499. perl -p -i -e "s/homer_password/$DB_PASS/" /opt/rotation.ini
  500. # Patch rotation script mysql socket location
  501. perl -p -i -e "s/lib\/mysql/var\/mysqld/" /opt/rotation.ini
  502.  
  503. # Replace values in template
  504. perl -p -i -e "s/\{\{ DB_PASS \}\}/$DB_PASS/" $PATH_HOMER_CONFIG
  505. perl -p -i -e "s/\{\{ DB_HOST \}\}/$DB_HOST/" $PATH_HOMER_CONFIG
  506. perl -p -i -e "s/\{\{ DB_USER \}\}/$DB_USER/" $PATH_HOMER_CONFIG
  507. # API talks to localhost on CentOS
  508. perl -p -i -e "s/127.0.0.1/localhost/" $PATH_HOMER_CONFIG
  509.  
  510. # Set Permissions for webapp
  511. mkdir $WEBROOT/api/tmp
  512. chmod -R 0777 $WEBROOT/api/tmp/
  513. chmod -R 0775 $WEBROOT/store/dashboard*
  514.  
  515. # Reconfigure SQL rotation
  516. export PATH_ROTATION_SCRIPT=/opt/homer_rotate
  517. chmod 775 $PATH_ROTATION_SCRIPT
  518. chmod +x $PATH_ROTATION_SCRIPT
  519. perl -p -i -e "s/homer_user/$sqlhomeruser/" $PATH_ROTATION_SCRIPT
  520. perl -p -i -e "s/homer_password/$sqlhomerpassword/" $PATH_ROTATION_SCRIPT
  521. # Init rotation
  522. /opt/homer_rotate > /dev/null 2>&1
  523.  
  524. # KAMAILIO
  525. export PATH_KAMAILIO_CFG=/etc/kamailio/kamailio.cfg
  526. cp /usr/src/homer-config/sipcapture/sipcapture.kamailio $PATH_KAMAILIO_CFG
  527.  
  528. awk '/max_while_loops=100/{print $0 RS "mpath=\"//usr/lib/x86_64-linux-gnu/kamailio/modules/\"";next}1' $PATH_KAMAILIO_CFG >> $PATH_KAMAILIO_CFG.tmp | 2&>1 >/dev/null
  529. mv $PATH_KAMAILIO_CFG.tmp $PATH_KAMAILIO_CFG
  530. # Create SymLink for modules
  531. ln -s /usr/lib64 /usr/lib/x86_64-linux-gnu
  532.  
  533. # Replace values in template
  534. perl -p -i -e "s/\{\{ LISTEN_PORT \}\}/$LISTEN_PORT/" $PATH_KAMAILIO_CFG
  535. perl -p -i -e "s/\{\{ DB_PASS \}\}/$DB_PASS/" $PATH_KAMAILIO_CFG
  536. perl -p -i -e "s/\{\{ DB_HOST \}\}/$DB_HOST/" $PATH_KAMAILIO_CFG
  537. perl -p -i -e "s/\{\{ DB_USER \}\}/$DB_USER/" $PATH_KAMAILIO_CFG
  538.  
  539. sed -i -e "s/#RUN_KAMAILIO/RUN_KAMAILIO/g" /etc/default/kamailio
  540. sed -i -e "s/#CFGFILE/CFGFILE/g" /etc/default/kamailio
  541. sed -i -e "s/#USER/USER/g" /etc/default/kamailio
  542. sed -i -e "s/#GROUP/GROUP/g" /etc/default/kamailio
  543.  
  544. # Allow HTTPD + Kamailio ports
  545. firewall-cmd --add-service=http --add-service=https
  546. firewall-cmd --add-port=9060/udp
  547. firewall-cmd --add-port=9060/tcp
  548. firewall-cmd --runtime-to-permanent
  549.  
  550. # Test the syntax.
  551. # kamailio -c $PATH_KAMAILIO_CFG
  552.  
  553. # Start Apache
  554. # apachectl -DFOREGROUND
  555. service httpd restart
  556.  
  557. # It's Homer time!
  558. service kamailio restart
  559.  
  560. ;;
  561. esac
  562.  
  563.  
  564. # Install Complete
  565. #clear
  566. echo "*************************************************************"
  567. echo " ,;;;;, "
  568. echo " ;;;;;;;;. Congratulations! HOMER has been installed!"
  569. echo " ;;;;;;;;;;;; "
  570. echo " ;;;; ;; ;;;; <--------------- INVITE --------------- "
  571. echo " ;;;; ;; ;;;; --------------- 200 OK ---------------> "
  572. echo " ;;;; .. ;;;; "
  573. echo " ;;;; ;;;; Your system should be now ready to rock!"
  574. echo " ;;;; ;; ;;;; Please verify/complete the configuration "
  575. echo " ,;;; ;; ;;;; files generated by the installer below. "
  576. echo " ;;;;;;;;;;;; "
  577. echo " :;;;;;;;;; THIS SCRIPT IS PROVIDED AS-IS, USE AT "
  578. echo " ;;;;;;;; YOUR *OWN* RISK, REVIEW LICENSE & DOCS "
  579. echo " "
  580. echo "*************************************************************"
  581. echo
  582. echo " * Verify configuration for HOMER-API:"
  583. echo " '$WEBROOT/api/configuration.php'"
  584. echo " '$WEBROOT/api/preferences.php'"
  585. echo
  586. echo " * Verify capture settings for Homer/Kamailio:"
  587. echo " '$REAL_PATH/etc/kamailio/kamailio.cfg'"
  588. echo
  589. echo " * Start/stop Homer SIP Capture:"
  590. echo " '$REAL_PATH/sbin/kamctl start|stop'"
  591. echo
  592. echo " * Access HOMER UI:"
  593. echo " http://$LOCAL_IP or http://$LOCAL_IP"
  594. echo " [default: admin/test123 or test1234]"
  595. echo
  596. echo " * Send HEP/EEP Encapsulated Packets:"
  597. echo " hep://$LOCAL_IP:$LISTEN_PORT"
  598. echo
  599. echo "**************************************************************"
  600. echo
  601. echo " IMPORTANT: Do not forget to send Homer node some traffic! ;) "
  602. echo " For our capture agents, visit http://github.com/sipcapture "
  603. echo " For more help and information visit: http://sipcapture.org "
  604. echo
  605. echo "**************************************************************"
  606. echo " Installer Log saved to: $logfile "
  607. echo
  608. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement