Merge pull request #1436 from agalwood/feature/rpc_listen_port_20230419

feat: preference advanced config rpc listen port
This commit is contained in:
Dr_rOot
2023-04-19 21:55:15 +08:00
committed by GitHub
30 changed files with 188 additions and 40 deletions
+4
View File
@@ -126,6 +126,10 @@
},
"linux": {
"category": "Network",
"mimeTypes": [
"application/x-bittorrent",
"x-scheme-handler/magnet"
],
"target": [
{
"target": "AppImage",
+89 -31
View File
@@ -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
+3
View File
@@ -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': 'مسار التحميلات',
+2
View File
@@ -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',
+3
View File
@@ -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ó',
+3
View File
@@ -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',
+3
View File
@@ -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': 'Διαδρομή λήψεων για αυτή τη συνεδρία',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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': 'مسیر نشست بارگیری',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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': 'セッションパスをダウンロード',
+3
View File
@@ -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': '다운로드 세션 경로',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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',
+3
View File
@@ -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': 'Загрузить путь сессии',
+3
View File
@@ -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': 'เส้นทางดาวน์โหลดเซสชัน',
+3
View File
@@ -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',
+3
View File
@@ -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': 'Завантажити шлях сесії',
+3
View File
@@ -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ề',
+3
View File
@@ -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': '下载会话路径',
+3
View File
@@ -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': '下載工作階段路徑',
+2 -2
View File
@@ -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
}