From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:15:36 +0000 (+0100) Subject: Merge branch 'thh-pickfromupstream' into next X-Git-Url: https://code.th-h.de/?p=usenet%2Fusevote.git;a=commitdiff_plain;h=7233d81f302404ac9f842127ccf8d268d6df0cb2;hp=f406c344d9a021e6b7aadcc9bd06072eb22b2ab5 Merge branch 'thh-pickfromupstream' into next * thh-pickfromupstream: Fix whitespace and typo. Update documentation to 4.12. Add correct timestamp to mbox when processing. Don't remove empty mailbox files/maildirs. Fix UVreadmail.pm Add option to compare ballot to sample ballot. Documentation: Add votename to UVmenu. --- diff --git a/CHANGES b/CHANGES index e26eb94..4afa606 100644 --- a/CHANGES +++ b/CHANGES @@ -1,18 +1,30 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) +UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 19.01.2014) ========================================================================= 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): +- 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 +- 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. 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..fec87c8 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 @@ -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: @@ -412,6 +414,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften: (4) Stimmen (5) Scheinkennung (6) Datenschutzklausel +(7) Abstimmung (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen) (w) Weiter @@ -426,8 +429,11 @@ 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 ausfuehren ("diff"), um Aenderungen/Fehler schneller +zu sehen. -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. @@ -685,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"). @@ -957,6 +967,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] @@ -1025,6 +1036,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 4cad06f..c2a1629 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 { @@ -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..07e32c8 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/UVreadmail.pm b/UVreadmail.pm index 01d062f..0a1f98f 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -124,18 +124,31 @@ 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', + remove_when_empty => 0, ); }; - 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) { @@ -149,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); } } 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 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