refs #982 Add form to configure proxy server
This commit is contained in:
parent
eff0801f34
commit
ffdc55d619
|
@ -201,7 +201,18 @@
|
||||||
"title": "Proxy Configuration",
|
"title": "Proxy Configuration",
|
||||||
"no": "No proxy",
|
"no": "No proxy",
|
||||||
"system": "Use system proxy",
|
"system": "Use system proxy",
|
||||||
"manual": "Manual proxy configuration"
|
"manual": "Manual proxy configuration",
|
||||||
|
"protocol": "Protocol",
|
||||||
|
"host": "Proxy host",
|
||||||
|
"port": "Proxy port",
|
||||||
|
"protocol_list": {
|
||||||
|
"http": "http",
|
||||||
|
"https": "https",
|
||||||
|
"socks4": "socks4",
|
||||||
|
"socks4a": "socks4a",
|
||||||
|
"socks5": "socks5",
|
||||||
|
"socks5h": "socks5h"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div id="network">
|
<div id="network">
|
||||||
<h2>{{ $t('preferences.network.proxy.title') }}</h2>
|
<h2>{{ $t('preferences.network.proxy.title') }}</h2>
|
||||||
<el-form class="network session" size="small" label-position="top">
|
<el-form class="network section" size="small" label-width="120px">
|
||||||
<div class="proxy-source">
|
<div class="proxy-source">
|
||||||
<el-radio v-model="source" label="no">{{ $t('preferences.network.proxy.no') }}</el-radio>
|
<el-radio v-model="source" label="no">{{ $t('preferences.network.proxy.no') }}</el-radio>
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,14 +11,33 @@
|
||||||
<div class="proxy-source">
|
<div class="proxy-source">
|
||||||
<el-radio v-model="source" label="manual">{{ $t('preferences.network.proxy.manual') }}</el-radio>
|
<el-radio v-model="source" label="manual">{{ $t('preferences.network.proxy.manual') }}</el-radio>
|
||||||
</div>
|
</div>
|
||||||
|
<el-form-item for="proxyProtocol" :label="$t('preferences.network.proxy.protocol')">
|
||||||
|
<el-select v-model="proxyProtocol" placeholder="Select protocol" :disabled="!manualProxyConfiguration">
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.http')" value="http"></el-option>
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.https')" value="https"></el-option>
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.socks4')" value="socks4"></el-option>
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.socks4a')" value="socks4a"></el-option>
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.socks5')" value="socks5"></el-option>
|
||||||
|
<el-option :label="$t('preferences.network.proxy.protocol_list.socks5h')" value="socks5h"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item for="proxyHost" :label="$t('preferences.network.proxy.host')">
|
||||||
|
<el-input v-model="proxyHost" :disabled="!manualProxyConfiguration" placeholder="proxy.example.com"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item for="proxyPort" :label="$t('preferences.network.proxy.port')">
|
||||||
|
<el-input v-model="proxyPort" :disabled="!manualProxyConfiguration" placeholder="8080"></el-input>
|
||||||
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapGetters } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'network',
|
name: 'network',
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapGetters('Preferences/Network', ['manualProxyConfiguration']),
|
||||||
source: {
|
source: {
|
||||||
get() {
|
get() {
|
||||||
return this.$store.state.Preferences.Network.source
|
return this.$store.state.Preferences.Network.source
|
||||||
|
@ -26,21 +45,51 @@ export default {
|
||||||
set(value) {
|
set(value) {
|
||||||
this.$store.dispatch('Preferences/Network/changeSource', value)
|
this.$store.dispatch('Preferences/Network/changeSource', value)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
proxyProtocol: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.Preferences.Network.proxy.protocol
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$store.dispatch('Preferences/Network/updateProtocol', value)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
proxyHost: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.Preferences.Network.proxy.host
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$store.dispatch('Preferences/Network/updateHost', value)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
proxyPort: {
|
||||||
|
get() {
|
||||||
|
return this.$store.state.Preferences.Network.proxy.port
|
||||||
|
},
|
||||||
|
set(value) {
|
||||||
|
this.$store.dispatch('Preferences/Network/updatePort', value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.network {
|
.network /deep/ {
|
||||||
|
max-width: 720px;
|
||||||
|
|
||||||
.proxy-source {
|
.proxy-source {
|
||||||
line-height: 32px;
|
line-height: 32px;
|
||||||
margin: 12px 8px;
|
margin: 12px 8px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
||||||
.el-radio /deep/ {
|
.el-radio {
|
||||||
color: var(--theme-secondary-color);
|
color: var(--theme-primary-color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-form-item__label {
|
||||||
|
color: var(--theme-primary-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,29 +1,66 @@
|
||||||
import { Module, MutationTree, ActionTree } from 'vuex'
|
import { Module, MutationTree, ActionTree, GetterTree } from 'vuex'
|
||||||
import { RootState } from '@/store'
|
import { RootState } from '@/store'
|
||||||
|
|
||||||
export type NetworkState = {
|
export type NetworkState = {
|
||||||
source: 'no' | 'system' | 'manual'
|
source: 'no' | 'system' | 'manual'
|
||||||
|
proxy: {
|
||||||
|
protocol: string
|
||||||
|
host: string
|
||||||
|
port: string
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const state = (): NetworkState => {
|
const state = (): NetworkState => {
|
||||||
return {
|
return {
|
||||||
source: 'no'
|
source: 'no',
|
||||||
|
proxy: {
|
||||||
|
protocol: '',
|
||||||
|
host: '',
|
||||||
|
port: ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const MUTATION_TYPES = {
|
export const MUTATION_TYPES = {
|
||||||
CHANGE_SOURCE: 'changeSource'
|
CHANGE_SOURCE: 'changeSource',
|
||||||
|
UPDATE_PROTOCOL: 'updateProtocol',
|
||||||
|
UPDATE_HOST: 'updateHost',
|
||||||
|
UPDATE_PORT: 'updatePort'
|
||||||
}
|
}
|
||||||
|
|
||||||
const mutations: MutationTree<NetworkState> = {
|
const mutations: MutationTree<NetworkState> = {
|
||||||
[MUTATION_TYPES.CHANGE_SOURCE]: (state, source: 'no' | 'system' | 'manual') => {
|
[MUTATION_TYPES.CHANGE_SOURCE]: (state, source: 'no' | 'system' | 'manual') => {
|
||||||
state.source = source
|
state.source = source
|
||||||
|
},
|
||||||
|
[MUTATION_TYPES.UPDATE_PROTOCOL]: (state, protocol: string) => {
|
||||||
|
state.proxy.protocol = protocol
|
||||||
|
},
|
||||||
|
[MUTATION_TYPES.UPDATE_HOST]: (state, host: string) => {
|
||||||
|
state.proxy.host = host
|
||||||
|
},
|
||||||
|
[MUTATION_TYPES.UPDATE_PORT]: (state, port: string) => {
|
||||||
|
state.proxy.port = port
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const actions: ActionTree<NetworkState, RootState> = {
|
const actions: ActionTree<NetworkState, RootState> = {
|
||||||
changeSource: ({ commit }, source: string) => {
|
changeSource: ({ commit }, source: string) => {
|
||||||
commit(MUTATION_TYPES.CHANGE_SOURCE, source)
|
commit(MUTATION_TYPES.CHANGE_SOURCE, source)
|
||||||
|
},
|
||||||
|
updateProtocol: ({ commit }, protocol: string) => {
|
||||||
|
commit(MUTATION_TYPES.UPDATE_PROTOCOL, protocol)
|
||||||
|
},
|
||||||
|
updateHost: ({ commit }, host: string) => {
|
||||||
|
commit(MUTATION_TYPES.UPDATE_HOST, host)
|
||||||
|
},
|
||||||
|
updatePort: ({ commit }, port: string) => {
|
||||||
|
commit(MUTATION_TYPES.UPDATE_PORT, port)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const getters: GetterTree<NetworkState, RootState> = {
|
||||||
|
manualProxyConfiguration: state => {
|
||||||
|
return state.source === 'manual'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,5 +68,6 @@ export default {
|
||||||
namespaced: true,
|
namespaced: true,
|
||||||
state: state,
|
state: state,
|
||||||
mutations: mutations,
|
mutations: mutations,
|
||||||
actions: actions
|
actions: actions,
|
||||||
|
getters: getters
|
||||||
} as Module<NetworkState, RootState>
|
} as Module<NetworkState, RootState>
|
||||||
|
|
Loading…
Reference in New Issue