1
0
Fork 0
mirror of https://github.com/Kozea/Radicale.git synced 2025-06-26 16:45:52 +00:00

Merge pull request #1777 from jfarjona/master

Fix an issue when iOS clients send email as username url-encoded.
This commit is contained in:
Peter Bieringer 2025-05-07 19:46:12 +02:00 committed by GitHub
commit 837a7d0154
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 22 additions and 0 deletions

View file

@ -34,6 +34,7 @@ import os
import threading
import time
from typing import List, Sequence, Set, Tuple, Union, final
from urllib.parse import unquote
from radicale import config, types, utils
from radicale.log import logger
@ -93,6 +94,7 @@ def load(configuration: "config.Configuration") -> "BaseAuth":
class BaseAuth:
_ldap_groups: Set[str] = set([])
_urldecode_username: bool
_lc_username: bool
_uc_username: bool
_strip_domain: bool
@ -119,9 +121,11 @@ class BaseAuth:
self._lc_username = configuration.get("auth", "lc_username")
self._uc_username = configuration.get("auth", "uc_username")
self._strip_domain = configuration.get("auth", "strip_domain")
self._urldecode_username = configuration.get("auth", "urldecode_username")
logger.info("auth.strip_domain: %s", self._strip_domain)
logger.info("auth.lc_username: %s", self._lc_username)
logger.info("auth.uc_username: %s", self._uc_username)
logger.info("auth.urldecode_username: %s", self._urldecode_username)
if self._lc_username is True and self._uc_username is True:
raise RuntimeError("auth.lc_username and auth.uc_username cannot be enabled together")
self._auth_delay = configuration.get("auth", "delay")
@ -219,6 +223,8 @@ class BaseAuth:
login = login.lower()
if self._uc_username:
login = login.upper()
if self._urldecode_username:
login = unquote(login)
if self._strip_domain:
login = login.split('@')[0]
if self._cache_logins is True:

View file

@ -342,6 +342,10 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDict([
("lc_username", {
"value": "False",
"help": "convert username to lowercase, must be true for case-insensitive auth providers",
"type": bool}),
("urldecode_username", {
"value": "False",
"help": "url-decode the username, set to True when clients send url-encoded email address as username",
"type": bool})])),
("rights", OrderedDict([
("type", {