diff --git a/clientapi/routing/auth_fallback.go b/clientapi/routing/auth_fallback.go index 96674b156..ad870993e 100644 --- a/clientapi/routing/auth_fallback.go +++ b/clientapi/routing/auth_fallback.go @@ -113,12 +113,12 @@ func AuthFallback( serveRecaptcha := func() { data := map[string]string{ - "myUrl": req.URL.String(), - "session": sessionID, - "apiJsUrl": cfg.RecaptchaApiJsUrl, - "sitekey": cfg.RecaptchaPublicKey, - "sitekeyClass": cfg.RecaptchaSitekeyClass, - "formField": cfg.RecaptchaFormField, + "myUrl": req.URL.String(), + "session": sessionID, + "apiJsUrl": cfg.RecaptchaApiJsUrl, + "sitekey": cfg.RecaptchaPublicKey, + "sitekeyClass": cfg.RecaptchaSitekeyClass, + "formField": cfg.RecaptchaFormField, } serveTemplate(w, recaptchaTemplate, data) } diff --git a/clientapi/routing/register.go b/clientapi/routing/register.go index 8e58d4975..b9ebb0518 100644 --- a/clientapi/routing/register.go +++ b/clientapi/routing/register.go @@ -20,7 +20,7 @@ import ( "encoding/json" "fmt" "io" - "net" + "net" "net/http" "net/url" "regexp" @@ -337,7 +337,7 @@ func validateRecaptcha( response string, clientip string, ) *util.JSONResponse { - ip,_ ,_ := net.SplitHostPort(clientip) + ip, _, _ := net.SplitHostPort(clientip) if !cfg.RecaptchaEnabled { return &util.JSONResponse{ Code: http.StatusConflict, diff --git a/dendrite-sample.polylith.yaml b/dendrite-sample.polylith.yaml index bbbe16fdc..ecc3f4051 100644 --- a/dendrite-sample.polylith.yaml +++ b/dendrite-sample.polylith.yaml @@ -175,7 +175,13 @@ client_api: recaptcha_public_key: "" recaptcha_private_key: "" recaptcha_bypass_secret: "" - recaptcha_siteverify_api: "" + + # To use hcaptcha.com instead of ReCAPTCHA, set the following parameters, otherwise just keep them empty. + # recaptcha_siteverify_api: "https://hcaptcha.com/siteverify" + # recaptcha_api_js_url: "https://js.hcaptcha.com/1/api.js" + # recaptcha_form_field: "h-captcha-response" + # recaptcha_sitekey_class: "h-captcha" + # TURN server information that this homeserver should send to clients. turn: diff --git a/setup/config/config_clientapi.go b/setup/config/config_clientapi.go index 5d09ca2d9..0a871da18 100644 --- a/setup/config/config_clientapi.go +++ b/setup/config/config_clientapi.go @@ -32,12 +32,12 @@ type ClientAPI struct { // Boolean stating whether catpcha registration is enabled // and required RecaptchaEnabled bool `yaml:"enable_registration_captcha"` - // Recaptcha api.js Url, for compatible with hcaptcha.com, etc. - RecaptchaApiJsUrl string `yaml:"recaptcha_api_js_url"` - // Recaptcha div class for sitekey, for compatible with hcaptcha.com, etc. - RecaptchaSitekeyClass string `yaml:"recaptcha_sitekey_class"` - // Recaptcha form field, for compatible with hcaptcha.com, etc. - RecaptchaFormField string `yaml:"recaptcha_form_field"` + // Recaptcha api.js Url, for compatible with hcaptcha.com, etc. + RecaptchaApiJsUrl string `yaml:"recaptcha_api_js_url"` + // Recaptcha div class for sitekey, for compatible with hcaptcha.com, etc. + RecaptchaSitekeyClass string `yaml:"recaptcha_sitekey_class"` + // Recaptcha form field, for compatible with hcaptcha.com, etc. + RecaptchaFormField string `yaml:"recaptcha_form_field"` // This Home Server's ReCAPTCHA public key. RecaptchaPublicKey string `yaml:"recaptcha_public_key"` // This Home Server's ReCAPTCHA private key. @@ -81,18 +81,18 @@ func (c *ClientAPI) Verify(configErrs *ConfigErrors, isMonolith bool) { checkNotEmpty(configErrs, "client_api.recaptcha_public_key", c.RecaptchaPublicKey) checkNotEmpty(configErrs, "client_api.recaptcha_private_key", c.RecaptchaPrivateKey) checkNotEmpty(configErrs, "client_api.recaptcha_siteverify_api", c.RecaptchaSiteVerifyAPI) - if c.RecaptchaSiteVerifyAPI == "" { - c.RecaptchaSiteVerifyAPI = "https://www.google.com/recaptcha/api/siteverify" - } - if c.RecaptchaApiJsUrl == "" { - c.RecaptchaApiJsUrl = "https://www.google.com/recaptcha/api.js" - } - if c.RecaptchaFormField == "" { - c.RecaptchaFormField = "g-recaptcha" - } - if c.RecaptchaSitekeyClass == "" { - c.RecaptchaSitekeyClass = "g-recaptcha-response" - } + if c.RecaptchaSiteVerifyAPI == "" { + c.RecaptchaSiteVerifyAPI = "https://www.google.com/recaptcha/api/siteverify" + } + if c.RecaptchaApiJsUrl == "" { + c.RecaptchaApiJsUrl = "https://www.google.com/recaptcha/api.js" + } + if c.RecaptchaFormField == "" { + c.RecaptchaFormField = "g-recaptcha" + } + if c.RecaptchaSitekeyClass == "" { + c.RecaptchaSitekeyClass = "g-recaptcha-response" + } } // Ensure there is any spam counter measure when enabling registration if !c.RegistrationDisabled && !c.OpenRegistrationWithoutVerificationEnabled {