[object Object]

← back to George Gmail

secret-strip george-gmail: env-first the hardcoded George basic-auth cred (server) + remove browser-embedded copy (client)

8c22e56db199b6ecface3159659be2b16b729975 · 2026-06-12 13:01:46 -0700 · Steve Abrams

Files touched

Diff

commit 8c22e56db199b6ecface3159659be2b16b729975
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Jun 12 13:01:46 2026 -0700

    secret-strip george-gmail: env-first the hardcoded George basic-auth cred (server) + remove browser-embedded copy (client)
---
 public/index.html | 4 ++--
 server.js         | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/public/index.html b/public/index.html
index 1342ab9..cd269d1 100644
--- a/public/index.html
+++ b/public/index.html
@@ -56,13 +56,13 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
 <body>
 <div id="root"></div>
 <script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
-function xfetch(url,opts){return new Promise(function(resolve,reject){var x=new XMLHttpRequest();x.open((opts&&opts.method)||"GET",url,true);x.setRequestHeader("Authorization","Basic "+btoa("admin:I3YusisdESUNdxtrmlb3QJeu9q8ODKJO"));if(opts&&opts.body){x.setRequestHeader("Content-Type","application/json");}x.onload=function(){try{resolve({ok:x.status>=200&&x.status<300,status:x.status,json:function(){return Promise.resolve(JSON.parse(x.responseText))},text:function(){return Promise.resolve(x.responseText)}})}catch(e){reject(e)}};x.onerror=function(){reject(new Error("XHR failed"))};x.send(opts&&opts.body?JSON.stringify(opts.body):null)})};
+function xfetch(url,opts){return new Promise(function(resolve,reject){var x=new XMLHttpRequest();x.open((opts&&opts.method)||"GET",url,true);x.withCredentials=true;if(opts&&opts.body){x.setRequestHeader("Content-Type","application/json");}x.onload=function(){try{resolve({ok:x.status>=200&&x.status<300,status:x.status,json:function(){return Promise.resolve(JSON.parse(x.responseText))},text:function(){return Promise.resolve(x.responseText)}})}catch(e){reject(e)}};x.onerror=function(){reject(new Error("XHR failed"))};x.send(opts&&opts.body?JSON.stringify(opts.body):null)})};
 <script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
 <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
 <script type="text/babel">
 const { useState, useEffect, useCallback } = React;
 
-const AUTH = 'Basic ' + btoa('admin:I3YusisdESUNdxtrmlb3QJeu9q8ODKJO');
+const AUTH = '';
 async function api(path) {
   const r = await xfetch(path, { headers: { Authorization: AUTH } });
   return r.json();
diff --git a/server.js b/server.js
index e25a0e3..51515ab 100644
--- a/server.js
+++ b/server.js
@@ -1,7 +1,7 @@
 /**
  * George the Gmail Agent — Port 9889
  * Secure email access for DW-Agents ecosystem
- * Auth: admin / I3YusisdESUNdxtrmlb3QJeu9q8ODKJO
+ * Auth: admin / (set via GEORGE_BASIC_AUTH_PASS env var)
  */
 const express = require('express');
 const helmet = require('helmet');
@@ -233,7 +233,7 @@ const _GEORGE_AUTH_ENV =
 const _GEORGE_AUTH_SOURCE = _GEORGE_AUTH_ENV ? "env" : "hardcoded-fallback";
 const [_GEORGE_USER, _GEORGE_PASS] = _GEORGE_AUTH_ENV.includes(":")
   ? _GEORGE_AUTH_ENV.split(":")
-  : ["admin", (process.env.GEORGE_BASIC_AUTH_PASS || "I3YusisdESUNdxtrmlb3QJeu9q8ODKJO")];
+  : ["admin", (process.env.GEORGE_BASIC_AUTH_PASS || "")];
 console.log(`[George] basic-auth source: ${_GEORGE_AUTH_SOURCE} (user=${_GEORGE_USER}, pass-len=${_GEORGE_PASS.length})`);
 const crypto = require("crypto");
 function _ctEq(a, b) {
@@ -750,7 +750,7 @@ app.use((req, res, next) => {
   const auth = req.headers.authorization;
   if (!auth || !auth.startsWith('Basic ')) return res.status(401).json({ error: 'Auth required' });
   const [user, pass] = Buffer.from(auth.split(' ')[1], 'base64').toString().split(':');
-  if (user !== 'admin' || pass !== (process.env.GEORGE_BASIC_AUTH_PASS || 'I3YusisdESUNdxtrmlb3QJeu9q8ODKJO')) return res.status(401).json({ error: 'Invalid credentials' });
+  if (user !== 'admin' || pass !== (process.env.GEORGE_BASIC_AUTH_PASS || '')) return res.status(401).json({ error: 'Invalid credentials' });
   next();
 });
 

← cf27272 Add scoped one-shot trash for benign cron-drift alert flood  ·  back to George Gmail  ·  Add launchd KeepAlive supervisor for george-gmail :9850 (dur 918647c →