添加开发API允许局域网访问选项(#1828)
parent
703327ed41
commit
cd7d5ed665
|
@ -138,6 +138,7 @@ const defaultSetting: LX.AppSetting = {
|
|||
|
||||
'openAPI.enable': false,
|
||||
'openAPI.port': '23330',
|
||||
'openAPI.bindLan': false,
|
||||
|
||||
// 'theme.id': 'blue_plus',
|
||||
'theme.id': 'green',
|
||||
|
|
|
@ -626,9 +626,14 @@ declare global {
|
|||
'openAPI.enable': boolean
|
||||
|
||||
/**
|
||||
* 同步服务端口号
|
||||
* API服务端口号
|
||||
*/
|
||||
'openAPI.port': '23333' | string
|
||||
'openAPI.port': '23330' | string
|
||||
|
||||
/**
|
||||
* 是否绑定到局域网
|
||||
*/
|
||||
'openAPI.bindLan': boolean
|
||||
|
||||
/**
|
||||
* 是否在离开搜索界面时自动清空搜索框
|
||||
|
|
|
@ -8,6 +8,7 @@ declare namespace LX {
|
|||
interface EnableServer {
|
||||
enable: boolean
|
||||
port: string
|
||||
bindLan: boolean
|
||||
}
|
||||
|
||||
interface ActionBase <A> {
|
||||
|
|
|
@ -462,6 +462,7 @@
|
|||
"setting__odc_clear_search_list": "Clear the search list when you are not searching",
|
||||
"setting__open_api": "Open API",
|
||||
"setting__open_api_address": "Service address: {address}",
|
||||
"setting__open_api_bind_lan": "Allow access from LAN",
|
||||
"setting__open_api_enable": "Enable open API service",
|
||||
"setting__open_api_port": "Service port",
|
||||
"setting__open_api_port_tip": "Please enter the open API service port",
|
||||
|
|
|
@ -462,6 +462,7 @@
|
|||
"setting__odc_clear_search_list": "离开搜索界面时清空搜索列表",
|
||||
"setting__open_api": "开放API",
|
||||
"setting__open_api_address": "服务地址:{address}",
|
||||
"setting__open_api_bind_lan": "允许来自局域网的访问",
|
||||
"setting__open_api_enable": "启用开放API服务",
|
||||
"setting__open_api_port": "服务端口",
|
||||
"setting__open_api_port_tip": "请输入开放API服务端口",
|
||||
|
|
|
@ -462,6 +462,7 @@
|
|||
"setting__odc_clear_search_list": "離開搜尋介面時清空搜尋列表",
|
||||
"setting__open_api": "開放API",
|
||||
"setting__open_api_address": "服務地址:{address}",
|
||||
"setting__open_api_bind_lan": "允許來自區域網路的訪問",
|
||||
"setting__open_api_enable": "啟用開放API服務",
|
||||
"setting__open_api_port": "服務連接埠",
|
||||
"setting__open_api_port_tip": "請輸入開放API服務端口",
|
||||
|
|
|
@ -41,7 +41,7 @@ const handleSubscribePlayerStatus = (req: http.IncomingMessage, res: http.Server
|
|||
}
|
||||
}
|
||||
|
||||
const handleStartServer = async(port = 9000, ip = '127.0.0.1') => new Promise<void>((resolve, reject) => {
|
||||
const handleStartServer = async(port: number, ip: string) => new Promise<void>((resolve, reject) => {
|
||||
httpServer = http.createServer((req, res): void => {
|
||||
const [endUrl, query] = `/${req.url?.split('/').at(-1) ?? ''}`.split('?')
|
||||
let code
|
||||
|
@ -197,9 +197,9 @@ export const stopServer = async() => {
|
|||
})
|
||||
return status
|
||||
}
|
||||
export const startServer = async(port: number) => {
|
||||
export const startServer = async(port: number, bindLan: boolean) => {
|
||||
if (status.status) await handleStopServer()
|
||||
await handleStartServer(port).then(() => {
|
||||
await handleStartServer(port, bindLan ? '0.0.0.0' : '127.0.0.1').then(() => {
|
||||
status.status = true
|
||||
status.message = ''
|
||||
status.address = `http://localhost${port == 80 ? '' : ':' + port}`
|
||||
|
|
|
@ -11,7 +11,7 @@ export default () => {
|
|||
mainHandle<LX.OpenAPI.Actions, any>(WIN_MAIN_RENDERER_EVENT_NAME.open_api_action, async({ params: data }) => {
|
||||
switch (data.action) {
|
||||
case 'enable':
|
||||
return data.data.enable ? await startServer(parseInt(data.data.port)) : await stopServer()
|
||||
return data.data.enable ? await startServer(parseInt(data.data.port), data.data.bindLan) : await stopServer()
|
||||
case 'status': return getStatus()
|
||||
}
|
||||
})
|
||||
|
|
|
@ -5,12 +5,13 @@ import { openAPI } from '@renderer/store'
|
|||
import { setAutoPause } from '@renderer/core/lyric'
|
||||
|
||||
export default () => {
|
||||
const handleEnable = async(enable: boolean, port: string) => {
|
||||
const handleEnable = async(enable: boolean, port: string, bindLan: boolean) => {
|
||||
await sendOpenAPIAction({
|
||||
action: 'enable',
|
||||
data: {
|
||||
enable,
|
||||
port,
|
||||
bindLan,
|
||||
},
|
||||
}).then((status) => {
|
||||
openAPI.address = status.address
|
||||
|
@ -27,16 +28,22 @@ export default () => {
|
|||
})
|
||||
}
|
||||
watch(() => appSetting['openAPI.enable'], enable => {
|
||||
void handleEnable(enable, appSetting['openAPI.port'])
|
||||
void handleEnable(enable, appSetting['openAPI.port'], appSetting['openAPI.bindLan'])
|
||||
})
|
||||
|
||||
watch(() => appSetting['openAPI.port'], port => {
|
||||
void handleEnable(appSetting['openAPI.enable'], port)
|
||||
if (!appSetting['openAPI.enable']) return
|
||||
void handleEnable(appSetting['openAPI.enable'], port, appSetting['openAPI.bindLan'])
|
||||
})
|
||||
|
||||
watch(() => appSetting['openAPI.bindLan'], bindLan => {
|
||||
if (!appSetting['openAPI.enable']) return
|
||||
void handleEnable(appSetting['openAPI.enable'], appSetting['openAPI.port'], bindLan)
|
||||
})
|
||||
|
||||
return async() => {
|
||||
if (appSetting['openAPI.enable']) {
|
||||
void handleEnable(true, appSetting['openAPI.port'])
|
||||
void handleEnable(true, appSetting['openAPI.port'], appSetting['openAPI.bindLan'])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,10 @@
|
|||
dt#sync {{ $t('setting__open_api') }}
|
||||
dd.gap-top
|
||||
div
|
||||
base-checkbox.gap-top(id="setting_open_api_enable" :model-value="appSetting['openAPI.enable']" :label="$t('setting__open_api_enable')" @update:model-value="updateSetting({ 'openAPI.enable': $event })")
|
||||
.p
|
||||
base-checkbox(id="setting_open_api_enable" :model-value="appSetting['openAPI.enable']" :label="$t('setting__open_api_enable')" @update:model-value="updateSetting({ 'openAPI.enable': $event })")
|
||||
.p.gap-top
|
||||
base-checkbox(id="setting_open_api_bind_lan" :model-value="appSetting['openAPI.bindLan']" :label="$t('setting__open_api_bind_lan')" @update:model-value="updateSetting({ 'openAPI.bindLan': $event })")
|
||||
.p.gap-top.small {{ $t('setting__open_api_address', { address: openAPI.address || '' }) }}
|
||||
.p.small(v-if="openAPI.message") {{ openAPI.message }}
|
||||
.p
|
||||
|
|
Loading…
Reference in New Issue