|
|
#!/usr/bin/env bash
|
|
|
|
|
|
ENABLED=yes
|
|
|
[[ ${ENABLED} == yes ]] || exit 0
|
|
|
|
|
|
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
|
|
|
SOURCE=${ROOTFS}/usr/lib/ublinux/default; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
|
|
|
|
|
|
SYSCONF="${ROOTFS}/${SYSCONF}"
|
|
|
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
SOURCE=${SYSCONF}/network; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
|
|
|
|
|
|
## Установка системных прокси для HTTP,HTTPS,FTP,SOCKS,RSYNC и адреса исключений EXCLUDE
|
|
|
## Для применения требуется перелогиниться
|
|
|
## PROXY_SYSTEM[%PROTOCOL%]=%SERVER%
|
|
|
|
|
|
exec_proxy_gnome(){
|
|
|
if [[ ${PROXY_SYSTEM[0],,} == @(n|no|none|disable) ]]; then
|
|
|
gsettings set org.gnome.system.proxy mode 'none'
|
|
|
gsettings set org.gnome.system.proxy.http enabled false
|
|
|
elif [[ -n ${PROXY_SYSTEM[@]} ]]; then
|
|
|
gsettings set org.gnome.system.proxy mode 'manual'
|
|
|
if [[ -n ${PROXY_SYSTEM[all]} ]]; then
|
|
|
gsettings set org.gnome.system.proxy use-same-proxy true
|
|
|
PROXY_SYSTEM[http]="${PROXY_SYSTEM[all]}"
|
|
|
fi
|
|
|
if [[ ${PROXY_SYSTEM[http],,} == @(n|no|none|disable) ]]; then
|
|
|
gsettings set org.gnome.system.proxy.http enabled false
|
|
|
elif [[ -n ${PROXY_SYSTEM[http]} ]]; then
|
|
|
gsettings set org.gnome.system.proxy.http enabled true
|
|
|
if [[ ${PROXY_HOST} =~ '@' ]]; then
|
|
|
PROXY_USER_PASS="${PROXY_SYSTEM[${PROTOCOL}]##*/}" # Вырезаем протокол http://
|
|
|
PROXY_USER_PASS="${PROXY_USER_PASS%%@*}" # Вырезаем имя пользователя и пароль
|
|
|
PROXY_USER_PASS="${PROXY_USER_PASS%%:*}" # Вырезаем имя пользователя
|
|
|
PROXY_PASSWORD="${PROXY_USER_PASS#*:}" # Вырезаем пароль
|
|
|
[[ ${PROXY_USER_PASS} == ${PROXY_PASSWORD} ]] && unset PROXY_PASSWORD
|
|
|
gsettings set org.gnome.system.proxy.http use-authentication true
|
|
|
gsettings set org.gnome.system.proxy.http authentication-user "'${PROXY_USER}'"
|
|
|
gsettings set org.gnome.system.proxy.http authentication-password "'${PROXY_PASSWORD}'"
|
|
|
else
|
|
|
gsettings set org.gnome.system.proxy.http use-authentication false
|
|
|
fi
|
|
|
fi
|
|
|
if [[ ${PROXY_SYSTEM[exclude],,} == @(n|no|none|disable) ]]; then
|
|
|
gsettings set org.gnome.system.proxy ignore-hosts "['localhost', '127.0.0.0/8', '10.0.0.0/8', '192.168.0.0/16', '172.16.0.0/12', '*.local', '*.local.com', '*.local.ru']"
|
|
|
elif [[ -n ${PROXY_SYSTEM[exclude]} ]]; then
|
|
|
gsettings set org.gnome.system.proxy ignore-hosts "['${PROXY_SYSTEM[exclude]//,/\', \'}']"
|
|
|
fi
|
|
|
if [[ ${PROXY_SYSTEM[auto],,} == @(n|no|none|disable) ]]; then
|
|
|
gsettings set org.gnome.system.proxy autoconfig-url "''"
|
|
|
elif [[ -n ${PROXY_SYSTEM[auto]} ]]; then
|
|
|
gsettings set org.gnome.system.proxy mode 'auto'
|
|
|
gsettings set org.gnome.system.proxy autoconfig-url "'${PROXY_SYSTEM[auto]}'"
|
|
|
fi
|
|
|
|
|
|
|
|
|
for PROTOCOL in http https ftp socks; do
|
|
|
if [[ ${PROXY_SYSTEM[${PROTOCOL}],,} == @(n|no|none|disable) ]]; then
|
|
|
gsettings set org.gnome.system.proxy.${PROTOCOL} host "''"
|
|
|
gsettings set org.gnome.system.proxy.${PROTOCOL} port 0
|
|
|
elif [[ -n ${PROXY_SYSTEM[${PROTOCOL}]} ]]; then
|
|
|
PROXY_HOST="${PROXY_SYSTEM[${PROTOCOL}]##*/}" # Вырезаем протокол http://
|
|
|
PROXY_HOST_IP_PORT="${PROXY_HOST##*@}" # Вырезаем имя или IP с портом, 192.168.1.1:443
|
|
|
PROXY_HOST="${PROXY_HOST_IP_PORT%:*}" # Только имя или IP
|
|
|
PROXY_PORT="${PROXY_HOST_IP_PORT#*:}" # Только порт
|
|
|
[[ ${PROXY_PORT} == ${PROXY_HOST_IP_PORT} ]] && PROXY_PORT=8080 # Если порт не задан
|
|
|
gsettings set org.gnome.system.proxy.${PROTOCOL} host "'${PROXY_HOST}'"
|
|
|
gsettings set org.gnome.system.proxy.${PROTOCOL} port ${PROXY_PORT}
|
|
|
fi
|
|
|
done
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
################
|
|
|
##### MAIN #####
|
|
|
################
|
|
|
|
|
|
exec_proxy_gnome $@
|