chown -R squid:squid /var/log/squid
chown -R squid:squid /var/log/squidGuard
+
transparent() {
DEVICE=$1
-
+
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
eval $(/usr/local/bin/readhash /var/ipfire/proxy/settings)
-
+
# If the proxy port is not set we set the default to 800.
- if [ -z $PROXY_PORT ]; then
- PROXY_PORT=800
+ if [ -z "${TRANSPARENT_PORT}" ]; then
+ TRANSPARENT_PORT=800
fi
LOCALIP=`cat /var/ipfire/red/local-ipaddress | tr -d \n`
iptables -t nat -A SQUID -i $1 -p tcp -d $LOCALIP --dport 80 -j RETURN
- iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT
+ iptables -t nat -A SQUID -i $1 -p tcp --dport 80 -j REDIRECT --to-port "${TRANSPARENT_PORT}"
}
case "$1" in
start)
- if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
- boot_mesg "Starting Squid Proxy Server..."
- loadproc /usr/sbin/squid -D -z >/dev/null 2>&1
- loadproc /usr/sbin/squid -D
+ getpids "squid"
+
+ if [ -n "${pidlist}" ]; then
+ echo -e "Squid is already running with Process"\
+ "ID(s) ${pidlist}.${NORMAL}"
+ evaluate_retval
+ exit
fi
+
+ eval $(/usr/local/bin/readhash /var/ipfire/proxy/advanced/settings)
eval $(/usr/local/bin/readhash /var/ipfire/ethernet/settings)
+ if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
+ # Add Address to errorpage stylesheet
+ sed "s|XXXhostXXX|$GREEN_ADDRESS|g" /var/ipfire/proxy/errorpage-$ERR_DESIGN.css > \
+ /etc/squid/errorpage.css
+
+ boot_mesg "Creating Squid swap directories..."
+ /usr/sbin/squid -z >/dev/null 2>&1
+ evaluate_retval
+
+ # Make sure, that the process above has finished.
+ counter=5
+ while [ ${counter} -gt 0 ]; do
+ if pidofproc -s /usr/sbin/squid; then
+ sleep 1
+ else
+ break
+ fi
+ done
+
+ boot_mesg "Starting Squid Proxy Server..."
+ loadproc /usr/sbin/squid
+ fi
+
if [ -e /var/ipfire/proxy/transparent ]; then
transparent $GREEN_DEV
fi
;;
stop)
-
- if [ -e /var/ipfire/proxy/enable -o -e /var/ipfire/proxy/enable_blue ]; then
- boot_mesg "Stopping Squid Proxy Server..."
iptables -t nat -F SQUID
+ if [ -e /var/run/squid.pid ]; then
+ boot_mesg "Stopping Squid Proxy Server..."
squid -k shutdown >/dev/null 2>&1
evaluate_retval
- killproc /usr/bin/squidGuard >/dev/null
- killproc /usr/sbin/updxlrator >/dev/null
+
+ # Stop squidGuard, updxlrator, squidclamav
+ # and redirect_wrappers.
+ killproc /usr/bin/squidGuard >/dev/null &
+ killproc /usr/sbin/updxlrator >/dev/null &
+ killproc /usr/bin/squidclamav >/dev/null &
+ killproc /usr/sbin/redirect_wrapper >/dev/null &
+
+ # Wait until all redirectors have been stopped.
+ wait
+
+ # If squid is still running, wait up to 30 seconds
+ # before we go on to kill it.
+ counter=30
+
+ while [ ${counter} -gt 0 ]; do
+ statusproc /usr/sbin/squid >/dev/null && break;
+ sleep 1
+ counter=$(( ${counter} - 1))
+ done
+
+ # Kill squid service, if still running.
killproc /usr/sbin/squid >/dev/null
+
+ # Trash remain pid file from squid.
+ rm -rf /var/run/squid.pid
fi
;;
$0 start
;;
+ reconfigure)
+ /usr/sbin/squid -k reconfigure
+ ;;
+
status)
statusproc /usr/sbin/squid
statusproc /usr/lib/squid/unlinkd
sleep 1
$0 start
;;
+ setperms)
+ chown -R nobody.squid /var/updatecache/
+ ;;
*)
echo "Usage: $0 {start|stop|restart|status|flush}"