feature: `Linux` 也支持系统代理排除域名功能

pull/375/head
王良 2024-10-02 00:16:08 +08:00
parent 0fff380ad1
commit 463c3e45cd
2 changed files with 45 additions and 48 deletions

View File

@ -269,8 +269,6 @@ const executor = {
// 延迟加载config // 延迟加载config
loadConfig() loadConfig()
// const local = 'localhost, 127.0.0.0/8, ::1'
// https // https
const setProxyCmd = [ const setProxyCmd = [
'gsettings set org.gnome.system.proxy mode manual', 'gsettings set org.gnome.system.proxy mode manual',
@ -285,8 +283,10 @@ const executor = {
setProxyCmd.push("gsettings set org.gnome.system.proxy.http host ''") setProxyCmd.push("gsettings set org.gnome.system.proxy.http host ''")
setProxyCmd.push('gsettings set org.gnome.system.proxy.http port 0') setProxyCmd.push('gsettings set org.gnome.system.proxy.http port 0')
} }
// ignore-hosts
// setProxyCmd.push(`gsettings set org.gnome.system.proxy ignore-hosts "${local}"`) // 设置排除域名ignore-hosts
const excludeIpStr = getProxyExcludeIpStr("', '")
setProxyCmd.push(`gsettings set org.gnome.system.proxy ignore-hosts "['${excludeIpStr}']"`)
await exec(setProxyCmd) await exec(setProxyCmd)
} else { // 关闭代理 } else { // 关闭代理

View File

@ -31,7 +31,7 @@
</div> </div>
</a-form-item> </a-form-item>
<!-- 以下功能仅windows支持mac和linux暂不支持 --> <!-- 以下两个功能仅windows支持mac和linux暂不支持 -->
<a-form-item v-if="isWindows()" label="设置环境变量" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-form-item v-if="isWindows()" label="设置环境变量" :label-col="labelCol" :wrapper-col="wrapperCol">
<a-checkbox v-model="config.proxy.setEnv" > <a-checkbox v-model="config.proxy.setEnv" >
是否同时修改<code>HTTPS_PROXY</code>环境变量不好用不建议勾选 是否同时修改<code>HTTPS_PROXY</code>环境变量不好用不建议勾选
@ -46,49 +46,46 @@
<div class="form-help">解决<code>OneNote</code><code>MicrosoftStore</code><code>Outlook</code><code>UWP应用</code>开启代理后无法访问网络的问题</div> <div class="form-help">解决<code>OneNote</code><code>MicrosoftStore</code><code>Outlook</code><code>UWP应用</code>开启代理后无法访问网络的问题</div>
</a-form-item> </a-form-item>
<!-- 以下功能仅windows和macos支持linux暂不支持 --> <hr/>
<div v-if="isWindows() || isMac()"> <a-form-item label="排除国内域名" :label-col="labelCol" :wrapper-col="wrapperCol">
<hr/> <a-checkbox v-model="config.proxy.excludeDomesticDomainAllowList" >
<a-form-item label="排除国内域名" :label-col="labelCol" :wrapper-col="wrapperCol"> 是否排除国内域名白名单
<a-checkbox v-model="config.proxy.excludeDomesticDomainAllowList" > </a-checkbox>
是否排除国内域名白名单 </a-form-item>
</a-checkbox> <a-form-item label="自动更新国内域名" :label-col="labelCol" :wrapper-col="wrapperCol">
</a-form-item> <a-checkbox v-model="config.proxy.autoUpdateDomesticDomainAllowList" >
<a-form-item label="自动更新国内域名" :label-col="labelCol" :wrapper-col="wrapperCol"> 是否自动更新国内域名白名单
<a-checkbox v-model="config.proxy.autoUpdateDomesticDomainAllowList" > </a-checkbox>
是否自动更新国内域名白名单 <div class="form-help">
</a-checkbox> 开启自动更新并启动系统代理时将会异步从下面的远程地址下载国内域名白名单文件到本地<br/>
<div class="form-help"> 只要下载成功后即使关闭自动更新功能也会优先读取最近下载的文件
开启自动更新并启动系统代理时将会异步从下面的远程地址下载国内域名白名单文件到本地<br/> </div>
只要下载成功后即使关闭自动更新功能也会优先读取最近下载的文件 </a-form-item>
</div> <a-form-item label="远程国内域名地址" :label-col="labelCol" :wrapper-col="wrapperCol">
</a-form-item> <a-input v-model="config.proxy.remoteDomesticDomainAllowListFileUrl" :title="config.proxy.remoteDomesticDomainAllowListFileUrl"></a-input>
<a-form-item label="远程国内域名地址" :label-col="labelCol" :wrapper-col="wrapperCol"> <div class="form-help">
<a-input v-model="config.proxy.remoteDomesticDomainAllowListFileUrl" :title="config.proxy.remoteDomesticDomainAllowListFileUrl"></a-input> 远程国内域名白名单文件内容可以是<code>base64</code>编码格式也可以是未经过编码的
<div class="form-help"> </div>
远程国内域名白名单文件内容可以是<code>base64</code>编码格式也可以是未经过编码的 </a-form-item>
</div> <hr/>
</a-form-item> <a-form-item label="自定义排除域名" :label-col="labelCol" :wrapper-col="wrapperCol">
<hr/> <a-row :gutter="10">
<a-form-item label="自定义排除域名" :label-col="labelCol" :wrapper-col="wrapperCol"> <a-col :span="22">
<a-row :gutter="10"> <span>访问的域名或IP符合下列配置时将跳过系统代理</span>
<a-col :span="22"> </a-col>
<span>访问的域名或IP符合下列配置时将跳过系统代理</span> <a-col :span="2">
</a-col> <a-button type="primary" icon="plus" @click="addExcludeIp()"/>
<a-col :span="2"> </a-col>
<a-button type="primary" icon="plus" @click="addExcludeIp()"/> </a-row>
</a-col> <a-row :gutter="10" v-for="(item,index) of excludeIpList" :key='index'>
</a-row> <a-col :span="22">
<a-row :gutter="10" v-for="(item,index) of excludeIpList" :key='index'> <a-input :disabled="item.value === false" v-model="item.key"></a-input>
<a-col :span="22"> </a-col>
<a-input :disabled="item.value === false" v-model="item.key"></a-input> <a-col :span="2">
</a-col> <a-button type="danger" icon="minus" @click="delExcludeIp(item,index)"/>
<a-col :span="2"> </a-col>
<a-button type="danger" icon="minus" @click="delExcludeIp(item,index)"/> </a-row>
</a-col> </a-form-item>
</a-row>
</a-form-item>
</div>
</div> </div>
<template slot="footer"> <template slot="footer">
<div class="footer-bar"> <div class="footer-bar">