Initial checkin of personal version.

Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
Thomas Hochstein 2010-08-16 23:03:19 +02:00
parent ac7e2c541a
commit a384e31e54
13 changed files with 271 additions and 46 deletions

View file

@ -149,10 +149,10 @@ sub read_rulefile {
die $errortext . ": $_\n\n" if ($errortext); die $errortext . ": $_\n\n" if ($errortext);
# check for correct characters in conditions # check for correct characters in conditions
if ($if !~ /^[JjNnEeSsHhIi\.]+$/) { if ($if !~ /^[JjNnEeSsIi\.]+$/) {
die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n"; die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n";
} elsif ($then !~ /^[JjNnEeSsHhIi\.]+$/) { } elsif ($then !~ /^[JjNnEeSsIi\.]+$/) {
die UVmessage::get ("RULES_INVCHARS", die UVmessage::get ("RULES_INVCHARS",
(NUM=>$num+1, TYPE=>"if")) . ": $then\n\n"; (NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
} }
@ -194,9 +194,8 @@ sub read_rulefile {
sub make_regex_pos { sub make_regex_pos {
my $pat = $_[0]; my $pat = $_[0];
$pat =~ s/[hijens]/./g; $pat =~ s/[jens]/./g;
$pat =~ s/S/[JN]/g; $pat =~ s/S/[JN]/g;
$pat =~ s/H/[EJ]/g;
$pat =~ s/I/[EN]/g; $pat =~ s/I/[EN]/g;
return $pat; return $pat;
@ -217,19 +216,22 @@ sub make_regex_neg {
# upper case characters are replaced with dots # upper case characters are replaced with dots
# (are covered by make_regex_pos) # (are covered by make_regex_pos)
$pat =~ s/[HIJENS]/./g; $pat =~ s/[JENS]/./g;
# reverse lower case characters # reverse lower case characters
$pat =~ s/j/[NE]/g; $pat =~ s/j/[NE]/g;
$pat =~ s/n/[JE]/g; $pat =~ s/n/[JE]/g;
$pat =~ s/e/[JN]/g; $pat =~ s/e/[JN]/g;
$pat =~ s/s/E/g; $pat =~ s/s/E/g;
$pat =~ s/h/N/g;
$pat =~ s/i/J/g; $pat =~ s/i/J/g;
# If the string contained only upper case characters they are now all # to be translated:
# replaced with dots and the RegEx would match everything, i.e. declare # Falls keine Kleinbuchstaben vorkamen (es sind nur Punkte uebrig):
# every vote as invalid. In this case an empty pattern is returned. # Wenn keine optionalen Forderungen vorhanden sind, wuerde der Regex
# immer matchen und somit die Stimme immer als nicht passend erkannt
# werden. Deswegen wird versucht auf den leeren String zu ueberpruefen,
# was durch die Negation dazu fuehrt, dass die Stimme als passend
# gewertet wird.
$pat =~ s/^\.+$//; $pat =~ s/^\.+$//;
return $pat; return $pat;
@ -303,10 +305,6 @@ sub rule_print {
$fill = " $and "; $fill = " $and ";
$text1 = UVmessage::get ("RULES_IFCLAUSE", $text1 = UVmessage::get ("RULES_IFCLAUSE",
(VOTE=>"$yes $or $no", GROUP=>$groups[$i])); (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'H') {
$fill = " $and ";
$text1 = UVmessage::get ("RULES_IFCLAUSE",
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'I') { } elsif ($rule[$i] eq 'I') {
$fill = " $and "; $fill = " $and ";
$text1 = UVmessage::get ("RULES_IFCLAUSE", $text1 = UVmessage::get ("RULES_IFCLAUSE",
@ -324,10 +322,6 @@ sub rule_print {
$fill = " $or "; $fill = " $or ";
$text1 = UVmessage::get ("RULES_IFCLAUSE", $text1 = UVmessage::get ("RULES_IFCLAUSE",
(VOTE=>"$yes $or $no", GROUP=>$groups[$i])); (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'h') {
$fill = " $or ";
$text1 = UVmessage::get ("RULES_IFCLAUSE",
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'i') { } elsif ($rule[$i] eq 'i') {
$fill = " $or "; $fill = " $or ";
$text1 = UVmessage::get ("RULES_IFCLAUSE", $text1 = UVmessage::get ("RULES_IFCLAUSE",
@ -363,10 +357,6 @@ sub rule_print {
$fill = " $and "; $fill = " $and ";
$text1 = UVmessage::get ("RULES_THENCLAUSE", $text1 = UVmessage::get ("RULES_THENCLAUSE",
(VOTE=>"$yes $or $no", GROUP=>$groups[$i])); (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'H') {
$fill = " $and ";
$text1 = UVmessage::get ("RULES_THENCLAUSE",
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'I') { } elsif ($rule[$i] eq 'I') {
$fill = " $and "; $fill = " $and ";
$text1 = UVmessage::get ("RULES_THENCLAUSE", $text1 = UVmessage::get ("RULES_THENCLAUSE",
@ -384,10 +374,6 @@ sub rule_print {
$fill = " $or "; $fill = " $or ";
$text1 = UVmessage::get ("RULES_THENCLAUSE", $text1 = UVmessage::get ("RULES_THENCLAUSE",
(VOTE=>"$yes $or $no", GROUP=>$groups[$i])); (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'h') {
$fill = " $or ";
$text1 = UVmessage::get ("RULES_THENCLAUSE",
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
} elsif ($rule[$i] eq 'i') { } elsif ($rule[$i] eq 'i') {
$fill = " $or "; $fill = " $or ";
$text1 = UVmessage::get ("RULES_THENCLAUSE", $text1 = UVmessage::get ("RULES_THENCLAUSE",

View file

@ -154,7 +154,6 @@ CFV_SUBJECT = Wahlschein
# #
COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen! COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE} COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE}
COUNT_ERR_GROUPCOUNT = Bei Stimme von <${ADDR}>: ${NUM1} statt ${NUM2} Stimmen gefunden (${RESULTFILE} kontrollieren!)
COUNT_DELETED = ${NUM} Stimme(n) geloescht. COUNT_DELETED = ${NUM} Stimme(n) geloescht.
# #
# uvvote.pl # uvvote.pl

View file

@ -11,12 +11,13 @@ group-more := value group | drop-words 40 | create-lines 40
Ergebnisse [$votename-first] Ergebnisse [$votename-first]
[@votename-more| [$line]\n] [@votename-more| [$line]\n]
([$numvalid] gueltige Stimmen)
Es wurden [$numvalid] gueltige Stimmen abgegeben.
Ja Nein : 2/3? >=60? : ang.? : Gruppe Ja Nein : 2/3? >=60? : ang.? : Gruppe
---- ---- : ---- ----- : ----- : --------------------------------------- ---- ---- : ---- ----- : ----- : ---------------------------------------
[@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein] : [?result| Ja |Nein] : [$group-first] [@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein] : [?result| Ja |Nein] : [$group-first]
[@group-more| : : : [$line]\n]\n] [@group-more| : : : [$line]|\n]\n]
[?numabstain|[$numabstain-formatted] Enthaltungen] [?numabstain|[$numabstain-formatted] Enthaltungen]
[?numinvalid|[$numinvalid] ungueltige Stimme(n)] [?numinvalid|[$numinvalid] ungueltige Stimme(n)]

View file

@ -14,8 +14,8 @@ Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] E
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.] [?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
60 Ja-Stimmen ein. Damit ist die [$votename-text-first] 60 Ja-Stimmen ein. Damit ist die [$votename-first]
[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt]. [@votename-more|[$line]|\n] [?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per

View file

165
usevote.global.cfg Normal file
View file

@ -0,0 +1,165 @@
########################################################################
# Alles ab hier braucht i.d.R. nur einmal festgelegt werden.
# Es ist moeglich, diese Einstellungen in eine globale Konfigurations-
# datei auszulagern. Das Einbinden erfolgt mit der Zeile
#
# include /pfad/zur/globalen_datei
#
# Falls Einstellungen aus der globalen Konfigurationsdatei hier
# fuer einzelne Abstimmungen ueberschrieben werden sollen, muessen
# diese *hinter* dem Include-Befehl stehen!
# (der letzte Wert ueberschreibt vorhergehende Definitionen)
########################################################################
# SMTP benutzen? (falls nicht, wird der weiter unten einstellbare
# MTA direkt aufgerufen; unter Windows kann nur SMTP benutzt werden!)
smtp = 0
# SMTP-Server (falls smtp = 1)
smtpserver = localhost
smtpport = 25
# SMTP-Authentifizierung benutzen? (RFC 2554)
# Das entsprechende Perlmodul (Net::SMTP) kann derzeit nur AUTH PLAIN,
# funktioniert also moeglicherweise nicht mit jedem Server
#smtpauth = 0
#smtpuser =
#smtppass =
# Falls als HELO etwas anderes als der Hostname verwendet werden soll:
#smtphelo = greenmeadow.szaf.org
# Falls ein anderer Fully Qualified Domain Name als der Hostname fuer
# die Message-ID verwendet werden soll:
fqdn = gvv.th-h.de
# Verzeichnis fuer fertig verarbeitete Mails und Ergebnisse
archivedir = done
# Temporaeres Verzeichnis
tmpdir = tmp
# Pfad zu den Templates (kommaseparierte Liste mit Verzeichnissen)
templatedir = /home/gvv/usevote/templates
# Konvertierungsfunktionen f黵 die Templates
# (kommaseparierte Liste mit Funktions-Modulen)
formats = /home/gvv/usevote/UVformats.pm
# Dateiname der Steuerungsdatei fuer den Mailversandt
controlfile = tmp/ack.control
# Dateiname des Shellscripts zum Versenden der Bestaetigungsmails (falls smtp=0)
domailfile = tmp/domail
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
#mailcmd = sendmail -oi -oem -femail@adresse
mailcmd = /usr/sbin/sendmail -oi -oem -fvote-bounces@gvv.th-h.de
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
# gewaehlt werden sollte, um die Belastung gering zu halten.
sleepcmd = sleep 1
# Shellbefehl zum Loeschen des Bildschirms
# Unix: i.d.R. "clear"
# Windows: "cls"
# Falls das Betriebssystem bzw. die Shell keinen solchen Befehl zur Verfuegung
# stellt, sollte ein Kommando verwendet werden, welches eine Trennlinie
# oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
clearcmd = clear
# Shellbefehl zum seitenweisen Darstellen von Mails auf dem Bildschirm
# Empfohlene Einstellung: "less", da more Probleme mit der Umleitung von
# STDERR in eine Datei Probleme hat. Unter Windows ist "less" nicht
# vorinstallirt, kann man sich aber herunterladen und einfach in das
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
pager = less
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
messagefile = /home/gvv/usevote/messages.cfg
# Datei mit Wahlregeln
rulefile = /home/gvv/usevote/usevote.rul
# Datei mit verdaechtigen Mailadressen
badaddrfile = /home/gvv/usevote/mailpatterns.cfg
# Datei fuer Fehlermeldungen beim Programmlauf
errorfile = errors.log
# Lockdatei (Verhinderung von mehrfachen Programmstarts)
lockfile = usevote.lock
# Einleitungszeile fuer naechste Mail (RegExp)
mailstart = "^From "
# Trennlinien vor und nach dem Wahlschein
begin_divider = Alles vor dieser Zeile bitte loeschen
end_divider = Alles nach dieser Zeile bitte loeschen
# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
# Wahlschein genauso stehen!
nametext = Dein Realname, falls nicht im FROM-Header:
# Text fuer Namens-Angabe in Bestaetigungsmails
nametext2 = Waehlername:
# Text fuer die Adress-Angabe im Wahlschein
addresstext = Waehleradresse:
# Text f黵 die Angabe der Wahlscheinkennung (siehe Option "personal")
ballotidtext = Wahlscheinkennung:
# Text fuer Datenschutzklausel (siehe Option "bdsg"), erscheint als Abstimmungspunkt
bdsgtext = Datenschutzklausel - Zustimmung: Ich bin mit der Verarbeitung meiner Daten wie oben beschrieben einverstanden
# Datei mit Erklaerungstext fuer BDSG-Klausel
bdsgfile = /home/gvv/usevote/bdsgtext.cfg
# Rechter Rand fuer einige Bildschirmausgaben (Terminalbreite)
rightmargin = 72
# Regular Expression fuer Erkennung eines gueltigen Realnamens
name_re = [-a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,} +.*[a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,}
# RegExp fuer JA-Stimmen (case-insensitive)
# Standardmaessig wird J, JA, FUER und DAFUER erkannt
ja_stimme = (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
# RegExp fuer NEIN-Stimmen (case-insensitive)
# Standardmaessig wird N, NEIN, GEGEN und DAGEGEN erkannt
nein_stimme = (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
# RegExp fuer ENTHALTUNG (case-insensitive)
enth_stimme = (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
# RegExp fuer ANNULLIERUNG (case-insensitive)
# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
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
# Template files (these files are in the template directory defined above)
tpl_mailheader = "mailheader" # generally used mail header
tpl_bouncelist = "bouncelist" # used by uvbounce.pl
tpl_result_multi = "result-multi" # used by uvcount.pl -r -m
tpl_result_single = "result-single" # used by uvcount.pl -r -o
tpl_result_prop = "result-proportional" # used by uvcount.pl -r (proportional = 1)
tpl_votes_multi = "votes-multi" # used by uvcount.pl -v (multiple groups)
tpl_votes_single = "votes-single" # used by uvcount.pl -v (single group only)
tpl_voterlist = "voterlist" # used by uvcount.pl -l (2nd CfV)
tpl_ballot = "ballot" # used by uvballot.pl (personal = 0)
tpl_ballot_request = "ballot-request" # used by uvballot.pl (personal = 1)
tpl_ballot_personal = "ballot-personal" # used by uvcfv.pl (personal = 1)
tpl_addr_reg = "address-not-registered" # used by uvvote.pl (personal = 1)
tpl_no_ballotid = "no-ballotid" # used by uvvote.pl (personal = 1)
tpl_wrong_ballotid = "wrong-ballotid" # used by uvvote.pl (personal = 1)
tpl_bdsg_error = "bdsg-error" # used by uvvote.pl (bdsg = 1)
tpl_ack_mail = "ack-mail" # used by uvvote.pl (voteack = 1)
tpl_cancelled = "cancelled" # used by uvvote.pl
tpl_invalid_account = "invalid-account" # used by uvvote.pl
tpl_invalid_name = "invalid-name" # used by uvvote.pl
tpl_multiple_votes = "multiple-votes" # used by uvvote.pl
tpl_no_ballot = "no-ballot" # used by uvvote.pl
tpl_no_votes = "no-votes" # used by uvvote.pl
tpl_rule_violated = "rule-violated" # used by uvvote.pl (c.f. usevote.rul)

View file

@ -30,14 +30,12 @@
# N eine NEIN-Stimme # N eine NEIN-Stimme
# E eine Enthaltung # E eine Enthaltung
# S eine JA- oder NEIN-Stimme # S eine JA- oder NEIN-Stimme
# H eine Enthaltung oder JA-Stimme
# I eine Enthaltung oder NEIN-Stimme # I eine Enthaltung oder NEIN-Stimme
# . egal (Ja, nein oder Enthaltung) # . egal (Ja, nein oder Enthaltung)
# j eine oder mehrere der markierten Gruppen hat JA-Stimme # j eine oder mehrere der markierten Gruppen hat JA-Stimme
# n "" "" "" "" "" "" "" NEIN-Stimme # n "" "" "" "" "" "" "" NEIN-Stimme
# e "" "" "" "" "" "" "" Enthaltung # e "" "" "" "" "" "" "" Enthaltung
# s "" "" "" "" "" "" "" Ja- oder Nein-Stimme # s "" "" "" "" "" "" "" Ja- oder Nein-Stimme
# h "" "" "" "" "" "" "" Enthaltung oder Ja-Stimme
# i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme # i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme
# #
# Alles klar? Jede Stimme wird mit den Symbolen verglichen, und wenn alle # Alles klar? Jede Stimme wird mit den Symbolen verglichen, und wenn alle

76
usevote.tpl.cfg Normal file
View file

@ -0,0 +1,76 @@
include /home/gvv/usevote/usevote.global.cfg
########################################################################
# Diese Einstellungen muessen fuer jede Abstimmung angepasst werden
########################################################################
# Name der Abstimmung
votename = [INSERT_HERE]
# Abstimmungsgegenstaende (beliebig viele groupX moeglich,
# von 1 an durchzunummerieren)
group1 = [INSERT_HERE]
# Mailbox, in der die zu verarbeitenden Mails liegen (falls smtp=0)
votefile = votes
# Bei den folgenden Fragen bedeutet jeweils:
# 0: nein
# 1: ja
# Persoenliche Wahlscheine generieren und Scheinkennung erzwingen?
personal = 0
# Verhaeltniswahl durchfuehren? (z.B. fuer Moderationsnachwahlen)
proportional = 0
# Formel fuer die Berechnung des Verhaeltnisses. Kann z.B.
# $yes/$no oder $yes-$no sein, letzteres wird bei Moderationsnachwahlen
# verwendet. Als Variablen sind $yes und $no zulaessig, es kann
# beliebiger Perlcode angegeben werden, dessen Rueckgabewert im
# Result erscheinen soll. Ausserdem wird bei der Auswertung die
# Bedingung aus "condition1" weiter unten in dieser Datei ausgewertet.
prop_formula = $yes/$no
# Vote-Account (diese Adresse muss unbedingt korrekt sein, wird
# in das Reply-To uebernommen)
voteaccount = [INSERT_HERE]@gvv.th-h.de
# Absender fuer den From-Header der Bestaetigungsmails
mailfrom = Thomas Hochstein <votetaker@gvv.th-h.de>
# Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
# (bitte einfach nur die Adresse eintragen, ohne Klammern und Zusaetze)
envelopefrom = [INSERT_HERE]@gvv.th-h.de
# Nur bei persoenlichen Wahlscheinen: Datei mit Anforderungsmails
# requestfile = anforderung
# Datenschutzklausel generieren und auf deren Existenz pruefen?
# Konfiguration siehe unten (bdsgtext)
bdsg = 1
# Reply-To beachten?
# Nicht empfohlen, da jemand fuer andere Personen abstimmen und
# die Bestaetigungen zu sich umlenken koennte.
replyto = 0
# Stimmen einzeln bestaetigen? Empfohlen!
voteack = 1
# Bcc-Adresse fuer alle Mails (Backup fuer alle Faelle)
#
mailcc = gvv@greenmeadow.szaf.org
# Bedingungen fuer einen Erfolg der Abstimmung (genau zwei erforderlich).
# Es muss sich jeweils um gueltigen Perl-Code handeln, Rueckgabewert
# wird boolesch ausgewertet (true/false). Als Variablen sind $yes
# und $no zugelassen. Falls oben "proportional = 1" gesetzt wurde,
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
# werden.
# condition1 = $yes>=2*$no
# condition2 = $yes>=60
condition1 = $yes>=2*$no
condition2 = $yes>=60
mailcmd = /usr/sbin/sendmail -oi -oem -f[INSERT_HERE]@gvv.th-h.de

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.09 Wahlscheingenerierung # UseVoteGer 4.07 Wahlscheingenerierung
# (c) 2001-2005 Marc Langer <uv@marclanger.de> # (c) 2001-2004 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
@ -31,7 +31,7 @@ use UVtemplate;
my %opt_ctl = (); my %opt_ctl = ();
print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2005 Marc Langer\n\n"; print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2004 Marc Langer\n\n";
# unknown parameters remain in @ARGV (for "help") # unknown parameters remain in @ARGV (for "help")
Getopt::Long::Configure(qw(pass_through bundling)); Getopt::Long::Configure(qw(pass_through bundling));

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.09 Bounce-Verarbeitung # UseVoteGer 4.07 Bounce-Verarbeitung
# (c) 2001-2005 Marc Langer <uv@marclanger.de> # (c) 2001-2004 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
@ -33,7 +33,7 @@ my %opt_ctl = ();
my %bounces = (); my %bounces = ();
my $pop3 = 0; my $pop3 = 0;
print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2005 Marc Langer\n\n"; print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2004 Marc Langer\n\n";
# unknown parameters remain in @ARGV (for "help") # unknown parameters remain in @ARGV (for "help")
Getopt::Long::Configure(qw(pass_through bundling)); Getopt::Long::Configure(qw(pass_through bundling));

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.09 Personalisierte Wahlscheine # UseVoteGer 4.07 Personalisierte Wahlscheine
# (c) 2001-2005 Marc Langer <uv@marclanger.de> # (c) 2001-2004 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
@ -35,7 +35,7 @@ use UVtemplate;
my %opt_ctl = (); my %opt_ctl = ();
print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2005 Marc Langer\n\n"; print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2004 Marc Langer\n\n";
# unknown parameters remain in @ARGV (for "help") # unknown parameters remain in @ARGV (for "help")
Getopt::Long::Configure(qw(pass_through bundling)); Getopt::Long::Configure(qw(pass_through bundling));

View file

@ -1,8 +1,8 @@
#!/usr/bin/perl -w #!/usr/bin/perl -w
############################################################################### ###############################################################################
# UseVoteGer 4.09 Wahldurchfuehrung # UseVoteGer 4.07 Wahldurchfuehrung
# (c) 2001-2005 Marc Langer <uv@marclanger.de> # (c) 2001-2004 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
@ -37,7 +37,7 @@ use UVtemplate;
my $clean = 0; my $clean = 0;
my %opt_ctl = (); my %opt_ctl = ();
print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2005 Marc Langer\n\n"; print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2004 Marc Langer\n\n";
# unknown parameters remain in @ARGV (for "help") # unknown parameters remain in @ARGV (for "help")
Getopt::Long::Configure(qw(pass_through bundling)); Getopt::Long::Configure(qw(pass_through bundling));
@ -123,7 +123,7 @@ if ($clean) {
my $ext = time; my $ext = time;
opendir (TMP, $config{tmpdir}); opendir (TMP, $config{tmpdir});
my @tmpfiles = readdir (DIR); my @tmpfiles = readdir (TMP);
closedir (TMP); closedir (TMP);
opendir (FERTIG, $config{archivedir}); opendir (FERTIG, $config{archivedir});
my @fertigfiles = readdir (FERTIG); my @fertigfiles = readdir (FERTIG);
@ -216,7 +216,7 @@ sub process_vote {
my @header = split(/\n/, $entity->stringify_header); my @header = split(/\n/, $entity->stringify_header);
my $head = $entity->head; my $head = $entity->head;
my $msgid = $head->get('Message-ID'); my $msgid = $head->get('Message-ID');
chomp($msgid) if ($msgid); chomp($msgid) if defined($msgid);
my @votes = (); # the votes my @votes = (); # the votes
my @set; # interactively changed fields my @set; # interactively changed fields