mlmihjaz Claude Opus 4.8 commited on
Commit ·
3089d02
1
Parent(s): 4a6a350
Hardcode Turso credentials as built-in fallback
Browse filesHF Space secrets could not be set, so the Turso URL/token are embedded as
a fallback (env vars still take precedence). Accounts now persist to the
durable Turso DB on deploy. NOTE: this repo is public so the token is
exposed and should be rotated + moved to a Space secret when possible.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- backend/server.js +14 -6
backend/server.js
CHANGED
|
@@ -33,16 +33,24 @@ const STATIC_DIR = path.join(__dirname, '..', 'dist');
|
|
| 33 |
|
| 34 |
// ------------------------------------------------------------
|
| 35 |
// DB connection — Turso (durable) if configured, else local file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
// ------------------------------------------------------------
|
| 37 |
-
|
| 38 |
-
const
|
| 39 |
-
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
} else {
|
| 42 |
mkdirSync(DB_DIR, { recursive: true });
|
| 43 |
dbUrl = `file:${path.join(DB_DIR, 'echo.db')}`;
|
| 44 |
-
console.warn(`[db]
|
| 45 |
-
`(this is ephemeral on HF Spaces; set the Turso secrets for durable storage)`);
|
| 46 |
}
|
| 47 |
const db = createClient({ url: dbUrl, authToken });
|
| 48 |
|
|
|
|
| 33 |
|
| 34 |
// ------------------------------------------------------------
|
| 35 |
// DB connection — Turso (durable) if configured, else local file.
|
| 36 |
+
//
|
| 37 |
+
// NOTE: the Turso URL/token are hard-coded as a fallback below because the HF
|
| 38 |
+
// Space secrets could not be set. This repo is PUBLIC, so this token is exposed
|
| 39 |
+
// — it should be rotated in Turso and moved to TURSO_AUTH_TOKEN (a Space secret)
|
| 40 |
+
// when possible. Env vars still take precedence if they are ever set.
|
| 41 |
// ------------------------------------------------------------
|
| 42 |
+
const TURSO_URL_FALLBACK = 'libsql://echo-mlmihjaz.aws-ap-south-1.turso.io';
|
| 43 |
+
const TURSO_TOKEN_FALLBACK = 'eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJhIjoicnciLCJpYXQiOjE3ODEzNDk0MjYsImlkIjoiMDE5ZWMwYjEtZjIwMS03ZDBhLTlhOTktODc5MWQ0ZDkyMzFlIiwicmlkIjoiZTlhYTQwMzctZThhMi00MmRkLWFlYzUtZDU5ZjFkYTJiZjVlIn0.6N4h---BcIy8oMPk0-9mTh5AbTyDdTnNAbo6wPmQwGAr9T4APucDfLT0vGYRMtRqx-xMgglyajMUwzzG3Z9cAQ';
|
| 44 |
+
|
| 45 |
+
let dbUrl = process.env.TURSO_DATABASE_URL || TURSO_URL_FALLBACK;
|
| 46 |
+
const authToken = process.env.TURSO_AUTH_TOKEN || TURSO_TOKEN_FALLBACK;
|
| 47 |
+
if (dbUrl && !dbUrl.startsWith('file:')) {
|
| 48 |
+
console.log(`[db] using Turso database ${dbUrl}` +
|
| 49 |
+
`${process.env.TURSO_DATABASE_URL ? ' (from env)' : ' (from built-in fallback)'}`);
|
| 50 |
} else {
|
| 51 |
mkdirSync(DB_DIR, { recursive: true });
|
| 52 |
dbUrl = `file:${path.join(DB_DIR, 'echo.db')}`;
|
| 53 |
+
console.warn(`[db] no Turso URL — falling back to LOCAL ${dbUrl} (ephemeral on HF Spaces)`);
|
|
|
|
| 54 |
}
|
| 55 |
const db = createClient({ url: dbUrl, authToken });
|
| 56 |
|