diff --git a/admin.sh b/admin.sh index fd4caf4..f62fbbc 100644 --- a/admin.sh +++ b/admin.sh @@ -1,39 +1,28 @@ -for (( ; ; )) -do - rm -rf available.txt - files=$(find /home -name tilde.json -print) - echo "$files" >> available.txt - if [ -s available.txt ] - then - tilde=$(sed '1q;d' available.txt) - domain=$(jq -r '.domain' $tilde) - username=$(echo "$tilde" | awk -F/ '{print $2}') - if [ "tilde.best" == "$domain" ]; then - sed -i '1d' ./available.txt - exit 1 - else - if [ -s /etc/nginx/sites-enabled/$domain ] - then - exit 1 - else - besta=$(dig +short a tilde.best) - domaina=$(dig +short a $domain) - if [ "$besta" == "$domaina" ] - then - echo "server {" >> /etc/nginx/sites-enabled/$domain - echo " listen 80;" >> /etc/nginx/sites-enabled/$domain - echo " server_name $domain;" >> /etc/nginx/sites-enabled/$domain - echo " root /home/$username/$domain;" >> /etc/nginx/sites-enabled/$domain - echo "}" >> /etc/nginx/sites-enabled/$domain - certbot --nginx -d $domain --non-interactive --redirect --agree-tos -m root@$domain - sed -i '1d' ./available.txt - else - sed -i '1d' ./available.txt - exit 1 - fi - fi - fi - else - rm -rf available.txt - fi +#!/bin/sh + +bestip=$(dig +short a tilde.best) + +for byod in /home/*/byod; do + user=$(stat -c '%U' $byod) + domain=$(cat $byod) + echo "$user is requesting $domain" + if [ -s /etc/nginx/sites-enabled/byod-$user-$domain.conf ]; then + echo "byod already configured for $user and $domain" + continue + else + domainip=$(dig +short a $domain) + if [ "$bestip" == "$domainip"] + then + sed -e "s//$user/" -e "s//$domain/" template.conf \ + > /etc/nginx/sites-available/byod-$user-$domain.conf + ln -s ../sites-available/byod-$user-$domain.conf /etc/nginx/sites-enabled/byod-$user-$domain.conf + certbot --nginx -d $domain --non-interactive --redirect + else + echo "domain's dns not configured correctly" + fi + fi done + +nginx -t +systemctl reload nginx + diff --git a/byod b/byod new file mode 100755 index 0000000..58f46ef --- /dev/null +++ b/byod @@ -0,0 +1,12 @@ +#!/bin/sh + +echo "Please enter new domain" +read domain +if [[ $(dig +short a $domain) == $(dig +short a tilde.best) ]]; then + mkdir ~/$domain + echo $domain > ~/byod + echo "once an admin confirms the domain, the webroot will be ~/$domain" +else + echo "please set an A record for $domain for $(dig +short a tilde.best)" +fi + diff --git a/create.sh b/create.sh deleted file mode 100644 index 8a7ffd8..0000000 --- a/create.sh +++ /dev/null @@ -1,12 +0,0 @@ -# This file needs to be added at /etc/skel - -echo "Please enter new domain" -read DOMAIN -mkdir $DOMAIN - -JSON_STRING=$( jq -n \ - --arg d "$DOMAIN" \ - '{domain: $d}' ) - -echo "$JSON_STRING" > tilde.json -cd $DOMAIN diff --git a/template.conf b/template.conf new file mode 100644 index 0000000..0771f95 --- /dev/null +++ b/template.conf @@ -0,0 +1,11 @@ +server { + listen 80; + server_name ; + root /home//; + index index.html; + + location / { + try_files $uri $uri/ =404; + } +} +