Merge branch '7-fix-merge-request-5' into 'master'

Resolve "Fix merge request 5"

Closes #7

See merge request lhprojects-information-network/scripts!6
This commit is contained in:
Lutchy Horace 2021-03-17 17:48:23 -04:00
commit c9b11e82b4
2 changed files with 72 additions and 14 deletions

View File

@ -15,7 +15,7 @@ function debug
function err function err
{ {
echo -e "FATAL ERROR: $1" echo -e "FATAL ERROR: $@"
exit 1 exit 1
} }
@ -68,6 +68,34 @@ function send_notification
echo -e "$2" | mail $opt -s "$1" ${EMAIL} echo -e "$2" | mail $opt -s "$1" ${EMAIL}
} }
function become
{
local _bbfile
_bbfile=/tmp/bb_become.$_bb_myname
if test -z "$_bb_myname" -o -z "$_bb_mypath"; then
err "\$_bb_myname and/or \$_bb_mypath must bet set to user become function!"
fi
if test -f "$_bbfile"; then
if [ $(id -u) = 0 ]; then
# Check if it's a login shell
if shopt -q login_shell; then
return 0
fi
fi
err "Unable to become: $_bbfile exists." \
"\nThis may happen if the script was interrupted." \
"\nIf this is the case, please remove '$_bbfile' and run this script '$_bb_mypath' again."
fi
touch $_bbfile
sudo bash --login $_bb_mypath "$@"
rm $_bbfile
exit
}
function check_values function check_values
{ {

View File

@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/bin/bash
# #
# Create Vhosts on VPS3 # Create Vhosts on VPS3
# #
DEBUG=0 DEBUG=0
set -e #set -e
function usage function usage
{ {
@ -30,8 +30,15 @@ function get_cert
/root/.acme.sh/acme.sh --issue --domain $_domain --webroot /srv/http-content-combined/ --cert-file /etc/nginx/ssl/${_domain}.crt --key-file /etc/nginx/ssl/${_domain}.key --fullchain-file /etc/nginx/ssl/${_domain}-fullchain.crt /root/.acme.sh/acme.sh --issue --domain $_domain --webroot /srv/http-content-combined/ --cert-file /etc/nginx/ssl/${_domain}.crt --key-file /etc/nginx/ssl/${_domain}.key --fullchain-file /etc/nginx/ssl/${_domain}-fullchain.crt
} }
function reload_nginx
{
systemctl reload nginx
}
_cwd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" _cwd="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
_bootstrap=${_cwd}/bootstrap.sh _bootstrap=${_cwd}/bootstrap.sh
_bb_myname=$(basename "$0")
_bb_mypath=$(realpath $BASH_SOURCE)
# Init script # Init script
if test -f $_bootstrap; then if test -f $_bootstrap; then
@ -41,6 +48,9 @@ else
exit 1 exit 1
fi fi
# gain priviledges
become "$@"
OPTS=$(getopt -o h -l domain:,root:,backend:,listenip:,desc: -n 'createVhosts' -- "$@") OPTS=$(getopt -o h -l domain:,root:,backend:,listenip:,desc: -n 'createVhosts' -- "$@")
if [ "$?" -gt '0' ]; then if [ "$?" -gt '0' ]; then
echo 'Failed to set command line arguments' echo 'Failed to set command line arguments'
@ -80,9 +90,13 @@ if [[ $_domain = false ]]; then
err "You must set domain" err "You must set domain"
fi fi
echo -n "Checking if $_root exists?"
if test -n "$_root"; then if test -n "$_root"; then
if ! test -d $_root; then if ! test -d $_root; then
err "Path doesn't exists! $_root" echo " Creating..."
mkdir -p $_root
else
echo " Yes!"
fi fi
_rootpath="root $_root;" _rootpath="root $_root;"
fi fi
@ -105,17 +119,13 @@ if test -n "$_listenip"; then
fi fi
_listenip="$_listenip:" _listenip="$_listenip:"
else else
warn "No listen ip specified, listing on all interfaces." warn "Listen ip not specified, listening on all interfaces."
fi fi
if test -z "$_root" -a -z "$_backend"; then if test -z "$_root" -a -z "$_backend"; then
err "You must specify either --root or --backend!" err "You must specify either --root or --backend!"
fi fi
echo "Creating Nginx configuration..."
_vhost_conf_file=/etc/nginx/conf.d/${_domain}.conf
echo -n "Checking if /srv/http-content-combined/ exists?" echo -n "Checking if /srv/http-content-combined/ exists?"
if ! test -d /srv/http-content-combined; then if ! test -d /srv/http-content-combined; then
echo " Creating..." echo " Creating..."
@ -124,6 +134,17 @@ else
echo " Yes!" echo " Yes!"
fi fi
_vhost_conf_file=/etc/nginx/conf.d/${_domain}.conf
echo -n "Checking if $_vhost_conf_file exists? "
if test -f $_vhost_conf_file; then
echo "Removing!"
rm $_vhost_conf_file
else
echo "No!"
fi
echo "Creating Nginx configuration..."
cat << EOF > $_vhost_conf_file cat << EOF > $_vhost_conf_file
#### Description #### Description
## Type: HTTP ## Type: HTTP
@ -142,6 +163,18 @@ server {
return 302 https://${_domain}\$request_uri; return 302 https://${_domain}\$request_uri;
} }
} }
EOF
echo "Setting permissions on conf file..."
setfacl -m user:sysadmin:rw $_vhost_conf_file
echo "Reloading Nginx..."
reload_nginx
echo "Retrieving Let's Encrypt Certificate..."
get_cert
cat << EOF >> $_vhost_conf_file
server { server {
listen ${_listenip}443 http2 ssl; listen ${_listenip}443 http2 ssl;
@ -160,8 +193,5 @@ ${_locationblock}
} }
EOF EOF
echo "Setting permissions on conf file..." echo "Reloading Nginx..."
#setfacl -m user:sysadmin:rw $_vhost_conf_file reload_nginx
echo "Retrieving Let's Encrypt Certificate..."
get_cert