#!/bin/bash

# Look at /etc/sysconfig/proxy and make the proxy configuration
# available as environment variable in systemd services

CFG=/etc/sysconfig/proxy
SYSTEMD_CFG=/etc/systemd/system.conf.d/proxy.conf

test -f ${CFG} || exit 0

DefaultEnvironment=""

while read line ; do
    case "$line" in
        \#*|"") continue ;;
    esac
    eval val=${line#*=}
    test -z "$val" && continue
    case "$line" in
        PROXY_ENABLED=*)
	    test "$val" = "yes" && continue
	    if [ -f $SYSTEMD_CFG ]; then
		rm $SYSTEMD_CFG
		systemctl daemon-reload
	    fi
	    exit 0
	    ;;
        HTTP_PROXY=*)
            DefaultEnvironment="$DefaultEnvironment \"HTTP_PROXY=${val}\" \"http_proxy=${val}\""
            ;;
        HTTPS_PROXY=*)
	    DefaultEnvironment="$DefaultEnvironment \"HTTPS_PROXY=${val}\" \"https_proxy=${val}\""
            ;;
        FTP_PROXY=*)
	    DefaultEnvironment="$DefaultEnvironment \"FTP_PROXY=${val}\" \"ftp_proxy=${val}\""
            ;;
        GOPHER_PROXY=*)
	    DefaultEnvironment="$DefaultEnvironment \"GOPHER_PROXY=${val}\" \"gopher_proxy=${val}\""
            ;;
        SOCKS_PROXY=*)
	    DefaultEnvironment="$DefaultEnvironment \"SOCKS_PROXY=${val}\" \"socks_proxy=${val}\""
            ;;
        SOCKS5_SERVER=*)
	    DefaultEnvironment="$DefaultEnvironment \"SOCKS5_SERVER=${val}\" \"socks5_server=${val}\""
            ;;
        NO_PROXY=*)
	    DefaultEnvironment="$DefaultEnvironment \"NO_PROXY=${val}\" \"no_proxy=${val}\""
            ;;
    esac
done < $CFG

test -z "$DefaultEnvironment" && exit 0

if [ ! -d /etc/systemd/system.conf.d ]; then
    mkdir -p /etc/systemd/system.conf.d || exit 1
fi

TMPCFGFILE=`mktemp ${SYSTEMD_CFG}.XXXXXXXXXX` || exit 1
echo -e "[Manager]\nDefaultEnvironment=${DefaultEnvironment}" > ${TMPCFGFILE}
cmp -s ${TMPCFGFILE} ${SYSTEMD_CFG}
if [ $? -ne 0 ]; then
    chmod 0644 ${TMPCFGFILE}
    mv ${TMPCFGFILE} ${SYSTEMD_CFG}
    systemctl daemon-reload
else
    rm -f $TMPCFGFILE
fi

exit 0
