spine连接器和导出修改
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
||||
import { homedir, platform } from 'node:os'
|
||||
import { dirname, join } from 'node:path'
|
||||
|
||||
function configPath() {
|
||||
if (process.env.SPINE_CONNECTOR_CONFIG) return process.env.SPINE_CONNECTOR_CONFIG
|
||||
if (platform() === 'darwin') return join(homedir(), 'Library/Application Support/SpineParticleConnector/config.json')
|
||||
if (platform() === 'win32') return join(process.env.APPDATA || homedir(), 'SpineParticleConnector/config.json')
|
||||
return join(process.env.XDG_CONFIG_HOME || join(homedir(), '.config'), 'spine-particle-connector/config.json')
|
||||
}
|
||||
|
||||
const localOrigins = new Set([
|
||||
'http://127.0.0.1:5173',
|
||||
'http://localhost:5173',
|
||||
'http://127.0.0.1:4173',
|
||||
'http://localhost:4173',
|
||||
])
|
||||
|
||||
export async function loadConfig() {
|
||||
try {
|
||||
const parsed = JSON.parse(await readFile(configPath(), 'utf8'))
|
||||
return { allowedOrigins: Array.isArray(parsed.allowedOrigins) ? parsed.allowedOrigins.filter((item) => typeof item === 'string') : [] }
|
||||
} catch {
|
||||
return { allowedOrigins: [] }
|
||||
}
|
||||
}
|
||||
|
||||
export async function allowOrigin(origin) {
|
||||
const config = await loadConfig()
|
||||
if (!config.allowedOrigins.includes(origin)) config.allowedOrigins.push(origin)
|
||||
const path = configPath()
|
||||
await mkdir(dirname(path), { recursive: true })
|
||||
await writeFile(path, `${JSON.stringify(config, null, 2)}\n`, 'utf8')
|
||||
}
|
||||
|
||||
export async function originAllowed(origin) {
|
||||
if (!origin) return true
|
||||
if (localOrigins.has(origin)) return true
|
||||
if (String(process.env.SPINE_CONNECTOR_ORIGINS || '').split(',').map((item) => item.trim()).includes(origin)) return true
|
||||
return (await loadConfig()).allowedOrigins.includes(origin)
|
||||
}
|
||||
|
||||
export function validWebOrigin(value) {
|
||||
try {
|
||||
const url = new URL(value)
|
||||
return (url.protocol === 'http:' || url.protocol === 'https:') && url.origin === value ? url.origin : null
|
||||
} catch {
|
||||
return null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user