Permalink
Browse files

* First working version.

  • Loading branch information...
0 parents commit 4f14f19fdbfc264f2cd53e9e1f13a4ca164c04db @perusio committed Aug 10, 2010
Showing with 97 additions and 0 deletions.
  1. +1 −0 .gitignore
  2. +96 −0 nginx_ensite
@@ -0,0 +1 @@
+/nginx_dissite
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+# nginx_ensite --- Bash script to enable or disable a site in nginx.
+
+# Copyright (C) 2010 António P. P. Almeida <appa@perusio.net>
+
+# Author: António P. P. Almeida <appa@perusio.net>
+
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+
+# Except as contained in this notice, the name(s) of the above copyright
+# holders shall not be used in advertising or otherwise to promote the sale,
+# use or other dealings in this Software without prior written authorization.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+NGINX=$(which nginx)
+
+## The paths for both nginx configuration files and the sites
+## configuration files and symbolic link destinations.
+NGINX_CONF_DIR=/etc/nginx
+AVAILABLE_SITES_PATH="$NGINX_CONF_DIR/sites-available"
+ENABLED_SITES_PATH="$NGINX_CONF_DIR/sites-enabled"
+
+SCRIPTNAME=${0##*/}
+
+## Checking the type of action we will perform. Enabling or disabling.
+ACTION=$(echo $SCRIPTNAME | awk '$0 ~ /dissite/ {print "DISABLE"} $0 ~ /ensite/ {print "ENABLE"} $0 !~ /(dis|en)site/ {print "UNKNOWN"}')
+
+if [ "$ACTION" == "UNKNOWN" ]; then
+ echo "$SCRIPTNAME: Unknown action!"
+ print_usage
+fi
+
+
+function print_usage() {
+ echo "$SCRIPTNAME <site name>"
+ exit 1
+}
+
+## Check the number of arguments.
+if [ $# -ne 1 ]; then
+ print_usage
+else
+ SITE_AVAILABLE="$AVAILABLE_SITES_PATH/$1"
+ SITE_ENABLED="$ENABLED_SITES_PATH/$1"
+fi
+
+## Check that the file corresponding to site exists if enabling or
+## that the symbolic link exists if disabling. Perform the desired
+## action if possible. If not signal an error and exit.
+case $ACTION in
+ ENABLE)
+ if [ -r $SITE_AVAILABLE ]; then
+ [ -h $SITE_ENABLED ] || ln -s $SITE_AVAILABLE $SITE_ENABLED
+ # Test for a well formed configuration.
+ echo "Testing nginx configuration..."
+ $NGINX -t && STATUS=0
+ if [ $STATUS ]; then
+ echo -n "site $1 has been enabled."
+ echo "Run /etc/init.d/nginx reload to apply the changes."
+ exit 0
+ else
+ exit 2
+ fi
+ else
+ echo "Site configuration file $1 not found."
+ exit 3
+ fi
+ ;;
+ DISABLE)
+ if [ -h $SITE_ENABLED ]; then
+ rm $SITE_ENABLED
+ echo "Site $1 has been disabled."
+ echo "Run /etc/init.d/nginx reload to apply the changes."
+ exit 0
+ else
+ echo "Site $1 doesn't exist."
+ exit 3
+ fi
+ ;;
+esac

0 comments on commit 4f14f19

Please sign in to comment.