#!/bin/bash -
#	
#  H.A.Trujillo	       Feb 2020
#  Last Change:     13 Feb 2021
#
#  Based on a script by
#	Md. Sazzad Hissain Khan	 (8 July, 2017)
#	https://stackoverflow.com/questions/4029471/
#
#  Purpose:
#     Enables/Disables HTTP and HTTPS proxy
#
#	Usage:	proxy  on | off
#     		proxy  -s | -h
#
#	Options:	-s  show proxy status
#			-h  print help message
#
#    Note that values for these proxies must be set through the 
#    Network control panel.
#


case "$1" in
    -h)		# print help text
	echo ""
	sed -n '11,21s/#//p' $0
	exit
	;;
    -s)		# show proxy status
	scutil --proxy
	exit
	;;
    on|off)	# sanity check the argument
	true
	;;
    *) 
	echo "  Invalid or missing argument [on/off]"
	exit 1
	;;
esac

# Get Network Service		(ie, "Ethernet", "Wi-Fi", etc)
/sbin/ifconfig en1 | grep -w active > /dev/null && oif=en1
/sbin/ifconfig en0 | grep -w active > /dev/null && oif=en0

NETWORK_SERVICE_NAME=$( \
    networksetup -listallhardwareports \
	| awk -v oif=$oif '
	    /^Hardware Port/{IFname = $3}
	    ( $2 == oif ) {print IFname ; exit}'
)

# get sudo password
  printf "Sudo "
  sudo -v
#-----


case "$1" in 
  on)
    echo "  Enabling HTTP  proxy for $NETWORK_SERVICE_NAME"
    sudo networksetup -setwebproxystate "$NETWORK_SERVICE_NAME" on
    echo "  Enabling HTTPS proxy for $NETWORK_SERVICE_NAME"
    sudo networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" on
	;;
  off)
    echo "  Disabling HTTP  proxy for $NETWORK_SERVICE_NAME"
    sudo networksetup -setwebproxystate "$NETWORK_SERVICE_NAME" off
    echo "  Disabling HTTPS proxy for $NETWORK_SERVICE_NAME"
    sudo networksetup -setsecurewebproxystate "$NETWORK_SERVICE_NAME" off
	;;
esac

sudo -k

