|
1 | 1 | #!/bin/bash
|
2 |
| -############### s-ui-pro v1.0 @ github.com/GFW4Fun ############## |
| 2 | +############### s-ui-pro v1.2 @ github.com/GFW4Fun ############## |
3 | 3 | [[ $EUID -ne 0 ]] && echo "not root!" && exit 1
|
4 | 4 | Pak=$(type apt &>/dev/null && echo "apt" || echo "yum")
|
5 | 5 | msg_ok() { echo -e "\e[1;42m $1 \e[0m";}
|
@@ -44,38 +44,40 @@ if [[ ${UNINSTALL} == *"y"* ]]; then
|
44 | 44 | fi
|
45 | 45 | ##############################Domain Validations######################
|
46 | 46 | while true; do
|
47 |
| - domain=$(echo "$domain" 2>&1 | tr -d '[:space:]' ) |
48 |
| - SubDomain=$(echo "$domain" 2>&1 | sed 's/^[^ ]* \|\..*//g') |
49 |
| - MainDomain=$(echo "$domain" 2>&1 | sed 's/.*\.\([^.]*\..*\)$/\1/') |
50 |
| - if [[ "${SubDomain}.${MainDomain}" != "${domain}" ]] ; then |
51 |
| - MainDomain=${domain} |
52 |
| - fi |
53 |
| - if [[ -n "$domain" ]] ; then |
54 |
| - if [[ -n $(host "$domain" 2>/dev/null | grep -v NXDOMAIN) ]]; then |
55 |
| - break |
56 |
| - fi |
57 |
| - fi |
58 | 47 | echo -en "Enter available subdomain (sub.domain.tld): " && read domain
|
| 48 | + if [[ ! -z "$domain" ]]; then |
| 49 | + break |
| 50 | + fi |
59 | 51 | done
|
| 52 | + |
| 53 | +domain=$(echo "$domain" 2>&1 | tr -d '[:space:]' ) |
| 54 | +SubDomain=$(echo "$domain" 2>&1 | sed 's/^[^ ]* \|\..*//g') |
| 55 | +MainDomain=$(echo "$domain" 2>&1 | sed 's/.*\.\([^.]*\..*\)$/\1/') |
| 56 | + |
| 57 | +if [[ "${SubDomain}.${MainDomain}" != "${domain}" ]] ; then |
| 58 | + MainDomain=${domain} |
| 59 | +fi |
60 | 60 | ###############################Install Packages#############################
|
61 | 61 | if [[ ${INSTALL} == *"y"* ]]; then
|
62 | 62 | $Pak -y update
|
63 |
| - $Pak -y install nginx-full certbot python3-certbot-nginx sqlite3 |
| 63 | + $Pak -y install nginx certbot python3-certbot-nginx sqlite3 |
64 | 64 | systemctl daemon-reload && systemctl enable --now nginx
|
65 | 65 | fi
|
66 |
| -#########################Install nginx Config############################### |
67 | 66 | systemctl stop nginx
|
68 | 67 | fuser -k 80/tcp 80/udp 443/tcp 443/udp 2>/dev/null
|
69 |
| -if [[ ! -f "/etc/letsencrypt/live/${MainDomain}/privkey.pem" ]]; then |
70 |
| - certbot certonly --standalone --non-interactive --force-renewal --agree-tos --register-unsafely-without-email --cert-name "$MainDomain" -d "$domain" |
71 |
| -else |
72 |
| - msg_ok "$MainDomain SSL Certificate is exist!" |
73 |
| -fi |
74 |
| -sleep 3 |
75 |
| -if [[ ! -f "/etc/letsencrypt/live/${MainDomain}/privkey.pem" ]]; then |
| 68 | +##############################Install SSL#################################### |
| 69 | +for D in `find /etc/letsencrypt/live -mindepth 1 -type d -exec basename {} \;`; do |
| 70 | + if [[ $D == "${MainDomain}" ]]; then |
| 71 | + certbot delete --non-interactive --cert-name ${MainDomain} |
| 72 | + fi |
| 73 | +done |
| 74 | + |
| 75 | +certbot certonly --standalone --non-interactive --force-renewal --agree-tos --register-unsafely-without-email --cert-name "$MainDomain" -d "$domain" |
| 76 | + |
| 77 | +if [[ ! -d "/etc/letsencrypt/live/${MainDomain}/" ]]; then |
76 | 78 | msg_err "$MainDomain SSL certificate could not be generated, Maybe the domain or IP domain is invalid!" && exit 1
|
77 | 79 | fi
|
78 |
| - |
| 80 | +########################################################################### |
79 | 81 | cat > "/etc/nginx/sites-available/$MainDomain" << EOF
|
80 | 82 | server {
|
81 | 83 | server_name ~^((?<subdomain>.*)\.)?(?<domain>[^.]+)\.(?<tld>[^.]+)\$;
|
|
0 commit comments