42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import { mkdirSync } from 'node:fs'
|
|
import { join } from 'node:path'
|
|
import { DatabaseSync } from 'node:sqlite'
|
|
|
|
const SETTING_KEY = 'login_verification_method'
|
|
const SLIDER = 'slider'
|
|
|
|
if (process.argv.length > 2) {
|
|
console.error('Usage: slider')
|
|
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'))
|
|
|
|
const row = db.prepare(`
|
|
SELECT value
|
|
FROM settings
|
|
WHERE key = ?
|
|
`).get(SETTING_KEY)
|
|
|
|
const previous = row?.value ?? null
|
|
const updatedAt = new Date().toISOString()
|
|
|
|
db.prepare(`
|
|
INSERT INTO settings (key, value, updated_at)
|
|
VALUES (?, ?, ?)
|
|
ON CONFLICT(key) DO UPDATE SET
|
|
value = excluded.value,
|
|
updated_at = excluded.updated_at
|
|
`).run(SETTING_KEY, SLIDER, updatedAt)
|
|
|
|
db.close()
|
|
|
|
if (previous === SLIDER) {
|
|
console.log('[PicHost] Login verification is already set to slider.')
|
|
} else {
|
|
console.log(`[PicHost] Login verification changed: ${previous ?? '(unset)'} → slider`)
|
|
}
|
|
console.log('[PicHost] Refresh the login page to use the local slider captcha.')
|