#!/bin/bash
set -e
APP="$1"; PORT="$2"
SSL="$HOME/$APP/ssl"

if [[ -f "$HOME/VHOST" ]]; then
  VHOST=$(< "$HOME/VHOST")
  SUBDOMAIN=${APP/%\.${VHOST}/}
  if [[ "$APP" == *.* ]] && [[ "$SUBDOMAIN" == "$APP" ]]; then
    hostname="${APP/\//-}"
  else
    hostname="${APP/\//-}.$VHOST"
  fi

  # ssl based nginx.conf
  if [[ -f "$SSL/server.crt" ]] && [[ -f "$SSL/server.key" ]]; then
  cat<<EOF > $HOME/$APP/nginx.conf
upstream $APP { server 127.0.0.1:$PORT; }
server {
  listen      80;
  server_name $hostname;
  return 301 https://\$host\$request_uri;
}

server {
  listen      443;
  server_name $hostname;

  ssl on;
  ssl_certificate     $SSL/server.crt;
  ssl_certificate_key $SSL/server.key;
  ssl_ciphers ECDHE-RSA-RC4-SHA;
  ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
  ssl_prefer_server_ciphers on;

  location    / {
    proxy_pass  http://$APP;
    proxy_http_version 1.1;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host \$http_host;
    proxy_set_header X-Scheme \$scheme;
  }
}
EOF
else
# default nginx.conf
  cat<<EOF > $HOME/$APP/nginx.conf
upstream $APP { server 127.0.0.1:$PORT; }
server {
  listen      80;
  server_name $hostname;
  location    / {
    proxy_pass  http://$APP;
    proxy_http_version 1.1;
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host \$http_host;
  }
}
EOF
  fi
  nc -U $HOME/reload-nginx
  echo "$hostname" > "$HOME/$APP/VHOST"
fi