diff --git a/public/join.html b/public/join.html index 4f177b7..8d5a775 100644 --- a/public/join.html +++ b/public/join.html @@ -26,7 +26,7 @@ .jn-chips span b{color:var(--mint);font-weight:700} .jn-spon{display:flex;align-items:center;gap:10px;margin:0 0 6px} .jn-spon img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--line-strong)} - .jn-full{margin-top:44px} + .jn-full{margin-top:26px} .jn-h{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin:0 0 14px} .jn-h h2{font-size:26px;margin:0} .jn-h p{margin:0;font-size:14.5px} diff --git a/server.js b/server.js index c74f48e..a026bdc 100644 --- a/server.js +++ b/server.js @@ -516,9 +516,12 @@ const server = http.createServer(async (req, res) => { // -- public API if (p === '/api/config' && req.method === 'GET') { const c = chain.getConfig(); + // public copy of the site settings: never anything that looks like a credential + const pubSite = {}; + for (const [k, v] of Object.entries(siteConfig())) if (!/secret|token|password|private|apikey|api_key/i.test(k)) pubSite[k] = v; return json(res, 200, Object.assign({ contract: c.contract, chainId: c.chainId, chainName: c.chainName, explorer: c.explorer, rpc: c.rpcs[0], - emailAuth: mailer.hasKey() || !IS_PROD }, siteConfig())); + emailAuth: mailer.hasKey() || !IS_PROD }, pubSite)); } if (p === '/api/moonpay-url' && req.method === 'GET') { // Card on-ramp deep link. With MoonPay keys set — PUBLIC key via