token-refresh: .env automatisch aktualisieren
Made-with: Cursor
This commit is contained in:
@@ -1,14 +1,19 @@
|
||||
/**
|
||||
* Token-Refresh: Öffnet drive.internxt.com im Browser, wartet auf Login,
|
||||
* extrahiert Token und Mnemonic aus localStorage.
|
||||
* extrahiert Token und Mnemonic aus localStorage und aktualisiert .env.
|
||||
*
|
||||
* Aufruf: npm run token-refresh
|
||||
*
|
||||
* Browser öffnet sich (headed). Einloggen, dann werden die Tokens ausgegeben.
|
||||
*/
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { fileURLToPath } from 'url';
|
||||
import puppeteer from 'puppeteer';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const ENV_PATH = path.resolve(__dirname, '../.env');
|
||||
const ENV_EXAMPLE = path.resolve(__dirname, '../.env.example');
|
||||
|
||||
const DRIVE_URL = 'https://drive.internxt.com';
|
||||
const POLL_MS = 2000;
|
||||
const TIMEOUT_MS = 5 * 60 * 1000; // 5 Min
|
||||
@@ -21,6 +26,39 @@ async function getTokens(page) {
|
||||
});
|
||||
}
|
||||
|
||||
function updateEnv(token, mnemonic) {
|
||||
let content = '';
|
||||
if (fs.existsSync(ENV_PATH)) {
|
||||
content = fs.readFileSync(ENV_PATH, 'utf8');
|
||||
} else if (fs.existsSync(ENV_EXAMPLE)) {
|
||||
content = fs.readFileSync(ENV_EXAMPLE, 'utf8');
|
||||
}
|
||||
|
||||
const lines = content.split('\n');
|
||||
const result = [];
|
||||
let hasToken = false;
|
||||
let hasMnemonic = false;
|
||||
|
||||
const escape = (v) => (/\s/.test(v) ? `"${v.replace(/"/g, '\\"')}"` : v);
|
||||
|
||||
for (const line of lines) {
|
||||
if (/^\s*INXT_TOKEN\s*=/.test(line)) {
|
||||
result.push(`INXT_TOKEN=${escape(token)}`);
|
||||
hasToken = true;
|
||||
} else if (/^\s*INXT_MNEMONIC\s*=/.test(line)) {
|
||||
result.push(`INXT_MNEMONIC=${escape(mnemonic)}`);
|
||||
hasMnemonic = true;
|
||||
} else {
|
||||
result.push(line);
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasToken) result.push(`INXT_TOKEN=${escape(token)}`);
|
||||
if (!hasMnemonic) result.push(`INXT_MNEMONIC=${escape(mnemonic)}`);
|
||||
|
||||
fs.writeFileSync(ENV_PATH, result.join('\n'), 'utf8');
|
||||
}
|
||||
|
||||
async function main() {
|
||||
console.log('Starte Browser – bitte auf', DRIVE_URL, 'einloggen.\n');
|
||||
|
||||
@@ -37,10 +75,8 @@ async function main() {
|
||||
while (Date.now() - start < TIMEOUT_MS) {
|
||||
const { token, mnemonic } = await getTokens(page);
|
||||
if (token && mnemonic) {
|
||||
console.log('\n=== Tokens gefunden – in .env eintragen ===\n');
|
||||
console.log('INXT_TOKEN=' + token);
|
||||
console.log('INXT_MNEMONIC=' + mnemonic);
|
||||
console.log('\n===========================================\n');
|
||||
updateEnv(token, mnemonic);
|
||||
console.log('\n.env aktualisiert. Server neu starten.\n');
|
||||
await browser.close();
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user