|
|
@@ -0,0 +1,121 @@ |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
# Global vars |
|
|
|
PROG_NAME='DockerTinyproxy' |
|
|
|
PROXY_CONF='/etc/tinyproxy.conf' |
|
|
|
TAIL_LOG='/var/log/tinyproxy/tinyproxy.log' |
|
|
|
|
|
|
|
# Usage: screenOut STATUS message |
|
|
|
screenOut() { |
|
|
|
timestamp=$(date +"%H:%M:%S") |
|
|
|
|
|
|
|
if [ "$#" -ne 2 ]; then |
|
|
|
status='INFO' |
|
|
|
message="$1" |
|
|
|
else |
|
|
|
status="$1" |
|
|
|
message="$2" |
|
|
|
fi |
|
|
|
|
|
|
|
echo -e "[$PROG_NAME][$status][$timestamp]: $message" |
|
|
|
} |
|
|
|
|
|
|
|
# Usage: checkStatus $? "Error message" "Success message" |
|
|
|
checkStatus() { |
|
|
|
case $1 in |
|
|
|
0) |
|
|
|
screenOut "SUCCESS" "$3" |
|
|
|
;; |
|
|
|
1) |
|
|
|
screenOut "ERROR" "$2 - Exiting..." |
|
|
|
exit 1 |
|
|
|
;; |
|
|
|
*) |
|
|
|
screenOut "ERROR" "Unrecognised return code." |
|
|
|
;; |
|
|
|
esac |
|
|
|
} |
|
|
|
|
|
|
|
stopService() { |
|
|
|
screenOut "Checking for running Tinyproxy service..." |
|
|
|
if [ "$(pidof tinyproxy)" ]; then |
|
|
|
screenOut "Found. Stopping Tinyproxy service for pre-configuration..." |
|
|
|
killall tinyproxy |
|
|
|
checkStatus $? "Could not stop Tinyproxy service." \ |
|
|
|
"Tinyproxy service stopped successfully." |
|
|
|
else |
|
|
|
screenOut "Tinyproxy service not running." |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
parseAccessRules() { |
|
|
|
list='' |
|
|
|
for ARG in $@; do |
|
|
|
line="Allow\t$ARG\n" |
|
|
|
list+=$line |
|
|
|
done |
|
|
|
echo "$list" | sed 's/.\{2\}$//' |
|
|
|
} |
|
|
|
|
|
|
|
setMiscConfig() { |
|
|
|
sed -i -e"s,^MinSpareServers ,MinSpareServers\t1 ," $PROXY_CONF |
|
|
|
checkStatus $? "Set MinSpareServers - Could not edit $PROXY_CONF" \ |
|
|
|
"Set MinSpareServers - Edited $PROXY_CONF successfully." |
|
|
|
|
|
|
|
sed -i -e"s,^MaxSpareServers ,MaxSpareServers\t1 ," $PROXY_CONF |
|
|
|
checkStatus $? "Set MinSpareServers - Could not edit $PROXY_CONF" \ |
|
|
|
"Set MinSpareServers - Edited $PROXY_CONF successfully." |
|
|
|
|
|
|
|
sed -i -e"s,^StartServers ,StartServers\t1 ," $PROXY_CONF |
|
|
|
checkStatus $? "Set MinSpareServers - Could not edit $PROXY_CONF" \ |
|
|
|
"Set MinSpareServers - Edited $PROXY_CONF successfully." |
|
|
|
} |
|
|
|
|
|
|
|
enableLogFile() { |
|
|
|
touch /var/log/tinyproxy/tinyproxy.log |
|
|
|
sed -i -e"s,^#LogFile,LogFile," $PROXY_CONF |
|
|
|
} |
|
|
|
|
|
|
|
setAccess() { |
|
|
|
if [[ "$1" == *ANY* ]]; then |
|
|
|
sed -i -e"s/^Allow /#Allow /" $PROXY_CONF |
|
|
|
checkStatus $? "Allowing ANY - Could not edit $PROXY_CONF" \ |
|
|
|
"Allowed ANY - Edited $PROXY_CONF successfully." |
|
|
|
else |
|
|
|
sed -i "s,^Allow 127.0.0.1,$1," $PROXY_CONF |
|
|
|
checkStatus $? "Allowing IPs - Could not edit $PROXY_CONF" \ |
|
|
|
"Allowed IPs - Edited $PROXY_CONF successfully." |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
startService() { |
|
|
|
screenOut "Starting Tinyproxy service..." |
|
|
|
/usr/sbin/tinyproxy |
|
|
|
checkStatus $? "Could not start Tinyproxy service." \ |
|
|
|
"Tinyproxy service started successfully." |
|
|
|
} |
|
|
|
|
|
|
|
tailLog() { |
|
|
|
screenOut "Tailing Tinyproxy log..." |
|
|
|
tail -f $TAIL_LOG |
|
|
|
checkStatus $? "Could not tail $TAIL_LOG" \ |
|
|
|
"Stopped tailing $TAIL_LOG" |
|
|
|
} |
|
|
|
|
|
|
|
# Start script |
|
|
|
echo && screenOut "$PROG_NAME script started..." |
|
|
|
# Stop Tinyproxy if running |
|
|
|
stopService |
|
|
|
# Parse ACL from args |
|
|
|
export rawRules="$@" && parsedRules=$(parseAccessRules $rawRules) && unset rawRules |
|
|
|
# Set ACL in Tinyproxy config |
|
|
|
setAccess $parsedRules |
|
|
|
# Enable log to file |
|
|
|
#enableLogFile |
|
|
|
# Start Tinyproxy |
|
|
|
startService |
|
|
|
# Tail Tinyproxy log |
|
|
|
#tailLog |
|
|
|
# End |
|
|
|
screenOut "$PROG_NAME script ended." && echo |
|
|
|
exit 0 |