Release of upstream version 4.11.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2012-09-26 21:26:54 +02:00
parent bb61da3743
commit c9497882fb
10 changed files with 64 additions and 47 deletions

14
CHANGES
View file

@ -1,15 +1,21 @@
UseVoteGer Versionshistorie (aktuelle Version: 4.10, released 17.09.2012) UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012)
========================================================================= =========================================================================
TODO: TODO:
- aussortieren von Bounces aus Stimmenliste - aussortieren von Bounces aus Stimmenliste
- Unterstuetzung von Maildir
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins - [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt). 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): Version 4.10 (17.09.2012):
- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren - Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien
@ -23,7 +29,7 @@ Version 4.10 (17.09.2012):
auf die Ack-Mail geschickt werden koennen) auf die Ack-Mail geschickt werden koennen)
- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem - Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
oder letztem Abstimmungspunkt ausgewertet) oder letztem Abstimmungspunkt ausgewertet)
- Abstimmungsname wird nun auf Korrektheit geprüft (Wahlschein gehört - Abstimmungsname wird nun auf Korrektheit geprueft (Wahlschein gehört
zur richtigen Abstimmung) zur richtigen Abstimmung)
- neue Konfigurations-Option "ballotintro" und neues Template - neue Konfigurations-Option "ballotintro" und neues Template
tpl_wrong_voting tpl_wrong_voting
@ -36,7 +42,7 @@ Version 4.09 (14.09.2007):
- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und - "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
etwa wie vorher angegeben smtp=0) 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) nach umgebrochenen Abstimmungspunkten)
- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben - Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
(--voters statt --votes) (--voters statt --votes)

5
README
View file

@ -1,4 +1,4 @@
UseVoteGer 4.10 (c) 2001-2012 Marc Langer UseVoteGer 4.11 (c) 2001-2012 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.10 - Usenet-Abstimmungssoftware UseVoteGer 4.11 - Usenet-Abstimmungssoftware
=========================================== ===========================================
von Marc Langer <uv@marclanger.de> von Marc Langer <uv@marclanger.de>
@ -958,6 +958,7 @@ votename Name der Abstimmung
group1 Erster Abstimmungsgegenstand group1 Erster Abstimmungsgegenstand
group2 Zweiter (und so weiter durchnummerieren) group2 Zweiter (und so weiter durchnummerieren)
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet) votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
mailboxtype Typ der Mailbox (mbox, maildir)
personal Personalisierte Wahlscheine verwenden? [BOOL] personal Personalisierte Wahlscheine verwenden? [BOOL]
(siehe gesonderten Abschnitt weiter oben) (siehe gesonderten Abschnitt weiter oben)
voteaccount Mailadresse, unter der abgestimmt werden kann voteaccount Mailadresse, unter der abgestimmt werden kann

View file

@ -18,7 +18,7 @@ require Exporter;
$VERSION = "0.18"; $VERSION = "0.18";
# Usevote version # Usevote version
$usevote_version = "UseVoteGer 4.10"; $usevote_version = "UseVoteGer 4.11";
sub read_config { sub read_config {
@ -45,6 +45,7 @@ sub read_config {
voteaccount => "<> (unkonfiguriertes Usevote)", voteaccount => "<> (unkonfiguriertes Usevote)",
mailfrom => "<> (unkonfiguriertes Usevote)", mailfrom => "<> (unkonfiguriertes Usevote)",
envelopefrom => "<>", envelopefrom => "<>",
mailboxtype => "mbox",
mailstart => "^From ", mailstart => "^From ",
archivedir => "fertig", archivedir => "fertig",
tmpdir => "tmp", tmpdir => "tmp",

View file

@ -9,6 +9,7 @@ use UVmessage;
use MIME::QuotedPrint; use MIME::QuotedPrint;
use MIME::Base64; use MIME::Base64;
use MIME::Parser; use MIME::Parser;
use Mail::Box::Manager;
use POSIX qw(strftime); use POSIX qw(strftime);
use vars qw($VERSION); use vars qw($VERSION);
@ -118,37 +119,52 @@ sub process {
close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n"; 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(); $pop->quit();
# Mailbox / Maildir
} else { } else {
# open mail file
open(VOTES, "<$filename")
or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n";
# read all mails my $mgr = Mail::Box::Manager->new;
my $i = 0; my $folder;
while (<VOTES>) {
if (/$config{mailstart}/) { eval{
$i++; $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 # make archive of all mails
close(VOTES); 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) { foreach my $mail (@mails) {

View file

@ -90,6 +90,9 @@ pop3 = 1
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0) # Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
votefile = votes votefile = votes
# Typ der Mailbox (mbox, maildir)
mailboxtype = mbox
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine: # POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
# Server, Port, Benutzername, Passwort # Server, Port, Benutzername, Passwort
pop3server = 127.0.0.1 pop3server = 127.0.0.1

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.10 Wahlscheingenerierung # UseVoteGer 4.11 Wahlscheingenerierung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2012 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

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.10 Bounce-Verarbeitung # UseVoteGer 4.11 Bounce-Verarbeitung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2012 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

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.10 Personalisierte Wahlscheine # UseVoteGer 4.11 Personalisierte Wahlscheine
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2012 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

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.10 Stimmauswertung # UseVoteGer 4.11 Stimmauswertung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2012 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

View file

@ -1,7 +1,7 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.10 Wahldurchfuehrung # UseVoteGer 4.11 Wahldurchfuehrung
# (c) 2001-2012 Marc Langer <uv@marclanger.de> # (c) 2001-2012 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
@ -135,16 +135,6 @@ if ($clean) {
my $thisresult = "ergebnis-" . $ext; my $thisresult = "ergebnis-" . $ext;
my $thisvotes = "stimmen-" . $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 results file
open (RESULT, ">>$config{tmpdir}/$thisresult") open (RESULT, ">>$config{tmpdir}/$thisresult")
or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n"; or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
@ -241,7 +231,7 @@ sub process_vote {
} }
# correct voting? # correct voting?
if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n(.*?[\t ]+(\S+.+)\s*$)?/m) { if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)[^\S\n]*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) {
$voting = $1; $voting = $1;
$voting .= " $3" if defined($3); $voting .= " $3" if defined($3);
push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/); push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);