Skip to content

Commit 21c6b77

Browse files
author
xVanTuring
authored
Merge pull request #74 from xVanTuring/v0.3.0
0.3.0-alpha.5 fixes
2 parents 112b6db + bab2e72 commit 21c6b77

File tree

10 files changed

+82
-99
lines changed

10 files changed

+82
-99
lines changed

src/main/locales/en-US.json

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,14 @@
44
"MENU_PAC": "PAC",
55
"MENU_SETTINGS": "Settings",
66
"MENU_HELP": "Help",
7-
87
"MENU_SUB_ENABLE_APP": "Enable",
98
"MENU_SUB_COPY_HTTP_PROXY": "Copy HTTP Proxy Settings",
109
"MENU_QUIT": "Quit",
11-
1210
"MENU_SUB_NO_PROXY": "No Proxy",
1311
"MENU_SUB_PAC_PROXY": "PAC Proxy",
1412
"MENU_SUB_GLOBAL_PROXY": "Global Proxy",
15-
1613
"MENU_SUB_UPDATE_PAC": "Update PAC",
1714
"MENU_SUB_PAC_MODE": "PAC Mode",
18-
1915
"MENU_SUB_SETTING_OPTIONS": "Options",
2016
"MENU_SUB_CONFIG_FILE": "Config File",
2117
"MENU_SUB_LOAD_CF": "Import gui-config.json",
@@ -26,26 +22,23 @@
2622
"MENU_SUB_ADD_NODE": "Node",
2723
"MENU_SUB_ADD_FROM_CB": "From Clipboard",
2824
"MENU_SUB_ADD_FROM_QR_SCAN": "Qrcode Scan",
29-
3025
"MENU_SUB_CHECK_UPDATE": "Check Update",
3126
"MENU_SUB_DEVS": "Dev",
3227
"MENU_SUB_DEVS_INSPECT_LOG": "Inspect Logs",
33-
3428
"TRAY_EDIT_SERVER": "Edit Server",
3529
"TRAY_SUB_SETTINGS": "Subscription",
3630
"TRAY_UPDATE_SUB_LINK": "Update Subscription",
3731
"TRAY_MAIN_PAGE": "Main Page",
3832
"TRAY_SERVERS": "Servers",
39-
40-
"NOTI_PORT_TAKEN":"Port {port} has been taken",
41-
"NOTI_CHECK_PORT":"Please check yout port",
42-
"NOTI_PROCESS_CANT_KILL":"Process {pid} may not be closed, please try close it manually",
33+
"NOTI_PORT_TAKEN": "Port {port} has been taken",
34+
"NOTI_CHECK_PORT": "Please check yout port",
35+
"NOTI_PROCESS_CANT_KILL": "Process {pid} may not be closed, please try close it manually",
4336
"NOTI_PYTHON_MISSING_TITLE": "No python detected",
4437
"NOTI_PYTHON_MISSING_DETAIL": "The backend of this program requires python\n Please Make sure you have it installed",
45-
"NOTI_PAC_UPDATE_SUCC":"PAC File Updated",
46-
"NOTI_PAC_UPDATE_FAILED":"PAC Updating Failed, Please check your network and DNS",
38+
"NOTI_PAC_UPDATE_SUCC": "PAC File Updated",
39+
"NOTI_PAC_UPDATE_FAILED": "PAC Updating Failed, Please check your network and DNS",
4740
"NOTI_SHORTCUT_REGISTERED": "{length} global failed to registered, go Shortcut Panel and set it again",
48-
49-
"NOTI_TYPE_ERROR":"Error",
50-
"NOTI":"Notification"
41+
"NOTI_TYPE_ERROR": "Error",
42+
"NOTI": "Notification",
43+
"NOTO_WIND_GLOBAL_PROXY": "Windows does not play well with socks5 provided by ssr-python.\nUse HTTP Proxy instead?"
5144
}

src/main/locales/zh-CN.json

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,14 @@
44
"MENU_PAC": "PAC",
55
"MENU_SETTINGS": "设置",
66
"MENU_HELP": "帮助",
7-
87
"MENU_SUB_ENABLE_APP": "开启应用",
98
"MENU_SUB_COPY_HTTP_PROXY": "复制HTTP代理设置",
109
"MENU_QUIT": "退出",
11-
1210
"MENU_SUB_NO_PROXY": "不启用代理",
1311
"MENU_SUB_PAC_PROXY": "PAC代理",
1412
"MENU_SUB_GLOBAL_PROXY": "全局代理",
15-
1613
"MENU_SUB_UPDATE_PAC": "更新PAC",
1714
"MENU_SUB_PAC_MODE": "PAC模式",
18-
1915
"MENU_SUB_SETTING_OPTIONS": "选项设置",
2016
"MENU_SUB_CONFIG_FILE": "配置文件",
2117
"MENU_SUB_LOAD_CF": "导入gui-config.json文件",
@@ -26,26 +22,23 @@
2622
"MENU_SUB_ADD_NODE": "添加节点",
2723
"MENU_SUB_ADD_FROM_CB": "从剪贴板中添加",
2824
"MENU_SUB_ADD_FROM_QR_SCAN": "二维码扫描",
29-
3025
"MENU_SUB_CHECK_UPDATE": "检查更新",
3126
"MENU_SUB_DEVS": "开发者",
3227
"MENU_SUB_DEVS_INSPECT_LOG": "查看日志",
33-
3428
"TRAY_EDIT_SERVER": "编辑服务器",
3529
"TRAY_SUB_SETTINGS": "订阅管理",
3630
"TRAY_UPDATE_SUB_LINK": "更新订阅服务器",
3731
"TRAY_MAIN_PAGE": "主界面",
3832
"TRAY_SERVERS": "服务器",
39-
40-
"NOTI_PORT_TAKEN":"端口 {port} 被占用",
41-
"NOTI_CHECK_PORT":"请检查你端口占用",
42-
"NOTI_PROCESS_CANT_KILL":"进程 {pid} 可能无法关闭,尝试手动关闭",
33+
"NOTI_PORT_TAKEN": "端口 {port} 被占用",
34+
"NOTI_CHECK_PORT": "请检查你端口占用",
35+
"NOTI_PROCESS_CANT_KILL": "进程 {pid} 可能无法关闭,尝试手动关闭",
4336
"NOTI_PYTHON_MISSING_TITLE": "未检测到python",
4437
"NOTI_PYTHON_MISSING_DETAIL": "本程序所使用的后端为python版ssr/ssrr\n请确保已安装python且可正常使用,否则软件可能无法正常运行",
45-
"NOTI_PAC_UPDATE_SUCC":"PAC文件更新成功",
46-
"NOTI_PAC_UPDATE_FAILED":"PAC文件更新失败, 请检查你的网络和DNS",
38+
"NOTI_PAC_UPDATE_SUCC": "PAC文件更新成功",
39+
"NOTI_PAC_UPDATE_FAILED": "PAC文件更新失败, 请检查你的网络和DNS",
4740
"NOTI_SHORTCUT_REGISTERED": "检测到 {length} 个全局快捷键注册失败,请在快捷键页面重新设置",
48-
49-
"NOTI_TYPE_ERROR":"错误",
50-
"NOTI":"通知"
41+
"NOTI_TYPE_ERROR": "错误",
42+
"NOTI": "通知",
43+
"NOTO_WIND_GLOBAL_PROXY": "Windows 系统与 Socks5 协议不兼容,是否切换使用HTTP协议?"
5144
}

src/main/proxy.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export async function setProxyToNone (force = true) {
6868
export async function setProxyToGlobal (host, port) {
6969
let command
7070
if (isWin && await pathExists(winToolPath)) {
71-
command = `${winToolPath} global ${host}:${port}`
71+
command = `${winToolPath} global ${host}:${port} "localhost;127.*;10.*;172.16.*;172.17.*;172.18.*;172.19.*;172.20.*;172.21.*;172.22.*;172.23.*;172.24.*;172.25.*;172.26.*;172.27.*;172.28.*;172.29.*;172.30.*;172.31.*;192.168.*;<local>"`
7272
} else if (isMac && await pathExists(macToolPath) && !await isOldMacVersion) {
7373
command = `"${macToolPath}" -m global -p ${port}`
7474
} else if (isLinux && await isGsettingsAvaliable) {
@@ -98,7 +98,7 @@ async function setProxyByMode (mode) {
9898
} else if (mode === 1) {
9999
await setProxyToPac(`http://127.0.0.1:${currentConfig.pacPort}/proxy.pac`)
100100
} else if (mode === 2) {
101-
await setProxyToGlobal('127.0.0.1', currentConfig.localPort)
101+
await setProxyToGlobal('127.0.0.1', currentConfig.preferHTTPGlobal ? currentConfig.httpProxyPort : currentConfig.localPort)
102102
}
103103
}
104104

@@ -116,6 +116,9 @@ export function startProxy (mode) {
116116
if (mode === undefined) {
117117
mode = currentConfig.sysProxyMode
118118
}
119+
if (isWin && mode === 2 && currentConfig.preferHTTPGlobal === 1 && !currentConfig.httpProxyEnable) {
120+
updateAppConfig({ httpProxyEnable: true })
121+
}
119122
setProxyByMode(mode)
120123
}
121124

@@ -129,7 +132,7 @@ appConfig$.subscribe(data => {
129132
if (appConfig.sysProxyMode === 1 && (changed.indexOf('pacPort') > -1 || changed.indexOf('enable') > -1)) {
130133
// pacPort changes or enable changed
131134
startProxy(1)
132-
} else if (appConfig.sysProxyMode === 2 && (changed.indexOf('localPort') > -1 || changed.indexOf('enable') > -1)) {
135+
} else if (appConfig.sysProxyMode === 2 && (changed.indexOf('localPort') > -1 || changed.indexOf('enable') > -1 || changed.indexOf('preferHTTPGlobal') > -1)) {
133136
startProxy(2)
134137
}
135138
}

src/main/tray-handler.js

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { app, shell, clipboard } from 'electron'
1+
import { app, shell, clipboard, dialog } from 'electron'
22
import { readJson, writeJson } from 'fs-extra'
33
import path from 'path'
44
import sudo from 'sudo-prompt'
@@ -11,7 +11,6 @@ import { startProxy } from './proxy'
1111
import { showNotification } from './notification'
1212
import * as events from '../shared/events'
1313
import { loadConfigsFromString } from '../shared/ssr'
14-
import { chooseFile, chooseSavePath } from '../shared/dialog'
1514
import * as i18n from './locales'
1615
const $t = i18n.default
1716
export { openDevtool } from './window'
@@ -21,7 +20,6 @@ export { updateSubscribes } from './subscribe'
2120
export function toggleEnable () {
2221
updateAppConfig({ enable: !currentConfig.enable })
2322
}
24-
2523
// 切换代理方式
2624
export function toggleProxy (mode) {
2725
startProxy(mode)
@@ -48,26 +46,31 @@ export function scanQRCode () {
4846
sendData(events.EVENT_APP_SCAN_DESKTOP)
4947
}
5048

51-
// 打开选项设置页面
5249
export function openOptionsWindow () {
5350
sendData(events.EVENT_APP_SHOW_PAGE, 'Options')
5451
}
5552

56-
// 导入配置文件
57-
export function importConfigFromFile () {
58-
const _path = chooseFile('选择gui-config.json', [{ name: 'Json', extensions: ['json'] }])
59-
if (_path) {
60-
readJson(_path).then(fileConfig => {
53+
export async function importConfigFromFile () {
54+
const result = await dialog.showOpenDialog({
55+
title: 'Open from',
56+
properties: ['openFile'],
57+
filters: [{ name: 'Json', extensions: ['json'] },
58+
{ name: 'All', extensions: ['*'] }]
59+
})
60+
if (result.filePaths.length === 1) {
61+
readJson(result.filePaths[0]).then(fileConfig => {
6162
updateAppConfig(fileConfig, false, true)
62-
}).catch(() => {})
63+
}).catch(() => { })
6364
}
6465
}
6566

66-
// 导出配置文件
67-
export function exportConfigToFile () {
68-
const _path = chooseSavePath('选择导出的目录')
69-
if (_path) {
70-
writeJson(path.join(_path, 'gui-config.json'), currentConfig, { spaces: '\t' })
67+
export async function exportConfigToFile () {
68+
const result = await dialog.showOpenDialog({
69+
title: 'Save to',
70+
properties: ['openDirectory']
71+
})
72+
if (result.filePaths.length === 1) {
73+
writeJson(path.join(result.filePaths[0], 'gui-config.json'), currentConfig, { spaces: '\t' })
7174
}
7275
}
7376

src/main/tray.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { Menu, nativeImage, Tray } from 'electron'
2-
import { appConfig$ } from './data'
1+
import { Menu, nativeImage, Tray, dialog } from 'electron'
2+
import { appConfig$, updateAppConfig } from './data'
33
import * as handler from './tray-handler'
4-
import { groupConfigs } from '../shared/utils'
4+
import { groupConfigs } from '@/shared/utils'
55
import { isMac, isWin, isOldMacVersion } from '../shared/env'
66
import { disabledTray, enabledHighlightTray, enabledTray, globalHighlightTray, globalTray, pacHighlightTray, pacTray } from '../shared/icon'
77
import * as i18n from './locales'
@@ -121,6 +121,20 @@ export function changeProxy (e, mode, appConfig) {
121121
if (mode === appConfig.sysProxyMode) {
122122
e.checked = true
123123
} else {
124+
if (isWin && mode === 2 && appConfig.preferHTTPGlobal === -1) {
125+
dialog.showMessageBox({
126+
title: $t('MENU_SUB_GLOBAL_PROXY'),
127+
message: $t('NOTO_WIND_GLOBAL_PROXY'),
128+
buttons: ['Yes', 'No'],
129+
type: 'info'
130+
}).then((response) => {
131+
if (response.response === 0) {
132+
updateAppConfig({ preferHTTPGlobal: 1 })
133+
} else {
134+
updateAppConfig({ preferHTTPGlobal: 0 })
135+
}
136+
})
137+
}
124138
handler.toggleProxy(mode)
125139
}
126140
}

src/renderer/locales/en-US.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"UI_SETTING_HTTP_PORT": "Http Proxy Port",
3434
"UI_SETTING_ENABLE_HTTP_PORT": "Enable Http Proxy",
3535
"UI_SETTING_SSR_INPUT_PLACEHOLDER": "Please select shadowsocks Dir",
36+
"UI_SETTING_PREFER_HTTP":"Use Http as Global",
3637
"UI_SETTING_SHORTCUT_TOGGLE_VISI": "Toggle Windows",
3738
"UI_SETTING_SHORTCUT_CHANGE_SYS_PROXY": "Change Sys Proxy Mode",
3839
"UI_SETTING_SHORTCUT_REGISTED":"Shortcut {shortcutStr} has been registered.",

src/renderer/locales/zh-CN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"UI_SETTING_HTTP_PORT": "HTTP代理端口",
3434
"UI_SETTING_ENABLE_HTTP_PORT": "启用HTTP代理",
3535
"UI_SETTING_SSR_INPUT_PLACEHOLDER": "请选择shadowsocks目录",
36+
"UI_SETTING_PREFER_HTTP":"使用Http全局代理",
3637

3738
"UI_SETTING_SHORTCUT_TOGGLE_VISI": "切换窗口显隐",
3839
"UI_SETTING_SHORTCUT_CHANGE_SYS_PROXY": "切换系统代理模式",

src/renderer/views/option/Common.vue

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div class="options-container px-2 pb-2 scroll-y">
3-
<i-form ref="form" class="mt-1" :model="form" :rules="rules" :label-width="120">
3+
<i-form ref="form" class="mt-1" :model="form" :rules="rules">
44
<i-form-item prop="ssrPath" :label="$t('UI_SETTING_SSR_PYTHON_DIR')">
55
<i-input
66
v-model="form.ssrPath"
@@ -10,47 +10,50 @@
1010
/>
1111
<i-button type="primary" @click="selectPath">{{$t('UI_SETTING_SELECT_SSR_PYTHON_DIR')}}</i-button>
1212
</i-form-item>
13-
<div class="flex">
14-
<i-form-item class="flex-1" :label="$t('UI_SETTING_AUTO_START')">
13+
<div class="flex flex-jc-between">
14+
<i-form-item class="flex" :label="$t('UI_SETTING_AUTO_START')">
1515
<i-checkbox v-model="form.autoLaunch" @on-change="update('autoLaunch')" />
1616
</i-form-item>
17-
<i-form-item class="flex-1" :label="$t('UI_SETTING_HIDE_WINDOW')">
17+
<i-form-item class="flex" :label="$t('UI_SETTING_HIDE_WINDOW')">
1818
<i-checkbox v-model="form.hideWindow" @on-change="update('hideWindow')" />
1919
</i-form-item>
20-
<i-form-item class="flex-1" :label="$t('UI_SETTING_SHARE_LAN')">
20+
<i-form-item class="flex" :label="$t('UI_SETTING_SHARE_LAN')">
2121
<i-checkbox v-model="form.shareOverLan" @on-change="update('shareOverLan')" />
2222
</i-form-item>
23-
<i-form-item class="flex-1" :label="$t('UI_SETTING_ENABLE_HTTP_PORT')">
23+
<i-form-item class="flex" :label="$t('UI_SETTING_ENABLE_HTTP_PORT')">
2424
<i-checkbox v-model="form.httpProxyEnable" @on-change="update('httpProxyEnable')" />
2525
</i-form-item>
2626
</div>
27-
<div class="flex">
28-
<i-form-item class="flex-1" :label="$t('UI_SETTING_PAC_PORT')">
27+
<div class="flex flex-jc-between">
28+
<i-form-item class="flex" :label="$t('UI_SETTING_PAC_PORT')">
2929
<i-input-number
3030
v-model="form.pacPort"
3131
:min="0"
3232
:max="65535"
3333
@on-change="update('pacPort')"
3434
/>
3535
</i-form-item>
36-
<i-form-item class="flex-1" :label="$t('UI_SETTING_LOCAL_LISTEN_PORT')">
36+
<i-form-item class="flex" :label="$t('UI_SETTING_LOCAL_LISTEN_PORT')">
3737
<i-input-number
3838
v-model="form.localPort"
3939
:min="0"
4040
:max="65535"
4141
@on-change="update('localPort')"
4242
/>
4343
</i-form-item>
44-
<i-form-item class="flex-1" :label="$t('UI_SETTING_HTTP_PORT')">
44+
<i-form-item class="flex" :label="$t('UI_SETTING_HTTP_PORT')">
4545
<i-input-number
4646
v-model="form.httpProxyPort"
4747
:min="0"
4848
:max="65535"
4949
@on-change="update('httpProxyPort')"
5050
/>
5151
</i-form-item>
52+
<i-form-item class="flex" :label="$t('UI_SETTING_PREFER_HTTP')">
53+
<i-checkbox v-model="form.preferHTTPGlobal" @on-change="update('preferHTTPGlobal')" />
54+
</i-form-item>
5255
</div>
53-
<i-form-item prop="lang" label="Language" :label-width="120">
56+
<i-form-item prop="lang" label="Language">
5457
<i-select v-model="form.lang" class="language-selector-view" @input="update('lang')">
5558
<i-option value="zh-CN">简体中文</i-option>
5659
<i-option value="en-US">English</i-option>
@@ -61,7 +64,7 @@
6164
</template>
6265
<script>
6366
import { mapActions } from 'vuex'
64-
import { isSSRPathAvaliable, debounce } from '../../../shared/utils'
67+
import { isSSRPathAvaliable, debounce } from '@/shared/utils'
6568
import { openDialog } from '@/renderer/ipc'
6669
import i18n from '@/renderer/i18n'
6770
export default {
@@ -77,7 +80,8 @@ export default {
7780
pacPort: appConfig.pacPort,
7881
httpProxyEnable: appConfig.httpProxyEnable,
7982
httpProxyPort: appConfig.httpProxyPort,
80-
lang: appConfig.lang
83+
lang: appConfig.lang,
84+
preferHTTPGlobal: appConfig.preferHTTPGlobal === 1
8185
},
8286
rules: {
8387
ssrPath: [
@@ -138,6 +142,10 @@ export default {
138142
}
139143
},
140144
update: debounce(function (field) {
145+
if (field === 'preferHTTPGlobal') {
146+
this.updateConfig({ [field]: this.form[field] ? 1 : 0 })
147+
return
148+
}
141149
if (this.form[field] !== this.$store.state.appConfig[field]) {
142150
this.updateConfig({ [field]: this.form[field] })
143151
if (field === 'lang') {

src/shared/config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ const defaultConfig = {
4343
subscribeUpdateInterval: 24,
4444
lang: 'en-US',
4545
isMacToolInstalled: false,
46-
noMacToolInstall: false
46+
noMacToolInstall: false,
47+
preferHTTPGlobal: -1
4748
}
4849

4950
export default defaultConfig

0 commit comments

Comments
 (0)