Merge pull request #1436 from agalwood/feature/rpc_listen_port_20230419
feat: preference advanced config rpc listen port
This commit is contained in:
@@ -126,6 +126,10 @@
|
||||
},
|
||||
"linux": {
|
||||
"category": "Network",
|
||||
"mimeTypes": [
|
||||
"application/x-bittorrent",
|
||||
"x-scheme-handler/magnet"
|
||||
],
|
||||
"target": [
|
||||
{
|
||||
"target": "AppImage",
|
||||
|
||||
@@ -189,6 +189,59 @@
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="`${$t('preferences.rpc')}: `"
|
||||
:label-width="formLabelWidth"
|
||||
>
|
||||
<el-row style="margin-bottom: 8px;">
|
||||
<el-col
|
||||
class="form-item-sub"
|
||||
:xs="24"
|
||||
:sm="18"
|
||||
:md="10"
|
||||
:lg="10"
|
||||
>
|
||||
{{ $t('preferences.rpc-listen-port') }}
|
||||
<el-input
|
||||
:placeholder="rpcDefaultPort"
|
||||
:maxlength="8"
|
||||
v-model="form.rpcListenPort"
|
||||
@change="onRpcListenPortChange"
|
||||
>
|
||||
<i slot="append" @click.prevent="onRpcPortDiceClick">
|
||||
<mo-icon name="dice" width="12" height="12" />
|
||||
</i>
|
||||
</el-input>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row style="margin-bottom: 8px;">
|
||||
<el-col
|
||||
class="form-item-sub"
|
||||
:xs="24"
|
||||
:sm="18"
|
||||
:md="18"
|
||||
:lg="18"
|
||||
>
|
||||
{{ $t('preferences.rpc-secret') }}
|
||||
<el-input
|
||||
:show-password="hideRpcSecret"
|
||||
placeholder="RPC Secret"
|
||||
:maxlength="24"
|
||||
v-model="form.rpcSecret"
|
||||
>
|
||||
<i slot="append" @click.prevent="onRpcSecretDiceClick">
|
||||
<mo-icon name="dice" width="12" height="12" />
|
||||
</i>
|
||||
</el-input>
|
||||
<div class="el-form-item__info" style="margin-top: 8px;">
|
||||
<a target="_blank" href="https://github.com/agalwood/Motrix/wiki/RPC" rel="noopener noreferrer">
|
||||
{{ $t('preferences.rpc-secret-tips') }}
|
||||
<mo-icon name="link" width="12" height="12" />
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="`${$t('preferences.port')}: `"
|
||||
:label-width="formLabelWidth"
|
||||
@@ -221,7 +274,7 @@
|
||||
:maxlength="8"
|
||||
v-model="form.listenPort"
|
||||
>
|
||||
<i slot="append" @click.prevent="onPortDiceClick">
|
||||
<i slot="append" @click.prevent="onBtPortDiceClick">
|
||||
<mo-icon name="dice" width="12" height="12" />
|
||||
</i>
|
||||
</el-input>
|
||||
@@ -271,7 +324,7 @@
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="`${$t('preferences.security')}: `"
|
||||
:label="`${$t('preferences.user-agent')}: `"
|
||||
:label-width="formLabelWidth"
|
||||
>
|
||||
<el-col class="form-item-sub" :span="24">
|
||||
@@ -290,31 +343,6 @@
|
||||
<el-button @click="() => changeUA('du')">du</el-button>
|
||||
</el-button-group>
|
||||
</el-col>
|
||||
<el-col
|
||||
class="form-item-sub"
|
||||
:xs="24"
|
||||
:sm="18"
|
||||
:md="18"
|
||||
:lg="18"
|
||||
>
|
||||
{{ $t('preferences.rpc-secret') }}
|
||||
<el-input
|
||||
:show-password="hideRpcSecret"
|
||||
placeholder="RPC Secret"
|
||||
:maxlength="24"
|
||||
v-model="form.rpcSecret"
|
||||
>
|
||||
<i slot="append" @click.prevent="onDiceClick">
|
||||
<mo-icon name="dice" width="12" height="12" />
|
||||
</i>
|
||||
</el-input>
|
||||
<div class="el-form-item__info" style="margin-top: 8px;">
|
||||
<a target="_blank" href="https://github.com/agalwood/Motrix/wiki/RPC" rel="noopener noreferrer">
|
||||
{{ $t('preferences.rpc-secret-tips') }}
|
||||
<mo-icon name="link" width="12" height="12" />
|
||||
</a>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="`${$t('preferences.developer')}: `"
|
||||
@@ -376,7 +404,7 @@
|
||||
import ShowInFolder from '@/components/Native/ShowInFolder'
|
||||
import SubnavSwitcher from '@/components/Subnav/SubnavSwitcher'
|
||||
import userAgentMap from '@shared/ua'
|
||||
import { trackerSourceOptions } from '@shared/constants'
|
||||
import { trackerSourceOptions, ENGINE_RPC_PORT, EMPTY_STRING } from '@shared/constants'
|
||||
import {
|
||||
backupConfig,
|
||||
buildRpcUrl,
|
||||
@@ -487,6 +515,9 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
rpcDefaultPort () {
|
||||
return ENGINE_RPC_PORT
|
||||
},
|
||||
...mapState('preference', {
|
||||
config: state => state.config,
|
||||
logPath: state => state.config.logPath,
|
||||
@@ -494,6 +525,13 @@
|
||||
})
|
||||
},
|
||||
watch: {
|
||||
'form.rpcListenPort' (val) {
|
||||
const url = buildRpcUrl({
|
||||
port: this.form.rpcListenPort,
|
||||
secret: val
|
||||
})
|
||||
navigator.clipboard.writeText(url)
|
||||
},
|
||||
'form.rpcSecret' (val) {
|
||||
const url = buildRpcUrl({
|
||||
port: this.form.rpcListenPort,
|
||||
@@ -546,7 +584,7 @@
|
||||
}
|
||||
this.form.userAgent = ua
|
||||
},
|
||||
onPortDiceClick () {
|
||||
onBtPortDiceClick () {
|
||||
const port = generateRandomInt(20000, 24999)
|
||||
this.form.listenPort = port
|
||||
},
|
||||
@@ -554,7 +592,17 @@
|
||||
const port = generateRandomInt(25000, 29999)
|
||||
this.form.dhtListenPort = port
|
||||
},
|
||||
onDiceClick () {
|
||||
onRpcListenPortChange (value) {
|
||||
console.log('onRpcListenPortChange===>', value)
|
||||
if (EMPTY_STRING === value) {
|
||||
this.form.rpcListenPort = this.rpcDefaultPort
|
||||
}
|
||||
},
|
||||
onRpcPortDiceClick () {
|
||||
const port = generateRandomInt(ENGINE_RPC_PORT, 20000)
|
||||
this.form.rpcListenPort = port
|
||||
},
|
||||
onRpcSecretDiceClick () {
|
||||
this.hideRpcSecret = false
|
||||
const rpcSecret = randomize('Aa0', 12)
|
||||
this.form.rpcSecret = rpcSecret
|
||||
@@ -616,7 +664,13 @@
|
||||
...changedConfig.basic
|
||||
}
|
||||
|
||||
const { btAutoDownloadContent, autoHideWindow, btTracker, noProxy } = data
|
||||
const {
|
||||
btAutoDownloadContent,
|
||||
autoHideWindow,
|
||||
btTracker,
|
||||
noProxy,
|
||||
rpcListenPort
|
||||
} = data
|
||||
|
||||
if ('btAutoDownloadContent' in data) {
|
||||
data.pauseMetadata = !btAutoDownloadContent
|
||||
@@ -632,6 +686,10 @@
|
||||
data.noProxy = convertLineToComma(noProxy)
|
||||
}
|
||||
|
||||
if (rpcListenPort === EMPTY_STRING) {
|
||||
data.rpcListenPort = this.rpcDefaultPort
|
||||
}
|
||||
|
||||
console.log('[Motrix] preference changed data:', data)
|
||||
|
||||
this.$store.dispatch('preference/save', data)
|
||||
|
||||
@@ -25,19 +25,26 @@
|
||||
width="80">
|
||||
<template slot-scope="scope">{{ scope.row.extension | removeExtensionDot }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="mode === 'DETAIL'"
|
||||
:label="`%`"
|
||||
align="right"
|
||||
width="50">
|
||||
<template slot-scope="scope">{{ calcProgress(scope.row.length, scope.row.completedLength, 1) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="mode === 'DETAIL'"
|
||||
:label="`✓`"
|
||||
align="right"
|
||||
width="85">
|
||||
<template slot-scope="scope">{{ scope.row.completedLength | bytesToSize }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('task.file-size')"
|
||||
align="right"
|
||||
width="85">
|
||||
<template slot-scope="scope">{{ scope.row.length | bytesToSize }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
v-if="mode === 'DETAIL'"
|
||||
:label="$t('task.file-completed-size')"
|
||||
align="right"
|
||||
width="95">
|
||||
<template slot-scope="scope">{{ scope.row.completedLength | bytesToSize }}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<el-row class="file-filters" :gutter="12">
|
||||
@@ -84,6 +91,7 @@
|
||||
} from '@shared/constants'
|
||||
import {
|
||||
bytesToSize,
|
||||
calcProgress,
|
||||
filterVideoFiles,
|
||||
filterAudioFiles,
|
||||
filterImageFiles,
|
||||
@@ -149,6 +157,7 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
calcProgress,
|
||||
toggleAllSelection () {
|
||||
if (!this.$refs.torrentTable) {
|
||||
return
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'منفذ BT للاستماع',
|
||||
'dht-port': 'منفذ DHT للاستماع',
|
||||
'security': 'الحماية',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'منفذ استماع RPC',
|
||||
'rpc-secret': 'رمز RPC السري',
|
||||
'rpc-secret-tips': 'عرض دليل رمز RPC السري',
|
||||
'developer': 'المطور',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'وكيل مستخدم وهمي',
|
||||
'app-log-path': 'مسار سجلات التطبيق',
|
||||
'download-session-path': 'مسار التحميلات',
|
||||
|
||||
@@ -59,6 +59,8 @@ export default {
|
||||
'bt-port':'пристанище на слушане BT',
|
||||
'dht-port':'DHT слушане Порт',
|
||||
'security':'сигурност',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC слушащ порт',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Гледайте инструкцията RPC Secret',
|
||||
'developer':'developer',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Port d\'escolta BT',
|
||||
'dht-port': 'Port d\'escolta DHT',
|
||||
'security': 'Seguretat',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Port d\'Escolta RPC',
|
||||
'rpc-secret': 'Clau RPC',
|
||||
'rpc-secret-tips': 'Mirar manual de la clau RPC',
|
||||
'developer': 'Desenvolupador',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Ruta del log',
|
||||
'download-session-path': 'Ruta de descàrrega de la sessió',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT Listen Port',
|
||||
'dht-port': 'DHT Listen Port',
|
||||
'security': 'Sicherheit',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC-Hörport',
|
||||
'rpc-secret': 'RPC-Geheimnis',
|
||||
'rpc-secret-tips': 'Geheime RPC-Anleitung anzeigen',
|
||||
'developer': 'Entwickler',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'User-Agent simulieren',
|
||||
'app-log-path': 'Appprotokollpfad',
|
||||
'download-session-path': 'Downloadsitzungspfad',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Ενεργή θύρα BT',
|
||||
'dht-port': 'Ενεργή θύρα DHT',
|
||||
'security': 'Ασφάλεια',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Θύρα Ακρόασης RPC',
|
||||
'rpc-secret': 'Μυστικό για το RPC',
|
||||
'rpc-secret-tips': 'Εμφάνιση εγχειριδίου για το Μυστικό RPC',
|
||||
'developer': 'Προγραμματιστής',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Πλαστό User-Agent',
|
||||
'app-log-path': 'Διαδρομή για το αρχείο log της εφαρμογής',
|
||||
'download-session-path': 'Διαδρομή λήψεων για αυτή τη συνεδρία',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT Listen Port',
|
||||
'dht-port': 'DHT Listen Port',
|
||||
'security': 'Security',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC Listen Port',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'View RPC Secret Manual',
|
||||
'developer': 'Developer',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'App log path',
|
||||
'download-session-path': 'Download session path',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Puerto de escucha BT',
|
||||
'dht-port': 'Puerto de escucha DHT',
|
||||
'security': 'Seguridad',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Puerto de Escucha RPC',
|
||||
'rpc-secret': 'Clave RPC',
|
||||
'rpc-secret-tips': 'Ver manual de la clave RPC',
|
||||
'developer': 'Desarrollador',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Falsear Agente de Usuario',
|
||||
'app-log-path': 'Ruta del registro',
|
||||
'download-session-path': 'Ruta de descarga de la sesión',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'درگاه BT',
|
||||
'dht-port': 'درگاه DHT',
|
||||
'security': 'امنیت',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'پورت گوش دادن به RPC',
|
||||
'rpc-secret': 'رمز RPC',
|
||||
'rpc-secret-tips': 'مشاهده راهنمای رمز RPC',
|
||||
'developer': 'توسعهدهنده',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'جعل عامل کاربر',
|
||||
'app-log-path': 'مسیر گزارش برنامه',
|
||||
'download-session-path': 'مسیر نشست بارگیری',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Ports d\'écoute BT',
|
||||
'dht-port': 'Ports d\'écoute DHT',
|
||||
'security': 'Sécurité',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Port d\'écoute RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Voir le manuel secret RPC',
|
||||
'developer': 'Développeur',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Chemin des logs',
|
||||
'download-session-path': 'Chemin de la session de téléchargement',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT Listen Port',
|
||||
'dht-port': 'DHT Listen Port',
|
||||
'security': 'Biztonság',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC-hallgató-port',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'RPC Secret kézikönyv megnyitasa',
|
||||
'developer': 'feljesztö',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'User-Agent-t',
|
||||
'app-log-path': 'Alkalmazásnapló helye',
|
||||
'download-session-path': 'Letöltés folyamat helye',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Dengarkan Port BT',
|
||||
'dht-port': 'Dengarkan Port DHT',
|
||||
'security': 'Keamanan',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Port Dengar RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Lihat Petunjuk RPC Secret',
|
||||
'developer': 'Developer',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Lokasi Log Aplikasi',
|
||||
'download-session-path': 'Lokasi Session Unduhan',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Porte in ascolto BT',
|
||||
'dht-port': 'Porte in ascolto DHT',
|
||||
'security': 'Sicurezza',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Porta di Ascolto RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Guida sull\'uso degli rpc secret (in Inglese)',
|
||||
'developer': 'Sviluppatore',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Cambia User-Agent',
|
||||
'app-log-path': 'Posizione log dell\'app',
|
||||
'download-session-path': 'Posizione sessione di download',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT リスンポート',
|
||||
'dht-port': 'DHT リスンポート',
|
||||
'security': 'セキュリティ',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPCリッスンポート',
|
||||
'rpc-secret': 'RPCシークレット',
|
||||
'rpc-secret-tips': 'RPCシークレットマニュアルの閲覧',
|
||||
'developer': '開発者',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': '偽装ユーザーエージェント(UA)',
|
||||
'app-log-path': 'ログディレクトリを適用',
|
||||
'download-session-path': 'セッションパスをダウンロード',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT 청취 포트',
|
||||
'dht-port': 'DHT 청취 포트',
|
||||
'security': '보안',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC 청취 포트',
|
||||
'rpc-secret': 'RPC 비밀',
|
||||
'rpc-secret-tips': 'RPC 비밀 매뉴얼 보기',
|
||||
'developer': '개발자',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': '모의 사용자 에이전트',
|
||||
'app-log-path': '앱 로그 경로',
|
||||
'download-session-path': '다운로드 세션 경로',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT-lytteport',
|
||||
'dht-port': 'DHT-lytteport',
|
||||
'security': 'Sikkerhet',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC lytteport',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Se RPC Secret Manual',
|
||||
'developer': 'Utvikler',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Apploggbane',
|
||||
'download-session-path': 'Last ned øktstien',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT luister poort',
|
||||
'dht-port': 'DHT luister poort',
|
||||
'security': 'Beveiliging',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC Luisterpoort',
|
||||
'rpc-secret': 'RPC geheim',
|
||||
'rpc-secret-tips': 'bekijk RPC geheim handleiding',
|
||||
'developer': 'Ontwikkelaar',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'User-Agent nabootsen',
|
||||
'app-log-path': 'Applicatie log pad',
|
||||
'download-session-path': 'Downloadsessie pad',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Torrent nasłuchujący port',
|
||||
'dht-port': 'DHT nasłuchujący port',
|
||||
'security': 'Bezpieczeństwo',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Port nasłuchu RPC',
|
||||
'rpc-secret': 'Sekret RPC',
|
||||
'rpc-secret-tips': 'Pokaż instrukcję sekretu RPC',
|
||||
'developer': 'Developer',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Udawaj user-agent\'a',
|
||||
'app-log-path': 'Ścieżka logów',
|
||||
'download-session-path': 'Ścieżka sesji pobranych',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Porta de escuta BT',
|
||||
'dht-port': 'Porta de escuta DHT',
|
||||
'security': 'Segurança',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Porta de Escuta RPC',
|
||||
'rpc-secret': 'Segredo de RPC',
|
||||
'rpc-secret-tips': 'Veja o manual secreto de RPC',
|
||||
'developer': 'Desenvolverdor',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Diretório de logs',
|
||||
'download-session-path': 'Diretório da sessão de Downloads',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Port ascultare BT',
|
||||
'dht-port': 'Port ascultare DHT',
|
||||
'security': 'Securitate',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Portul de Ascultare RPC',
|
||||
'rpc-secret': 'Secret RPC',
|
||||
'rpc-secret-tips': 'Vizualizați manualul pentru secret RPC',
|
||||
'developer': 'Dezvoltator',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Calea jurnalului aplicației',
|
||||
'download-session-path': 'Calea sesiunii de download',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Порт прослушивания BT',
|
||||
'dht-port': 'Порт прослушивания DHT',
|
||||
'security': 'Безопастность',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Порт прослушивания RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Смотреть инструкцию RPC Secret',
|
||||
'developer': 'Разработчик',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Макет User-Agent',
|
||||
'app-log-path': 'Путь к журналу приложения',
|
||||
'download-session-path': 'Загрузить путь сессии',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT Listen Port',
|
||||
'dht-port': 'DHT Listen Port',
|
||||
'security': 'ความปลอดภัย',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'พอร์ตฟัง RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'ดูคู่มือลับ RPC',
|
||||
'developer': 'นักพัฒนา',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'จำลอง User-Agent',
|
||||
'app-log-path': 'เส้นทางบันทึกแอป',
|
||||
'download-session-path': 'เส้นทางดาวน์โหลดเซสชัน',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT dinleme bağlantı noktası',
|
||||
'dht-port': 'DHT dinleme bağlantı noktası',
|
||||
'security': 'Güvenlik',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC Dinleme Portu',
|
||||
'rpc-secret': 'RPC sırrı',
|
||||
'rpc-secret-tips': 'RPC gizli kılavuzunu görüntüle',
|
||||
'developer': 'Geliştirici',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Sahte Kullanıcı Kimliği (User-Agent)',
|
||||
'app-log-path': 'Uygulama log yolu',
|
||||
'download-session-path': 'Oturum yolunu indir',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Порт прослуховування BT',
|
||||
'dht-port': 'Порт прослуховування DHT',
|
||||
'security': 'Безпека',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Порт прослуховування RPC',
|
||||
'rpc-secret': 'RPC Secret',
|
||||
'rpc-secret-tips': 'Дивитись інструкцію RPC Secret',
|
||||
'developer': 'Розробник',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Макет User-Agent',
|
||||
'app-log-path': 'Шлях до журналу додатка',
|
||||
'download-session-path': 'Завантажити шлях сесії',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'Cổng giao tiếp BT cuối',
|
||||
'dht-port': 'Cổng giao tiếp DHT cuối',
|
||||
'security': 'Bảo mật',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'Cổng Nghe RPC',
|
||||
'rpc-secret': 'RPC bí mật',
|
||||
'rpc-secret-tips': 'Xem RPC bí mật thủ công',
|
||||
'developer': 'Lập trình viên',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': 'Mock User-Agent',
|
||||
'app-log-path': 'Đường dẫn nhật ký ứng dụng',
|
||||
'download-session-path': 'Đường dẫn phiên tải về',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT 监听端口',
|
||||
'dht-port': 'DHT 监听端口',
|
||||
'security': '安全性',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC 监听端口',
|
||||
'rpc-secret': 'RPC 授权密钥',
|
||||
'rpc-secret-tips': '查看说明文档',
|
||||
'developer': '开发者',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': '模拟用户代理(UA)',
|
||||
'app-log-path': '应用日志路径',
|
||||
'download-session-path': '下载会话路径',
|
||||
|
||||
@@ -59,9 +59,12 @@ export default {
|
||||
'bt-port': 'BT 監聽連接埠',
|
||||
'dht-port': 'DHT 監聽連接埠',
|
||||
'security': '安全性',
|
||||
'rpc': 'RPC',
|
||||
'rpc-listen-port': 'RPC 監聽埠',
|
||||
'rpc-secret': 'RPC 授權密鑰',
|
||||
'rpc-secret-tips': '查看說明手冊',
|
||||
'developer': '開發者',
|
||||
'user-agent': 'User-Agent',
|
||||
'mock-user-agent': '偽裝 User Agent',
|
||||
'app-log-path': '應用程式記錄檔位置',
|
||||
'download-session-path': '下載工作階段路徑',
|
||||
|
||||
@@ -101,14 +101,14 @@ export function peerIdParser (str) {
|
||||
return result
|
||||
}
|
||||
|
||||
export function calcProgress (totalLength, completedLength) {
|
||||
export function calcProgress (totalLength, completedLength, decimal = 2) {
|
||||
const total = parseInt(totalLength, 10)
|
||||
const completed = parseInt(completedLength, 10)
|
||||
if (total === 0 || completed === 0) {
|
||||
return 0
|
||||
}
|
||||
const percentage = completed / total * 100
|
||||
const result = parseFloat(percentage.toFixed(2))
|
||||
const result = parseFloat(percentage.toFixed(decimal))
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user