From 546df7dcf0274ee0e6502d1c0c0d02d7d1445d3f Mon Sep 17 00:00:00 2001 From: turbine Date: Thu, 20 Nov 2025 12:46:57 +0100 Subject: [PATCH] Upload files to "/" --- autonginx | 92 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 64 insertions(+), 28 deletions(-) diff --git a/autonginx b/autonginx index 8f770ad..c233b19 100644 --- a/autonginx +++ b/autonginx @@ -6,43 +6,79 @@ URL: url à laquelle le service sera accessible (exemple.urlab.be) IP: adresse ip locale du service (127.0.0.1 si sur cette machine, 172.23.100.X sinon) PORT: port utilisé par le service (entre 1 et 65535; certains ports sont déjà utilisés)" -error(){ - echo "$USAGE" +error() { + echo "$@" exit 1 } -sanitize() -{ +sanitize() { if ! [ "$PORT" -eq "$PORT" ] 2> /dev/null; then - error + error "$USAGE" fi - if 1 "<" PORT ">" 65535 ; then - error + if [ "$PORT" -lt 1 ] || [ "$PORT" -gt 65535 ]; then + error "$USAGE" fi + case "$URL" in + *.urlab.be) SUBDOMAIN=${URL%.urlab.be} ;; + *) error "$USAGE";; + esac + if [ "$SUBDOMAIN" = "" ]; then + error "$USAGE" + fi + if [ "$(expr "$SUBDOMAIN" : '[A-Za-z0-9][A-Za-z0-9\-]\{0,61\}[A-Za-z0-9]\{0,1\}')" != "${#SUBDOMAIN}" ]; then + error "$USAGE" + fi + if [ "$IP" != "127.0.0.1" ]; then + case "$IP" in + 127.0.0.1) ;; + 172.23.100.[0-9]*) + LAST=${IP#172.23.100.} + if [ "$LAST" -lt 2 ] || [ "$LAST" -gt 254 ]; then + error "$USAGE" + fi ;; + *) error "$USAGE";; + esac + fi + echo "looks good" } -if [ $# != 3 ]; then - error -fi +verify() { + if ! ping -c 1 -W 1 "$IP" >/dev/null 2>/dev/null ; then + error "Error : Cannot reach host $IP" + fi + if ! timeout 1 sh -c "(echo > /dev/tcp/$IP/$PORT) >/dev/null 2>&1"; then + error "Error : Port $PORT isn't open" + fi + echo "is good" +} -URL="$1" -IP="$2" -PORT="$3" +main() { + if [ $# != 3 ]; then + error "$USAGE" + fi -sanitize + URL="$1" + IP="$2" + PORT="$3" + NGINX="server { + listen 80; + listen [::]:80; -echo "$URL" -echo "$IP" -echo "$PORT" -# sanitize input -# port entre 1 et 65535 -# url de la forme *.urlab.be -# ip soit 127.0.0.1 soit 172.23.100.X, X entre 2 et 254 -# verifier input -# ping ip -# check si port utilisé -# -# -# generate config, put it in right location -# generate ssl certificate + server_name $URL; + + location / { + proxy_pass http://$IP:$PORT/; + include proxy_params; + } +}" + + sanitize + verify + echo "$NGINX" + # generate config, put it in right location + # verify nginx config (nginx -t) + # generate ssl certificate +} + +main "$@"