autosetup.sh 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #!/bin/sh
  2. ############ CONFIG SECTION #############
  3. #binary packages distro (141_6K, 140_6K, 133_6K, 132_6E available)
  4. DL_NAME="141_6K"
  5. #external internet interface
  6. EXT_IF="igb1"
  7. #internal lan interface
  8. INT_IF="igb0"
  9. INT_IP="172.16.0.2"
  10. INT_NET="172.16.0.0"
  11. INT_NET_CIDR="22"
  12. #ubilling database host settings
  13. MYSQL_HOST="172.16.0.1"
  14. MYSQL_LOGIN="somelogin"
  15. MYSQL_PASSWORD="somepassword"
  16. MYSQL_DB="stg"
  17. #stargazer and SNMP settings
  18. RSCRIPTD_KEY="kotiki"
  19. NETFLOW_HOST="172.16.0.1:42111"
  20. SNMPCOMM="changeme"
  21. #bandwidthd http path
  22. BANDWIDTHD_PATH="band"
  23. #firewall preset script
  24. FIREWALL_PRESET="firewall.conf"
  25. ########## end of config section ########
  26. #binary packages repo
  27. DL_REPO="http://ubilling.net.ua/packages/"
  28. DL_EXT=".tar.gz"
  29. #stargazer sources
  30. DL_STG_URL="http://ubilling.net.ua/stg/"
  31. DL_STG_REL="stg-2.409"
  32. DL_STG_EXT=".tar.gz"
  33. #########################################
  34. #botstrapping pkgng
  35. pkg info
  36. #check is FreeBSD installation clean
  37. PKG_COUNT=`/usr/sbin/pkg info | /usr/bin/wc -l`
  38. if [ $PKG_COUNT -ge 2 ]
  39. then
  40. echo "rscriptd NAS installer supports setup only for clean FreeBSD distribution. Installation is aborted."
  41. exit
  42. fi
  43. #setting up binary packages
  44. DL_URL=${DL_REPO}${DL_NAME}${DL_EXT}
  45. fetch ${DL_URL}
  46. #check is binary packages download has beed completed
  47. if [ -f ${DL_NAME}${DL_EXT} ];
  48. then
  49. echo "Binary packages download has been completed."
  50. else
  51. echo "=== Error: binary packages are not available. Installation is aborted. ==="
  52. exit
  53. fi
  54. echo "Unpacking binary packages..."
  55. tar zxvf ${DL_NAME}${DL_EXT}
  56. cd ${DL_NAME}
  57. #installing packages
  58. echo "Installing required software..."
  59. ls -1 | xargs -n 1 pkg add
  60. #installing nginx
  61. pkg install -y nginx
  62. #back to setup dir
  63. cd /tmp/nas_preconf/
  64. #update rc.conf
  65. cat configs/append_rc.conf >> /etc/rc.conf
  66. #update sysctl.conf
  67. cat configs/append_sysctl.conf >> /etc/sysctl.conf
  68. #unpack firewall
  69. cp -R configs/${FIREWALL_PRESET} /etc/firewall.conf
  70. cat configs/fwcustoms >> /etc/firewall.conf
  71. chmod a+x /etc/firewall.conf
  72. #update crontab
  73. cat configs/crontab >> /etc/crontab
  74. #php opts
  75. cat configs/php.ini >> /usr/local/etc/php.ini
  76. #adding needed options to loader conf
  77. cat configs/loader.preconf >> /boot/loader.conf
  78. #FreeBSD 10+ need to use CC and CXX env
  79. export CC=/usr/bin/clang
  80. export CXX=/usr/bin/clang++
  81. #FreeBSD 13.3/14.0 requires specific CXXFLAGS env
  82. export CXXFLAGS=-std=c++11
  83. #rscriptd build and setup
  84. cd /tmp/nas_preconf/
  85. mkdir stg
  86. cd stg/
  87. echo "Downloading stargazer distro..."
  88. fetch ${DL_STG_URL}${DL_STG_REL}${DL_STG_EXT}
  89. tar zxvf ${DL_STG_REL}${DL_STG_EXT}
  90. cd ${DL_STG_REL}/projects/rscriptd/
  91. echo "Compiling rscriptd..."
  92. ./build
  93. gmake install
  94. echo "rscript installed..."
  95. #updating init scritps and rscriptd configs
  96. echo "Installing init scripts..."
  97. cd /tmp/nas_preconf/
  98. cp -R ./configs/rscriptd /etc/
  99. chmod -R a+x /etc/rscriptd
  100. cp -R ./configs/stargazer /etc/
  101. chmod -R a+x /etc/stargazer
  102. chmod -R 777 /etc/stargazer/dn
  103. cp -R ./configs/rc.d /etc/
  104. chmod a+x /etc/rc.d/rscriptd
  105. cp ./configs/bandwidthd.conf /usr/local/bandwidthd/etc/
  106. mkdir /var/stargazer/
  107. #installing some helpful scripts
  108. echo "Installing misc scripts..."
  109. cd /tmp/nas_preconf/
  110. cp -R ./apps/checkspeed /bin/
  111. cp -R ./apps/renat /bin/
  112. cp -R ./apps/lactrl.php /usr/local/etc/
  113. chmod a+x /bin/renat /bin/checkspeed /usr/local/etc/lactrl.php
  114. #symlink magic
  115. mkdir /usr/local/www/data
  116. mv /usr/local/bandwidthd/htdocs /usr/local/www/data/${BANDWIDTHD_PATH}
  117. ln -fs /usr/local/www/data/${BANDWIDTHD_PATH}/ /usr/local/bandwidthd/htdocs
  118. cp -R ./configs/nginx.conf /usr/local/etc/nginx/
  119. chmod a-x /etc/rc.d/sendmail
  120. echo "NO WAY!" > /usr/local/www/data/index.html
  121. touch /var/log/torture.log
  122. ############## updating configs ##############
  123. echo "Updating configuration files..."
  124. #snmp
  125. echo "rocommunity ${SNMPCOMM}" > /usr/local/etc/snmpd.config
  126. echo "smuxsocket 1.0.0.0" >> /usr/local/etc/snmpd.config
  127. #update ub handlers config and rscriptd
  128. perl -e "s/localhost/${MYSQL_HOST}/g" -pi /etc/rscriptd/config
  129. perl -e "s/mylogin/${MYSQL_LOGIN}/g" -pi /etc/rscriptd/config
  130. perl -e "s/newpassword/${MYSQL_PASSWORD}/g" -pi /etc/rscriptd/config
  131. perl -e "s/stg/${MYSQL_DB}/g" -pi /etc/rscriptd/config
  132. perl -e "s/RS_KEY/${RSCRIPTD_KEY}/g" -pi /etc/rscriptd/rscriptd.conf
  133. perl -e "s/EXTERNAL_INTERFACE/${EXT_IF}/g" -pi /bin/renat
  134. #update firewall
  135. perl -e "s/NF_HOST/${NETFLOW_HOST}/g" -pi /etc/firewall.conf
  136. perl -e "s/INTERNAL_NETWORK/${INT_NET}\/${INT_NET_CIDR}/g" -pi /etc/firewall.conf
  137. perl -e "s/INT_ADDR/${INT_IP}\/${INT_NET_CIDR}/g" -pi /etc/firewall.conf
  138. perl -e "s/EXTERNAL_INTERFACE/${EXT_IF}/g" -pi /etc/firewall.conf
  139. perl -e "s/INTERNAL_INTERFACE/${INT_IF}/g" -pi /etc/firewall.conf
  140. perl -e "s/DB_HOST/${MYSQL_HOST}/g" -pi /etc/firewall.conf
  141. #update dnswitch
  142. perl -e "s/localhost/${MYSQL_HOST}/g" -pi /etc/stargazer/dnswitch.php
  143. perl -e "s/mylogin/${MYSQL_LOGIN}/g" -pi /etc/stargazer/dnswitch.php
  144. perl -e "s/newpassword/${MYSQL_PASSWORD}/g" -pi /etc/stargazer/dnswitch.php
  145. perl -e "s/stg/${MYSQL_DB}/g" -pi /etc/stargazer/dnswitch.php
  146. #update bandwidthd config
  147. perl -e "s/INTERNAL_INTERFACE/${INT_IF}/g" -pi /usr/local/bandwidthd/etc/bandwidthd.conf
  148. perl -e "s/INTERNAL_NETWORK/${INT_NET}\/${INT_NET_CIDR}/g" -pi /usr/local/bandwidthd/etc/bandwidthd.conf
  149. echo "==== NAS setup complete! ===="
  150. echo "Reboot your server."