From 6f31c0dc7a1739d305ae46715c316365f8002e95 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:24:02 +0100 Subject: [PATCH 1/7] Add "bdsg_confirm" to UVconf.pm Set default for "bdsg_confirm". Picked from upstream. Signed-off-by: Thomas Hochstein --- UVconfig.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/UVconfig.pm b/UVconfig.pm index a12aa56..aa3b883 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -90,6 +90,7 @@ sub read_config { nein_stimme => '(N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)', enth_stimme => '(E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)', ann_stimme => 'A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G', + bdsg_confirm => 'JA', condition1 => '$yes>=2*$no', # twice as many yes as no condition2 => '$yes>=60', # min 60 yes votes prop_formula => '$yes/$no', From 300f47d6164562e776a6a6b4efcd6125a629e710 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:53 +0100 Subject: [PATCH 2/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 e91a2b7fa54667982a8c4822f892cda181e77356 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:33:47 +0100 Subject: [PATCH 3/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 aa3b883..2df748f 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 46eb779..486bb2c 100644 --- a/UVmenu.pm +++ b/UVmenu.pm @@ -69,6 +69,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"; @@ -95,7 +101,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 20f4bc9..8e0ada3 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 @@ -208,6 +212,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 7450382ef39c57c7092fcb5a75015aff17ab15b2 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:35:34 +0100 Subject: [PATCH 4/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 c50a97a62ca4a74c142a4a23ccb1f84d88083741 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:07 +0100 Subject: [PATCH 5/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 7ae85f86e37d9040cc0925d7375d54492011ab53 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:28 +0100 Subject: [PATCH 6/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 62d56462b42ca2a59066c22bf7839eecec3e206b Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:39 +0100 Subject: [PATCH 7/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 2df748f..571ab69 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 100644 --- 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 100644 --- 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 100644 --- 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 100644 --- 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 4b3b2b1..0e7e2bd 100644 --- 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