Release of upstream version 4.11. 4.0.11
authorThomas Hochstein <thh@inter.net>
Wed, 26 Sep 2012 19:26:54 +0000 (21:26 +0200)
committerThomas Hochstein <thh@inter.net>
Wed, 26 Sep 2012 19:26:54 +0000 (21:26 +0200)
Signed-off-by: Thomas Hochstein <thh@inter.net>
CHANGES
README
UVconfig.pm
UVreadmail.pm
usevote.cfg
uvballot.pl
uvbounce.pl
uvcfv.pl
uvcount.pl
uvvote.pl

diff --git a/CHANGES b/CHANGES
index 281a395..e26eb94 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -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:
 - aussortieren von Bounces aus Stimmenliste
-- Unterstuetzung von Maildir
 - [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.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):
 - Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
   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)
 - Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
   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)
 - neue Konfigurations-Option "ballotintro" und neues Template
   tpl_wrong_voting
@@ -36,7 +42,7 @@ Version 4.09 (14.09.2007):
 - "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
   den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
   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)
 - Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
   (--voters statt --votes)
diff --git a/README b/README
index 158e3b6..3746e04 100644 (file)
--- a/README
+++ b/README
@@ -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.
 
@@ -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>
@@ -958,6 +958,7 @@ votename         Name der Abstimmung
 group1           Erster Abstimmungsgegenstand
 group2           Zweiter (und so weiter durchnummerieren)
 votefile         Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
+mailboxtype      Typ der Mailbox (mbox, maildir)
 personal         Personalisierte Wahlscheine verwenden? [BOOL]
                  (siehe gesonderten Abschnitt weiter oben)
 voteaccount      Mailadresse, unter der abgestimmt werden kann
index ee7f21e..a12aa56 100644 (file)
@@ -18,7 +18,7 @@ require Exporter;
 $VERSION = "0.18";
 
 # Usevote version
-$usevote_version = "UseVoteGer 4.10";
+$usevote_version = "UseVoteGer 4.11";
 
 sub read_config {
 
@@ -45,6 +45,7 @@ sub read_config {
              voteaccount          => "<> (unkonfiguriertes Usevote)",
              mailfrom             => "<> (unkonfiguriertes Usevote)",
              envelopefrom         => "<>",
+             mailboxtype          => "mbox",
              mailstart            => "^From ",
              archivedir           => "fertig",
              tmpdir               => "tmp",
index e1e599c..01d062f 100644 (file)
@@ -9,6 +9,7 @@ use UVmessage;
 use MIME::QuotedPrint;
 use MIME::Base64;
 use MIME::Parser;
+use Mail::Box::Manager;
 use POSIX qw(strftime);
 
 use vars qw($VERSION);
@@ -118,37 +119,52 @@ sub process {
       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();
 
+  # Mailbox / Maildir
   } else {
-    # open mail file
-    open(VOTES, "<$filename")
-        or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n";
-
-    # read all mails
-    my $i = 0;
-    while (<VOTES>) {
-      if (/$config{mailstart}/) {
-        $i++;
+
+    my $mgr = Mail::Box::Manager->new;
+    my $folder;
+
+    eval{
+      $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
-    close(VOTES);
+  # 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";
   }
 
   foreach my $mail (@mails) {
index d6a6b33..20f4bc9 100644 (file)
@@ -90,6 +90,9 @@ pop3 = 1
 # Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
 votefile = votes
 
+# Typ der Mailbox (mbox, maildir)
+mailboxtype = mbox
+
 # POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
 # Server, Port, Benutzername, Passwort
 pop3server = 127.0.0.1
index 7081744..6933233 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.10 Wahlscheingenerierung
+# UseVoteGer 4.11 Wahlscheingenerierung
 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
index eb95143..03f1e1d 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.10 Bounce-Verarbeitung
+# UseVoteGer 4.11 Bounce-Verarbeitung
 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
index f2a81b0..a053e77 100644 (file)
--- a/uvcfv.pl
+++ b/uvcfv.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.10 Personalisierte Wahlscheine
+# UseVoteGer 4.11 Personalisierte Wahlscheine
 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
index 5c4ba2f..11af9c1 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.10 Stimmauswertung
+# UseVoteGer 4.11 Stimmauswertung
 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
index 4affb4c..4b3b2b1 100644 (file)
--- a/uvvote.pl
+++ b/uvvote.pl
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.10 Wahldurchfuehrung
+# UseVoteGer 4.11 Wahldurchfuehrung
 # (c) 2001-2012 Marc Langer <uv@marclanger.de>
 # 
 # This script package is free software; you can redistribute it and/or
@@ -135,16 +135,6 @@ if ($clean) {
   my $thisresult = "ergebnis-" . $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 (RESULT, ">>$config{tmpdir}/$thisresult")
      or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
@@ -241,7 +231,7 @@ sub process_vote {
   }
 
   # 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 .= " $3" if defined($3);
     push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);
This page took 0.02028 seconds and 4 git commands to generate.