UKUI动态

代理使用说明

2023-10-08 10:11:12

在控制面板代理模块中,有设置系统代理和APT代理的入口,下面介绍一下该部分具体做了哪些处理。UKUI

系统代理

系统代理并不是通过直接设置和修改系统对应的代理环境变量来实现的,只是通过修改org.gnome.system.proxy.gschema.xml这个文件里面对应的键值来记录用户的操作,里面各个键值对应了控制面板系统代理中各个选项,这个文件中存在五个schema,分别是org.gnome.system.proxyorg.gnome.system.proxy.httporg.gnome.system.proxy.httpsorg.gnome.system.proxy.ftporg.gnome.system.proxy.socks

开启代理

默认是关闭,因为org.gnome.system.proxy中键mode的值默认是none,开启需要将mode修改为auto(自动)或者manual(手动),控制面板做的处理是开启代理的话,选择开启自动代理,终端上如下修改可达到同样效果,

kylin@lan:~$ gsettings get org.gnome.system.proxy mode
'none'
kylin@lan:~$ gsettings set org.gnome.system.proxy mode auto

此时控制面板如下所示,

UKUI

设置自动代理

自动代理下,需要与org.gnome.system.proxy中的autoconfig-url这个键绑定的,这个值一般是指向一个PAC文件,PAC文件是一个javascript脚本,用户可以通过编辑该脚本,实现智能分流,也就是指定应用所访问的网址是否走代理等等。

终端上可以如下设置,

kylin@lan:~$ gsettings get org.gnome.system.proxy autoconfig-url
''
kylin@lan:~$ gsettings set org.gnome.system.proxy autoconfig-url file:///home/kylin/test.pac

此时控制面板如下所示,

UKUI

设置手动代理

手动代理,需要将org.gnome.system.proxymode的值修改为manual,此时用户可以在此配置所搭建的对应协议的代理服务器的地址和端口,各个地址和端口也对应了各个键,其中HTTP代理两项设置对应的是org.gnome.system.proxy.http的键hostport,其余各个协议类似。设置项 忽略的主机列表,与org.gnome.system.proxyignore-hosts对应,通过设置该键值,可以指定应用访问某些特定的网址或主机不走上面所设置的代理。

终端上可以如下设置,

kylin@lan:~$ gsettings get org.gnome.system.proxy mode
'auto'
kylin@lan:~$ gsettings set org.gnome.system.proxy mode manual
kylin@lan:~$ gsettings set org.gnome.system.proxy.http
authentication-password  enabled                  port
authentication-user      host                      use-authentication
kylin@lan:~$ gsettings set org.gnome.system.proxy.http host 172.20.3.210
kylin@lan:~$ gsettings set org.gnome.system.proxy.http port 8081
kylin@lan:~$ gsettings set org.gnome.system.proxy ignore-hosts "['localhost', 'www.baidu.com']"

此时控制面板如下所示,

UKUI

总体设置如上所示,因为系统代理只是更改了文件,所以应用如果使用系统代理上网的话,需要自行去获取文件内对应的键值,如系统中的终端模拟器mate-terminal,每次打开的时候都会设置对应的代理环境变量,UKUI

kylin@lan:~$ echo $http_proxy
http://172.20.3.210:8081/

ATP代理

一般情况下,设置完对应的代理环境变量之后,通过命令行直接执行的应用都会继承对应的环境变量,如curl和wget,但是部分复杂的应用拥有属于自己的代理设置,这些应用不会走代理环境变量指向的代理地址去访问对应的网址,例如apt应用,如果想让apt通过指定的代理去更新系统或应用,则需要修改指定的配置文件/etc/apt/apt.conf,或者在/etc/apt/apt.conf.d/目录下新建文件,在文件中加入如下内容,

Acquire::http::Proxy "http://172.20.3.210:8081";
Acquire::https::Proxy "https://172.20.3.210:8081";

此时apt会通过其中指定的代理服务器去更新系统和应用,在控制面板中设置也是此效果

UKUI

因为软件商店是通过wget去下载更新应用的,此时只修改了apt的代理配置,用户如果通过软件商店去下载更新应用,则无法走用户设置的代理,所以控制面板此时会更改系统的代理环境变量,需重启系统生效。

总结

系统代理选择使用gsettings来记录用户的设置,而不是直接修改环境变量,这样能够更灵活的满足用户的需求,但是这需要系统中的应用自行去适配这套机制,目前的话,系统中大部分应用并未适配,这些应用一般都有自己的设置代理的接口,用户也可以直接设置,只是暂无法做到统一设置,这也是系统后面需要完善的功能。


UKUI
设计
开发
参与