#!/bin/bash
user=$(whoami)
gnunet_proxy=$(gnunet-config -c /etc/skel/.config/gnunet.conf -s gns-proxy | grep 'IMMEDIATE_START = YES')

# Enable GNS proxy for new users informed by /etc/skel.
if [ "$gnunet_proxy" ]; then

        # Calculate user specific port
        port=$((8000+$(id -u "$user")))

        gnunet-config -c "$HOME/.config/gnunet.conf" \
                --section=gns-proxy \
                --option=OPTIONS \
                --value="-p $port"

        # Firefox
        defaultprofile=$(ls "$HOME/.mozilla/firefox/*.default")
        if [ ! "$defaultprofile" ];then
                timeout 3s firefox --headless # dirty: create profile if not existent
        fi
        for ffprofile in "$HOME"/.mozilla/firefox/*.*/; do
                js=$ffprofile/user.js
                if [ -f "$js" ]; then
                        sed -i '/Preferences for using the GNU Name System/d' "$js"
                        sed -i '/network.proxy.socks/d' "$js"
                        sed -i '/network.proxy.socks_port/d' "$js"
                        sed -i '/network.proxy.socks_remote_dns/d' "$js"
                        sed -i '/network.proxy.type/d' "$js"
                fi
                echo "// Preferences for using the GNU Name System" >> "$js"
                echo "user_pref(\"network.proxy.socks\", \"localhost\");" >> "$js"
                echo "user_pref(\"network.proxy.socks_port\", $port);" >> "$js"
                echo "user_pref(\"network.proxy.socks_remote_dns\", true);" >> "$js"
                echo "user_pref(\"network.proxy.type\", 1);" >> "$js"
        done

        # Chromium
        profile="$HOME/.profile"
        if [ -f "$profile" ]; then
                sed -i '/CHROMIUM_USER_FLAGS/d' "$profile"
        fi
        echo "export CHROMIUM_USER_FLAGS=--proxy-server=socks5://localhost:$port" \
                >> "$profile"
fi

# Create/Renew GNS certificate authority (CA) per user.
gnunet-gns-proxy-setup-ca
