From dc651b428363dfeea82fd030905711b8d96ea9b4 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:53 +0100 Subject: [PATCH 1/7] Documentation: Add votename to UVmenu. Those new options to check the votename had not been added to the README file. Also fix a typo. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 2 +- README | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index e26eb94..cde0093 100644 --- a/CHANGES +++ b/CHANGES @@ -12,7 +12,7 @@ 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 +- Einlesen der Mailbox auf Perlmodul Mail::Box umgestellt, damit auch Maildir moeglich (neue Option "mailboxtype" in usevote.cfg). Archivierung erfolgt aber vorerst weiterhin immer als mbox diff --git a/README b/README index 3746e04..c586961 100644 --- a/README +++ b/README @@ -412,6 +412,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften: (4) Stimmen (5) Scheinkennung (6) Datenschutzklausel +(7) Abstimmung (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen) (w) Weiter @@ -427,7 +428,7 @@ Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen. -Mit den Optionen (2) bis (6) kannst Du einzelne Eigenschaften +Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder eine Stimme nicht korrekt erkannt hat) oder auch einfach die Korrektheit bestaetigen. From 7a0133efe6aee88665360c5d6ae57f1d2d543884 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:33:47 +0100 Subject: [PATCH 2/7] Add option to compare ballot to sample ballot. It may be desriable to compare a ballot to a sample ballot when checking votes. * Add options "diff" and "sampleballotfile" to usevote.cfg an UVconfig.pm * Add menu option to UVmenu.pm Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 13 ++++++++----- README | 10 ++++++++++ UVconfig.pm | 2 ++ UVmenu.pm | 15 ++++++++++++++- messages.cfg | 1 + usevote.cfg | 7 +++++++ 6 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index cde0093..064e2aa 100644 --- a/CHANGES +++ b/CHANGES @@ -3,11 +3,14 @@ UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) TODO: - aussortieren von Bounces aus Stimmenliste -- [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.12 (19.01.2014): +- neue Config-Optionen "diff" und "sampleballotfile" +- im Fehlermenue bei der Wahlscheinverarbeitung ist es nun moeglich, + mit der Option "0" einen Dateivergleich (diff) zwischen dem gemailten + Wahlschein und einem Musterwahlschein (wie im CfV geposted) zu starten. + Dazu muss die Config-Option "sampleballotfile" gesetzt und die Datei + vorhanden sein (Standard-Dateiname: ballot.sample) Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. diff --git a/README b/README index c586961..aa26972 100644 --- a/README +++ b/README @@ -324,6 +324,7 @@ ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur usevote.cfg, darin können alle anderen Pfade angepasst werden): +ballot.sample bdsgtext.cfg mailpatterns.cfg messages.cfg @@ -404,6 +405,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt. Meistens gibt es folgende Moeglichkeiten, die durch die eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen: +(0) Wahlschein mit Original vergleichen (diff) (1) Anzeigen der Wahlmail Bestaetigen oder Aendern von Wahlschein-Eigenschaften: @@ -427,6 +429,9 @@ Teilweise gibt es Unteroptionen: Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen. +Mit (0) kannst Du einen Dateivergleich zu einem vorher hinterlegten +Musterwahlschein ausführen ("diff"), um Aenderungen/Fehler schneller +zu sehen. Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder @@ -958,6 +963,7 @@ Hier eine Auflistung der immer anzupassenden Optionen votename Name der Abstimmung group1 Erster Abstimmungsgegenstand group2 Zweiter (und so weiter durchnummerieren) +sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff) votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet) mailboxtype Typ der Mailbox (mbox, maildir) personal Personalisierte Wahlscheine verwenden? [BOOL] @@ -1026,6 +1032,10 @@ clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear), oder Betriebssystem keinen solchen Befehl bereitstellen, sollte ein Kommando verwendet werden, welches eine Trennlinie oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo" +diff Shellbefehl zum Dateivergleich (diff); es koennen auch + Parameter angegeben werden, z.B. "diff -u". Das verwendete + Programm muss das Lesen einer Datei von STDIN erlauben + ("-" statt Dateinamen fuer Einlesen von Standardeingabekanal) pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem Bildschirm (normalerweise "less"). Unter Windows muss "more" benutzt werden, unter Unix hingegen gibt es moeglicherweise diff --git a/UVconfig.pm b/UVconfig.pm index a12aa56..fddc363 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -27,6 +27,7 @@ sub read_config { # Default configuration options (overwritten in usevote.cfg) %config = (votefile => "votes", votename => "unkonfiguriertes Usevote", + sampleballotfile => "ballot.sample", resultfile => "ergebnis.alle", rulefile => "usevote.rul", badaddrfile => "mailpatterns.cfg", @@ -57,6 +58,7 @@ sub read_config { mailcc => "", sleepcmd => "sleep 1", clearcmd => "clear", + diff => "diff", pager => "less", pop3 => 0, pop3server => "localhost", diff --git a/UVmenu.pm b/UVmenu.pm index 5d96c8e..15cc5d4 100644 --- a/UVmenu.pm +++ b/UVmenu.pm @@ -70,6 +70,12 @@ sub menu { my $menucaption = UVmessage::get("MENU_CAPTION"); print "\n\n$menucaption\n"; print "=" x length($menucaption), "\n\n"; + + # don't print this option if called from uvcfv.pl + unless ($mailonly) { + print "(0) ", UVmessage::get("MENU_DIFF_BALLOT"), "\n"; + } + print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n", UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n", "(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n"; @@ -96,7 +102,14 @@ sub menu { # only accept 1, 2, i and w if called from uvcfv.pl next if ($mailonly && $input !~ /^[12iw]$/i); - if ($input eq '1') { + if ($input eq '0') { + # ignore SIGPIPE (Bug in more and less) + $SIG{PIPE} = 'IGNORE'; + open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}"); + print DIFF $$body, "\n"; + close (DIFF); + + } elsif ($input eq '1') { system($config{clearcmd}); # ignore SIGPIPE (Bug in more and less) $SIG{PIPE} = 'IGNORE'; diff --git a/messages.cfg b/messages.cfg index 6c9b339..e1f1b13 100644 --- a/messages.cfg +++ b/messages.cfg @@ -42,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme MENU_VIOLATEDRULE = Regel ${RULE} verletzt. MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden: MENU_CAPTION = Auswahlmenue: +MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff) MENU_SHOW_MAIL = Anzeigen der Wahlmail MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften: MENU_ADDRESS = Mailadresse diff --git a/usevote.cfg b/usevote.cfg index c472b45..333f574 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -77,6 +77,10 @@ multigroup = 1 condition1 = $yes>=2*$no condition2 = $yes>=50 +# Datei mit Musterwahlschein, wie er im CfV geposted wurde. Wird fuer +# Vergleich mit ankommenden Wahlscheinen per "diff" genutzt. +sampleballotfile = ballot.sample + # Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden # (wird bei jedem Programmlauf neu erstellt!) resultfile = ergebnis.alle @@ -207,6 +211,9 @@ clearcmd = clear # Windows-Verzeichnis kopieren (URL siehe README-Datei) pager = less +# Shellbefehl fuer Dateivergleich +diff = diff + # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei) messagefile = messages.cfg From 98343f2272a7c8ad7bdd2054b6028eb3b5a9252d Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:35:34 +0100 Subject: [PATCH 3/7] Fix UVreadmail.pm Use filename from function call. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ README | 4 ++++ UVreadmail.pm | 16 ++++++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 064e2aa..e1c4529 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,9 @@ TODO: - aussortieren von Bounces aus Stimmenliste Version 4.12 (19.01.2014): +- uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen + Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg + (Bugfix in UVreadmail.pm) - neue Config-Optionen "diff" und "sampleballotfile" - im Fehlermenue bei der Wahlscheinverarbeitung ist es nun moeglich, mit der Option "0" einen Dateivergleich (diff) zwischen dem gemailten diff --git a/README b/README index aa26972..9f2be7e 100644 --- a/README +++ b/README @@ -691,6 +691,10 @@ uvbounce.pl eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde, werden die uebergebenen Dateinamen ignoriert. + Die Mails werden aus den uebergebenen Mailboxdateien geloescht + und statt dessen in einer neuen Datei mit der Erweiterung ".processed" + gespeichert. + Die Vorlage fuer die ausgegebene Liste ist im templates- Unterverzeichnis konfigurierbar (Datei "bouncelist"). diff --git a/UVreadmail.pm b/UVreadmail.pm index 01d062f..ac1b843 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -124,18 +124,30 @@ sub process { # Mailbox / Maildir } else { + my $readfilename; + + if ($caller==0) { + # called from uvvote.pl: use configured mailbox file + $readfilename = $config{votefile}; + } else { + # else use filename provided in function call + $readfilename = $filename; + # and create backup archive filename + $filename .= '.processed'; + } + my $mgr = Mail::Box::Manager->new; my $folder; eval{ - $folder = $mgr->open( folder => $config{votefile}, + $folder = $mgr->open( folder => $readfilename, create => 0, access => 'rw', type => $config{mailboxtype}, expand => 'LAZY', ); }; - die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $config{votefile})) . "\n\n" if $@; + die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@; # Iterate over the messages. foreach (@$folder) { From 52a699fdc7ca85459f1796d686e458f91e0fe396 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:07 +0100 Subject: [PATCH 4/7] Don't remove empty mailbox files/maildirs. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ UVreadmail.pm | 1 + 2 files changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index e1c4529..6ccc966 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Version 4.12 (19.01.2014): - uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg (Bugfix in UVreadmail.pm) +- UVreadmail.pm laesst nun Mailboxdateien bzw. -ordner bestehen, + auch wenn sie leer sind, um Kompatibiliaetsprobleme mit anderen + Programmen zu vermeiden - neue Config-Optionen "diff" und "sampleballotfile" - im Fehlermenue bei der Wahlscheinverarbeitung ist es nun moeglich, mit der Option "0" einen Dateivergleich (diff) zwischen dem gemailten diff --git a/UVreadmail.pm b/UVreadmail.pm index ac1b843..35dda15 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -145,6 +145,7 @@ sub process { access => 'rw', type => $config{mailboxtype}, expand => 'LAZY', + remove_when_empty => 0, ); }; die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@; From 3cb13d5a31d66e59c437148a0d96d2ae1c3046ae Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:28 +0100 Subject: [PATCH 5/7] Add correct timestamp to mbox when processing. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ UVreadmail.pm | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 6ccc966..f73d3d8 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Version 4.12 (19.01.2014): - uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg (Bugfix in UVreadmail.pm) +- UVreadmail.pm setzt beim Schreiben eines Mailarchivs nun einen + Timestamp in der mbox-Fromline, der aus der Mail stammt + (timestamp()-Funktion von Mail::Box) statt dem aktuellen Datum - UVreadmail.pm laesst nun Mailboxdateien bzw. -ordner bestehen, auch wenn sie leer sind, um Kompatibiliaetsprobleme mit anderen Programmen zu vermeiden diff --git a/UVreadmail.pm b/UVreadmail.pm index 35dda15..0a1f98f 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -162,7 +162,7 @@ sub process { } else { $fromline .= 'foo@bar.invalid'; } - $fromline .= ' ' . localtime() . "\n"; #strftime ('%a %b %d %H:%M:%S %Y', localtime) . "\n"; + $fromline .= ' ' . localtime($_->timestamp()) . "\n"; push (@mails, $fromline . $mail); } } From 1135267f4466b150afd2737109ec5eb0d33d3055 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:39 +0100 Subject: [PATCH 6/7] Update documentation to 4.12. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 2 +- README | 4 ++-- UVconfig.pm | 2 +- uvballot.pl | 4 ++-- uvbounce.pl | 4 ++-- uvcfv.pl | 4 ++-- uvcount.pl | 4 ++-- uvvote.pl | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index f73d3d8..4afa606 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) +UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 19.01.2014) ========================================================================= TODO: diff --git a/README b/README index 9f2be7e..286e1ad 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.11 (c) 2001-2012 Marc Langer +UseVoteGer 4.12 (c) 2001-2014 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.11 - Usenet-Abstimmungssoftware +UseVoteGer 4.12 - Usenet-Abstimmungssoftware =========================================== von Marc Langer diff --git a/UVconfig.pm b/UVconfig.pm index fddc363..4cd5d85 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.11"; +$usevote_version = "UseVoteGer 4.12"; sub read_config { diff --git a/uvballot.pl b/uvballot.pl index 6933233..7d7ff27 100755 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Wahlscheingenerierung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Wahlscheingenerierung +# (c) 2001-2014 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 03f1e1d..4375bf3 100755 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Bounce-Verarbeitung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Bounce-Verarbeitung +# (c) 2001-2014 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 a053e77..275da9b 100755 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Personalisierte Wahlscheine -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Personalisierte Wahlscheine +# (c) 2001-2014 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 11af9c1..4e1ea57 100755 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Stimmauswertung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Stimmauswertung +# (c) 2001-2014 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 8e8fb68..c101f1f 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Wahldurchfuehrung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Wahldurchfuehrung +# (c) 2001-2014 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 ef9dd9e761e4b44349f2eec75287917d7b652742 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:51:18 +0100 Subject: [PATCH 7/7] Fix whitespace and typo. Remove umlaut in README and fix a whitespace issue in UVmenu.pm Signed-off-by: Thomas Hochstein --- README | 2 +- UVmenu.pm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index 286e1ad..fec87c8 100644 --- a/README +++ b/README @@ -430,7 +430,7 @@ Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen. Mit (0) kannst Du einen Dateivergleich zu einem vorher hinterlegten -Musterwahlschein ausführen ("diff"), um Aenderungen/Fehler schneller +Musterwahlschein ausfuehren ("diff"), um Aenderungen/Fehler schneller zu sehen. Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften diff --git a/UVmenu.pm b/UVmenu.pm index 15cc5d4..07e32c8 100644 --- a/UVmenu.pm +++ b/UVmenu.pm @@ -108,7 +108,7 @@ sub menu { open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}"); print DIFF $$body, "\n"; close (DIFF); - + } elsif ($input eq '1') { system($config{clearcmd}); # ignore SIGPIPE (Bug in more and less)