Files
FileHost/server/cli/clear-domains.mjs
T
2026-10-17 16:09:31 +08:00

81 lines
2.6 KiB
JavaScript

import { mkdirSync } from 'node:fs'
import { join } from 'node:path'
import { DatabaseSync } from 'node:sqlite'
const SITE_KEY = 'site_base_url'
const IMAGE_KEY = 'image_base_url'
const VIDEO_KEY = 'video_base_url'
const FILE_KEY = 'file_base_url'
const DOMAIN_SEPARATION_KEY = 'domain_separation_enabled'
const args = process.argv.slice(2)
const siteOnly = args.includes('--site')
const imageOnly = args.includes('--image')
const videoOnly = args.includes('--video')
const fileOnly = args.includes('--file')
const selectiveFlags = [siteOnly, imageOnly, videoOnly, fileOnly].filter(Boolean).length
if (args.some(arg => !['--site', '--image', '--video', '--file'].includes(arg))) {
console.error('Usage: clear-domains [--site] [--image] [--video] [--file]')
console.error(' (no flags) Clear all domain URLs from settings')
console.error(' --site Clear site URL only')
console.error(' --image Clear image URL only')
console.error(' --video Clear video URL only')
console.error(' --file Clear file URL only')
process.exit(1)
}
if (selectiveFlags > 1) {
console.error('Usage: specify at most one selective domain flag')
process.exit(1)
}
const dataDir = process.env.DATA_DIR || join(process.cwd(), 'data')
mkdirSync(dataDir, { recursive: true })
const db = new DatabaseSync(join(dataDir, 'pichost.db'))
function readSetting(key) {
const row = db.prepare(`
SELECT value
FROM settings
WHERE key = ?
`).get(key)
return row?.value ?? null
}
const beforeSite = readSetting(SITE_KEY)
const beforeImage = readSetting(IMAGE_KEY)
const beforeVideo = readSetting(VIDEO_KEY)
const beforeFile = readSetting(FILE_KEY)
const keysToClear = siteOnly
? [SITE_KEY]
: imageOnly
? [IMAGE_KEY]
: videoOnly
? [VIDEO_KEY]
: fileOnly
? [FILE_KEY]
: [SITE_KEY, IMAGE_KEY, VIDEO_KEY, FILE_KEY, DOMAIN_SEPARATION_KEY]
for (const key of keysToClear) {
db.prepare('DELETE FROM settings WHERE key = ?').run(key)
}
db.close()
console.log('[PicHost] Domain settings cleared from database.')
if (keysToClear.includes(SITE_KEY)) {
console.log(` site_base_url: ${beforeSite ?? '(unset)'} → (removed)`)
}
if (keysToClear.includes(IMAGE_KEY)) {
console.log(` image_base_url: ${beforeImage ?? '(unset)'} → (removed)`)
}
if (keysToClear.includes(VIDEO_KEY)) {
console.log(` video_base_url: ${beforeVideo ?? '(unset)'} → (removed)`)
}
if (keysToClear.includes(FILE_KEY)) {
console.log(` file_base_url: ${beforeFile ?? '(unset)'} → (removed)`)
}
console.log('[PicHost] Restart is not required. Refresh the admin page or use your previous access URL.')