diff --git a/6.1.25/patches/06_2685_owner_address_set_to_special_address.patch b/6.1.25/patches/06_2685_owner_address_set_to_special_address.patch index 388849ff71b7270c8d0786052c4ba76a6d81c00f..cbf7262cc52e3f1d87d383b676108d6c1cbee800 100644 --- a/6.1.25/patches/06_2685_owner_address_set_to_special_address.patch +++ b/6.1.25/patches/06_2685_owner_address_set_to_special_address.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index ca6ad17..a31f9ff 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -9514,6 +9514,26 @@ sub do_edit_list { &report::notice_report_web('subscribers_noticed_deleted_topics',{},$param->{'action'}); } diff --git a/6.1.25/patches/07_var-lock-subsys_missing_prevents_startup.patch b/6.1.25/patches/07_var-lock-subsys_missing_prevents_startup.patch index 5b5dd57b1e8a52f9d1483c67bc34b07651b4befa..077aa369fc1da7e58f07312d326eebd754b1a8f5 100644 --- a/6.1.25/patches/07_var-lock-subsys_missing_prevents_startup.patch +++ b/6.1.25/patches/07_var-lock-subsys_missing_prevents_startup.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/src/etc/script/sympa.in b/sympa-6.1.22-src/src/etc/script/sympa.in +diff --git a/sympa-6.1.25/src/etc/script/sympa.in b/sympa-6.1.25/src/etc/script/sympa.in index 48e405d..b6df1cb 100755 ---- a/sympa-6.1.22-src/src/etc/script/sympa.in -+++ b/sympa-6.1.22-src/src/etc/script/sympa.in +--- a/sympa-6.1.25/src/etc/script/sympa.in ++++ b/sympa-6.1.25/src/etc/script/sympa.in @@ -216,6 +216,10 @@ fi [ -f $sympaconf ] || exit 0 [ -f $wwsympaconf ] || exit 0 diff --git a/6.1.25/patches/08_2821_max_list_dispatch.patch b/6.1.25/patches/08_2821_max_list_dispatch.patch index 33e208e0e002777f1434b71ff89f41c991d838e3..485714b633ddd3e07d01e7168684f55a9ac3f7ac 100644 --- a/6.1.25/patches/08_2821_max_list_dispatch.patch +++ b/6.1.25/patches/08_2821_max_list_dispatch.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/mail_tt2/message_report.tt2 b/sympa-6.1.22-src/mail_tt2/message_report.tt2 +diff --git a/sympa-6.1.25/mail_tt2/message_report.tt2 b/sympa-6.1.25/mail_tt2/message_report.tt2 index b8834cf..99c8a0f 100644 ---- a/sympa-6.1.22-src/mail_tt2/message_report.tt2 -+++ b/sympa-6.1.22-src/mail_tt2/message_report.tt2 +--- a/sympa-6.1.25/mail_tt2/message_report.tt2 ++++ b/sympa-6.1.25/mail_tt2/message_report.tt2 @@ -54,6 +54,9 @@ Note: Because binary files have to be encoded in less-efficient ASCII format bef [% ELSIF entry == 'list_unknown' -%] @@ -12,10 +12,10 @@ index b8834cf..99c8a0f 100644 [% ELSIF entry == 'dyn_cant_create' -%] [%|loc(listname)%]The %1 list could not be created.[%END%] -diff --git a/sympa-6.1.22-src/po-wwsympa/de.po b/sympa-6.1.22-src/po-wwsympa/de.po +diff --git a/sympa-6.1.25/po-wwsympa/de.po b/sympa-6.1.25/po-wwsympa/de.po index ebd517d..72f987e 100755 ---- a/sympa-6.1.22-src/po-wwsympa/de.po -+++ b/sympa-6.1.22-src/po-wwsympa/de.po +--- a/sympa-6.1.25/po-wwsympa/de.po ++++ b/sympa-6.1.25/po-wwsympa/de.po @@ -7557,3 +7557,8 @@ msgstr "" #~ "Textdatei oder relationalen Datenbank gespeichert werden oder von " #~ "verschiedenen externen Quellen inkludiert werden (Listen, Klartextdatei, " @@ -25,10 +25,10 @@ index ebd517d..72f987e 100755 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Die Zahl der Abonnenten für diese Liste, "% 1", ist größer als der von den Listenadministratoren festgesetzte Grenze, '% 2'" + -diff --git a/sympa-6.1.22-src/po-wwsympa/el.po b/sympa-6.1.22-src/po-wwsympa/el.po +diff --git a/sympa-6.1.25/po-wwsympa/el.po b/sympa-6.1.25/po-wwsympa/el.po index 5f5c873..dd5a52e 100755 ---- a/sympa-6.1.22-src/po-wwsympa/el.po -+++ b/sympa-6.1.22-src/po-wwsympa/el.po +--- a/sympa-6.1.25/po-wwsympa/el.po ++++ b/sympa-6.1.25/po-wwsympa/el.po @@ -5860,3 +5860,8 @@ msgstr "" #~ msgstr "" #~ "(Προκαθορισμένη τιμή: παραλαβή ταχυδρομείου,απόδειξη παραλαβής,επισκόπηση," @@ -38,10 +38,10 @@ index 5f5c873..dd5a52e 100755 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Ο αριθμός των συνδρομητών για αυτήν τη λίστα, '% 1', είναι μεγαλύτερη από το όριο που καθορίζεται από τους διαχειριστές της λίστας '% 2'" + -diff --git a/sympa-6.1.22-src/po-wwsympa/en.po b/sympa-6.1.22-src/po-wwsympa/en.po +diff --git a/sympa-6.1.25/po-wwsympa/en.po b/sympa-6.1.25/po-wwsympa/en.po index b4383f5..484a433 100755 ---- a/sympa-6.1.22-src/po-wwsympa/en.po -+++ b/sympa-6.1.22-src/po-wwsympa/en.po +--- a/sympa-6.1.25/po-wwsympa/en.po ++++ b/sympa-6.1.25/po-wwsympa/en.po @@ -7272,6 +7272,10 @@ msgstr "" "in nomail mode, he or she will again receive individual mail messages from " "the list." @@ -53,10 +53,10 @@ index b4383f5..484a433 100755 #~ msgid "subscribers (private);" #~ msgstr "subscribers (private);" -diff --git a/sympa-6.1.22-src/po-wwsympa/es.po b/sympa-6.1.22-src/po-wwsympa/es.po +diff --git a/sympa-6.1.25/po-wwsympa/es.po b/sympa-6.1.25/po-wwsympa/es.po index 2b7c2bf..43e33d2 100755 ---- a/sympa-6.1.22-src/po-wwsympa/es.po -+++ b/sympa-6.1.22-src/po-wwsympa/es.po +--- a/sympa-6.1.25/po-wwsympa/es.po ++++ b/sympa-6.1.25/po-wwsympa/es.po @@ -7532,3 +7532,7 @@ msgstr "" #~ msgid "value" @@ -65,10 +65,10 @@ index 2b7c2bf..43e33d2 100755 +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "El número de suscriptores de esta lista, '% 1', es mayor que el límite establecido por los administradores de la lista, '% 2'" -diff --git a/sympa-6.1.22-src/po-wwsympa/fr.po b/sympa-6.1.22-src/po-wwsympa/fr.po +diff --git a/sympa-6.1.25/po-wwsympa/fr.po b/sympa-6.1.25/po-wwsympa/fr.po index e65dff1..6ed5e38 100644 ---- a/sympa-6.1.22-src/po-wwsympa/fr.po -+++ b/sympa-6.1.22-src/po-wwsympa/fr.po +--- a/sympa-6.1.25/po-wwsympa/fr.po ++++ b/sympa-6.1.25/po-wwsympa/fr.po @@ -7921,3 +7921,7 @@ msgstr "" # nlsref 16,91 #~ msgid "value" @@ -77,10 +77,10 @@ index e65dff1..6ed5e38 100644 +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Le nombre d'abonnés à cette liste, '% 1', est supérieure à la limite fixée par les administrateurs de la liste, '% 2'" -diff --git a/sympa-6.1.22-src/po-wwsympa/it.po b/sympa-6.1.22-src/po-wwsympa/it.po +diff --git a/sympa-6.1.25/po-wwsympa/it.po b/sympa-6.1.25/po-wwsympa/it.po index 3434351..10ae265 100755 ---- a/sympa-6.1.22-src/po-wwsympa/it.po -+++ b/sympa-6.1.22-src/po-wwsympa/it.po +--- a/sympa-6.1.25/po-wwsympa/it.po ++++ b/sympa-6.1.25/po-wwsympa/it.po @@ -5891,3 +5891,7 @@ msgstr "" # nlsref 16,91 #~ msgid "value" @@ -89,10 +89,10 @@ index 3434351..10ae265 100755 +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Il numero di abbonati per questa lista, '% 1', è maggiore del limite fissato dagli amministratori della lista, '% 2'" -diff --git a/sympa-6.1.22-src/po-wwsympa/pt.po b/sympa-6.1.22-src/po-wwsympa/pt.po +diff --git a/sympa-6.1.25/po-wwsympa/pt.po b/sympa-6.1.25/po-wwsympa/pt.po index 13c8230..8784ff2 100755 ---- a/sympa-6.1.22-src/po-wwsympa/pt.po -+++ b/sympa-6.1.22-src/po-wwsympa/pt.po +--- a/sympa-6.1.25/po-wwsympa/pt.po ++++ b/sympa-6.1.25/po-wwsympa/pt.po @@ -5509,3 +5509,7 @@ msgstr "" #~ msgstr "" #~ "(Valor por defeito: modo de recepção mail,notice,digest,digestplain," @@ -101,10 +101,10 @@ index 13c8230..8784ff2 100755 +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "O número de assinantes para esta lista, '% 1', é maior do que o limite definido pelos administradores da lista, '% 2'" -diff --git a/sympa-6.1.22-src/po/de.po b/sympa-6.1.22-src/po/de.po +diff --git a/sympa-6.1.25/po/de.po b/sympa-6.1.25/po/de.po index 209c6f7..f3d84f9 100755 ---- a/sympa-6.1.22-src/po/de.po -+++ b/sympa-6.1.22-src/po/de.po +--- a/sympa-6.1.25/po/de.po ++++ b/sympa-6.1.25/po/de.po @@ -5597,6 +5597,11 @@ msgstr "Befehls-Syntaxfehler." msgid "List '%1' does not exist." msgstr "Liste '%1' existiert nicht." @@ -117,10 +117,10 @@ index 209c6f7..f3d84f9 100755 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." -diff --git a/sympa-6.1.22-src/po/el.po b/sympa-6.1.22-src/po/el.po +diff --git a/sympa-6.1.25/po/el.po b/sympa-6.1.25/po/el.po index a08f4a6..e89be0b 100755 ---- a/sympa-6.1.22-src/po/el.po -+++ b/sympa-6.1.22-src/po/el.po +--- a/sympa-6.1.25/po/el.po ++++ b/sympa-6.1.25/po/el.po @@ -5598,6 +5598,11 @@ msgstr "Λάθος σύνταξη εντολής." msgid "List '%1' does not exist." msgstr "Η λίστα '%1' δεν υπάρχει." @@ -133,10 +133,10 @@ index a08f4a6..e89be0b 100755 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." -diff --git a/sympa-6.1.22-src/po/en.po b/sympa-6.1.22-src/po/en.po +diff --git a/sympa-6.1.25/po/en.po b/sympa-6.1.25/po/en.po index 932bfc1..9b0eb9c 100755 ---- a/sympa-6.1.22-src/po/en.po -+++ b/sympa-6.1.22-src/po/en.po +--- a/sympa-6.1.25/po/en.po ++++ b/sympa-6.1.25/po/en.po @@ -8940,6 +8940,11 @@ msgstr "Command syntax error." msgid "List '%1' does not exist." msgstr "List '%1' does not exist." @@ -149,10 +149,10 @@ index 932bfc1..9b0eb9c 100755 #. (u_err.listname) #: default/mail_tt2/command_report.tt2:106 msgid "%1 mailing list does not provide subscriber preferences." -diff --git a/sympa-6.1.22-src/po/es.po b/sympa-6.1.22-src/po/es.po +diff --git a/sympa-6.1.25/po/es.po b/sympa-6.1.25/po/es.po index e943bb6..557f0bc 100755 ---- a/sympa-6.1.22-src/po/es.po -+++ b/sympa-6.1.22-src/po/es.po +--- a/sympa-6.1.25/po/es.po ++++ b/sympa-6.1.25/po/es.po @@ -5591,6 +5591,11 @@ msgstr "Error de sintaxis." msgid "List '%1' does not exist." msgstr "La lista '%1' no existe." @@ -165,10 +165,10 @@ index e943bb6..557f0bc 100755 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." -diff --git a/sympa-6.1.22-src/po/fr.po b/sympa-6.1.22-src/po/fr.po +diff --git a/sympa-6.1.25/po/fr.po b/sympa-6.1.25/po/fr.po index 693d3c0..e40d819 100755 ---- a/sympa-6.1.22-src/po/fr.po -+++ b/sympa-6.1.22-src/po/fr.po +--- a/sympa-6.1.25/po/fr.po ++++ b/sympa-6.1.25/po/fr.po @@ -5674,6 +5674,11 @@ msgstr "Erreur de syntaxe." msgid "List '%1' does not exist." msgstr "La liste '%1' est inconnue." @@ -181,10 +181,10 @@ index 693d3c0..e40d819 100755 # nlsref 6,91 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 -diff --git a/sympa-6.1.22-src/po/it.po b/sympa-6.1.22-src/po/it.po +diff --git a/sympa-6.1.25/po/it.po b/sympa-6.1.25/po/it.po index 243798d..d0c355f 100755 ---- a/sympa-6.1.22-src/po/it.po -+++ b/sympa-6.1.22-src/po/it.po +--- a/sympa-6.1.25/po/it.po ++++ b/sympa-6.1.25/po/it.po @@ -5673,6 +5673,11 @@ msgstr "Errore di sintassi nel comando." msgid "List '%1' does not exist." msgstr "La lista '%1' non esiste." @@ -197,10 +197,10 @@ index 243798d..d0c355f 100755 # nlsref 6,91 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 -diff --git a/sympa-6.1.22-src/po/pt.po b/sympa-6.1.22-src/po/pt.po +diff --git a/sympa-6.1.25/po/pt.po b/sympa-6.1.25/po/pt.po index f84f385..e131b47 100755 ---- a/sympa-6.1.22-src/po/pt.po -+++ b/sympa-6.1.22-src/po/pt.po +--- a/sympa-6.1.25/po/pt.po ++++ b/sympa-6.1.25/po/pt.po @@ -5286,6 +5286,11 @@ msgstr "" msgid "List '%1' does not exist." msgstr "" @@ -213,10 +213,10 @@ index f84f385..e131b47 100755 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." -diff --git a/sympa-6.1.22-src/src/lib/Commands.pm b/sympa-6.1.22-src/src/lib/Commands.pm +diff --git a/sympa-6.1.25/src/lib/Commands.pm b/sympa-6.1.25/src/lib/Commands.pm index 173374e..8f00c9a 100644 ---- a/sympa-6.1.22-src/src/lib/Commands.pm -+++ b/sympa-6.1.22-src/src/lib/Commands.pm +--- a/sympa-6.1.25/src/lib/Commands.pm ++++ b/sympa-6.1.25/src/lib/Commands.pm @@ -2015,6 +2015,19 @@ sub distribute { return 'unknown_list'; } @@ -237,10 +237,10 @@ index 173374e..8f00c9a 100644 &Language::SetLang($list->{'admin'}{'lang'}); #read the moderation queue and purge it -diff --git a/sympa-6.1.22-src/src/lib/confdef.pm b/sympa-6.1.22-src/src/lib/confdef.pm +diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 012d717..0dbb4e8 100644 ---- a/sympa-6.1.22-src/src/lib/confdef.pm -+++ b/sympa-6.1.22-src/src/lib/confdef.pm +--- a/sympa-6.1.25/src/lib/confdef.pm ++++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1548,6 +1548,22 @@ our @params = ( 'edit' => '1', 'file' => 'sympa.conf', @@ -264,10 +264,10 @@ index 012d717..0dbb4e8 100644 ## Not implemented yet. ## { -diff --git a/sympa-6.1.22-src/src/sympa.pl.in b/sympa-6.1.22-src/src/sympa.pl.in +diff --git a/sympa-6.1.25/src/sympa.pl.in b/sympa-6.1.25/src/sympa.pl.in index 6c307dd..96f9733 100644 ---- a/sympa-6.1.22-src/src/sympa.pl.in -+++ b/sympa-6.1.22-src/src/sympa.pl.in +--- a/sympa-6.1.25/src/sympa.pl.in ++++ b/sympa-6.1.25/src/sympa.pl.in @@ -1982,9 +1982,27 @@ sub DoMessage{ my $auth_method = 'smtp'; $auth_method = 'dkim' if ($message->{'dkim_pass'}); @@ -297,10 +297,10 @@ index 6c307dd..96f9733 100644 unless (defined $action) { &do_log('err', 'sympa::DoMessage(): message (%s) ignored because unable to evaluate scenario "send" for list %s',$messageid,$listname); -diff --git a/sympa-6.1.22-src/web_tt2/error.tt2 b/sympa-6.1.22-src/web_tt2/error.tt2 +diff --git a/sympa-6.1.25/web_tt2/error.tt2 b/sympa-6.1.25/web_tt2/error.tt2 index 8bede87..65d97b8 100644 ---- a/sympa-6.1.22-src/web_tt2/error.tt2 -+++ b/sympa-6.1.22-src/web_tt2/error.tt2 +--- a/sympa-6.1.25/web_tt2/error.tt2 ++++ b/sympa-6.1.25/web_tt2/error.tt2 @@ -79,6 +79,7 @@ [% ELSIF u_err.msg == 'listname_needed' %][%|loc%]You need to provide list name[%END%] [% ELSIF u_err.msg == 'already_moderated' %][%|loc%]Failed to moderate a message; it was probably moderated by another moderator[%END%] @@ -309,10 +309,10 @@ index 8bede87..65d97b8 100644 [% ELSIF u_err.msg == 'empty_archives' %][%|loc%]Archives are empty for this list[%END%] [% ELSIF u_err.msg == 'didnt_change_anything' %][%|loc%]You did not select an action to perform[%END%] [% ELSIF u_err.msg == 'no_bounce_user' %][%|loc(u_err.email)%]No bounce for user %1[%END%] -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index a31f9ff..5c5af41 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -7040,6 +7040,17 @@ sub do_skinsedit { return undef; } diff --git a/6.1.25/patches/09_1913_email_validation.patch b/6.1.25/patches/09_1913_email_validation.patch index db47feeb6d1af4c72653eb0900f3a5698630f3ca..820b02bd89fd6a2e7a0a25cc8326bd5fb3c0eee9 100644 --- a/6.1.25/patches/09_1913_email_validation.patch +++ b/6.1.25/patches/09_1913_email_validation.patch @@ -1,7 +1,7 @@ -diff --cc sympa-6.1.22-src/po/sympa.pot +diff --cc sympa-6.1.25/po/sympa.pot index 81e0251,833acf6..0000000 ---- a/sympa-6.1.22-src/po/sympa.pot -+++ b/sympa-6.1.22-src/po/sympa.pot +--- a/sympa-6.1.25/po/sympa.pot ++++ b/sympa-6.1.25/po/sympa.pot @@@ -8691,3 -8691,39 +8691,39 @@@ msgstr " #: ../wwsympa/wwslib.pm:39 msgid "no mail (useful for vacations)" @@ -44,10 +44,10 @@ index 81e0251,833acf6..0000000 + msgid "The local part of the email address is greater then 64 characters", + msgstr "" -diff --git a/sympa-6.1.22-src/soap/sympasoap.pm b/sympa-6.1.22-src/soap/sympasoap.pm +diff --git a/sympa-6.1.25/soap/sympasoap.pm b/sympa-6.1.25/soap/sympasoap.pm index bfc6d7c..810e155 100644 ---- a/sympa-6.1.22-src/soap/sympasoap.pm -+++ b/sympa-6.1.22-src/soap/sympasoap.pm +--- a/sympa-6.1.25/soap/sympasoap.pm ++++ b/sympa-6.1.25/soap/sympasoap.pm @@ -771,8 +771,9 @@ sub add { $u->{'password'} = $u2->{'password'} || &tools::tmp_passwd($email) ; $u->{'lang'} = $u2->{'lang'} || $list->{'admin'}{'lang'}; @@ -73,10 +73,10 @@ index bfc6d7c..810e155 100644 } if ($List::use_db) { -diff --git a/sympa-6.1.22-src/src/lib/Commands.pm b/sympa-6.1.22-src/src/lib/Commands.pm +diff --git a/sympa-6.1.25/src/lib/Commands.pm b/sympa-6.1.25/src/lib/Commands.pm index 8f00c9a..1ed166b 100644 ---- a/sympa-6.1.22-src/src/lib/Commands.pm -+++ b/sympa-6.1.22-src/src/lib/Commands.pm +--- a/sympa-6.1.25/src/lib/Commands.pm ++++ b/sympa-6.1.25/src/lib/Commands.pm @@ -833,8 +833,13 @@ sub subscribe { $u->{'gecos'} = $comment; $u->{'date'} = $u->{'update_date'} = time; @@ -110,10 +110,10 @@ index 8f00c9a..1ed166b 100644 &report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot); return undef; } -diff --git a/sympa-6.1.22-src/src/lib/Message.pm b/sympa-6.1.22-src/src/lib/Message.pm +diff --git a/sympa-6.1.25/src/lib/Message.pm b/sympa-6.1.25/src/lib/Message.pm index fcddac9..ac45e66 100644 ---- a/sympa-6.1.22-src/src/lib/Message.pm -+++ b/sympa-6.1.22-src/src/lib/Message.pm +--- a/sympa-6.1.25/src/lib/Message.pm ++++ b/sympa-6.1.25/src/lib/Message.pm @@ -347,7 +347,8 @@ sub _get_envelope_sender { return '<>'; } else { @@ -136,10 +136,10 @@ index fcddac9..ac45e66 100644 return undef; } -diff --git a/sympa-6.1.22-src/src/lib/Upgrade.pm b/sympa-6.1.22-src/src/lib/Upgrade.pm +diff --git a/sympa-6.1.25/src/lib/Upgrade.pm b/sympa-6.1.25/src/lib/Upgrade.pm index 394ad7a..7a3b57f 100644 ---- a/sympa-6.1.22-src/src/lib/Upgrade.pm -+++ b/sympa-6.1.22-src/src/lib/Upgrade.pm +--- a/sympa-6.1.25/src/lib/Upgrade.pm ++++ b/sympa-6.1.25/src/lib/Upgrade.pm @@ -616,9 +616,11 @@ sub upgrade { $list->{'total'} = 0; @@ -154,10 +154,10 @@ index 394ad7a..7a3b57f 100644 next; } -diff --git a/sympa-6.1.22-src/src/sympa.pl.in b/sympa-6.1.22-src/src/sympa.pl.in +diff --git a/sympa-6.1.25/src/sympa.pl.in b/sympa-6.1.25/src/sympa.pl.in index 96f9733..ea4bff9 100644 ---- a/sympa-6.1.22-src/src/sympa.pl.in -+++ b/sympa-6.1.22-src/src/sympa.pl.in +--- a/sympa-6.1.25/src/sympa.pl.in ++++ b/sympa-6.1.25/src/sympa.pl.in @@ -535,8 +535,11 @@ if ($main::options{'dump'}) { $u->{'email'} = $email; $u->{'gecos'} = $gecos; @@ -172,10 +172,10 @@ index 96f9733..ea4bff9 100644 next; } print STDERR '+'; -diff --git a/sympa-6.1.22-src/web_tt2/error.tt2 b/sympa-6.1.22-src/web_tt2/error.tt2 +diff --git a/sympa-6.1.25/web_tt2/error.tt2 b/sympa-6.1.25/web_tt2/error.tt2 index 65d97b8..3518609 100644 ---- a/sympa-6.1.22-src/web_tt2/error.tt2 -+++ b/sympa-6.1.22-src/web_tt2/error.tt2 +--- a/sympa-6.1.25/web_tt2/error.tt2 ++++ b/sympa-6.1.25/web_tt2/error.tt2 @@ -55,7 +55,7 @@ [% ELSIF u_err.msg == 'missing_arg' %][%|loc(u_err.argument)%]Missing argument %1[%END%] [% ELSIF u_err.msg == 'wrong_value' %][%|loc(u_err.argument)%]Wrong value for parameter %1[%END%] @@ -185,10 +185,10 @@ index 65d97b8..3518609 100644 [% ELSIF u_err.msg == 'incorrect_passwd' %][%|loc%]Provided password is incorrect[%END%] [% ELSIF u_err.msg == 'init_passwd' %][%|loc%]You did not choose a password, request a reminder of the initial password[%END%] [% ELSIF u_err.msg == 'ldap_user' %][%|loc%]Your password is stored in an LDAP directory, therefore Sympa cannot post you a reminder[%END%] -diff --git a/sympa-6.1.22-src/wwsympa/Auth.pm b/sympa-6.1.22-src/wwsympa/Auth.pm +diff --git a/sympa-6.1.25/wwsympa/Auth.pm b/sympa-6.1.25/wwsympa/Auth.pm index 144ad29..d57e912 100644 ---- a/sympa-6.1.22-src/wwsympa/Auth.pm -+++ b/sympa-6.1.22-src/wwsympa/Auth.pm +--- a/sympa-6.1.25/wwsympa/Auth.pm ++++ b/sympa-6.1.25/wwsympa/Auth.pm @@ -54,7 +54,8 @@ sub password_fingerprint{ my ($canonic, $user); @@ -209,10 +209,10 @@ index 144ad29..d57e912 100644 return ($auth); }else{ return lc($canonic_email[0]); -diff --git a/sympa-6.1.22-src/wwsympa/wwslib.pm b/sympa-6.1.22-src/wwsympa/wwslib.pm +diff --git a/sympa-6.1.25/wwsympa/wwslib.pm b/sympa-6.1.25/wwsympa/wwslib.pm index 1d13a3d..be8ba46 100644 ---- a/sympa-6.1.22-src/wwsympa/wwslib.pm -+++ b/sympa-6.1.22-src/wwsympa/wwslib.pm +--- a/sympa-6.1.25/wwsympa/wwslib.pm ++++ b/sympa-6.1.25/wwsympa/wwslib.pm @@ -274,13 +274,6 @@ sub new_passwd { return 'init'.$passwd; } @@ -227,10 +227,10 @@ index 1d13a3d..be8ba46 100644 sub init_passwd { my ($robot, $email, $data) = @_; -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 5c5af41..d78a479 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -3605,7 +3605,8 @@ sub do_sso_login_succeeded { my @alternative_conf = split(/,/,$ldap->{'alternative_email_attribute'}); my $attrs = $ldap->{'email_attribute'}; @@ -379,10 +379,10 @@ index 5c5af41..d78a479 100644 &wwslog('info',"d_set_owner : $in{'content'} : incorrect email"); &web_db_log({'robot' => $robot,'list' => $list->{'name'},'action' => $param->{'action'},'parameters' => "$in{'name_doc'}",'target_email' => "",'msg_id' => '','status' => 'error','error_type' => 'incorrect_email','user_email' => $param->{'user'}{'email'},'client' => $ip,'daemon' => $daemon_name}); return undef; -diff --git a/sympa-6.1.22-src/src/lib/List.pm b/sympa-6.1.22-src/src/lib/List.pm +diff --git a/sympa-6.1.25/src/lib/List.pm b/sympa-6.1.25/src/lib/List.pm index ca917d4..522e1e5 100644 ---- a/sympa-6.1.22-src/src/lib/List.pm -+++ b/sympa-6.1.22-src/src/lib/List.pm +--- a/sympa-6.1.25/src/lib/List.pm ++++ b/sympa-6.1.25/src/lib/List.pm @@ -7516,10 +7516,13 @@ sub add_user { unless ($dbh and $dbh->ping) { return undef unless &db_connect(); @@ -420,10 +420,10 @@ index ca917d4..522e1e5 100644 return undef; } if ($user_added) { -diff --git a/sympa-6.1.22-src/src/lib/tools.pm b/sympa-6.1.22-src/src/lib/tools.pm +diff --git a/sympa-6.1.25/src/lib/tools.pm b/sympa-6.1.25/src/lib/tools.pm index d9be037..2cae36f 100644 ---- a/sympa-6.1.22-src/src/lib/tools.pm -+++ b/sympa-6.1.22-src/src/lib/tools.pm +--- a/sympa-6.1.25/src/lib/tools.pm ++++ b/sympa-6.1.25/src/lib/tools.pm @@ -2737,13 +2737,47 @@ sub valid_email { unless ($email =~ /^$regexp{'email'}$/) { @@ -474,10 +474,10 @@ index d9be037..2cae36f 100644 } return 1; -diff --git a/sympa-6.1.22-src/src/lib/confdef.pm b/sympa-6.1.22-src/src/lib/confdef.pm +diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 0dbb4e8..548f55c 100644 ---- a/sympa-6.1.22-src/src/lib/confdef.pm -+++ b/sympa-6.1.22-src/src/lib/confdef.pm +--- a/sympa-6.1.25/src/lib/confdef.pm ++++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1564,6 +1564,14 @@ our @params = ( 'edit' => '1', 'file' => 'sympa.conf', @@ -493,10 +493,10 @@ index 0dbb4e8..548f55c 100644 ## Not implemented yet. ## { -diff --git a/sympa-6.1.22-src/src/sympa_wizard.pl.in b/sympa-6.1.22-src/src/sympa_wizard.pl.in +diff --git a/sympa-6.1.25/src/sympa_wizard.pl.in b/sympa-6.1.25/src/sympa_wizard.pl.in index 0d4789d..3ee8c82 100644 ---- a/sympa-6.1.22-src/src/sympa_wizard.pl.in -+++ b/sympa-6.1.22-src/src/sympa_wizard.pl.in +--- a/sympa-6.1.25/src/sympa_wizard.pl.in ++++ b/sympa-6.1.25/src/sympa_wizard.pl.in @@ -380,6 +380,12 @@ sub check_cpan { mandatory => 1, usage => 'module for character encoding processing', @@ -510,10 +510,10 @@ index 0d4789d..3ee8c82 100644 'FCGI' => { required_version => '0.67', package_name => 'FCGI', -diff --git a/sympa-6.1.22-src/src/lib/confdef.pm b/sympa-6.1.22-src/src/lib/confdef.pm +diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 7b471dc..9feb752 100644 ---- a/sympa-6.1.22-src/src/lib/confdef.pm -+++ b/sympa-6.1.22-src/src/lib/confdef.pm +--- a/sympa-6.1.25/src/lib/confdef.pm ++++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1570,6 +1570,7 @@ our @params = ( 'default' => 'tldcheck,fqdn,rfc822', 'edit' => '1', diff --git a/6.1.25/patches/10_3981_forbid_weak_passwords.patch b/6.1.25/patches/10_3981_forbid_weak_passwords.patch index 06c4ad6d742e9671ee2d0a0738b11b7df931388c..80098e239fda88c0ab0e01a0ae2bf304dac15337 100644 --- a/6.1.25/patches/10_3981_forbid_weak_passwords.patch +++ b/6.1.25/patches/10_3981_forbid_weak_passwords.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/po/de.po b/sympa-6.1.22-src/po/de.po +diff --git a/sympa-6.1.25/po/de.po b/sympa-6.1.25/po/de.po index f3d84f9..911ece1 100755 ---- a/sympa-6.1.22-src/po/de.po -+++ b/sympa-6.1.22-src/po/de.po +--- a/sympa-6.1.25/po/de.po ++++ b/sympa-6.1.25/po/de.po @@ -10919,6 +10919,11 @@ msgid "" "Visit %3/oauth_check/%2 to check the token state and renew it if necessary." msgstr "" @@ -14,10 +14,10 @@ index f3d84f9..911ece1 100755 #~ msgid "The configuration file contains errors.\n" #~ msgstr "Diese Konfigurationsdatei enthält Fehler.\n" -diff --git a/sympa-6.1.22-src/po/el.po b/sympa-6.1.22-src/po/el.po +diff --git a/sympa-6.1.25/po/el.po b/sympa-6.1.25/po/el.po index e89be0b..33b636f 100755 ---- a/sympa-6.1.22-src/po/el.po -+++ b/sympa-6.1.22-src/po/el.po +--- a/sympa-6.1.25/po/el.po ++++ b/sympa-6.1.25/po/el.po @@ -11012,6 +11012,10 @@ msgstr "" msgid "%s / %s" msgstr "" @@ -29,10 +29,10 @@ index e89be0b..33b636f 100755 #, fuzzy #~ msgid "The configuration file contains errors.\n" #~ msgstr "Το αρχείο διαμόρφωσης --CONFIG-- περιέχει λάθη.\n" -diff --git a/sympa-6.1.22-src/po/es.po b/sympa-6.1.22-src/po/es.po +diff --git a/sympa-6.1.25/po/es.po b/sympa-6.1.25/po/es.po index 557f0bc..b8d32c9 100755 ---- a/sympa-6.1.22-src/po/es.po -+++ b/sympa-6.1.22-src/po/es.po +--- a/sympa-6.1.25/po/es.po ++++ b/sympa-6.1.25/po/es.po @@ -11170,6 +11170,10 @@ msgstr "" msgid "Plugin" msgstr "" @@ -44,10 +44,10 @@ index 557f0bc..b8d32c9 100755 #, fuzzy #~ msgid "The configuration file contains errors.\n" #~ msgstr "El archivo de configuración --CONFIG-- contiene errores.\n" -diff --git a/sympa-6.1.22-src/po/fr.po b/sympa-6.1.22-src/po/fr.po +diff --git a/sympa-6.1.25/po/fr.po b/sympa-6.1.25/po/fr.po index e40d819..45c9a25 100755 ---- a/sympa-6.1.22-src/po/fr.po -+++ b/sympa-6.1.22-src/po/fr.po +--- a/sympa-6.1.25/po/fr.po ++++ b/sympa-6.1.25/po/fr.po @@ -10474,6 +10474,10 @@ msgstr "modèle d'alias de liste" msgid "no mail (useful for vacations)" msgstr "interrompre la réception des messages (utile pendant les vacances)" @@ -59,10 +59,10 @@ index e40d819..45c9a25 100755 #~ msgid "The configuration file contains errors.\n" #~ msgstr "Le fichier de configuration contient des erreurs.\n" -diff --git a/sympa-6.1.22-src/po/it.po b/sympa-6.1.22-src/po/it.po +diff --git a/sympa-6.1.25/po/it.po b/sympa-6.1.25/po/it.po index d0c355f..28a78ed 100755 ---- a/sympa-6.1.22-src/po/it.po -+++ b/sympa-6.1.22-src/po/it.po +--- a/sympa-6.1.25/po/it.po ++++ b/sympa-6.1.25/po/it.po @@ -11363,6 +11363,10 @@ msgstr "" msgid "Searches are limited to 50 results, except when using a @domain mask." msgstr "" @@ -74,10 +74,10 @@ index d0c355f..28a78ed 100755 # nlsref 1,1 #, fuzzy #~ msgid "The configuration file contains errors.\n" -diff --git a/sympa-6.1.22-src/po/pt.po b/sympa-6.1.22-src/po/pt.po +diff --git a/sympa-6.1.25/po/pt.po b/sympa-6.1.25/po/pt.po index e131b47..dd68b0e 100755 ---- a/sympa-6.1.22-src/po/pt.po -+++ b/sympa-6.1.22-src/po/pt.po +--- a/sympa-6.1.25/po/pt.po ++++ b/sympa-6.1.25/po/pt.po @@ -11928,6 +11928,10 @@ msgid "" "was over the maximum size allowed on this list." msgstr "" @@ -89,10 +89,10 @@ index e131b47..dd68b0e 100755 #, fuzzy #~ msgid "URL of main Web page" #~ msgstr "Página de Administração %1" -diff --git a/sympa-6.1.22-src/po/sympa.pot b/sympa-6.1.22-src/po/sympa.pot +diff --git a/sympa-6.1.25/po/sympa.pot b/sympa-6.1.25/po/sympa.pot index 81e0251..cc5a732 100644 ---- a/sympa-6.1.22-src/po/sympa.pot -+++ b/sympa-6.1.22-src/po/sympa.pot +--- a/sympa-6.1.25/po/sympa.pot ++++ b/sympa-6.1.25/po/sympa.pot @@ -8691,3 +8691,13 @@ msgstr "" #: ../wwsympa/wwslib.pm:39 msgid "no mail (useful for vacations)" @@ -107,10 +107,10 @@ index 81e0251..cc5a732 100644 +msgstr "" + + -diff --git a/sympa-6.1.22-src/soap/sympasoap.pm b/sympa-6.1.22-src/soap/sympasoap.pm +diff --git a/sympa-6.1.25/soap/sympasoap.pm b/sympa-6.1.25/soap/sympasoap.pm index bfc6d7c..58e5309 100644 ---- a/sympa-6.1.22-src/soap/sympasoap.pm -+++ b/sympa-6.1.22-src/soap/sympasoap.pm +--- a/sympa-6.1.25/soap/sympasoap.pm ++++ b/sympa-6.1.25/soap/sympasoap.pm @@ -768,7 +768,22 @@ sub add { $u->{'email'} = $email; $u->{'gecos'} = $gecos || $u2->{'gecos'}; @@ -135,10 +135,10 @@ index bfc6d7c..58e5309 100644 $u->{'lang'} = $u2->{'lang'} || $list->{'admin'}{'lang'}; unless ($list->add_user($u)) { -diff --git a/sympa-6.1.22-src/src/lib/confdef.pm b/sympa-6.1.22-src/src/lib/confdef.pm +diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 7b471dc..19aadfc 100644 ---- a/sympa-6.1.22-src/src/lib/confdef.pm -+++ b/sympa-6.1.22-src/src/lib/confdef.pm +--- a/sympa-6.1.25/src/lib/confdef.pm ++++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1571,6 +1571,13 @@ our @params = ( 'edit' => '1', 'file' => 'sympa.conf', @@ -153,10 +153,10 @@ index 7b471dc..19aadfc 100644 ## Not implemented yet. ## { -diff --git a/sympa-6.1.22-src/src/lib/tools.pm b/sympa-6.1.22-src/src/lib/tools.pm +diff --git a/sympa-6.1.25/src/lib/tools.pm b/sympa-6.1.25/src/lib/tools.pm index 37bd999..e0af65f 100644 ---- a/sympa-6.1.22-src/src/lib/tools.pm -+++ b/sympa-6.1.22-src/src/lib/tools.pm +--- a/sympa-6.1.25/src/lib/tools.pm ++++ b/sympa-6.1.25/src/lib/tools.pm @@ -4048,4 +4048,28 @@ sub decode_header { } } @@ -186,10 +186,10 @@ index 37bd999..e0af65f 100644 +} + 1; -diff --git a/sympa-6.1.22-src/src/sympa_wizard.pl.in b/sympa-6.1.22-src/src/sympa_wizard.pl.in +diff --git a/sympa-6.1.25/src/sympa_wizard.pl.in b/sympa-6.1.25/src/sympa_wizard.pl.in index cb886fd..c4d4c98 100644 ---- a/sympa-6.1.22-src/src/sympa_wizard.pl.in -+++ b/sympa-6.1.22-src/src/sympa_wizard.pl.in +--- a/sympa-6.1.25/src/sympa_wizard.pl.in ++++ b/sympa-6.1.25/src/sympa_wizard.pl.in @@ -324,6 +324,12 @@ sub check_cpan { package_name => 'Crypt-CipherSaber', usage => 'this module provides reversible encryption of user passwords in the database. Useful when updating from old version with password reversible encryption, or if secure session cookies in non-SSL environments are required.', @@ -203,10 +203,10 @@ index cb886fd..c4d4c98 100644 'DB_File' => { required_version =>'1.75', package_name => 'DB_File', -diff --git a/sympa-6.1.22-src/web_tt2/error.tt2 b/sympa-6.1.22-src/web_tt2/error.tt2 +diff --git a/sympa-6.1.25/web_tt2/error.tt2 b/sympa-6.1.25/web_tt2/error.tt2 index 65d97b8..3cd16b5 100644 ---- a/sympa-6.1.22-src/web_tt2/error.tt2 -+++ b/sympa-6.1.22-src/web_tt2/error.tt2 +--- a/sympa-6.1.25/web_tt2/error.tt2 ++++ b/sympa-6.1.25/web_tt2/error.tt2 @@ -74,6 +74,7 @@ [% ELSIF u_err.msg == 'user_already_subscriber' %][%|loc(u_err.email,u_err.list)%]%1 is already subscribed to the list %2[%END%] [% ELSIF u_err.msg == 'no_passwd' %][%|loc%]Please provide your password[%END%] @@ -215,10 +215,10 @@ index 65d97b8..3cd16b5 100644 [% ELSIF u_err.msg == 'wrong_input_path' %][%|loc(u_err.tpl)%]Provided path is incorrect for template '%1'[%END%] [% ELSIF u_err.msg == 'cannot_open_file' %][%|loc(u_err.path)%]Cannot open file '%1'[%END%] [% ELSIF u_err.msg == 'listname_needed' %][%|loc%]You need to provide list name[%END%] -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 5c5af41..8b366b0 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -4961,6 +4961,15 @@ sub do_subscribe { $u->{'gecos'} = $param->{'user'}{'gecos'} || $in{'gecos'}; $u->{'date'} = $u->{'update_date'} = time; @@ -265,10 +265,10 @@ index 5c5af41..8b366b0 100644 $u->{'lang'} = $u2->{'lang'} || $list->{'admin'}{'lang'}; if ($comma_emails) { $comma_emails = $comma_emails .','. $email; -diff --git a/sympa-6.1.22-src/src/lib/confdef.pm b/sympa-6.1.22-src/src/lib/confdef.pm +diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 19aadfc..7154dea 100644 ---- a/sympa-6.1.22-src/src/lib/confdef.pm -+++ b/sympa-6.1.22-src/src/lib/confdef.pm +--- a/sympa-6.1.25/src/lib/confdef.pm ++++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1577,6 +1577,7 @@ our @params = ( 'default' => undef, 'edit' => '1', @@ -277,10 +277,10 @@ index 19aadfc..7154dea 100644 }, ## Not implemented yet. -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 4e0f580..156ebeb 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -4965,15 +4965,6 @@ sub do_subscribe { $u->{'gecos'} = $param->{'user'}{'gecos'} || $in{'gecos'}; $u->{'date'} = $u->{'update_date'} = time; diff --git a/6.1.25/patches/11_1187_full_name_removeal.2.patch b/6.1.25/patches/11_1187_full_name_removeal.2.patch index 995ffd697490c0b096096fcabb90af9a96c2fc64..3f63ee40ca18ed3e90b6aaffb6313542b400fdf9 100644 --- a/6.1.25/patches/11_1187_full_name_removeal.2.patch +++ b/6.1.25/patches/11_1187_full_name_removeal.2.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/web_tt2/editsubscriber.tt2 b/sympa-6.1.22-src/web_tt2/editsubscriber.tt2 +diff --git a/sympa-6.1.25/web_tt2/editsubscriber.tt2 b/sympa-6.1.25/web_tt2/editsubscriber.tt2 index c8d40b6..7cb9040 100644 ---- a/sympa-6.1.22-src/web_tt2/editsubscriber.tt2 -+++ b/sympa-6.1.22-src/web_tt2/editsubscriber.tt2 +--- a/sympa-6.1.25/web_tt2/editsubscriber.tt2 ++++ b/sympa-6.1.25/web_tt2/editsubscriber.tt2 @@ -9,8 +9,6 @@ <input type="hidden" name="email" value="[% current_subscriber.escaped_email %]" /> <label for="new_email">[%|loc%]Email:[%END%] </label> @@ -11,10 +11,10 @@ index c8d40b6..7cb9040 100644 [% IF current_subscriber.custom_attribute %] [% SET subscriber = current_subscriber ; PROCESS edit_attributes.tt2 ; -diff --git a/sympa-6.1.22-src/web_tt2/subscriber_table.tt2 b/sympa-6.1.22-src/web_tt2/subscriber_table.tt2 +diff --git a/sympa-6.1.25/web_tt2/subscriber_table.tt2 b/sympa-6.1.25/web_tt2/subscriber_table.tt2 index 5f1a4b9..db685e5 100644 ---- a/sympa-6.1.22-src/web_tt2/subscriber_table.tt2 -+++ b/sympa-6.1.22-src/web_tt2/subscriber_table.tt2 +--- a/sympa-6.1.25/web_tt2/subscriber_table.tt2 ++++ b/sympa-6.1.25/web_tt2/subscriber_table.tt2 @@ -28,14 +28,6 @@ [%|loc%]Picture[%END%] </th> @@ -42,10 +42,10 @@ index 5f1a4b9..db685e5 100644 [% IF is_listmaster || is_owner || is_editor %] <td> [%|optdesc('reception')%][% u.reception %][% END %] -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 120bf9a..db67bd3 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -4723,11 +4723,7 @@ sub do_pref { } } diff --git a/6.1.25/patches/11_1187_full_name_removeal.patch b/6.1.25/patches/11_1187_full_name_removeal.patch index 3d4760c857138a2ea587b4b8640eeb36efddc3f8..90f72ad5d03e25a1086fe145d04beb7e79f94db0 100644 --- a/6.1.25/patches/11_1187_full_name_removeal.patch +++ b/6.1.25/patches/11_1187_full_name_removeal.patch @@ -1,7 +1,7 @@ -diff --git a/sympa-6.1.22-src/web_tt2/pref.tt2 b/sympa-6.1.22-src/web_tt2/pref.tt2 +diff --git a/sympa-6.1.25/web_tt2/pref.tt2 b/sympa-6.1.25/web_tt2/pref.tt2 index 3ffc1c4..f1b5bcf 100644 ---- a/sympa-6.1.22-src/web_tt2/pref.tt2 -+++ b/sympa-6.1.22-src/web_tt2/pref.tt2 +--- a/sympa-6.1.25/web_tt2/pref.tt2 ++++ b/sympa-6.1.25/web_tt2/pref.tt2 @@ -7,7 +7,6 @@ <form action="[% path_cgi %]" method="post"> <fieldset> @@ -10,10 +10,10 @@ index 3ffc1c4..f1b5bcf 100644 <label for="lang">[%|loc%]Language:[%END%] </label><select id="lang" name="lang" class="LanguageNeutral"> [% FOREACH l = languages %] <option lang="[%l.value.lang_tag%]" xml:lang="[%l.value.lang_tag%]" value="[% l.key %]" [% l.value.selected %]>[% l.value.complete %]</option> -diff --git a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 156ebeb..120bf9a 100644 ---- a/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in -+++ b/sympa-6.1.22-src/wwsympa/wwsympa.fcgi.in +--- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in ++++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -4794,7 +4794,7 @@ sub check_custom_attribute { &wwslog('info', 'do_setpref'); my $changes = {}; diff --git a/sympa-6.1.25/mail_tt2/message_report.tt2 b/sympa-6.1.25/mail_tt2/message_report.tt2 index b8834cf3ca5c0981106967228ca579f83c7c2046..99c8a0fd4f3abcc125595b7e54023ff1faed57c6 100644 --- a/sympa-6.1.25/mail_tt2/message_report.tt2 +++ b/sympa-6.1.25/mail_tt2/message_report.tt2 @@ -54,6 +54,9 @@ Note: Because binary files have to be encoded in less-efficient ASCII format bef [% ELSIF entry == 'list_unknown' -%] [%|loc(listname)%]List '%1' does not exist.[%END%] +[% ELSIF entry == 'max_list_dispatch' -%] + +[%|loc(max_list_dispatch)%]List size has exceded the limit, %1, set by the administrators.[%END%] [% ELSIF entry == 'dyn_cant_create' -%] [%|loc(listname)%]The %1 list could not be created.[%END%] diff --git a/sympa-6.1.25/po-wwsympa/de.po b/sympa-6.1.25/po-wwsympa/de.po old mode 100644 new mode 100755 index ebd517d242188e4c2b2ff19ff51bef458354b60b..72f987ec6a84108bd1261260883d3a86a05abdf3 --- a/sympa-6.1.25/po-wwsympa/de.po +++ b/sympa-6.1.25/po-wwsympa/de.po @@ -7557,3 +7557,8 @@ msgstr "" #~ "Textdatei oder relationalen Datenbank gespeichert werden oder von " #~ "verschiedenen externen Quellen inkludiert werden (Listen, Klartextdatei, " #~ "Ergebnis einer Abfrage)." + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Die Zahl der Abonnenten für diese Liste, "% 1", ist größer als der von den Listenadministratoren festgesetzte Grenze, '% 2'" + diff --git a/sympa-6.1.25/po-wwsympa/el.po b/sympa-6.1.25/po-wwsympa/el.po old mode 100644 new mode 100755 index 5f5c873ca3ca577e1d9293d1f8e50b296f226b7c..dd5a52e4b7bcf305fce20a65f7bd41d4402d6375 --- a/sympa-6.1.25/po-wwsympa/el.po +++ b/sympa-6.1.25/po-wwsympa/el.po @@ -5860,3 +5860,8 @@ msgstr "" #~ msgstr "" #~ "(Προκαθορισμένη τιμή: παραλαβή ταχυδρομείου,απόδειξη παραλαβής,επισκόπηση," #~ "κοινή επισκόπηση,περίληψη,χωρίς ταχυδρομείο)" + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Ο αριθμός των συνδρομητών για αυτήν τη λίστα, '% 1', είναι μεγαλύτερη από το όριο που καθορίζεται από τους διαχειριστές της λίστας '% 2'" + diff --git a/sympa-6.1.25/po-wwsympa/en.po b/sympa-6.1.25/po-wwsympa/en.po old mode 100644 new mode 100755 index b4383f5b0311d7e8a0297066a2ba62cc57f9ac25..484a4335340ab42da7c28e583ee21e2b6b68e805 --- a/sympa-6.1.25/po-wwsympa/en.po +++ b/sympa-6.1.25/po-wwsympa/en.po @@ -7272,6 +7272,10 @@ msgstr "" "in nomail mode, he or she will again receive individual mail messages from " "the list." +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" + #~ msgid "subscribers (private);" #~ msgstr "subscribers (private);" diff --git a/sympa-6.1.25/po-wwsympa/es.po b/sympa-6.1.25/po-wwsympa/es.po old mode 100644 new mode 100755 index 2b7c2bfe3f9a7c7e98087add8d41cd68e03099d2..43e33d222b096cd3de4849ff12f60e6318208c09 --- a/sympa-6.1.25/po-wwsympa/es.po +++ b/sympa-6.1.25/po-wwsympa/es.po @@ -7532,3 +7532,7 @@ msgstr "" #~ msgid "value" #~ msgstr "valor" + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "El número de suscriptores de esta lista, '% 1', es mayor que el límite establecido por los administradores de la lista, '% 2'" diff --git a/sympa-6.1.25/po-wwsympa/fr.po b/sympa-6.1.25/po-wwsympa/fr.po index e65dff15b9d8407ee727a4f8201e6928db17133f..6ed5e386d752c25f2ce2e2e4a952d1ebd9fb8505 100644 --- a/sympa-6.1.25/po-wwsympa/fr.po +++ b/sympa-6.1.25/po-wwsympa/fr.po @@ -7921,3 +7921,7 @@ msgstr "" # nlsref 16,91 #~ msgid "value" #~ msgstr "valeur" + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Le nombre d'abonnés à cette liste, '% 1', est supérieure à la limite fixée par les administrateurs de la liste, '% 2'" diff --git a/sympa-6.1.25/po-wwsympa/it.po b/sympa-6.1.25/po-wwsympa/it.po old mode 100644 new mode 100755 index 343435142da36d5e1aac61d16c1d0b2ae7b66bcd..10ae26574fe5d9b887a918759dbc0230c3839af6 --- a/sympa-6.1.25/po-wwsympa/it.po +++ b/sympa-6.1.25/po-wwsympa/it.po @@ -5891,3 +5891,7 @@ msgstr "" # nlsref 16,91 #~ msgid "value" #~ msgstr "valore" + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "Il numero di abbonati per questa lista, '% 1', è maggiore del limite fissato dagli amministratori della lista, '% 2'" diff --git a/sympa-6.1.25/po-wwsympa/pt.po b/sympa-6.1.25/po-wwsympa/pt.po old mode 100644 new mode 100755 index 13c8230f5a61df266c168526301244d466941da8..8784ff2eb0b43283ecaed3702ea243bb033434ee --- a/sympa-6.1.25/po-wwsympa/pt.po +++ b/sympa-6.1.25/po-wwsympa/pt.po @@ -5509,3 +5509,7 @@ msgstr "" #~ msgstr "" #~ "(Valor por defeito: modo de recepção mail,notice,digest,digestplain," #~ "summary,nomail)" + +#: ../web_tt2/error.tt2 +msgid "The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'" +msgstr "O número de assinantes para esta lista, '% 1', é maior do que o limite definido pelos administradores da lista, '% 2'" diff --git a/sympa-6.1.25/po/de.po b/sympa-6.1.25/po/de.po old mode 100644 new mode 100755 index 2efd0af87e54b54379fefd1eabf6f5123fbd9e72..832a251ccb156c521b21899c21146079ee9419c2 --- a/sympa-6.1.25/po/de.po +++ b/sympa-6.1.25/po/de.po @@ -5597,6 +5597,11 @@ msgstr "Befehls-Syntaxfehler." msgid "List '%1' does not exist." msgstr "Liste '%1' existiert nicht." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Größe der Liste hat die Grenze,% 1, die von den Administratoren übertraf." + #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." @@ -10926,6 +10931,11 @@ msgid "" "Visit %3/oauth_check/%2 to check the token state and renew it if necessary." msgstr "" + +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "Die von Ihnen eingegebene Passwort stimmt nicht mit diesen Seiten Normen der Stärke:% 1. Bitte wählen Sie eine stärkere Passwort." + #~ msgid "The configuration file contains errors.\n" #~ msgstr "Diese Konfigurationsdatei enthält Fehler.\n" diff --git a/sympa-6.1.25/po/el.po b/sympa-6.1.25/po/el.po old mode 100644 new mode 100755 index 77d9c27b28d927d542fe5ef98721ff25857bc566..6e06d6ce74b5cdae1ac97282e647da8813829d26 --- a/sympa-6.1.25/po/el.po +++ b/sympa-6.1.25/po/el.po @@ -5598,6 +5598,11 @@ msgstr "Λάθος σύνταξη εντολής." msgid "List '%1' does not exist." msgstr "Η λίστα '%1' δεν υπάρχει." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Μέγεθος της λίστας έχει exceded το όριο, 1%, που καθορίζεται από τους διαχειριστές." + #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." @@ -11019,6 +11024,10 @@ msgstr "" msgid "%s / %s" msgstr "" +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "Ο κωδικός πρόσβασης που πληκτρολογήσατε δεν ταιριάζει με αυτό sites πρότυπα της δύναμης:% 1. Παρακαλώ επιλέξτε μια ισχυρότερη κωδικό πρόσβασης." + #, fuzzy #~ msgid "The configuration file contains errors.\n" #~ msgstr "Το αρχείο διαμόρφωσης --CONFIG-- περιέχει λάθη.\n" diff --git a/sympa-6.1.25/po/en.po b/sympa-6.1.25/po/en.po index 133b101e424050e2df54573f280c9599f2be4508..e10172f235dd3c4bd29436d4d0e841184c4e0f30 100755 --- a/sympa-6.1.25/po/en.po +++ b/sympa-6.1.25/po/en.po @@ -5723,6 +5723,11 @@ msgstr "This list archive is empty." msgid "Required file does not exist." msgstr "Required file does not exist." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "List size has exceded the limit, %1, set by the administrators." + #. (u_err.listname) #: ../mail_tt2/command_report.tt2:139 msgid "List %1 has no subscriber." diff --git a/sympa-6.1.25/po/es.po b/sympa-6.1.25/po/es.po old mode 100644 new mode 100755 index ccb4eed73c64d5d52b0c9b253cfe11ad90a655d0..8421993fbd4b9d41fda7bc1ec56f64819ad8a109 --- a/sympa-6.1.25/po/es.po +++ b/sympa-6.1.25/po/es.po @@ -5591,6 +5591,11 @@ msgstr "Error de sintaxis." msgid "List '%1' does not exist." msgstr "La lista '%1' no existe." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Tamaño de la lista ha rebasadas el límite,% 1, fijado por los administradores." + #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." @@ -11177,6 +11182,10 @@ msgstr "" msgid "Plugin" msgstr "" +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "La contraseña que escribió no coincide con estos sitios niveles de fuerza:% 1. Por favor, escoja una contraseña fuerte." + #, fuzzy #~ msgid "The configuration file contains errors.\n" #~ msgstr "El archivo de configuración --CONFIG-- contiene errores.\n" diff --git a/sympa-6.1.25/po/fr.po b/sympa-6.1.25/po/fr.po old mode 100644 new mode 100755 index 8aa9ec105c71a30b2e57d1f68d439bc86be31730..bda06d4aa6fbfbffc210fe69171e334f801d93d5 --- a/sympa-6.1.25/po/fr.po +++ b/sympa-6.1.25/po/fr.po @@ -5674,6 +5674,11 @@ msgstr "Erreur de syntaxe." msgid "List '%1' does not exist." msgstr "La liste '%1' est inconnue." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Taille de la liste a exceded la limite, 1%, fixé par les administrateurs." + # nlsref 6,91 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 @@ -10481,6 +10486,10 @@ msgstr "" "Le mot de passe que vous avez saisi ne correspond pas à ces sites normes de " "résistance:% 1. S'il vous plaît choisir un mot de passe fort." +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "Le mot de passe que vous avez saisi ne correspond pas à ces sites normes de résistance:% 1. S'il vous plaît choisir un mot de passe fort." + #~ msgid "The configuration file contains errors.\n" #~ msgstr "Le fichier de configuration contient des erreurs.\n" diff --git a/sympa-6.1.25/po/it.po b/sympa-6.1.25/po/it.po old mode 100644 new mode 100755 index 9b253e03f96781980514076f1251987465dde087..2cc3eef7f4e67710fc6d0026cab7d0433729fdba --- a/sympa-6.1.25/po/it.po +++ b/sympa-6.1.25/po/it.po @@ -5673,6 +5673,11 @@ msgstr "Errore di sintassi nel comando." msgid "List '%1' does not exist." msgstr "La lista '%1' non esiste." +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Dimensioni List ha exceded il limite,% 1, impostare dagli amministratori." + # nlsref 6,91 #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 @@ -11370,6 +11375,10 @@ msgstr "" msgid "Searches are limited to 50 results, except when using a @domain mask." msgstr "" +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "La password digitata non corrisponde a questi siti norme di forza:% 1. Si prega di scegliere una password forte." + # nlsref 1,1 #, fuzzy #~ msgid "The configuration file contains errors.\n" diff --git a/sympa-6.1.25/po/pt.po b/sympa-6.1.25/po/pt.po old mode 100644 new mode 100755 index 3965cc107fe804a1009395e259d469d50cb66225..d5dbeee540f6c6b7be9a8a27b5f34ba606045126 --- a/sympa-6.1.25/po/pt.po +++ b/sympa-6.1.25/po/pt.po @@ -5286,6 +5286,11 @@ msgstr "" msgid "List '%1' does not exist." msgstr "" +#. (u_err.max_list_dispatch) +#: default/mail_tt2/message_report.tt2:59 +msgid "List size has exceded the limit, %1, set by the administrators." +msgstr "Tamanho da lista tenha ultrapassado o limite,% 1, definido pelos administradores." + #. (u_err.listname) #: ../mail_tt2/command_report.tt2:107 msgid "%1 mailing list does not provide subscriber preferences." @@ -11935,6 +11940,10 @@ msgid "" "was over the maximum size allowed on this list." msgstr "" +#: ../default/web_tt2/error.tt2:77 +msgid "The password you typed does not match this sites standards of strength: %1. Please pick a stronger password." +msgstr "A senha que você digitou não corresponde esse Sites padrões de força:% 1. Por favor escolha uma senha forte." + #, fuzzy #~ msgid "URL of main Web page" #~ msgstr "Página de Administração %1" diff --git a/sympa-6.1.25/soap/sympasoap.pm b/sympa-6.1.25/soap/sympasoap.pm index 2c001af949d8aeb4a11ff8f6767e28b9f90fd905..4d306c0452125e79954af94ab182451f18a37591 100644 --- a/sympa-6.1.25/soap/sympasoap.pm +++ b/sympa-6.1.25/soap/sympasoap.pm @@ -799,8 +799,9 @@ sub add { $u->{'lang'} = $u2->{'lang'} || $list->{'admin'}{'lang'}; - unless ($list->add_user($u)) { - &Log::do_log('info', 'add %s@%s %s from %s : Unable to add user', $listname,$robot,$email,$sender); + my ($status, %invalids) = $list->add_user($u); + unless ($status) { + &Log::do_log('info', 'add %s@%s %s from %s : Unable to add user: %s', $listname,$robot,$email,$sender, $invalids{$email}); my $error = "Unable to add user $email in list $listname"; die SOAP::Fault->faultcode('Server') ->faultstring('Unable to add user') @@ -1256,10 +1257,11 @@ sub subscribe { $u->{'gecos'} = $gecos; $u->{'date'} = $u->{'update_date'} = time; + my ($ct, %invalids) = $list->add_user($u); die SOAP::Fault->faultcode('Server') ->faultstring('Undef') ->faultdetail("SOAP subscribe : add user failed") - unless $list->add_user($u); + unless $ct; } if ($List::use_db) { diff --git a/sympa-6.1.25/src/etc/script/sympa.in b/sympa-6.1.25/src/etc/script/sympa.in index 48e405ddce38a895b533372f55eb6d5fc73124d6..b6df1cbb92b821726d81c859ce1234ec46a07fbb 100755 --- a/sympa-6.1.25/src/etc/script/sympa.in +++ b/sympa-6.1.25/src/etc/script/sympa.in @@ -216,6 +216,10 @@ fi [ -f $sympaconf ] || exit 0 [ -f $wwsympaconf ] || exit 0 +if [ ! -d /var/lock/subsys ]; then + mkdir /var/lock/subsys +fi + # See how we were called. case "$1" in start) diff --git a/sympa-6.1.25/src/lib/Commands.pm b/sympa-6.1.25/src/lib/Commands.pm index 173374ea6403764ebaa42c70cd876d239c6d869f..1ed166b14fd6cc4446000aceb64889ff590308b5 100644 --- a/sympa-6.1.25/src/lib/Commands.pm +++ b/sympa-6.1.25/src/lib/Commands.pm @@ -833,8 +833,13 @@ sub subscribe { $u->{'gecos'} = $comment; $u->{'date'} = $u->{'update_date'} = time; - unless ($list->add_user($u)){ - my $error = "Unable to add user $user in list $listname"; + my ($ct, %invalids) = $list->add_user($u); + unless ($ct){ + + #TODO: this is untranslateable with variables in it $reason is already + # translated, and the other variables just need to be sent in as parameters + my $reason = $invalids{$sender}; + my $error = "Unable to add user $user in list $listname: $reason"; &report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot); return undef; } @@ -1277,8 +1282,14 @@ sub add { $u->{'gecos'} = $comment; $u->{'date'} = $u->{'update_date'} = time; - unless ($list->add_user($u)) { - my $error = "Unable to add user $user in list $listname"; + my ($ct, %invalids) = $list->add_user($u); + unless ($ct){ + + #TODO: this is untranslateable with variables in it $reason is already + # translated, and the other variables just need to be sent in as parameters + my $reason = $invalids{$sender}; + my $error = "Unable to add user $user in list $listname: $reason"; + &report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot); return undef; } @@ -2015,6 +2026,19 @@ sub distribute { return 'unknown_list'; } + ## Check to make sure that the list does not get dispatched if it is from a + ## moderator and the list size is greater then max_list_dispatch + ## We do not check to see if the message is being attempted to get dispatched + ## by a non privileged user because their access should be rejected by other + ## mechanisims at this point anyway. + if ($Conf{'max_list_dispatch'} && + ($Conf{'max_list_dispatch'} < $list->get_total()) + ) { + &do_log('info', 'DISTRIBUTE %s %s from %s refused, list subscriber count (%d) at max (%d)', $which, $key, $sender, $list->get_total(), $Conf{'max_list_dispatch'}); + &report::reject_report_msg('user','max_list_dispatch',$sender,{'max_list_dispatch' => $Conf{'max_list_dispatch'}},$robot,'',''); + return undef; + } + &Language::SetLang($list->{'admin'}{'lang'}); #read the moderation queue and purge it diff --git a/sympa-6.1.25/src/lib/List.pm b/sympa-6.1.25/src/lib/List.pm index 0e30f9227238004748a72cdbebe5e9208b0bc4fb..b1b577e645f579842bd2ba2c86468bd79cba266f 100644 --- a/sympa-6.1.25/src/lib/List.pm +++ b/sympa-6.1.25/src/lib/List.pm @@ -7520,10 +7520,13 @@ sub add_user { unless ($dbh and $dbh->ping) { return undef unless &db_connect(); } - + + my %invalids = (); foreach my $new_user (@new_users) { my $who = &tools::clean_email($new_user->{'email'}); - unless ($who) { + my ($status, $reason) = &tools::valid_email($new_user->{'email'}); + unless ($who || !$status ) { + $invalids{$new_user->{'email'}} = $reason; Log::do_log('err', 'Ignoring %s which is not a valid email',$new_user->{'email'}); next; } @@ -7607,7 +7610,7 @@ sub add_user { $self->{'total'} += $total; $self->savestats(); - return $total; + return ($total, %invalids); } @@ -9855,8 +9858,9 @@ sub sync_include { $u->{'date'} = time; @add_tab = ($u); my $user_added = 0; - unless( $user_added = $self->add_user( @add_tab ) ) { - &do_log('err', 'List:sync_include(%s): Failed to add new users', $name); + my ($added, %invalids) = $self->add_user( @add_tab ); + unless( $added ) { + &do_log('err', 'List:sync_include(%s): Failed to add new users: %s', $name, $invalids{$email}); return undef; } if ($user_added) { diff --git a/sympa-6.1.25/src/lib/Message.pm b/sympa-6.1.25/src/lib/Message.pm index fcddac91ebc6cff87e2a70b54b4678ef6dd35f16..ac45e668a734c75a1893a5a5631d2ce8cd89b075 100644 --- a/sympa-6.1.25/src/lib/Message.pm +++ b/sympa-6.1.25/src/lib/Message.pm @@ -347,7 +347,8 @@ sub _get_envelope_sender { return '<>'; } else { my @addrs = Mail::Address->parse($addr); - if (@addrs and tools::valid_email($addrs[0]->address)) { + my ($status, $reason) = tools::valid_email($addrs[0]->address); + if (@addrs and $status) { return $addrs[0]->address; } } @@ -392,8 +393,9 @@ sub _get_sender_email { do_log('err', 'No valid sender address'); return undef; } - unless (tools::valid_email($sender)) { - do_log('err', 'Invalid sender address "%s"', $sender); + my ($status, $reason) = tools::valid_email($sender); + unless ($status) { + do_log('err', 'Invalid sender address "%s" %s', $sender, $reason); return undef; } diff --git a/sympa-6.1.25/src/lib/Upgrade.pm b/sympa-6.1.25/src/lib/Upgrade.pm index 394ad7a952a84a078c9bded6915f989822083d80..7a3b57f51cbab0e374215e306a60f7507175f5f5 100644 --- a/sympa-6.1.25/src/lib/Upgrade.pm +++ b/sympa-6.1.25/src/lib/Upgrade.pm @@ -616,9 +616,11 @@ sub upgrade { $list->{'total'} = 0; ## Add users to the DB - my $total = $list->add_user(@users); + my ($total, %invalids) = $list->add_user(@users); unless (defined $total) { - &do_log('err', 'Failed to add users'); + foreach my $addr (keys %invalids) { + &do_log('err', 'Failed to add user %s: %s', $addr, $invalids{$addr}); + } next; } diff --git a/sympa-6.1.25/src/lib/admin.pm b/sympa-6.1.25/src/lib/admin.pm index 20766fe3ea7b437f1edaadba543e5e9f6736f25a..af604c1c55ff791cce4ec923bf36fb714ef01967 100644 --- a/sympa-6.1.25/src/lib/admin.pm +++ b/sympa-6.1.25/src/lib/admin.pm @@ -817,16 +817,16 @@ sub rename_list{ } # set list status to pending if creation list is moderated - if ($r_action =~ /listmaster/) { - $list->{'admin'}{'status'} = 'pending' ; - &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, - {'list' => $list, - 'new_listname' => $param{'new_listname'}, - 'old_listname' => $old_listname, - 'email' => $param{'user_email'}, - 'mode' => $param{'mode'}}); - $param{'status'} = 'pending'; - } +# if ($r_action =~ /listmaster/) { +# $list->{'admin'}{'status'} = 'pending' ; +# &List::send_notify_to_listmaster('request_list_renaming',$list->{'domain'}, +# {'list' => $list, +# 'new_listname' => $param{'new_listname'}, +# 'old_listname' => $old_listname, +# 'email' => $param{'user_email'}, +# 'mode' => $param{'mode'}}); +# $param{'status'} = 'pending'; +# } ## Save config file for the new() later to reload it $list->save_config($param{'user_email'}); diff --git a/sympa-6.1.25/src/lib/confdef.pm b/sympa-6.1.25/src/lib/confdef.pm index 72070f528a415b58ca9c9fbe4bb43055cbe17700..7939c71e855ac69e9a17dc4551d20ca189f619f5 100644 --- a/sympa-6.1.25/src/lib/confdef.pm +++ b/sympa-6.1.25/src/lib/confdef.pm @@ -1401,6 +1401,14 @@ our @params = ( 'file' => 'sympa.conf', 'edit' => '1', }, + { + 'name' => 'password_validation', + 'query' => 'The password validation techniques to be used against user passwords that are added to mailing lists. Options come from Data::Password (http://search.cpan.org/~razinf/Data-Password-1.07/Password.pm#VARIABLES), ie password_validation MINLEN=8,GROUPS=3,DICTIONARY=4,DICTIONARIES=/pentest/dictionaries', + 'default' => undef, + 'edit' => '1', + 'file' => 'sympa.conf', + 'optional' => '1', + }, { 'title' => 'Web interface parameters' }, @@ -1549,13 +1557,30 @@ our @params = ( 'file' => 'sympa.conf', }, { - 'name' => 'password_validation', - 'query' => 'The password validation techniques to be used against user passwords that are added to mailing lists. Options come from Data::Password (http://search.cpan.org/~razinf/Data-Password-1.07/Password.pm#VARIABLES)', - 'sample' => 'MINLEN=8,GROUPS=3,DICTIONARY=4,DICTIONARIES=/pentest/dictionaries', - 'edit' => '1', - 'file' => 'sympa.conf', - 'optional' => '1', + 'name' => 'max_list_dispatch', + 'query' => 'The maximum list size that messages can be sent to, aka the maximum number of emails sent per list reciept from moderators', + 'default' => 1000000, + 'vhost' => '1', + 'edit' => '1', + 'file' => 'sympa.conf', + }, + { + 'name' => 'max_list_dispatch_from_subscriber', + 'query' => 'The maximum list size that messages can be sent to from list subscribers, aka the maximum number of emails sent per list reciept from list subscribers', + 'default' => 1000000, + 'vhost' => '1', + 'edit' => '1', + 'file' => 'sympa.conf', + 'optional'=> '1', }, + { + + 'name' => 'email_validation', + 'query' => 'The email validation techniques to be used against email addresses that are added to mailing lists. Options come from Email::Validate (http://search.cpan.org/~rjbs/Email-Valid-1.194/lib/Email/Valid.pm). Commenting this out turns off email validation.', + 'default' => 'tldcheck,fqdn,rfc822', + 'edit' => '1', + 'file' => 'sympa.conf', + }, ## Not implemented yet. ## { diff --git a/sympa-6.1.25/src/lib/tools.pm b/sympa-6.1.25/src/lib/tools.pm index ca895f367e70daccf48a5ff3cc44614d48a3a4aa..35b8287929a323c19cfb70b284c4494b26c4daed 100644 --- a/sympa-6.1.25/src/lib/tools.pm +++ b/sympa-6.1.25/src/lib/tools.pm @@ -2741,13 +2741,47 @@ sub valid_email { unless ($email =~ /^$regexp{'email'}$/) { do_log('err', "Invalid email address '%s'", $email); - return undef; + return (undef, gettext('Considered invalid by SYMPA')); } ## Forbidden characters if ($email =~ /[\|\$\*\?\!]/) { do_log('err', "Invalid email address '%s'", $email); - return undef; + return (undef, gettext('Contains invalid characters')); + } + + # If email_validation is set then apply additional email validation set + # by Email::Valid as per the configuration + if ($Conf::Conf{'email_validation'}) { + use Email::Valid; + my $technique_map = { + 'tldcheck' => '-tldcheck', + 'fqdn' => '-fqdn', + 'mxcheck' => '-mxcheck', + 'fudge' => '-fudge', + 'allow_ip' => '-allow_ip', + 'local_rules' => '-local_rules' + }; + + my $reason_map = { + 'tldcheck' => gettext('Invalid top level domain in address'), + 'fqdn' => gettext('Fully qualified domain does not exist in address'), + 'mxcheck' => gettext('Address domain does not have a valid MX record'), + 'local_rules' => gettext('Does not satisfy the restictions on aol.com addresses'), + 'localpart' => gettext('The local part of the email address is greater then 64 characters'), + 'rfc822' => gettext('Address does not comply with RFC822') + }; + + my @techniques = split(',', $Conf::Conf{'email_validation'}); + my @options; + foreach (@techniques) { + push @options, $technique_map->{$_}; + } + my $valid = new Email::Valid(@options); + if (!$valid->address($email)) { + do_log('err', "Invalid email address '%s' [%s]", $email, $valid->details()); + return (undef, $reason_map->{$valid->details()}); + } } return 1; @@ -4063,4 +4097,28 @@ sub password_validation { return Data::Password::IsBadPassword($password); } +sub password_validation { + my ($password) = @_; + my $pv = $Conf::Conf{'password_validation'}; + if ($pv && $password) { + use Data::Password qw(:all); + use Switch; + my @techniques = split(/,/, $pv); + foreach my $technique (@techniques) { + my ($key, $value) = $technique =~ /([^=]+)=(.*)/; + switch ($key) { + case 'DICTIONARY' { $DICTIONARY = $value; } + case 'FOLLOWING' { $FOLLOWING = $value; } + case 'GROUPS' { $GROUPS = $value; } + case 'MINLEN' { $MINLEN = $value; } + case 'MAXLEN' { $MAXLEN = $value; } + # TODO: How do we handle a list of dictionaries? + case 'DICTIONARIES' { push @DICTIONARIES, $value; } + } + } + return IsBadPassword($password); + } + return undef; +} + 1; diff --git a/sympa-6.1.25/src/sympa.pl.in b/sympa-6.1.25/src/sympa.pl.in index a4808ac6d9c36964bb08226fe6718a003f5a8ed1..a716b7b0069d71291db07775468384ac13a48b05 100644 --- a/sympa-6.1.25/src/sympa.pl.in +++ b/sympa-6.1.25/src/sympa.pl.in @@ -535,8 +535,11 @@ if ($main::options{'dump'}) { $u->{'email'} = $email; $u->{'gecos'} = $gecos; - unless ($list->add_user($u)) { - printf STDERR "\nCould not add %s\n", $email; + my ($num, %invalids) = $list->add_user($u); + unless ($num) { + foreach my $addr (keys %invalids) { + printf STDERR "\nCould not add %s: %s\n", $email, $invalids{$addr}; + } next; } print STDERR '+'; @@ -1984,9 +1987,27 @@ sub DoMessage{ my $auth_method = 'smtp'; $auth_method = 'dkim' if ($message->{'dkim_pass'}); $auth_method = 'smime' if ($is_signed->{'body'}) ; - $result = $list->check_list_authz('send',$auth_method,$context); $action = $result->{'action'} if (ref($result) eq 'HASH'); + + ## Defer messages if the list size is greater then the hard coded limit to + ## prevent mail servers sending huge amounts of mail + my $total = $list->get_total(); + if ( + # If there are not more users in the list then the limit for a subscriber + ($Conf{'max_list_dispatch_from_subscriber'} && + $total > $Conf{'max_list_dispatch_from_subscriber'}) && + + # Or if the sender is privileged and there are not more then the limit for privileged users + !($list->am_i('owner', $sender) || $list->am_i('editor', $sender) && + $Conf{'max_list_dispatch'} && + $total < $Conf{'max_list_dispatch'}) + ) { + + &do_log('info', 'sympa::DoMessage(): Message diverted to list owner because of constraints placed on list member size (%d) for %s from %s', $Conf{'max_list_dispatch_from_subscriber'}, $listname, $sender); + &Log::db_log({'robot' => $robot,'list' => $list->{'name'},'action' => 'DoMessage','parameters' => "$which,$messageid,$robot",'target_email' => '','msg_id' => $messageid,'status' => 'error','error_type' => 'max_list_dispatch','user_email' => $sender,'client' => $ip,'daemon' => $daemon_name}); + $action = 'editorkey'; + } unless (defined $action) { &do_log('err', 'sympa::DoMessage(): message (%s) ignored because unable to evaluate scenario "send" for list %s',$messageid,$listname); diff --git a/sympa-6.1.25/src/sympa_wizard.pl.in b/sympa-6.1.25/src/sympa_wizard.pl.in index 3ac1072c061c438e4a3286d35d45b8a389a14c5e..dba0e954a8f38e326e79358bd4c39d4e1bed3345 100644 --- a/sympa-6.1.25/src/sympa_wizard.pl.in +++ b/sympa-6.1.25/src/sympa_wizard.pl.in @@ -375,11 +375,6 @@ sub check_cpan { package_name => 'Crypt-OpenSSL-X509', usage => 'required to extract user certificates for SSL clients and S/MIME messages.', }, - 'Data::Password' => { - required_version =>'1.07', - package_name => 'Data-Password', - usage => 'Used for configureable hardening of passwords via the password_validation sympa.conf directive.', - }, 'DB_File' => { required_version =>'1.75', package_name => 'DB_File', @@ -436,6 +431,12 @@ sub check_cpan { mandatory => 1, usage => 'module for character encoding processing', }, + 'Email::Valid' => { + required_version =>'1.194', + package_name => 'Email-Valid', + mandatory => 1, + usage => 'used to compute validate email addresses', + }, 'FCGI' => { required_version => '0.67', package_name => 'FCGI', diff --git a/sympa-6.1.25/web_tt2/editsubscriber.tt2 b/sympa-6.1.25/web_tt2/editsubscriber.tt2 index c8d40b6c7bad7e8a2fbf9767e94604e15906edda..7cb90400d70e553838edeb2cb2b7f09de6e3cf0a 100644 --- a/sympa-6.1.25/web_tt2/editsubscriber.tt2 +++ b/sympa-6.1.25/web_tt2/editsubscriber.tt2 @@ -9,8 +9,6 @@ <input type="hidden" name="email" value="[% current_subscriber.escaped_email %]" /> <label for="new_email">[%|loc%]Email:[%END%] </label> <input type="text" name="new_email" id="new_email" value="[% current_subscriber.escaped_email %]" size="25" /><br /> -<label for="gecos">[%|loc%]Name:[%END%] </label> - <input type="text" name="gecos" id="gecos" value="[% current_subscriber.gecos %]" size="25" /><br /> [% IF current_subscriber.custom_attribute %] [% SET subscriber = current_subscriber ; PROCESS edit_attributes.tt2 ; diff --git a/sympa-6.1.25/web_tt2/error.tt2 b/sympa-6.1.25/web_tt2/error.tt2 index 06b9f18ef56b9d6d0de21b6f095853f0ad264a72..8fb297cecceaf8109f646d11f0295649b3fe438e 100644 --- a/sympa-6.1.25/web_tt2/error.tt2 +++ b/sympa-6.1.25/web_tt2/error.tt2 @@ -55,7 +55,7 @@ [% ELSIF u_err.msg == 'missing_arg' %][%|loc(u_err.argument)%]Missing argument %1[%END%] [% ELSIF u_err.msg == 'wrong_value' %][%|loc(u_err.argument)%]Wrong value for parameter %1[%END%] [% ELSIF u_err.msg == 'no_user' %][%|loc%]You need to login[%END%] - [% ELSIF u_err.msg == 'incorrect_email' %][%|loc(u_err.email)%]Address "%1" is incorrect[%END%] + [% ELSIF u_err.msg == 'incorrect_email' %][%|loc(u_err.email,u_err.reason)%]Address "%1" is incorrect: %2[%END%] [% ELSIF u_err.msg == 'incorrect_passwd' %][%|loc%]Provided password is incorrect[%END%] [% ELSIF u_err.msg == 'init_passwd' %][%|loc%]You did not choose a password, request a reminder of the initial password[%END%] [% ELSIF u_err.msg == 'ldap_user' %][%|loc%]Your password is stored in an LDAP directory, therefore Sympa cannot post you a reminder[%END%] @@ -80,6 +80,7 @@ [% ELSIF u_err.msg == 'listname_needed' %][%|loc%]You need to provide list name[%END%] [% ELSIF u_err.msg == 'already_moderated' %][%|loc%]Failed to moderate a message; it was probably moderated by another moderator[%END%] [% ELSIF u_err.msg == 'msg_topic_missing' %][%|loc%]Tagging message is required for this list[%END%] + [% ELSIF u_err.msg == 'max_list_dispatch' %][%|loc(u_err.list_size,u_err.max_list_dispatch)%]The number of subscribers for this list, '%1', is greater then the limit set by the list administrators, '%2'[%END%] [% ELSIF u_err.msg == 'empty_archives' %][%|loc%]Archives are empty for this list[%END%] [% ELSIF u_err.msg == 'didnt_change_anything' %][%|loc%]You did not select an action to perform[%END%] [% ELSIF u_err.msg == 'no_bounce_user' %][%|loc(u_err.email)%]No bounce for user %1[%END%] diff --git a/sympa-6.1.25/web_tt2/pref.tt2 b/sympa-6.1.25/web_tt2/pref.tt2 index 3ffc1c4af165f97fbfd43fa6b7b3497b9824efbe..f1b5bcf22cdcfa0c5c42b70fb83adb65e2ca199c 100644 --- a/sympa-6.1.25/web_tt2/pref.tt2 +++ b/sympa-6.1.25/web_tt2/pref.tt2 @@ -7,7 +7,6 @@ <form action="[% path_cgi %]" method="post"> <fieldset> <label>[%|loc%]Email:[%END%] </label>[% user.email %]<br /> - <label for="gecos">[%|loc%]Name:[%END%] </label><input type="text" id="gecos" name="gecos" size="30" value="[% user.gecos %]" /><br /> <label for="lang">[%|loc%]Language:[%END%] </label><select id="lang" name="lang" class="LanguageNeutral"> [% FOREACH l = languages %] <option lang="[%l.value.lang_tag%]" xml:lang="[%l.value.lang_tag%]" value="[% l.key %]" [% l.value.selected %]>[% l.value.complete %]</option> diff --git a/sympa-6.1.25/web_tt2/subscriber_table.tt2 b/sympa-6.1.25/web_tt2/subscriber_table.tt2 index 5f1a4b933cc8d350cd607f3f06b109cd74e7df71..db685e594412ac1020e60d7ba02e15a22d83e9a7 100644 --- a/sympa-6.1.25/web_tt2/subscriber_table.tt2 +++ b/sympa-6.1.25/web_tt2/subscriber_table.tt2 @@ -28,14 +28,6 @@ [%|loc%]Picture[%END%] </th> [% END %] - [% IF sortby == 'name' %] - <th class="sortby"> - [%|loc%]Name[%END%] - [% ELSE %] - <th> - <a href="[% path_cgi %]/review/[% list %]/1/[% size %]/name">[%|loc%]Name[%END%]</a> - [% END %] - </th> [% IF is_listmaster || is_owner || is_editor %] <th> [%|loc%]Reception[%END%] @@ -110,11 +102,6 @@ </td> [% END %] [% END %] - <td> - <span class="smaller"> - [% u.gecos %] - </span> - </td> [% IF is_listmaster || is_owner || is_editor %] <td> [%|optdesc('reception')%][% u.reception %][% END %] diff --git a/sympa-6.1.25/wwsympa/Auth.pm b/sympa-6.1.25/wwsympa/Auth.pm index 144ad29f5ec1720191912a9fcad59379479f9a0a..d57e912b7a70ab427147a7fce7f929880e0fd98f 100644 --- a/sympa-6.1.25/wwsympa/Auth.pm +++ b/sympa-6.1.25/wwsympa/Auth.pm @@ -54,7 +54,8 @@ sub password_fingerprint{ my ($canonic, $user); - if( &tools::valid_email($auth)) { + my ($status, $reason) = &tools::valid_email($auth); + if($status) { return &authentication($robot, $auth,$pwd); }else{ ## This is an UID @@ -283,7 +284,8 @@ sub ldap_authentication { &do_log('debug3',"canonic: $canonic_email[0]"); ## If the identifier provided was a valid email, return the provided email. ## Otherwise, return the canonical email guessed after the login. - if( &tools::valid_email($auth) && !$Conf::Conf{'robots'}{$robot}{'ldap_force_canonical_email'}) { + my ($status, $reason) = &tools::valid_email($auth); + if( $status && !$Conf::Conf{'robots'}{$robot}{'ldap_force_canonical_email'}) { return ($auth); }else{ return lc($canonic_email[0]); diff --git a/sympa-6.1.25/wwsympa/wwslib.pm b/sympa-6.1.25/wwsympa/wwslib.pm index 1d13a3d22dabf2c21d23e609e9e9b81b584b5adb..be8ba464b8fcd55262b25b8d391ba71d90662525 100644 --- a/sympa-6.1.25/wwsympa/wwslib.pm +++ b/sympa-6.1.25/wwsympa/wwslib.pm @@ -274,13 +274,6 @@ sub new_passwd { return 'init'.$passwd; } -## Basic check of an email address -sub valid_email { - my $email = shift; - - $email =~ /^([\w\-\_\.\/\+\=]+|\".*\")\@[\w\-]+(\.[\w\-]+)+$/; -} - sub init_passwd { my ($robot, $email, $data) = @_; diff --git a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in index 2cf35ceae85d59c85f4e0c96ed21975577eebed3..5296ae0379a5325bc1bd640253b336531cfbba5c 100644 --- a/sympa-6.1.25/wwsympa/wwsympa.fcgi.in +++ b/sympa-6.1.25/wwsympa/wwsympa.fcgi.in @@ -3605,7 +3605,8 @@ sub do_sso_login_succeeded { my @alternative_conf = split(/,/,$ldap->{'alternative_email_attribute'}); my $attrs = $ldap->{'email_attribute'}; - if (&tools::valid_email($auth)){ + my ($status, $reason) = &tools::valid_email($auth); + if ($status){ $filter = $ldap->{'get_dn_by_email_filter'}; }else{ $filter = $ldap->{'get_dn_by_uid_filter'}; @@ -3775,9 +3776,10 @@ sub sendssopasswd { return 'requestemail'; } - unless (&tools::valid_email($email)) { - &report::reject_report_web('user','incorrect_email',{'email' => $email},$param->{'action'}); - &wwslog('info','do_sendssopasswd: incorrect email %s', $email); + my ($status, $reason) = &tools::valid_email($email); + unless ($status) { + &report::reject_report_web('user','incorrect_email',{'email' => $email, 'reason' => $reason},$param->{'action'}); + &wwslog('info','do_sendssopasswd: incorrect email %s: %s', $email, $reason); &web_db_log({'parameters' => $email, 'target_email' => $email, 'status' => 'error', @@ -3841,11 +3843,12 @@ sub do_renewpasswd { my $url_redirect; if($in{'email'}){ + my ($status, $reason) = &tools::valid_email($in{'email'}); if($url_redirect = &is_ldap_user($in{'email'})){ $param->{'redirect_to'} = $url_redirect if ($url_redirect && ($url_redirect != 1)); - }elsif (! &tools::valid_email($in{'email'})) { - &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}},$param->{'action'}); + }elsif (! $status) { + &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}, 'reason' => $reason},$param->{'action'}); &wwslog('info','do_renewpasswd: incorrect email \"%s\"', $in{'email'}); &web_db_log({'parameters' => $in{'email'}, 'target_email' => $in{'email'}, @@ -4070,6 +4073,9 @@ sub do_renewpasswd { ## The list of latest created lists sub do_latest_lists { &wwslog('info', "do_latest_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); + # should try to actually fix this one day + return 0; + unless (&do_lists()) { &wwslog('err','do_latest_lists: error while calling do_lists'); @@ -4130,6 +4136,8 @@ sub do_renewpasswd { ## The list of the most active lists sub do_active_lists { &wwslog('info', "do_active_lists($in{'for'}, $in{'count'},$in{'topic'}, $in{'subtopic'})"); + # should try to actually fix this one day + return 0; unless (&do_lists()) { &wwslog('err','do_active_lists: error while calling do_lists'); @@ -4650,9 +4658,10 @@ sub do_pref { if ($in{'new_email'} && ($in{'email'} ne $in{'new_email'})) { - unless ($in{'new_email'} && &tools::valid_email($in{'new_email'})) { - &wwslog('notice', "do_set:incorrect email %s",$in{'new_email'}); - &report::reject_report_web('user','incorrect_email',{'email' => $in{'new_email'}},$param->{'action'}); + my ($status, $reason) = &tools::valid_email($in{'new_email'}); + unless ($in{'new_email'} && $status) { + &wwslog('notice', "do_set:incorrect email %s: %s",$in{'new_email'}, $reason); + &report::reject_report_web('user','incorrect_email',{'email' => $in{'new_email'}, 'reason' => $reason},$param->{'action'}); &web_db_log({'parameters' => "$in{'reception'},$in{'visibility'}", 'status' => 'error', 'error_type' => 'incorrect_email'}); @@ -4714,11 +4723,7 @@ sub do_pref { } } - if ($in{'gecos'}) { - $update->{'gecos'} = $in{'gecos'}; - }else{ - $update->{'gecos'} = undef; - } + $update->{'gecos'} = undef; $update->{'custom_attribute'} = $xml_custom_attribute if $xml_custom_attribute; unless ( $list->update_user($email, $update) ) { @@ -4785,7 +4790,7 @@ sub check_custom_attribute { &wwslog('info', 'do_setpref'); my $changes = {}; - foreach my $p ('gecos','lang','cookie_delay') { + foreach my $p ('lang','cookie_delay') { $changes->{$p} = $in{$p} if (defined($in{$p})); } @@ -4799,7 +4804,7 @@ sub check_custom_attribute { unless (&List::update_user_db($param->{'user'}{'email'}, $changes)) { &report::reject_report_web('intern','update_user_db_failed',{'user'=>$param->{'user'}{'email'}},$param->{'action'},'',$param->{'user'}{'email'},$robot); &wwslog('info','do_pref: update failed'); - &web_db_log({'parameters' => "$in{'gecos'},$in{'lang'},$in{'cookie_delay'}", + &web_db_log({'parameters' => "$in{'lang'},$in{'cookie_delay'}", 'status' => 'error', 'error_type' => 'internal'}); return undef; @@ -4809,19 +4814,19 @@ sub check_custom_attribute { unless (&List::add_user_db($changes)) { &report::reject_report_web('intern','add_user_db_failed',{'user'=>$param->{'user'}{'email'}},$param->{'action'},'',$param->{'user'}{'email'},$robot); &wwslog('info','do_pref: add failed'); - &web_db_log({'parameters' => "$in{'gecos'},$in{'lang'},$in{'cookie_delay'}", + &web_db_log({'parameters' => "$in{'lang'},$in{'cookie_delay'}", 'status' => 'error', 'error_type' => 'internal'}); return undef; } } - foreach my $p ('gecos','lang','cookie_delay') { + foreach my $p ('lang','cookie_delay') { $param->{'user'}{$p} = $in{$p}; } &report::notice_report_web('performed',{},$param->{'action'}); - &web_db_log({'parameters' => "$in{'gecos'},$in{'lang'},$in{'cookie_delay'}", + &web_db_log({'parameters' => "$in{'lang'},$in{'cookie_delay'}", 'status' => 'success', }); if ($in{'previous_action'}) { @@ -4956,20 +4961,12 @@ sub do_subscribe { $u->{'gecos'} = $param->{'user'}{'gecos'} || $in{'gecos'}; $u->{'date'} = $u->{'update_date'} = time; $u->{'password'} = $param->{'user'}{'password'}; - if (my $reason = &tools::password_validation($u->{'password'})) { - &report::reject_report_web('user','passwd_validation',{'reason' => $reason},$param->{'action'}); - &wwslog('info','do_setpasswd: password validation'); - &web_db_log({ - 'status' => 'error', - 'error_type' => 'bad_parameter' - }); - return undef; - } $u->{'custom_attribute'} = $xml_custom_attribute if (defined $xml_custom_attribute); $u->{'lang'} = $param->{'user'}{'lang'} || $param->{'lang'}; - unless ($list->add_user($u)) { - &report::reject_report_web('intern','add_subscriber_db_failed',{'sub'=>$param->{'user'}{'email'}},$param->{'action'},$list,$param->{'user'}{'email'},$robot); + my ($ct, %invalids) = $list->add_user($u); + unless ($ct) { + &report::reject_report_web('intern','add_subscriber_db_failed',{'sub'=>$param->{'user'}{'email'}, 'reason' => $invalids{$u->{'email'}}},$param->{'action'},$list,$param->{'user'}{'email'},$robot); &wwslog('info', 'do_subscribe: subscribe failed'); &web_db_log({'parameters' => $in{'email'}, 'status' => 'error', @@ -5143,9 +5140,10 @@ sub do_subrequest { return 1; } ## valid email address? - unless (&tools::valid_email($in{'email'})) { - &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}},$param->{'action'},$list); - &wwslog('info','do_subrequest: incorrect email %s', $in{'email'}); + my ($result, $reason) = &tools::valid_email($in{'email'}); + unless ($result) { + &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}, 'reason' => $reason},$param->{'action'},$list); + &wwslog('info','do_subrequest: incorrect email %s: %s', $in{'email'}, $reason); &web_db_log({'target_email' => $in{'email'}, 'status' => 'error', 'error_type' => 'incorrect_email'}); @@ -5449,9 +5447,10 @@ sub unsubscribe { return 1; } ## valid email address? - unless (&tools::valid_email($in{'email'})) { - &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}},$param->{'action'},$list); - &wwslog('info','do_sigrequest: incorrect email %s', $in{'email'}); + my ($result, $reason) = &tools::valid_email($in{'email'}); + unless ($result) { + &report::reject_report_web('user','incorrect_email',{'email' => $in{'email'}, 'reason' => $reason},$param->{'action'},$list); + &wwslog('info','do_sigrequest: incorrect email %s: %s', $in{'email'}, $reason); &web_db_log({'target_email' => $in{'email'}, 'status' => 'error', 'error_type' => 'incorrect_email'}); @@ -5503,7 +5502,7 @@ sub unsubscribe { if (my $reason = &tools::password_validation($in{'newpasswd1'})) { &report::reject_report_web('user','passwd_validation',{'reason' => $reason},$param->{'action'}); - &wwslog('info','do_setpasswd: password validation'); + &wwslog('info','password validation error: '. $reason); &web_db_log({'status' => 'error', 'error_type' => 'bad_parameter'}); return undef; @@ -6354,7 +6353,7 @@ sub do_skinsedit { return undef; } - my ($total, @new_users, @added_users ); + my ($total, @new_users, @added_users, %invalids ); my $comma_emails ; foreach my $email (keys %user) { &wwslog('debug', "do_add subscription \$subscriptions->{$email}{custom_attribute} = $subscriptions->{$email}{'custom_attribute'})" ); @@ -6384,8 +6383,9 @@ sub do_skinsedit { next; } - unless (&tools::valid_email($email)) { - &report::reject_report_web('user','incorrect_email',{'email' => $email},$param->{'action'},$list); + my ($status, $reason) = &tools::valid_email($email); + unless ($status) { + &report::reject_report_web('user','incorrect_email',{'email' => $email, 'reason' => $reason},$param->{'action'},$list); &wwslog('info','do_add: incorrect email %s', $email); &web_db_log({'target_email' => $in{'email'}||$in{'pending_email'}, 'status' => 'error', @@ -6412,14 +6412,6 @@ sub do_skinsedit { $u->{'gecos'} = $user{$email} || $u2->{'gecos'}; $u->{'date'} = $u->{'update_date'} = time; $u->{'password'} = $u2->{'password'} || &tools::tmp_passwd($email) ; - if (my $reason = &tools::password_validation($u->{'password'})) { - &report::reject_report_web('user','passwd_validation',{'reason' => $reason},$param->{'action'}); - &wwslog('info','do_setpasswd: password validation'); - &web_db_log({'status' => 'error', - 'error_type' => 'bad_parameter'}); - return undef; - } - $u->{'lang'} = $u2->{'lang'} || $list->{'admin'}{'lang'}; if ($comma_emails) { $comma_emails = $comma_emails .','. $email; @@ -6438,13 +6430,15 @@ sub do_skinsedit { } } - $total = $list->add_user(@new_users); + ($total, %invalids) = $list->add_user(@new_users); unless( defined $total) { - &report::reject_report_web('intern','add_subscriber_db_failed',{},$param->{'action'},$list,$param->{'user'}{'email'},$robot); - &wwslog('info','do_add: failed adding'); - &web_db_log({'target_email' => $in{'email'}||$in{'pending_email'}, - 'status' => 'error', - 'error_type' => 'internal'}); + foreach my $addr (keys %invalids) { + &report::reject_report_web('intern','add_subscriber_db_failed',{'reason'=>$invalids{$addr}},$param->{'action'},$list,$param->{'user'}{'email'},$robot); + &wwslog('info','do_add: failed adding'); + &web_db_log({'target_email' => $in{'email'}||$in{'pending_email'}, + 'status' => 'error', + 'error_type' => 'internal'}); + } return undef; } @@ -7060,6 +7054,17 @@ sub do_skinsedit { return undef; } + # If the moderator is attempting to dispatch a message but the list + # excceeds the limit set by the robot admin then do not dispatch and + # send the moderator a helpful message + if ($Conf{'max_list_dispatch'} && ($Conf{'max_list_dispatch'} < $list->get_total())) { + &report::reject_report_web('user', 'max_list_dispatch', {'list_size' => $list->get_total(), 'max_list_dispatch' => $Conf{'max_list_dispatch'}}, $param->{'action'}); + &wwslog('info','do_distribute: number of subscribers greater then robot limit'); + &web_db_log({'parameters' => $in{'id'}, + 'status' => 'error', + 'error_type' => 'no_topic'}); + return undef; + } ## messages foreach my $id (split (/,/, $in{'id'})) { # QUIET DISTRIBUTE @@ -8235,8 +8240,12 @@ sub do_remove_arc { ## Checking families and other virtual hosts. &get_server_details(); - my $all_lists = &List::get_lists($robot, - { 'filter_query' => [ 'status' => 'pending' ] }); +# my $all_lists = &List::get_lists($robot, +# { 'filter_query' => [ 'status' => 'pending' ] }); + my $statement = "status_list = 'pending'"; + my @lists = &List::get_lists_db($statement); + my $all_lists = &List::get_lists($robot, undef, @lists); + foreach my $list ( @$all_lists ) { $param->{'pending'}{$list->{'name'}}{'subject'} = $list->{'admin'}{'subject'}; $param->{'pending'}{$list->{'name'}}{'by'} = $list->{'admin'}{'creation'}{'email'}; @@ -9601,6 +9610,26 @@ sub do_edit_list { } } + ## Checking that list owner address is not set to one of the special + ## addresses: + if (exists $changed{'owner'}) { + my $list = $param->{'list'}; + my @special = ("$list-owner\@$robot", + "$list-editor\@$robot", "$list-admin\@$robot", + "$list-admin\@$robot", "$list-request\@$robot", + "$list-bounce\@$robot", "$list-subscribe\@$robot", + "$list-unsubscribe\@$robot"); + foreach my $owner (@{$new_admin->{'owner'}}) { + if (grep (/^$owner->{'email'}$/, @special)) { + ## generate an error and return + &report::reject_report_web('user','incorrect_email',{'email'=>$owner->{'email'}},$param->{'action'},$list); + &wwslog('info','do_edit_list: Reserved email address %s', $owner->{'email'}); + &web_db_log({'status' => 'error', 'error_type' => 'incorrect_email'}, 'parameters' => $owner->{'email'}); + return undef; + } + } + } + ## Delete selected params foreach my $p (keys %delete) { @@ -10508,7 +10537,10 @@ sub _restrict_values { sub do_copy_list { &wwslog('info', 'do_copy_list(%s,%s)', $in{'new_listname'}, $in{'new_robot'}); - &do_rename_list('copy'); + # mysteriously reject copy list requests - this needs a real solution + &report::reject_report_web('intern','Unable_to_copy_list', {'new_listname' => $in{'new_listname'}}, + $param->{'action'},$list,$param->{'user'}{'email'},$robot); + return undef; } # in order to rename a list you must be list owner and you must be allowed to create new list @@ -10532,6 +10564,7 @@ sub do_rename_list { remote_addr => $param->{'remote_addr'}, aliases => $param->{'aliases'}, status => $param->{'status'}, + skip_authz => 1, ); if ($result eq 'incorrect_listname') { @@ -10592,9 +10625,9 @@ sub do_rename_list { } # set list status to pending if creation list is moderated - if ($param->{'status'} eq 'pending') { - &report::notice_report_web('pending_list',{},$param->{'action'},$list); - } +# if ($param->{'status'} eq 'pending') { +# &report::notice_report_web('pending_list',{},$param->{'action'},$list); +# } if ($in{'new_robot'} eq '$robot') { $param->{'redirect_to'} = "$param->{'base_url'}$param->{'path_cgi'}/admin/$in{'new_listname'}"; @@ -14807,8 +14840,9 @@ sub d_test_existing_and_rights { } # the email must look like an email "somebody@somewhere" - unless (&tools::valid_email($in{'content'})) { - &report::reject_report_web('user','incorrect_email',{'email' => $in{'content'}},$param->{'action'},$list); + my ($result, $reason) = &tools::valid_email($in{'content'}); + unless ($result) { + &report::reject_report_web('user','incorrect_email',{'email' => $in{'content'}, 'reason' => $reason},$param->{'action'},$list); &wwslog('info',"d_set_owner : $in{'content'} : incorrect email"); &web_db_log({'robot' => $robot,'list' => $list->{'name'},'action' => $param->{'action'},'parameters' => "$in{'name_doc'}",'target_email' => "",'msg_id' => '','status' => 'error','error_type' => 'incorrect_email','user_email' => $param->{'user'}{'email'},'client' => $ip,'daemon' => $daemon_name}); return undef;