#!/bin/bash

cmd=$1; shift
acl=$1; shift
host=$1; shift

usage() {
  echo "Usage: $0 <list|show <acl>|add <acl> <host>|del <acl> <host>>"
  exit 1
}

acl_id() {
  [[ "$acl" =~ ^[0-9]+$ ]] && acl="#$acl"
  echo $acl
}

if [ -z "$cmd" ]; then
  usage
fi

case "$cmd" in
  list)
    exec haproxy-cmd show acl | haproxy-pretty-table
    ;;

  show)
    if [ -z "$acl" ]; then
      echo "Usage: $0 show acl <acl>"
      exit 2
    fi

    exec haproxy-cmd show acl "`acl_id`" | \
      awk -r '/.+/ { print $2 }'
    ;;

  clear)
    if [ -z "$acl" ]; then
      echo "Usage: $0 show acl <acl>"
      exit 2
    fi

    exec haproxy-cmd clear acl "`acl_id`"
    ;;

  add)
    if [ -z "$host" ]; then
      echo "Usage: $0 add $acl <host>"
      exit 2
    fi

    exec haproxy-cmd add acl "`acl_id`" "$host"
    ;;

  del)
    if [ -z "$host" ]; then
      echo "Usage: $0 del $acl <host>"
      exit 2
    fi

    exec haproxy-cmd del acl "`acl_id`" "$host"
    ;;

  *)
    usage
    ;;

esac
