[object Object]

← back to Domain Landings

wall: host-scope admin surface to wall.agentabrams.com only (404 on butler + all tenant domains)

3ca6313a99334c54007981fff6a38b2b17e0168e · 2026-08-17 17:27:00 -0700 · Steve

Files touched

Diff

commit 3ca6313a99334c54007981fff6a38b2b17e0168e
Author: Steve <steve@designerwallcoverings.com>
Date:   Mon Aug 17 17:27:00 2026 -0700

    wall: host-scope admin surface to wall.agentabrams.com only (404 on butler + all tenant domains)
---
 server.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/server.js b/server.js
index 0533709..4959106 100644
--- a/server.js
+++ b/server.js
@@ -288,8 +288,18 @@ render(); window.addEventListener('resize',applyDens);
 </script></body></html>`);
 }
 
+const WALL_HOST = process.env.WALL_HOST || 'wall.agentabrams.com';   // the wall lives ONLY here — never on butler/tenant domains
 const server = http.createServer((req, res) => {
   const host = hostOf(req);
+  // Host-scope the admin surface: /admin/* and /thumbs/ answer ONLY on the wall host (plus localhost for dev).
+  // Every tenant landing domain (818butler.com, beverlyhillsbutler.com, the 200+ others) gets a normal 404 here.
+  // use the REAL Host header (not the ?__host= preview override) so the admin gate can't be spoofed from a tenant domain
+  const rawHost = (req.headers['x-forwarded-host'] || req.headers.host || '').split(',')[0].trim().toLowerCase().replace(/:\d+$/, '').replace(/^www\./, '');
+  const onWallHost = rawHost === WALL_HOST || rawHost === 'localhost' || rawHost === '127.0.0.1';
+  if (!onWallHost && (req.url.startsWith('/admin/') || req.url.startsWith('/thumbs/'))) {
+    res.writeHead(404, { 'content-type': 'text/html; charset=utf-8' });
+    return res.end(notFound(host));
+  }
   if (req.method === 'GET' && req.url.split('?')[0] === '/admin/wall') {
     return adminWall(req, res);
   }

← 11a4a85 wall: add liveness-probe report (cert-mismatch = the 'dead s  ·  back to Domain Landings  ·  ops: 443-cert remediation script + results (40 dead apex dom 4a71985 →