TOTP + Pushover
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { promises as fs } from 'fs';
|
||||
import path from 'path';
|
||||
import { randomUUID } from 'crypto';
|
||||
import { fileURLToPath } from 'url';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
const backendDir = path.resolve(__dirname, '..', '..');
|
||||
const dataDir = path.join(backendDir, 'data');
|
||||
const dataFile = path.join(dataDir, 'instance.json');
|
||||
|
||||
async function ensureDir() {
|
||||
await fs.mkdir(dataDir, { recursive: true });
|
||||
}
|
||||
|
||||
export async function createInstanceId() {
|
||||
await ensureDir();
|
||||
const instanceId = randomUUID();
|
||||
const payload = {
|
||||
instanceId,
|
||||
startedAt: new Date().toISOString()
|
||||
};
|
||||
await fs.writeFile(dataFile, JSON.stringify(payload, null, 2), 'utf-8');
|
||||
return payload;
|
||||
}
|
||||
|
||||
export async function readInstanceId() {
|
||||
await ensureDir();
|
||||
try {
|
||||
const raw = await fs.readFile(dataFile, 'utf-8');
|
||||
const parsed = JSON.parse(raw);
|
||||
if (parsed?.instanceId) {
|
||||
return parsed;
|
||||
}
|
||||
} catch {
|
||||
// ignore and recreate below
|
||||
}
|
||||
return createInstanceId();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user