token-refresh: .env automatisch aktualisieren
Made-with: Cursor
This commit is contained in:
@@ -97,7 +97,7 @@ Tokens laufen nach einiger Zeit ab (typisch Stunden). Bei 401-Fehlern oder „Ni
|
|||||||
npm run token-refresh
|
npm run token-refresh
|
||||||
```
|
```
|
||||||
|
|
||||||
Öffnet einen Browser mit drive.internxt.com. Einloggen – die Tokens werden automatisch extrahiert und in der Konsole ausgegeben. In `.env` eintragen, Server neu starten.
|
Öffnet einen Browser mit drive.internxt.com. Einloggen – die Tokens werden extrahiert und `.env` automatisch aktualisiert. Server neu starten.
|
||||||
|
|
||||||
### Option B: Manuell
|
### Option B: Manuell
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,19 @@
|
|||||||
/**
|
/**
|
||||||
* Token-Refresh: Öffnet drive.internxt.com im Browser, wartet auf Login,
|
* 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
|
* 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';
|
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 DRIVE_URL = 'https://drive.internxt.com';
|
||||||
const POLL_MS = 2000;
|
const POLL_MS = 2000;
|
||||||
const TIMEOUT_MS = 5 * 60 * 1000; // 5 Min
|
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() {
|
async function main() {
|
||||||
console.log('Starte Browser – bitte auf', DRIVE_URL, 'einloggen.\n');
|
console.log('Starte Browser – bitte auf', DRIVE_URL, 'einloggen.\n');
|
||||||
|
|
||||||
@@ -37,10 +75,8 @@ async function main() {
|
|||||||
while (Date.now() - start < TIMEOUT_MS) {
|
while (Date.now() - start < TIMEOUT_MS) {
|
||||||
const { token, mnemonic } = await getTokens(page);
|
const { token, mnemonic } = await getTokens(page);
|
||||||
if (token && mnemonic) {
|
if (token && mnemonic) {
|
||||||
console.log('\n=== Tokens gefunden – in .env eintragen ===\n');
|
updateEnv(token, mnemonic);
|
||||||
console.log('INXT_TOKEN=' + token);
|
console.log('\n.env aktualisiert. Server neu starten.\n');
|
||||||
console.log('INXT_MNEMONIC=' + mnemonic);
|
|
||||||
console.log('\n===========================================\n');
|
|
||||||
await browser.close();
|
await browser.close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user