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.
This commit is contained in:
Thomas Hochstein 2014-03-19 22:15:36 +01:00
commit 7233d81f30
12 changed files with 88 additions and 25 deletions

26
CHANGES
View file

@ -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: TODO:
- aussortieren von Bounces aus Stimmenliste - 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 Version 4.12 (19.01.2014):
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem - uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt). (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): Version 4.11 (25.09.2012):
- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert.
Es kam zu vielen False Positives 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). auch Maildir moeglich (neue Option "mailboxtype" in usevote.cfg).
Archivierung erfolgt aber vorerst weiterhin immer als mbox Archivierung erfolgt aber vorerst weiterhin immer als mbox

21
README
View file

@ -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. 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 <uv@marclanger.de> von Marc Langer <uv@marclanger.de>
@ -324,6 +324,7 @@ ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
usevote.cfg, darin können alle anderen Pfade angepasst werden): usevote.cfg, darin können alle anderen Pfade angepasst werden):
ballot.sample
bdsgtext.cfg bdsgtext.cfg
mailpatterns.cfg mailpatterns.cfg
messages.cfg messages.cfg
@ -404,6 +405,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
Meistens gibt es folgende Moeglichkeiten, die durch die Meistens gibt es folgende Moeglichkeiten, die durch die
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen: eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
(0) Wahlschein mit Original vergleichen (diff)
(1) Anzeigen der Wahlmail (1) Anzeigen der Wahlmail
Bestaetigen oder Aendern von Wahlschein-Eigenschaften: Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
@ -412,6 +414,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
(4) Stimmen (4) Stimmen
(5) Scheinkennung (5) Scheinkennung
(6) Datenschutzklausel (6) Datenschutzklausel
(7) Abstimmung
(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen) (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
(w) Weiter (w) Weiter
@ -426,8 +429,11 @@ Teilweise gibt es Unteroptionen:
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen. 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 des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
eine Stimme nicht korrekt erkannt hat) oder auch einfach die eine Stimme nicht korrekt erkannt hat) oder auch einfach die
Korrektheit bestaetigen. Korrektheit bestaetigen.
@ -685,6 +691,10 @@ uvbounce.pl
eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde, eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
werden die uebergebenen Dateinamen ignoriert. 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- Die Vorlage fuer die ausgegebene Liste ist im templates-
Unterverzeichnis konfigurierbar (Datei "bouncelist"). Unterverzeichnis konfigurierbar (Datei "bouncelist").
@ -957,6 +967,7 @@ Hier eine Auflistung der immer anzupassenden Optionen
votename Name der Abstimmung votename Name der Abstimmung
group1 Erster Abstimmungsgegenstand group1 Erster Abstimmungsgegenstand
group2 Zweiter (und so weiter durchnummerieren) group2 Zweiter (und so weiter durchnummerieren)
sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff)
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet) votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
mailboxtype Typ der Mailbox (mbox, maildir) mailboxtype Typ der Mailbox (mbox, maildir)
personal Personalisierte Wahlscheine verwenden? [BOOL] personal Personalisierte Wahlscheine verwenden? [BOOL]
@ -1025,6 +1036,10 @@ clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
oder Betriebssystem keinen solchen Befehl bereitstellen, oder Betriebssystem keinen solchen Befehl bereitstellen,
sollte ein Kommando verwendet werden, welches eine Trennlinie sollte ein Kommando verwendet werden, welches eine Trennlinie
oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo" 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 pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
Bildschirm (normalerweise "less"). Unter Windows muss "more" Bildschirm (normalerweise "less"). Unter Windows muss "more"
benutzt werden, unter Unix hingegen gibt es moeglicherweise benutzt werden, unter Unix hingegen gibt es moeglicherweise

View file

@ -18,7 +18,7 @@ require Exporter;
$VERSION = "0.18"; $VERSION = "0.18";
# Usevote version # Usevote version
$usevote_version = "UseVoteGer 4.11"; $usevote_version = "UseVoteGer 4.12";
sub read_config { sub read_config {
@ -27,6 +27,7 @@ sub read_config {
# Default configuration options (overwritten in usevote.cfg) # Default configuration options (overwritten in usevote.cfg)
%config = (votefile => "votes", %config = (votefile => "votes",
votename => "unkonfiguriertes Usevote", votename => "unkonfiguriertes Usevote",
sampleballotfile => "ballot.sample",
resultfile => "ergebnis.alle", resultfile => "ergebnis.alle",
rulefile => "usevote.rul", rulefile => "usevote.rul",
badaddrfile => "mailpatterns.cfg", badaddrfile => "mailpatterns.cfg",
@ -57,6 +58,7 @@ sub read_config {
mailcc => "", mailcc => "",
sleepcmd => "sleep 1", sleepcmd => "sleep 1",
clearcmd => "clear", clearcmd => "clear",
diff => "diff",
pager => "less", pager => "less",
pop3 => 0, pop3 => 0,
pop3server => "localhost", pop3server => "localhost",

View file

@ -70,6 +70,12 @@ sub menu {
my $menucaption = UVmessage::get("MENU_CAPTION"); my $menucaption = UVmessage::get("MENU_CAPTION");
print "\n\n$menucaption\n"; print "\n\n$menucaption\n";
print "=" x length($menucaption), "\n\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", print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n", UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\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 # only accept 1, 2, i and w if called from uvcfv.pl
next if ($mailonly && $input !~ /^[12iw]$/i); 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}); system($config{clearcmd});
# ignore SIGPIPE (Bug in more and less) # ignore SIGPIPE (Bug in more and less)
$SIG{PIPE} = 'IGNORE'; $SIG{PIPE} = 'IGNORE';

View file

@ -124,18 +124,31 @@ sub process {
# Mailbox / Maildir # Mailbox / Maildir
} else { } 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 $mgr = Mail::Box::Manager->new;
my $folder; my $folder;
eval{ eval{
$folder = $mgr->open( folder => $config{votefile}, $folder = $mgr->open( folder => $readfilename,
create => 0, create => 0,
access => 'rw', access => 'rw',
type => $config{mailboxtype}, type => $config{mailboxtype},
expand => 'LAZY', 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. # Iterate over the messages.
foreach (@$folder) { foreach (@$folder) {
@ -149,7 +162,7 @@ sub process {
} else { } else {
$fromline .= 'foo@bar.invalid'; $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); push (@mails, $fromline . $mail);
} }
} }

View file

@ -42,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme
MENU_VIOLATEDRULE = Regel ${RULE} verletzt. MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden: MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
MENU_CAPTION = Auswahlmenue: MENU_CAPTION = Auswahlmenue:
MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff)
MENU_SHOW_MAIL = Anzeigen der Wahlmail MENU_SHOW_MAIL = Anzeigen der Wahlmail
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften: MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
MENU_ADDRESS = Mailadresse MENU_ADDRESS = Mailadresse

View file

@ -77,6 +77,10 @@ multigroup = 1
condition1 = $yes>=2*$no condition1 = $yes>=2*$no
condition2 = $yes>=50 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 # Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
# (wird bei jedem Programmlauf neu erstellt!) # (wird bei jedem Programmlauf neu erstellt!)
resultfile = ergebnis.alle resultfile = ergebnis.alle
@ -207,6 +211,9 @@ clearcmd = clear
# Windows-Verzeichnis kopieren (URL siehe README-Datei) # Windows-Verzeichnis kopieren (URL siehe README-Datei)
pager = less pager = less
# Shellbefehl fuer Dateivergleich
diff = diff
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei) # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
messagefile = messages.cfg messagefile = messages.cfg

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.11 Wahlscheingenerierung # UseVoteGer 4.12 Wahlscheingenerierung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2014 Marc Langer <uv@marclanger.de>
# #
# This script package is free software; you can redistribute it and/or # 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 # modify it under the terms of the GNU Public License as published by the

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.11 Bounce-Verarbeitung # UseVoteGer 4.12 Bounce-Verarbeitung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2014 Marc Langer <uv@marclanger.de>
# #
# This script package is free software; you can redistribute it and/or # 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 # modify it under the terms of the GNU Public License as published by the

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.11 Personalisierte Wahlscheine # UseVoteGer 4.12 Personalisierte Wahlscheine
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2014 Marc Langer <uv@marclanger.de>
# #
# This script package is free software; you can redistribute it and/or # 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 # modify it under the terms of the GNU Public License as published by the

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.11 Stimmauswertung # UseVoteGer 4.12 Stimmauswertung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2014 Marc Langer <uv@marclanger.de>
# #
# This script package is free software; you can redistribute it and/or # 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 # modify it under the terms of the GNU Public License as published by the

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.11 Wahldurchfuehrung # UseVoteGer 4.12 Wahldurchfuehrung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2014 Marc Langer <uv@marclanger.de>
# #
# This script package is free software; you can redistribute it and/or # 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 # modify it under the terms of the GNU Public License as published by the