From 305f8f61e9243a4ef2bc4d92be54a49c395b5bc4 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:35:43 +0100 Subject: [PATCH 1/7] Update documentation from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 33 ++++++++++++++++++++++++++++++--- README | 8 +++----- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 2d0d6d2..e26eb94 100644 --- a/CHANGES +++ b/CHANGES @@ -1,21 +1,48 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.09, released 07.10.2007) +UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) ========================================================================= TODO: - aussortieren von Bounces aus Stimmenliste -- Unterstuetzung von Maildir - [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff oder wdiff zwischen Sollwahlschein und wirklich eingreichtem Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt). +Version 4.11 (25.09.2012): +- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. + Es kam zu vielen False Positives +- Einlesen der Mailbox auf Perlmodule Mail::Box umgestellt, damit + auch Maildir moeglich (neue Option "mailboxtype" in usevote.cfg). + Archivierung erfolgt aber vorerst weiterhin immer als mbox + +Version 4.10 (17.09.2012): +- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren + Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien + geprueft) +- Typo in bdsgtext.cfg behoben +- doppelten Identifier "VOTE_NO_VOTES" in messages.cfg/uvvote.pl umbenannt +- templates/ack-mail: Votetaker (Unterschrift) linksbuendig statt + wie vorher rechtsbuendig einfuegen; Anleitung fuer Annullierungen + verbessert; Hinweis darauf, dass Stimmaenderungen an den + Voteaccount geschickt werden muessen und nicht einfach als Antwort + auf die Ack-Mail geschickt werden koennen) +- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem + oder letztem Abstimmungspunkt ausgewertet) +- Abstimmungsname wird nun auf Korrektheit geprueft (Wahlschein gehört + zur richtigen Abstimmung) +- neue Konfigurations-Option "ballotintro" und neues Template + tpl_wrong_voting +- usenet@ und news@ werden nicht mehr als ungueltige Mailadressen + angesehen. Vor allem usenet@ wird von vielen Waehlern verwendet. +- Aenderung der Wahlregeln: statt 60 nur noch 50 JA-Stimmen benoetigt +- kleinere Template-Aenderungen (verbesserte Texte/Formatierungen) Version 4.09 (14.09.2007): - "votefile"-Option in usevote.cfg an passendere Stelle verschoben und den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht etwa wie vorher angegeben smtp=0) -- Fehler in Template für Ergebnisausgabe korrigiert (fehlendes Newline +- Fehler in Template fuer Ergebnisausgabe korrigiert (fehlendes Newline nach umgebrochenen Abstimmungspunkten) - Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben (--voters statt --votes) diff --git a/README b/README index e2a7e66..3746e04 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.09 (c) 2001-2007 Marc Langer +UseVoteGer 4.11 (c) 2001-2012 Marc Langer UseVoteGer is a voting software for usenet votes. @@ -18,7 +18,7 @@ written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented! ------------------------------------------------------------------------------- -UseVoteGer 4.09 - Usenet-Abstimmungssoftware +UseVoteGer 4.11 - Usenet-Abstimmungssoftware =========================================== von Marc Langer @@ -89,9 +89,6 @@ I. Einmalig bei der Usevote-Erstinstallation sehr einfach mit "perl -MCPAN -e shell", ActivePerl fuer Windows hat einen eigenen Paketmanager) - Achtung: Bei meinem ActivePerl 5.6.1 war eine alte Libnet-Version - enthalten, die noch keine SMTP-Authentication unterstuetzte. - Bei Benutzung dieses Features muss evtl. erst upgedated werden. II. Fuer jedes Voting (1) usevote.cfg auf das durchzufuehrende Voting anpassen @@ -961,6 +958,7 @@ votename Name der Abstimmung group1 Erster Abstimmungsgegenstand group2 Zweiter (und so weiter durchnummerieren) votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet) +mailboxtype Typ der Mailbox (mbox, maildir) personal Personalisierte Wahlscheine verwenden? [BOOL] (siehe gesonderten Abschnitt weiter oben) voteaccount Mailadresse, unter der abgestimmt werden kann From 638b24050f3dfdfc4f8093eff9ae46623b660993 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:37:08 +0100 Subject: [PATCH 2/7] Drop commonly used accounts from mailpatterns. "news" as well as "usenet" are not only used as role accounts, but also for normal use. Picked from upstream. Signed-off-by: Thomas Hochstein --- mailpatterns.cfg | 2 -- 1 file changed, 2 deletions(-) diff --git a/mailpatterns.cfg b/mailpatterns.cfg index 0fbbd31..3add0f8 100644 --- a/mailpatterns.cfg +++ b/mailpatterns.cfg @@ -25,7 +25,6 @@ hostmaster@ install@ mailer.*@ maint.*@ -news@ newsmaster@ nobody@ operator@ @@ -38,5 +37,4 @@ sysop@ system@ test@ tutor@ -usenet@ uucp@ From 0618b624e9c3e761ea41a0856d1476713942f2f0 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:38:54 +0100 Subject: [PATCH 3/7] Update version number and copyright. Picked from upstream. Signed-off-by: Thomas Hochstein --- UVconfig.pm | 3 ++- uvballot.pl | 4 ++-- uvbounce.pl | 4 ++-- uvcfv.pl | 4 ++-- uvcount.pl | 4 ++-- uvvote.pl | 4 ++-- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/UVconfig.pm b/UVconfig.pm index c93f135..a12aa56 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.09"; +$usevote_version = "UseVoteGer 4.11"; sub read_config { @@ -45,6 +45,7 @@ sub read_config { voteaccount => "<> (unkonfiguriertes Usevote)", mailfrom => "<> (unkonfiguriertes Usevote)", envelopefrom => "<>", + mailboxtype => "mbox", mailstart => "^From ", archivedir => "fertig", tmpdir => "tmp", diff --git a/uvballot.pl b/uvballot.pl index 4085a7f..6933233 100755 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Wahlscheingenerierung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.11 Wahlscheingenerierung +# (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or # modify it under the terms of the GNU Public License as published by the diff --git a/uvbounce.pl b/uvbounce.pl index 1bf5139..03f1e1d 100755 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Bounce-Verarbeitung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.11 Bounce-Verarbeitung +# (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or # modify it under the terms of the GNU Public License as published by the diff --git a/uvcfv.pl b/uvcfv.pl index 6179915..a053e77 100755 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Personalisierte Wahlscheine -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.11 Personalisierte Wahlscheine +# (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or # modify it under the terms of the GNU Public License as published by the diff --git a/uvcount.pl b/uvcount.pl index 014494e..11af9c1 100755 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Stimmauswertung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.11 Stimmauswertung +# (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or # modify it under the terms of the GNU Public License as published by the diff --git a/uvvote.pl b/uvvote.pl index 2af270e..99988c0 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Wahldurchfuehrung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.11 Wahldurchfuehrung +# (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or # modify it under the terms of the GNU Public License as published by the From 34809a2a81332b011af9f6055a8e3b846053d491 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:41:54 +0100 Subject: [PATCH 4/7] Add option to read from Maildir. Parse a mailbox by virtue of Mail::Box and add "mailboxtype" to usevote.cfg. Picked from upstream. Signed-off-by: Thomas Hochstein --- UVreadmail.pm | 64 ++++++++++++++++++++++++++++++++------------------- usevote.cfg | 2 ++ uvvote.pl | 10 -------- 3 files changed, 42 insertions(+), 34 deletions(-) diff --git a/UVreadmail.pm b/UVreadmail.pm index e1e599c..01d062f 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -9,6 +9,7 @@ use UVmessage; use MIME::QuotedPrint; use MIME::Base64; use MIME::Parser; +use Mail::Box::Manager; use POSIX qw(strftime); use vars qw($VERSION); @@ -118,37 +119,52 @@ sub process { close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n"; } - # make archive of all mails - my $fileproblem = 0; - open (VOTES, ">$filename") or $fileproblem = 1; - if ($fileproblem) { - print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM", - (FILE => $filename)) . "\n"; - } else { - print VOTES join ("\n", @mails); - close (VOTES) - or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE", - (FILE => $filename)) . "\n"; - } - $pop->quit(); + # Mailbox / Maildir } else { - # open mail file - open(VOTES, "<$filename") - or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n"; - # read all mails - my $i = 0; - while () { - if (/$config{mailstart}/) { - $i++; + my $mgr = Mail::Box::Manager->new; + my $folder; + + eval{ + $folder = $mgr->open( folder => $config{votefile}, + create => 0, + access => 'rw', + type => $config{mailboxtype}, + expand => 'LAZY', + ); + }; + die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $config{votefile})) . "\n\n" if $@; + + # Iterate over the messages. + foreach (@$folder) { + my $mail = $_->string; + $_->delete(); + my $fromline = 'From '; + if ($mail =~ /From: .*?<(.+?)>/) { + $fromline .= $1; + } elsif ($mail =~ /From:\s+?(\S+?\@\S+?)\s/) { + $fromline .= $1; + } else { + $fromline .= 'foo@bar.invalid'; } - $mails[$i] = ($mails[$i] || "") . $_; + $fromline .= ' ' . localtime() . "\n"; #strftime ('%a %b %d %H:%M:%S %Y', localtime) . "\n"; + push (@mails, $fromline . $mail); } + } - # close mail file - close(VOTES); + # make archive of all mails + my $fileproblem = 0; + open (VOTES, ">$filename") or $fileproblem = 1; + if ($fileproblem) { + print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM", + (FILE => $filename)) . "\n"; + } else { + print VOTES join ("\n", @mails); + close (VOTES) + or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE", + (FILE => $filename)) . "\n"; } foreach my $mail (@mails) { diff --git a/usevote.cfg b/usevote.cfg index aee1fc1..c472b45 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -90,6 +90,8 @@ pop3 = 1 # Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0) votefile = votes +# Typ der Mailbox (mbox, maildir) +mailboxtype = mbox # POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine: # Server, Port, Benutzername, Passwort pop3server = 127.0.0.1 diff --git a/uvvote.pl b/uvvote.pl index 99988c0..5cff375 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -135,16 +135,6 @@ if ($clean) { my $thisresult = "ergebnis-" . $ext; my $thisvotes = "stimmen-" . $ext; - # POP3 not activated: rename votes file - unless ($config{pop3}) { - print UVmessage::get("VOTE_RENAMING_MAILBOX"), "\n"; - rename ($config{votefile}, "$config{tmpdir}/$thisvotes") - or die UVmessage::get("ERR_RENAME_MAILFILE") . "$!\n\n"; - - # wait, so that current mail deliveries can finalize - sleep 2; - } - # open results file open (RESULT, ">>$config{tmpdir}/$thisresult") or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n"; From e670e40bb0f2864e7ac72b348a44e66e9fcab095 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:44:29 +0100 Subject: [PATCH 5/7] Fix problem with recognition of ANNULLIERUNG. Vote nullification is now recognized for every topic. Change template accordingly. Picked from upstream. Signed-off-by: Thomas Hochstein --- templates/ack-mail | 3 --- uvvote.pl | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/templates/ack-mail b/templates/ack-mail index 9b76f7f..26703b1 100644 --- a/templates/ack-mail +++ b/templates/ack-mail @@ -26,9 +26,6 @@ Diese Wahl ist oeffentlich, und die Adressen aller Waehlerinnen und Waehler werden am Ende bekanntgegeben. Wenn du deine Adresse & Stimme loeschen willst, kannst du erneut abstimmen und dabei 'ANNULLIERUNG' anstelle von 'JA' oder 'NEIN' angeben. \[Doppel-N, Doppel-L :-)\] -Bei mehreren Abstimmungspunkten muss 'ANNULLIERUNG' bereits beim -Abstimmungspunkt #1 angegeben werden, damit der erhoffte Erfolg -eintritt. ;) [?personal|Da diese Abstimmung mit personalisierten Wahlscheinen durchgefuehrt wird, sind auch saemtliche Aenderungen nur mit Angabe der folgenden diff --git a/uvvote.pl b/uvvote.pl index 5cff375..c0c3712 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -273,7 +273,7 @@ sub process_vote { # this matches on a single appearance: if ($$body =~ /#$votenum\W*?\[(.+)\]/) { # one or more vote strings were found - $onevote = 1; + $onevote ||= 1; # set $onevote to 1 if it was 0 my $votestring = $1; if ($votestring =~ /^\W*$config{ja_stimme}\W*$/i) { $vote = "J"; From 7a54626ef82c0d0e456160930b22303f63322651 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:47:01 +0100 Subject: [PATCH 6/7] Fix handling of template files like upstream. In ccfa1226518d95ed308974f6739b0f7233557327 we replaced TMP by DIR to harmonize its usage. Upstream went the other way round and changed DIR to TMP. We switch now to be compatible to upstream. Picked from upstream. Signed-off-by: Thomas Hochstein --- uvvote.pl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uvvote.pl b/uvvote.pl index c0c3712..8e8fb68 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -122,9 +122,9 @@ if ($clean) { # normally unixtime is sufficient, if it is not unique append our PID my $ext = time; - opendir (DIR, $config{tmpdir}); - my @tmpfiles = readdir (DIR); - closedir (DIR); + opendir (TMP, $config{tmpdir}); + my @tmpfiles = readdir (TMP); + closedir (TMP); opendir (FERTIG, $config{archivedir}); my @fertigfiles = readdir (FERTIG); closedir (FERTIG); From 075e6efe35c3b77e0d4d2d6a868a12f99f075270 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 15 Feb 2014 17:47:44 +0100 Subject: [PATCH 7/7] Adapt some templates to upstream version. Signed-off-by: Thomas Hochstein --- templates/ack-mail | 2 +- templates/wrong-voting | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/ack-mail b/templates/ack-mail index 26703b1..4d69cef 100644 --- a/templates/ack-mail +++ b/templates/ack-mail @@ -36,7 +36,7 @@ Wahlscheinkennung gueltig! [$name-line] (Real-Namen sind fuer diese Abstimmung vorgeschrieben. Wenn hier nicht Dein wirklicher Name steht, dann korrigiere die Zeile - bitte und sende die Nachricht erneut an die Abstimmadresse; + bitte und sende die Nachricht erneut an die Abstimmadresse, sonst kann die Stimme spaeter als ungueltig gewertet werden.) diff --git a/templates/wrong-voting b/templates/wrong-voting index 1d12e31..f233b7d 100644 --- a/templates/wrong-voting +++ b/templates/wrong-voting @@ -18,4 +18,4 @@ Hier die Mail, die ich erhalten habe: [$votetaker] -\[mit [$usevote_version]\] \ No newline at end of file +\[mit [$usevote_version]\]