diff --git a/src/inc/routes/register.mjs b/src/inc/routes/register.mjs index 58ada39..640bdb8 100644 --- a/src/inc/routes/register.mjs +++ b/src/inc/routes/register.mjs @@ -88,8 +88,9 @@ export default (router, tpl) => { return renderError("Passwords do not match."); } - // reCAPTCHA verification - if (cfg.recaptcha?.enabled && cfg.recaptcha?.secret_key) { + // reCAPTCHA verification (bypassed for .onion requests as Google reCAPTCHA cannot validate .onion domains) + const isOnion = req.headers['host']?.endsWith('.onion'); + if (!isOnion && cfg.recaptcha?.enabled && cfg.recaptcha?.secret_key) { const rcToken = req.post['g-recaptcha-response']; if (!rcToken) return renderError("Please complete the reCAPTCHA."); try { diff --git a/src/index.mjs b/src/index.mjs index 6695f6c..bf9dcf7 100644 --- a/src/index.mjs +++ b/src/index.mjs @@ -1496,6 +1496,9 @@ process.on('uncaughtException', err => { } if (req) { + if (req.headers['host']?.endsWith('.onion')) { + data.recaptcha_enabled = false; + } if (req.mode !== undefined) data.mode = req.mode; data.theme = req.theme || req.cookies?.theme || cfg.websrv.theme || 'f0ck'; if (!data.url) data.url = req.url;