Advertisement
Guest User

Untitled

a guest
Aug 30th, 2017
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None | 0 0
  1. #!/bin/bash
  2. IP_ADDRESS="*:80"
  3. IP_ADDRESSSSL="*:443"
  4. APACHE2_DIR="/etc/apache2"
  5.  
  6. UID_ROOT=0
  7.  
  8. if [ "$UID" -ne "$UID_ROOT" ]; then
  9. echo "$0 - Requires root privileges"
  10. exit 1
  11. fi
  12.  
  13. function is_user(){
  14. local check_user="$1";
  15. grep "$check_user:" /etc/passwd >/dev/null
  16. if [ $? -ne 0 ]; then
  17. #echo "NOT HAVE USER"
  18. return 0
  19. else
  20. #echo "HAVE USER"
  21. return 1
  22. fi
  23. }
  24.  
  25. function generate_pass(){
  26. CHARS="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$%^&*()-_=+\\|/"
  27. LENGTH="8"
  28. while [ "${n:=1}" -le "$LENGTH" ] ; do
  29. PASSWORD="$PASSWORD${CHARS:$(($RANDOM%${#CHARS})):1}"
  30. let n+=1
  31. done
  32. echo $PASSWORD
  33. }
  34.  
  35. function is_yes(){
  36. #TODO - add check 3-rd parameter for set default ansver (if press enter)
  37. while true
  38. do
  39. echo -n "Yes or No[Y/n]:"
  40. read x
  41. if [ -z "$x" ]
  42. then
  43. return 0; #defaul answer: Yes
  44. fi
  45. case "$x" in
  46. y |Y |yes |Д |д |да ) return 0;;
  47. n |N |no |Н |н |нет ) return 1;;
  48. # * ) ; # asc again
  49. esac
  50. done
  51. }
  52.  
  53. function create_user(){
  54. local login="$1"
  55. local password="$2"
  56. `useradd $login -d /srv/www/$login -g $login -s /bin/false`
  57. #set password
  58. echo -e "$password\n$password\n" | passwd $login >> /dev/null
  59. usermod -G sftp_users $login
  60. }
  61.  
  62. USER_NAME=$1
  63.  
  64. echo -n "Check user name $USER_NAME: "
  65. if( is_user "$USER_NAME" )then
  66. USER_PASSWORD="$(generate_pass)"
  67. echo "-----------------------------------"
  68. echo "User name : $USER_NAME"
  69. echo "User password: $USER_PASSWORD"
  70. echo "-----------------------------------"
  71. echo -n "Continue? "
  72. if(! is_yes) then
  73. exit;
  74. fi
  75. echo "--- create user ---"
  76. addgroup $USER_NAME
  77. create_user "$USER_NAME" "$USER_PASSWORD"
  78. fi
  79.  
  80. if [ $# -eq 2 ]; then
  81. if [ "$2" != "delete" ]; then
  82. SITE_NAME=$2
  83. mkdir -p /srv/www/$USER_NAME/
  84. mkdir -p /srv/www/$USER_NAME/$SITE_NAME
  85. mkdir -p /srv/www/$USER_NAME/logs
  86. mkdir -p /srv/www/$USER_NAME/tmp
  87. hostConf="
  88. <VirtualHost 127.0.0.1:8080>
  89. ServerName $SITE_NAME
  90. ServerAlias www.$SITE_NAME
  91. DocumentRoot /srv/www/$USER_NAME/$SITE_NAME
  92. AssignUserID ${USER_NAME} ${USER_NAME}
  93. ErrorLog /srv/www/$USER_NAME/logs/$SITE_NAME.error.log
  94. CustomLog /srv/www/$USER_NAME/logs/$SITE_NAME.log combined
  95.  
  96. <Directory /srv/www/$USER_NAME/$SITE_NAME/>
  97. DirectoryIndex index.html
  98. AllowOverride All
  99. Require all granted
  100. Allow from all
  101. <IfModule sapi_apache2.c>
  102. php_admin_flag engine on
  103. php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
  104. </IfModule>
  105. <IfModule mod_php5.c>
  106. php_admin_flag engine on
  107. php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
  108. </IfModule>
  109. Options -Includes -ExecCGI
  110. </Directory>
  111.  
  112.  
  113. <Directory /srv/www/$USER_NAME/$SITE_NAME/>
  114. DirectoryIndex index.php
  115. AllowOverride All
  116. Require all granted
  117. Allow from all
  118. <IfModule sapi_apache2.c>
  119. php_admin_flag engine on
  120. php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
  121. </IfModule>
  122. <IfModule mod_php5.c>
  123. php_admin_flag engine on
  124. php_admin_value open_basedir "/srv/www/$USER_NAME/$SITE_NAME/:/tmp/"
  125. </IfModule>
  126. Options -Includes -ExecCGI
  127.  
  128. </Directory>
  129.  
  130. </VirtualHost>
  131. "
  132. touch /etc/apache2/vhosts/${SITE_NAME}.conf
  133. echo "$hostConf" > /etc/apache2/vhosts/${SITE_NAME}.conf
  134. #touch /srv/www/$USER_NAME/$SITE_NAME/index.php
  135. #echo "<?php phpinfo() ?>" > /srv/www/$USER_NAME/$SITE_NAME/index.php
  136. chmod 750 /srv/www/$USER_NAME/
  137. chown root:$USER_NAME /srv/www/$USER_NAME
  138. chmod 744 /srv/www/$USER_NAME/*
  139. chown -R $USER_NAME:$USER_NAME /srv/www/$USER_NAME/*
  140. service apache2 restart
  141. hostnginxconf="
  142. server {
  143. listen *:80;
  144. access_log /srv/www/$USER_NAME/logs/$SITE_NAME.access.log;
  145. server_name $SITE_NAME www.$SITE_NAME;
  146. root /srv/www/$USER_NAME/$SITE_NAME;
  147. location / {
  148. "
  149. nginxconf='
  150. proxy_redirect off;
  151. proxy_set_header Host $host;
  152. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  153. proxy_set_header X-Real-IP $remote_addr;
  154. proxy_pass http://127.0.0.1:8080;
  155. proxy_buffer_size 20480k;
  156. proxy_buffers 4 20480k;
  157. proxy_busy_buffers_size 20480k;
  158.  
  159. location ~ ^/(.*\.(ac3|avi|bmp|bz2|cue|dat|doc|docx|dts|exe|flv|gif|gz|ico|img|iso|jpeg|jpg|mkv|mp3|mp4|mpeg|mpg|ogg|pdf|png|ppt|pptx|qt|rar|rm|swf|tar|tgz|wav|xls|xlsx|zip|woff|woff2))$ {
  160. gzip off;
  161. expires 30d;
  162. try_files $uri @fallback;
  163. }
  164.  
  165. location ~ ^/(.*\.(css|htm|html|js|txt))$ {
  166. gzip_comp_level 9;
  167. expires 7d;
  168. try_files $uri @fallback;
  169. }
  170.  
  171. }
  172.  
  173. location @fallback {
  174. proxy_pass http://127.0.0.1:8080;
  175. proxy_set_header Host $host;
  176. proxy_set_header X-Real-IP $remote_addr;
  177. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  178. }
  179.  
  180. }
  181. '
  182. touch /etc/nginx/vhosts/${SITE_NAME}.conf
  183. echo "$hostnginxconf" > /etc/nginx/vhosts/${SITE_NAME}.conf
  184. echo "$nginxconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
  185. service nginx restart
  186. hostnginxsslconf="
  187. server {
  188. listen *:443 ssl;
  189. access_log /srv/www/$USER_NAME/logs/$SITE_NAME.access.log;
  190. server_name $SITE_NAME www.$SITE_NAME;
  191. root /srv/www/$USER_NAME/$SITE_NAME;
  192. ssl_certificate /etc/letsencrypt/live/$SITE_NAME/fullchain.pem;
  193. ssl_certificate_key /etc/letsencrypt/live/$SITE_NAME/privkey.pem;
  194. location / {
  195. "
  196.  
  197.  
  198.  
  199. echo "SSL YES OR NO?"
  200. if(! is_yes) then
  201. echo "No SSL"
  202. else
  203. echo "$hostnginxsslconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
  204. echo "$nginxconf" >> /etc/nginx/vhosts/${SITE_NAME}.conf
  205. echo "WWW FOR SSL YES OR NO?"
  206. if(! is_yes) then
  207. echo "No WWW"
  208. certbot certonly -a webroot --webroot-path=/srv/www/$USER_NAME/$SITE_NAME -d $SITE_NAME
  209. else
  210. certbot certonly -a webroot --webroot-path=/srv/www/$USER_NAME/$SITE_NAME -d $SITE_NAME -d www.$SITE_NAME
  211. fi
  212. fi
  213. service nginx restart
  214. fi
  215. fi;
  216.  
  217. #display information
  218. echo "*****************************************"
  219. echo "* Profit!"
  220. echo "*****************************************"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement