- intro
- GUI options
- other features
- download and install
- desktop shortcut
- known issues
- test current proxy setup
- release history
If you are running some standard Ubuntu (e.g. with the Unity UI) then first have a look if configuring it via the standard UI already solves your problems.
Workaround for newer Ubuntu versions (based on GTK3): see known issues below
(This version is an already heavily improved from the 2015 https://code.google.com/p/ubproxy/ version)
An inevitable tool to configure proxy-settings in universities and office environments. Eliminates repetitive editing of system files prone to manual errors.
(Gnome)GUI for updating various default Ubuntu proxy aware "places" all included as plugins:
- standard application / places (Plugin):
/etc/environment
standard (PluginEtcEnv)http_proxy=http://myproxy:8080
,HTTPS_PROXY=...
, ... (upper and lowercase)
- Bash standard:
/etc/bash.bashrc
(PluginBashRc)- similar to above but with
export
prefix
- similar to above but with
- Shell Env (currently running): e.g. invoked via
/bin/bash
orCTRL+T
(Terminal) (PluginEnvThis)- similar to bash above
- does only report on the current settings but NOT change them! (may be a future enhancement)
- Apt:
/etc/apt/apt.conf
(PluginApt)Acquire::http::proxy "http://myproxy:8080"
...
- Gnome settings:
gsettings list-recursively org.gnome.system.proxy
(PluginGsettings) - Java Runtime Environment (default):
/etc/alternatives/java
(PluginJavaAlt)- it's
JAVA_HOME/lib/net.properties
, e.g.java.net.useSystemProxies=...
,http.proxyHost=...
,https.proxyHost=...
properties
- it's
- individual tools (not making use of the above settings, at least in certain environments or versions)
- Tomcat 8:
/etc/default/tomcat8
with-Dhttp.proxyHost=myproxy -Dhttp.proxyPort=8080 ...
(PluginTomcat8) - Hale Studio:
<hale-studio>/workspace/.metadata/.../....prefs
(PluginHale) - QGIS:
/home/user/.config/QGIS/QGIS2.conf
/proxyHost=myproxy
... (PluginQgis) - TOS (Talend Open Studio):
TOS_DI*/configuration/.settings/org.eclipse.core.net.prefs
... (PluginTOS) - maybe your application by easily adding some new plugin
- Tomcat 8:
with this it covers all (4 first of the above) system places mentioned e.g. here:
host
: for all HTTP, HTTPS, FTP connectionsport
: for all the abovehttpsProtocol
: default:http
; used for env var setup above ; maybe sometimes it must behttps
REMOVE
button: to reset proxy (remove entries ;gsettings
mode
to'none'
;java.net.useSystemProxies
tofalse
)
- backups dir:
~/.ubproxy.backups
- logfile:
/var/logs/ubproxy.log
- outputting relevant setup (lines) of each plugin after setup or removal of the proxy settings to stdout and the log file
- many easily adjustable parameters on top of ubproxy main file or some plugin files
- download
- latest final release version zip or tar.gz
- or from here via git:
git clone https://github.com/o2idev/ubproxy
- or from here via git:
- or latest development version as zip from here to
/tmp
- latest final release version zip or tar.gz
- optional: move to
/opt
for availability after restarts (may be prefixsudo
if needed):mv /tmp/ubproxy* /opt
create it similar to this (if moved to /opt
): ln -s /opt/ubproxy /home/user/Desktop/proxy-setup.sh
- unfortunately, in newer Ubuntu versions (based on gtk3) there need to be dependent Ubuntu libs present that had been there earlier. till this is fixed in ubproxy, one has to at least set up the
apt
proxy manually and then execute:
sudo apt install python python-gtk2
sudo python ubproxy
-
authentication support is not implemented for all plugins
-
some
dconf
related errors can be ignored (it seems related to callinggsettings
with theuser
account instead of some sudo user): lines look like this:(process:3261): dconf-CRITICAL **: unable to create directory '/root/.cache/dconf': Keine Berechtigung. dconf will not work properly.
-
by default all plugins are enabled although the plugins application (e.g. Tomcat) may not be present or unique: this may lead to recoverable error messages
- one can disable such plugins by simply renaming them using a
_
prefix, e.g.plugins/_PluginJavaAlt.py
- one can disable such plugins by simply renaming them using a
-
see also issues
hint: if you change the proxy settings via ubproxy
(which is based on python), it will display the same data via stdout and in the logs for all plugins.
In a future version this could be available without touching the proxy settings and thus replacing/extending the functionality of the ubproxy-status.sh
(which is based on shell) below.
to check in all the 6 "standard" above "system places" you can execute sh /opt/ubproxy-status.sh
(or wherever you installed it)
the output could be similar to this:
$ /opt/ubproxy-status.sh
++ echo -e '\n'
++ update-alternatives --query java
++ grep 'Value: '
++ sed 's/Value: \(.*\)\/bin\/java/\1\/lib\/net.properties/'
++ xargs cat
++ egrep -i prox
# For now, only the various proxy settings can be configured here.
# Whether or not the DefaultProxySelector will default to System Proxy
# specific proxy settings
# Note that the system properties that do explicitely set proxies
# (like http.proxyHost) do take precedence over the system settings
# even if java.net.useSystemProxies is set to true.
# Proxy configuration for the various protocol handlers.
# DO NOT uncomment these lines if you have set java.net.useSystemProxies
java.net.useSystemProxies=true
# HTTP Proxy settings. proxyHost is the name of the proxy server
# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
# value is 80) and nonProxyHosts is a '|' separated list of hostnames which
# should be accessed directly, ignoring the proxy server (default value is
# http.proxyHost=
http.nonProxyHosts=localhost|127.*|[::1]
# HTTPS Proxy Settings. proxyHost is the name of the proxy server
# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
# value is 443). The HTTPS protocol handlers uses the http nonProxyHosts list.
# https.proxyHost=
# FTP Proxy settings. proxyHost is the name of the proxy server
# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
# value is 80) and nonProxyHosts is a '|' separated list of hostnames which
# should be accessed directly, ignoring the proxy server (default value is
# ftp.proxyHost=
ftp.nonProxyHosts=localhost|127.*|[::1]
# Gopher Proxy settings. proxyHost is the name of the proxy server
# (e.g. proxy.mydomain.com), proxyPort is the port number to use (default
# gopher.proxyHost=
# gopher.proxyPort=80
# Socks proxy settings. socksProxyHost is the name of the proxy server
# (e.g. socks.domain.com), socksProxyPort is the port number to use
# socksProxyHost=
# socksProxyPort=1080
# when proxying HTTP or HTTPS. For example, "Basic" results in effectively the
# schemes that will be disabled when tunneling HTTPS over a proxy, HTTP CONNECT.
# The 'jdk.http.auth.proxying.disabledSchemes' property lists the authentication
# schemes that will be disabled when proxying HTTP.
#jdk.http.auth.proxying.disabledSchemes=
++ echo -e '\n'
++ cat /etc/bash.bashrc
++ egrep -i prox
export http_proxy="http://myproxyhost:8080"
export ftp_proxy="ftp://myproxyhost:8080"
export https_proxy="http://myproxyhost:8080"
export HTTP_PROXY="http://myproxyhost:8080"
export FTP_PROXY="ftp://myproxyhost:8080"
export HTTPS_PROXY="http://myproxyhost:8080"
++ echo -e '\n'
++ cat /etc/environment
++ egrep -i prox
http_proxy="http://myproxyhost:8080"
ftp_proxy="ftp://myproxyhost:8080"
https_proxy="http://myproxyhost:8080"
HTTP_PROXY="http://myproxyhost:8080"
FTP_PROXY="ftp://myproxyhost:8080"
HTTPS_PROXY="http://myproxyhost:8080"
++ echo -e '\n'
++ egrep -i prox
++ cat /etc/apt/apt.conf
Acquire::http::proxy "http://myproxyhost:8080/";
Acquire::ftp::proxy "ftp://myproxyhost:8080/";
Acquire::https::proxy "http://myproxyhost:8080/";
++ echo -e '\n'
++ set
++ egrep -i prox
BASH_SOURCE=([0]="/opt/ubproxy-status.sh")
FTP_PROXY=ftp://myproxyhost:8080
HTTPS_PROXY=http://myproxyhost:8080
HTTP_PROXY=http://myproxyhost:8080
PWD=/opt/UrlProxyTester
ftp_proxy=ftp://myproxyhost:8080
http_proxy=http://myproxyhost:8080
https_proxy=http://myproxyhost:8080
++ echo -e '\n'
++ gsettings list-recursively org.gnome.system.proxy
org.gnome.system.proxy use-same-proxy true
org.gnome.system.proxy mode 'manual'
org.gnome.system.proxy autoconfig-url ''
org.gnome.system.proxy ignore-hosts ['localhost', '127.0.0.0/8', '::1']
org.gnome.system.proxy.ftp host 'myproxyhost'
org.gnome.system.proxy.ftp port 8080
org.gnome.system.proxy.socks host ''
org.gnome.system.proxy.socks port 0
org.gnome.system.proxy.http host 'myproxyhost'
org.gnome.system.proxy.http port 8080
org.gnome.system.proxy.http use-authentication false
org.gnome.system.proxy.http authentication-password ''
org.gnome.system.proxy.http authentication-user ''
org.gnome.system.proxy.http enabled true
org.gnome.system.proxy.https host 'myproxyhost'
org.gnome.system.proxy.https port 8080
++ echo -e '\n'
the output of wget http://duckduckgo.com -O /tmp/wget-proxy-test.html
(likely in a new Terminal with CTRL + ALT + T
) should be similar to this:
--2020-07-31 11:13:06-- http://duckduckgo.com/
Auflösen des Hostnamen »myproxyhost (myproxyhost)«... 172.11.11.11
Verbindungsaufbau zu myproxyhost (myproxyhost)|172.11.11.11|:8080... verbunden.
Proxy-Anforderung gesendet, warte auf Antwort... 301 Moved Permanently
Platz: https://duckduckgo.com/ [folge]
--2020-07-31 11:13:06-- https://duckduckgo.com/
Verbindungsaufbau zu myproxyhost (myproxyhost)|172.11.11.11|:8080... verbunden.
Proxy-Anforderung gesendet, warte auf Antwort... 200 OK
Länge: 5403 (5,3K) [text/html]
In »»/tmp/wget-proxy-test.html«« speichern.
/tmp/wget-proxy-test.html 100%[==========================================================>] 5,28K --.-KB/s in 0s
2020-07-31 11:13:07 (929 MB/s) - »/tmp/wget-proxy-test.html« gespeichert [5403/5403]
Opening http://www.duckduckgo.com
should work. make sure it's not coming from the local browser cache => press CTRL + F5
or similiar to ensure it
use java ProxyTester <URL>
, e.g. java ProxyTester http://www.duckduckgo.com
which should output something like this if the setup works:
supply HTTP or HTTPS url as param
header fields:{null=[HTTP/1.1 301 Moved Permanently], X-Cache=[MISS from lnx-proxy01], Server=[nginx],
Connection=[keep-alive], Date=[Thu, 30 Jul 2020 06:46:22 GMT], Via=[1.1 proxy01 (squid/8.8.8)],
Strict-Transport-Security=[max-age=31536000], Cache-Control=[max-age=31536000],
X-Cache-Lookup=[MISS from proxy01:8080], Expires=[Fri, 30 Jul 2021 06:46:22 GMT], Content-Length=[162],
Age=[94138], Location=[https://duckduckgo.com/], Content-Type=[text/html]}
put proxy-test.war containing a very simple servlet in your <tomcat>/webapps
folder and test the proxy functionality e.g. like this http://localhost:8080/proxy-test/test?url=https://duckduckgo.com
- fix for PluginBashRc and PluginEnvThis (env cmd spaces removed:
http_proxy = "..."
etc. tohttp_proxy="..."
)
- support/plugin for TOS (Talend Open Studio)
- support for non-proxy hosts for all plugins
- plugin concept added and existing functionality moved to plugins
- further plugins added: Tomcat8, Hale Studio, Qgis
- backup dir now
~/.ubproxy.backups
(before.Ubuntu-Proxy
) - logfile now
/var/logs/ubproxy.log
(before/var/logs/proxychangerlogs
) - many easily adjustable parameters on top of ubproxy main file or some plugin files
- outputting relevant setup (lines) of each plugin after setup or removal of the proxy settings to stdout and the log file
- backup functionality fixed
- various refactorings and enhancements
- code prepared for non-GUI usage and cmd line param functionality (code separation)
gsettings
support addedhttpsProtocol
GUI parameter- default JAVA/JRE support added
- various fixes/refactorings
considering the google code from 2015 as v1.0.0