Initial checkin of personal version.
authorThomas Hochstein <thh@inter.net>
Mon, 16 Aug 2010 21:03:19 +0000 (23:03 +0200)
committerThomas Hochstein <thh@inter.net>
Mon, 16 Aug 2010 21:40:20 +0000 (23:40 +0200)
Signed-off-by: Thomas Hochstein <thh@inter.net>
13 files changed:
UVrules.pm
messages.cfg
templates/result-multi
templates/result-single
tmp/ergebnis-1191790177 [deleted file]
tmp/stimmen-1191790177 [deleted file]
usevote.global.cfg [new file with mode: 0644]
usevote.rul
usevote.tpl.cfg [new file with mode: 0644]
uvballot.pl
uvbounce.pl
uvcfv.pl
uvvote.pl

index 76e260f..4325867 100644 (file)
@@ -149,10 +149,10 @@ sub read_rulefile {
       die $errortext . ": $_\n\n" if ($errortext);
  
       # check for correct characters in conditions
       die $errortext . ": $_\n\n" if ($errortext);
  
       # 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",
                             (NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
       }
         die UVmessage::get ("RULES_INVCHARS",
                             (NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
       }
@@ -194,9 +194,8 @@ sub read_rulefile {
 sub make_regex_pos {
   my $pat = $_[0];
  
 sub make_regex_pos {
   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;
  
   return $pat;
   $pat =~ s/I/[EN]/g;
  
   return $pat;
@@ -217,19 +216,22 @@ sub make_regex_neg {
  
   # upper case characters are replaced with dots
   # (are covered by make_regex_pos)
  
   # upper case characters are replaced with dots
   # (are covered by make_regex_pos)
-  $pat =~ s/[HIJENS]/./g;
+  $pat =~ s/[JENS]/./g;
  
   # reverse lower case characters
   $pat =~ s/j/[NE]/g;
   $pat =~ s/n/[JE]/g;
   $pat =~ s/e/[JN]/g;
   $pat =~ s/s/E/g;
  
   # reverse lower case characters
   $pat =~ s/j/[NE]/g;
   $pat =~ s/n/[JE]/g;
   $pat =~ s/e/[JN]/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
-  # replaced with dots and the RegEx would match everything, i.e. declare
-  # every vote as invalid. In this case an empty pattern is returned.
+  # to be translated:
+  # Falls keine Kleinbuchstaben vorkamen (es sind nur Punkte uebrig):
+  # 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/^\.+$//;
  
   return $pat;
   $pat =~ s/^\.+$//;
  
   return $pat;
@@ -303,10 +305,6 @@ sub rule_print {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (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') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
     } elsif ($rule[$i] eq 'I') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
@@ -324,10 +322,6 @@ sub rule_print {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
                                (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') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
     } elsif ($rule[$i] eq 'i') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_IFCLAUSE",
@@ -363,10 +357,6 @@ sub rule_print {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (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') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
     } elsif ($rule[$i] eq 'I') {
       $fill = "    $and ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
@@ -384,10 +374,6 @@ sub rule_print {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
                                (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') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
     } elsif ($rule[$i] eq 'i') {
       $fill = "    $or ";
       $text1 = UVmessage::get ("RULES_THENCLAUSE",
index 6b1dd5d..1ea665e 100644 (file)
@@ -154,7 +154,6 @@ CFV_SUBJECT = Wahlschein
 #
 COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
 COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE}
 #
 COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
 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.
 #
 # uvvote.pl
 COUNT_DELETED = ${NUM} Stimme(n) geloescht.
 #
 # uvvote.pl
index cc3659b..9a065ac 100644 (file)
@@ -11,12 +11,13 @@ group-more            := value group | drop-words 40 | create-lines 40
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
 
 Ergebnisse [$votename-first]
 [@votename-more|           [$line]\n]
-([$numvalid] gueltige Stimmen)
+
+Es wurden [$numvalid] gueltige Stimmen abgegeben.
 
  Ja  Nein : 2/3? >=60? : ang.? : Gruppe
 ---- ---- : ---- ----- : ----- : ---------------------------------------
 [@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein]  : [?result| Ja |Nein]  : [$group-first]
 
  Ja  Nein : 2/3? >=60? : ang.? : Gruppe
 ---- ---- : ---- ----- : ----- : ---------------------------------------
 [@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]
 [?numinvalid|[$numinvalid] ungueltige Stimme(n)]
 
 [?numabstain|[$numabstain-formatted] Enthaltungen]
 [?numinvalid|[$numinvalid] ungueltige Stimme(n)]
 
index 1be10d2..355aa4a 100644 (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.]
 
 Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
 [?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
 
 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]
-[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
+60 Ja-Stimmen ein. Damit ist die [$votename-first]
+[@votename-more|[$line]|\n] [?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
 
 Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 
 Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
diff --git a/tmp/ergebnis-1191790177 b/tmp/ergebnis-1191790177
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/tmp/stimmen-1191790177 b/tmp/stimmen-1191790177
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/usevote.global.cfg b/usevote.global.cfg
new file mode 100644 (file)
index 0000000..210d21b
--- /dev/null
@@ -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ür 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ür 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äöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{2,} +.*[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{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)
index 4d9a6c6..e8f4501 100644 (file)
 #   N  eine NEIN-Stimme
 #   E  eine Enthaltung
 #   S  eine JA- oder NEIN-Stimme
 #   N  eine NEIN-Stimme
 #   E  eine Enthaltung
 #   S  eine JA- oder NEIN-Stimme
-#   H   eine Enthaltung oder JA-Stimme
 #   I   eine Enthaltung oder NEIN-Stimme
 #   .  egal (Ja, nein oder Enthaltung)
 #   j  eine oder mehrere der markierten Gruppen hat JA-Stimme
 #   n   ""   ""    ""     ""     ""       ""    ""  NEIN-Stimme
 #   e   ""   ""    ""     ""     ""       ""    ""  Enthaltung
 #   s   ""   ""    ""     ""     ""       ""    ""  Ja- oder Nein-Stimme
 #   I   eine Enthaltung oder NEIN-Stimme
 #   .  egal (Ja, nein oder Enthaltung)
 #   j  eine oder mehrere der markierten Gruppen hat JA-Stimme
 #   n   ""   ""    ""     ""     ""       ""    ""  NEIN-Stimme
 #   e   ""   ""    ""     ""     ""       ""    ""  Enthaltung
 #   s   ""   ""    ""     ""     ""       ""    ""  Ja- oder Nein-Stimme
-#   h   ""   ""    ""     ""     ""       ""    ""  Enthaltung oder Ja-Stimme
 #   i   ""   ""    ""     ""     ""       ""    ""  Enthaltung oder Nein-Stimme
 #
 # Alles klar?  Jede Stimme wird mit den Symbolen verglichen, und wenn alle
 #   i   ""   ""    ""     ""     ""       ""    ""  Enthaltung oder Nein-Stimme
 #
 # Alles klar?  Jede Stimme wird mit den Symbolen verglichen, und wenn alle
diff --git a/usevote.tpl.cfg b/usevote.tpl.cfg
new file mode 100644 (file)
index 0000000..40dcbbe
--- /dev/null
@@ -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
index 4085a7f..b57bd02 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahlscheingenerierung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Wahlscheingenerierung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # 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
 # 
 # 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
@@ -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")
 Getopt::Long::Configure(qw(pass_through bundling));
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index 1bf5139..b144c74 100644 (file)
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Bounce-Verarbeitung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Bounce-Verarbeitung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # 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
 # 
 # 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
@@ -33,7 +33,7 @@ my %opt_ctl = ();
 my %bounces = ();
 my $pop3 = 0;
 
 my %bounces = ();
 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")
 Getopt::Long::Configure(qw(pass_through bundling));
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index 74174c6..e5a9691 100644 (file)
--- a/uvcfv.pl
+++ b/uvcfv.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Personalisierte Wahlscheine
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Personalisierte Wahlscheine
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # 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
 # 
 # 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
@@ -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")
 Getopt::Long::Configure(qw(pass_through bundling));
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
index a86ef43..5dd26ff 100644 (file)
--- a/uvvote.pl
+++ b/uvvote.pl
@@ -1,8 +1,8 @@
 #!/usr/bin/perl -w
 
 ###############################################################################
 #!/usr/bin/perl -w
 
 ###############################################################################
-# UseVoteGer 4.09 Wahldurchfuehrung
-# (c) 2001-2005 Marc Langer <uv@marclanger.de>
+# UseVoteGer 4.07 Wahldurchfuehrung
+# (c) 2001-2004 Marc Langer <uv@marclanger.de>
 # 
 # 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
 # 
 # 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
@@ -37,7 +37,7 @@ use UVtemplate;
 my $clean = 0;
 my %opt_ctl = ();
 
 my $clean = 0;
 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")
 Getopt::Long::Configure(qw(pass_through bundling));
 
 # unknown parameters remain in @ARGV (for "help")
 Getopt::Long::Configure(qw(pass_through bundling));
@@ -123,7 +123,7 @@ if ($clean) {
   my $ext = time;
 
   opendir (TMP, $config{tmpdir});
   my $ext = time;
 
   opendir (TMP, $config{tmpdir});
-  my @tmpfiles = readdir (DIR);
+  my @tmpfiles = readdir (TMP);
   closedir (TMP);
   opendir (FERTIG, $config{archivedir});
   my @fertigfiles = readdir (FERTIG);
   closedir (TMP);
   opendir (FERTIG, $config{archivedir});
   my @fertigfiles = readdir (FERTIG);
@@ -216,7 +216,7 @@ sub process_vote {
   my @header = split(/\n/, $entity->stringify_header);
   my $head = $entity->head;
   my $msgid = $head->get('Message-ID');
   my @header = split(/\n/, $entity->stringify_header);
   my $head = $entity->head;
   my $msgid = $head->get('Message-ID');
-  chomp($msgid) if ($msgid);
+  chomp($msgid) if defined($msgid);
 
   my @votes = ();              # the votes
   my @set;                     # interactively changed fields
 
   my @votes = ();              # the votes
   my @set;                     # interactively changed fields
This page took 0.022253 seconds and 4 git commands to generate.