Lorsque l’on exécute discourse-setup avec un nom d’utilisateur SMTP contenant un /, le script échoue :
sed : expression -e n° 1, caractère 74 : option inconnue pour `s’
DISCOURSE_SMTP_USER_NAME change failed.
Comportement attendu
Les noms d’utilisateur SMTP contenant / devraient être acceptés.
/ est un caractère valide pour un nom d’utilisateur SMTP, conformément à la RFC3696 :
Sans guillemets, les parties locales peuvent être constituées de n’importe quelle combinaison de
caractères alphabétiques, de chiffres ou de l’un des caractères spéciaux
! # $ % & ’ * + - / = ? ^ _ ` . { | } ~
Chemin correctif
Le script échoue sur une commande sed qui, par défaut, utilise / comme séparateur.
Comme le deux-points (:) n’est pas un caractère acceptable pour la partie locale d’une adresse e-mail, il peut être utilisé à la place de /, sans effet secondaire qu’un autre caractère tel qu’une virgule ou un point-virgule pourrait apporter (sauf que les deux-points dans les motifs sed doivent être échappés — notez qu’utiliser ] à la place supprimerait le besoin d’échapper les deux-points) :
ligne 589 : smtp_domain=$(echo $notification_email | sed -e \"s/.*@//\") devrait être smtp_domain=$(echo $notification_email | sed -e \"s:.*@::\")
ligne 648 : DISCOURSE_DEVELOPER_EMAILS utilise , pour séparer les adresses e-mail, il pourrait donc également utiliser : en toute sécurité
ligne 675 est la source de mon bug : sed -i -e \"s/^ #\\?DISCOURSE_SMTP_USER_NAME:.*/ DISCOURSE_SMTP_USER_NAME: $smtp_user_name/w $changelog\" $web_file pourrait être sed -i -e \"s:^ #\\?DISCOURSE_SMTP_USER_NAME\\:.*: DISCOURSE_SMTP_USER_NAME\\: $smtp_user_name:w $changelog\" $web_file ou sed -i -e \"s] #\\?DISCOURSE_SMTP_USER_NAME:.*] DISCOURSE_SMTP_USER_NAME: $smtp_user_name]w $changelog\" $web_file
idem pour la ligne 684 (DISCOURSE_NOTIFICATION_EMAIL)
Je n’ai pas le contrôle de ce code, mais je l’ai écrit il y a longtemps. C’est une excellente solution. J’aurais dû y penser. Je suppose qu’une PR serait la bienvenue.
Malheureusement, j’ai perdu l’accès à mon compte Github. Ils me demandent un code et je n’utilise plus l’e-mail lié, j’ai donc simplement arrêté d’utiliser cette plateforme, sauf pour cloner du code public.
Merci pour le rapport, ajout de pr-welcome au cas où quelqu’un serait en mesure de soumettre un correctif.
Vous pourriez toujours poster un .diff ici et laisser un membre de la communauté en prendre le crédit