Quando si esegue discourse-setup con un nome utente SMTP che contiene un <kbd>/</kbd>, lo script fallisce:
sed: espressione -e #1, carattere 74: opzione non valida per `s’
DISCOURSE_SMTP_USER_NAME change failed.
Comportamento previsto
I nomi utente SMTP contenenti <kbd>/</kbd> dovrebbero essere accettati.
<kbd>/</kbd> è un carattere valido per un nome utente SMTP, secondo RFC3696:
Senza virgolette, le parti locali possono consistere in qualsiasi combinazione di
caratteri alfabetici, cifre o uno qualsiasi dei caratteri speciali
! # $ % & ’ * + - / = ? ^ _ ` . { | } ~
Percorso correttivo
Lo script fallisce su un comando sed che, per impostazione predefinita, utilizza <kbd>/</kbd> come separatore.
Poiché il due punti (<kbd>:</kbd>) non è un carattere accettabile per la local-part di un indirizzo email, può essere utilizzato al posto di <kbd>/</kbd>, senza alcun effetto collaterale che un altro carattere come una virgola o un punto e virgola potrebbe portare (tranne che i due punti nei pattern sed devono essere escapati — si noti che l’uso di <kbd>]</kbd> invece rimuoverebbe la necessità di escapare i due punti):
riga 589: smtp_domain=$(echo $notification_email | sed -e \"s/.*@//\") dovrebbe essere smtp_domain=$(echo $notification_email | sed -e \"s:.*@::\")
riga 648: DISCOURSE_DEVELOPER_EMAILS utilizza <kbd>,</kbd> per separare gli indirizzi email, quindi potrebbe tranquillamente utilizzare anche <kbd>:</kbd>
la riga 675 è la fonte del mio bug: sed -i -e \"s/^ #\\?DISCOURSE_SMTP_USER_NAME:.*/ DISCOURSE_SMTP_USER_NAME: $smtp_user_name/w $changelog\" $web_file potrebbe essere sed -i -e \"s:^ #\\?DISCOURSE_SMTP_USER_NAME\\:.*: DISCOURSE_SMTP_USER_NAME\\: $smtp_user_name:w $changelog\" $web_file o sed -i -e \"s] #\\?DISCOURSE_SMTP_USER_NAME:.*] DISCOURSE_SMTP_USER_NAME: $smtp_user_name]w $changelog\" $web_file
idem per la riga 684 (DISCOURSE_NOTIFICATION_EMAIL)
Non ho il controllo di quel codice, ma l’ho scritto molto tempo fa. Quella è un’ottima soluzione. Avrei dovuto pensarci. Suppongo che una PR sarebbe benvenuta.
Purtroppo ho perso l’accesso al mio account Github. Mi chiedono un codice e non uso più l’email collegata, quindi ho semplicemente smesso di usare quella piattaforma tranne che per clonare codice pubblico.
Grazie per la segnalazione, metto pr-welcome nel caso qualcuno sia in grado di inviare una patch.
Puoi sempre pubblicare un .diff qui e poi far sì che un membro della community se ne prenda il merito