1 UseVoteGer 4.09 (c) 2001-2007 Marc Langer
3 UseVoteGer is a voting software for usenet votes.
5 This script package is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Public License as published by the
7 Free Software Foundation.
10 - Ron Dippold (Usevote 3.0, 1993/94)
11 - Frederik Ramm (German translation, 1994)
12 - Wolfgang Behrens (UseVoteGer 3.1, based on Frederik's translation, 1998/99)
13 - Cornell Binder for some good advice and code fragments
14 (e.g. UVtemplate.pm, UVformats.pm)
16 This is a complete rewrite of UseVoteGer 3.1 in Perl (former versions were
17 written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
19 -------------------------------------------------------------------------------
21 UseVoteGer 4.09 - Usenet-Abstimmungssoftware
22 ===========================================
24 von Marc Langer <uv@marclanger.de>
26 aktuelle Versionen: http://www.usevote.de
33 2. Usevote fuer Ungeduldige
34 3. Kompatibilitaet zu frueheren Versionen
36 5. Anfangs-Konfiguration
37 6. Konfiguration fuer einzelne Abstimmungen
38 7. Wahlschein generieren
39 8. Stimmen verarbeiten
40 9. Unzustellbare Bestaetigungen
43 12. Personalisierte Wahlscheine
44 13. Die einzelnen Programme
45 14. Die Konfigurationsdateien
52 Diese Software vereinfacht die Durchfuehrung von Usenet-Abstimmungen.
53 Usevote in der Urversion wurde von Ron Dippold fuer die Reorganisation
54 der Gruppe comp.sys.ibm.pc.games geschrieben und spaeter fuer die
55 allgemeine Verwendung verbessert.
57 Die deutsche Uebersetzung von Frederik Ramm diente jahrelang als
58 Grundlage fuer CfV-Auswertungen im deutschsprachigen Raum.
59 Wolfgang Behrens von den German Volunteer Votetakers (GVV) passte
60 es spaeter an neue Begebenheiten (z.B. personalisierte Wahlscheine)
61 an. Jedoch liefen die UseVoteGer 3.1beta-Versionen aufgrund eines
62 unbekannten Fehlers nicht auf jedem System (Segmentation Fault).
64 Um groessere Flexibilitaet und Plattformunabhaengigkeit zu bieten,
65 habe ich mich entschlossen, UseVoteGer in Perl neu zu implementieren.
66 Getestet wurde diese Version mit Perl 5.x unter Linux sowie
67 ActiveState Perl unter Windows 98.
70 2. Usevote fuer Ungeduldige
71 ===========================
73 I. Einmalig bei der Usevote-Erstinstallation
74 (1) usevote.cfg nach Bedarf anpassen (selbsterklaerend)
75 ACHTUNG: Unter Windows gibt es das Programm "less" nicht, da "more"
76 aber einigermassen broken ist, sollte man sich less fuer Windows
77 herunterladen: http://www.greenwoodsoftware.com/less/less381d.zip
78 Notfalls laesst sich auch in usevote.cfg die Einstellung "pager"
79 auf "more" setzen, aber viel Freude hat man damit nicht...
80 (2) Evtl. die Templates im gleichnamigen Unterverzeichnis fuer
81 eigenen Geschmack anpassen. Die Templates enthalten saemtliche
82 Texte fuer Bestaetigungs-/Fehlermails sowie die Ausgabeformate
83 und Texte fuer die CfVs und das Result.
84 (3) Perlmodule MIME::Parser, MIME::QuotedPrint, Digest::MD5,
85 Date::Parse und Email::Date installieren, falls noch nicht vorhanden.
86 Bei Benutzung von POP3 oder SMTP (siehe usevote.cfg) muss
87 Libnet installiert sein (Net::POP3 und Net::SMTP).
88 (Fuer Perl-Einsteiger: Unter Unix geht die Modul-Installation
89 sehr einfach mit "perl -MCPAN -e shell", ActivePerl fuer
90 Windows hat einen eigenen Paketmanager)
92 Achtung: Bei meinem ActivePerl 5.6.1 war eine alte Libnet-Version
93 enthalten, die noch keine SMTP-Authentication unterstuetzte.
94 Bei Benutzung dieses Features muss evtl. erst upgedated werden.
97 (1) usevote.cfg auf das durchzufuehrende Voting anpassen
99 (2) bei Sonderregeln (Abhaengigkeiten der einzelnen Abstimmungspunkte)
100 in usevote.rul Regeln definieren (selbsterklaerend)
101 (3) CfV erstellen und Wahlschein mit uvballot.pl generieren
102 (4) Fertigen CfV einreichen und auf Veroeffentlichung warten ;-)
103 (5) Bis zum 2. CfV regelmaessig (an den ersten Tagen mehrmals taeglich,
104 spaeter einmal taeglich) dies tun:
105 - uvvote.pl durchlaufen lassen
106 - im Verzeichnis tmp/ die Datei ergebnis.* (Ergebnis der Auswertung)
107 und evtl. ack.* (Bestaetigungsmails an die Waehler) kontrollieren
108 - Falls es Probleme gab: Bitte den Abschnit "Stimmen verarbeiten"
109 weiter unten in dieser Datei genau durchlesen. Dort steht
110 beschrieben, wie Fehler korrigiert werden koennen
111 - "uvvote.pl clean" aufrufen, um die Bestaetigungen zu verschicken
112 und das Ergebnis zu speichern/archivieren
113 - Falls Wahlbestaetigungen als unzustellbar zurueckkommen, solltest
114 Du diese zusammen in einer Datei speichern oder in ein spezielles
116 (6) Zwischenbestaetigung fuer den 2. CfV mit "uvcount.pl -l" erzeugen und
117 veroeffentlichen. Falls Wahlbestaetigungen als unzustellbar
118 zurueckkamen, kannst Du mit "uvbounce.pl dateiname" automatisch eine
119 Liste der ungueltigen Adressen erzeugen ("dateiname" ist die Datei,
120 in die Du zuvor die Bounces gespeichert hattest). Siehe auch Abschnitt
121 "Unzustellbare Bestaetigungen" weiter unten in dieser Datei, dort
122 ist auch erklaert, wie die Bounces aus einem POP3-Postfach gelesen
124 (7) Bis zum Result wieder wie (5)
125 (8) Zum vorgegebenen Zeitpunkt die Wahl abschliessen,
126 mit "uvcount.pl -r -v" Endergebnis erzeugen und veroeffentlichen
127 (zuvor wiederum Liste der ungueltigen Mailadressen erzeugen, siehe
130 Weitere Details finden sich im Folgenden.
131 Jeder Nutzer dieser Software sollte sich diesen Text wenigstens einmal
134 Abschnitt 6 beschreibt, wie mehrere Abstimmungen gleichzeitig durchgefuehrt
135 werden koennen, ohne saemtliche Programmdateien zu kopieren.
138 3. Kompatibilitaet zu frueheren Versionen
139 =========================================
141 - englische Usevote-Versionen: keine Kompatibilitaet
143 - deutsche Usevote-Versionen (Usevote 3.0a, UseVoteGer 3.1):
144 * Wahlscheine haben neue Markierungen zum sicheren Erkennen
145 der Stimmen. Bisherige Wahlscheine sind mit dieser Version
146 nicht mehr einsetzbar!
148 * acktext.txt gibt es nicht mehr, statt dessen sind im Unterverzeichnis
149 "templates" Vorlagen zu finden, die diese Texte enthalten.
151 * usevote.cfg ist komplett inkompatibel
153 * usevote.rul: voll kompatibel, ohne Einschraenkungen
155 * Ergebnisdateien: Inhalt kompatibel, aber Namensgebung geaendert
156 (obwohl irrelevant, da Umstieg auf diese Version waehrend
157 einer laufenden Wahl nicht moeglich)
159 * scheinkennungen: Dateiformat gaendert (aus selbigen Gruenden
160 nicht weiter wichtig)
162 * uvshell: integriert in uvvote.pl, ueber usevote.cfg steuerbar
164 * uvvote.pl: Aufrufparameter geaendert / Zusammenfuehrung mit uvshell
166 * uvcfv.pl: Alte Funktionalitaet ist nicht mehr implementiert,
167 statt dessen dient das Tool jetzt zum Generieren der persoenlichen
168 Wahlscheine und Verschicken des CfV an die Waehler
170 * uvcount.pl: Beinhaltet auch uvack und uvdup. Drei Einzelprogramme
171 schienen mir ineffizient.
173 * uvbounce.pl: Ausgabeformat etwas anders
179 * Ausgelieferte Dateien:
181 CHANGES Versionsaenderungen
182 COPYING GNU General Public License
184 UVconfig.pm Routinen zum Einlesen und Pruefen der Konfiguration
185 UVformats.pm Routinen zum Formatieren von Texten in Templates
186 UVmenu.pm Routinen zur Interaktion mit dem Wahlleiter
187 UVmessage.pm Routinen zum Parsen von Texten und Ersetzen von Platzhaltern
188 UVreadmail.pm Routinen zum Einlesen und MIME-Decodieren der Mails
189 UVrules.pm Routinen zur Regelverarbeitung (usevote.rul)
190 UVsendmail.pm Routinen zum Erzeugen von Mails
191 UVtemplate.pm Routinen zur Verarbeitung von Vorlagen (Templates)
192 bdsgtext.cfg Spezieller Text fuer den Wahlschein (Hinweis auf
193 Datenschutzgesetz), muss ausserhalb Deutschlands ggfls.
194 angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
195 mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen
196 messages.cfg Programm-Meldungen (Ressourcen-Datei)
197 scheinkennungen Speicherung der Scheinkennungen bei personalisierten
198 Wahlscheinen. Muss zu Beginn der Abstimmung leer sein.
199 usevote.cfg Konfigurationsdatei
200 usevote.rul Abstimmungsregeln
201 uvballot.pl Wahlschein aus Abstimmungsdaten erstellen
202 uvbounce.pl Listen von unzustellbaren Bestaetigungen erzeugen
203 uvcfv.pl Erstellen und Verschicken von personalisierten Wahlscheinen
204 uvcount.pl Stimmenzaehlung, Erstellen von Waehlerlisten und
205 Aussortieren von doppelten Stimmabgaben
206 uvvote.pl Stimmen verarbeiten (fuer die taegliche Arbeit)
208 templates/ Verzeichnis mit Templates (Vorlagen)
209 ack-mail Template fuer Bestaetigungsmails
210 address-not-registered Fehlermail: Noch keine Scheinkennung fuer Adresse
212 ballot Template fuer einen Wahlschein
213 ballot-personal Template fuer personalisierten Wahlschein
214 ballot-request Template fuer eine Wahlscheinanforderung
215 bdsg-error Fehlermail: Datenschutzklausel nicht akzeptiert
216 bouncelist Template fuer Liste der ungueltigen Mailadressen
217 cancelled Template fuer Bestaetigung der Stimmannullierung
218 invalid-account Fehlermail: Fragwuerdige Mailadresse (Role Account)
219 invalid-name Fehlermail: Kein gueltiger Name in Mail/Wahlschein
221 mailheader Template fuer den Header von Mails an die Waehler
222 multiple-votes Fehlermail: Widerspruechliche Stimmen im Wahlschein
223 no-ballot Fehlermail: Kein Wahlschein in Mail gefunden
224 no-ballotid Fehlermail: Keine Wahlscheinkennung gefunden
225 no-votes Fehlermail: Keine Stimmen abgegeben
226 result-multi Template fuer ein Wahlergebnis mit mehreren Gruppen
227 result-single Template fuer ein Wahlergebnis mit einer Gruppe
228 result-proportional Template fuer ein Wahlergebnis, bei dem das Verhaeltnis
229 oder die Differenz von Ja- und Nein-Stimmen entscheidet
230 (z.B. Moderationsnachwahlen, "proportional=1" gesetzt)
231 rule-violated Fehlermail: Wahlregeln aus usevote.rul verletzt
232 voterlist Template fuer eine Waehlerliste (2. CfV)
233 votes-multi Template fuer eine Stimmenliste mit mehreren Gruppen
234 votes-single Template fuer eine Stimmenliste bei einer Gruppe
235 wrong-ballotid Fehlermail: Falsche Wahlscheinkennung angegeben
237 * Beim Programmlauf erstellte Dateien (Name ist konfigurierbar):
239 ergebnis.alle Saemtliche Einzelergebnisse zusammengefasst (wird
240 bei jedem Lauf von uvvote.pl neu erstellt)
241 errors.log Fehlermeldungen, die beim Programmlauf auftauchen,
242 werden hier abgelegt. Normalerweise bleibt die Datei
243 leer, ansonsten wird beim Programmende eine Warnung
244 mit Verweis auf die Datei ausgegeben.
245 uidlcache Eindeutige IDs der abgerufenen Mails (bei Benutzung
246 von POP3). Darf waehrend einer laufenden Abstimmung
247 keinesfalls geloescht werden, um Mehrfachzaehlung von
248 Stimmen zu verhindern.
249 uidlcache_req dto, fuer die Mailbox mit den Wahlscheinanforderungen
250 (bei Verwendung von personalisierten Wahlscheinen)
251 uidlcache_bounce dto, fuer die Mailbox mit den Bounces (wird von
252 uvbounce.pl ausgewertet)
253 usevote.lock Temporaere Lockdatei, um gleichzeitiges Ausfuehren
254 mehrerer Instanzen zu verhindern. Kann (falls vorhanden)
255 gefahrlos geloescht werden, wenn gerade keines der
256 Usevote-Scripts laeuft.
258 * Folgende Unterverzeichnisse werden von Usevote im aktuellen
259 Verzeichnis (CWD) angelegt:
261 fertig/ Verzeichnis fuer Archivierung verarbeiteter Dateien
262 tmp/ Verzeichnis fuer temporaere Dateien
264 * Von Usevote dort erstellte Dateien:
266 ack.* Bestaetigungsmails (in tmp/)
267 ack.control Steuerungsdatei fuer Bestaetigungsmails (in tmp/)
268 domail Shellscript zum Verschicken der Mails (in tmp/)
269 ergebnis.* Ergebnisdateien einzelner Durchlaeufe (zunaecht in tmp/,
270 spaeter nach fertig/ verschoben und archiviert)
271 stimmen.* Archivierte Stimmendateien (dto.)
274 5. Anfangs-Konfiguration
275 ========================
277 Zuerst solltest Du "usevote.cfg" fuer Dein System anpassen (Details
278 dort in den Kommentarzeilen und weiter hinten in dieser Dokumentation).
279 Unter Windows werden die Regular Expressions fuer die Stimmenerkennung
280 moeglicherweise lauter unlesbare Zeichen enthalten (anderer Zeichensatz),
281 dort sollten saemtliche in Namen vorkommende Umlaute und Buchstaben mit
282 Accents etc. aufgefuehrt werden. Weiter ist bei Nutzung von Windows zu
283 beachten, dass das Kommando zum Loeschen des Bildschirms "cls" und nicht
284 "clear" heisst. Dazu gibt es auch eine Einstellung in usevote.cfg. Den
285 standardmaessig eingestellten Pager "less" gibt es unter Windows zunaechst
286 nicht, more ist aber so buggy, dass man sich am besten "less" fuer
287 Windows herunterladen sollte:
288 http://www.greenwoodsoftware.com/less/less381d.zip
290 Im Unterverzeichnis "templates" findest Du Vorlagen, die fuer die
291 einzelnen Bestaetigungstexte, Mails, Wahlscheine und Waehlerlisten
292 verwendet werden. Hier kannst Du unter Beachtung der Syntax (siehe
293 gesonderte Dokumentation) alle Texte an Deinen Geschmack und Deine
294 Beduerfnisse anpassen.
297 6. Konfiguration fuer einzelne Abstimmungen
298 ===========================================
300 Fuer jede Abstimmung muss eine eigene Konfigurationsdatei geschrieben
301 werden. Aendere einfach usevote.cfg entsprechend der Regeln fuer die
302 betreffende Abstimmung. Falls Du haeufiger Wahlleiter spielst, solltest
303 Du Dir eine globale Konfigurationsdatei mit Standardeinstellungen
304 (z.B. als ~/.usevote-defaults.cfg) anlegen und in der usevote.cfg nur
305 noch die Einstellungen setzen, die sich fuer jede Abstimmunge aendern.
306 Die globale Datei kann am Anfang der usevote.cfg mit folgender Zeile
309 include ~/.usevote-defaults.cfg
311 Zu beachten ist aber, dass jeweils die letzte Definition einer Option
312 benutzt wird. Die usevote.cfg sollte daher wirklich nur noch
313 abstimmungsspezifische Einstellungen enthalten, um nicht versehentlich
314 die globalen Optionen zu überschreiben.
316 Ausserdem muss die Datei "usevote.rul" geprueft werden. Wenn Deine
317 Abstimmung irgendwelche speziellen Regeln enthaelt (z.B. man kann
318 nur fuer Gruppe x stimmen, wenn man auch fuer y gestimmt hat, oder man
319 muss fuer den .misc-Abschnitt stimmen, wenn man fuer irgendeinen
320 anderen Abschnitt gestimmt hat), dann solltest Du diese Datei lesen
321 und entsprechend aendern. Allerdings empfiehlt es sich, bereits im
322 RfD deutlich auf die Regeln hinzuweisen, die zur Anwendung kommen sollen.
323 Die eingegebenen Regeln koennen dann mit "uvvote -t" getestet werden.
325 Es ist auch moeglich, mehrere Abstimmungen gleichzeitig durchzufuehren,
326 ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
327 sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
328 usevote.cfg, darin können alle anderen Pfade angepasst werden):
337 Ggf. sollte das "templates"-Verzeichnis kopiert werden, falls
338 individuelle Templates fuer einzelne Abstimmungen verwendet werden.
340 Außerdem muessen i.d.R. einige Pfade in der usevote.cfg angepasst
341 werden. Dadurch ist auch die Angabe eines anderen Verzeichnisses
342 fuer einige der oben genannten Konfigurationsdateien moeglich,
343 falls diese zentral gepflegt werden sollen (z.B. messages.cfg und
346 Damit die Usevote-Perlmodule gefunden werden, sollten sie im
347 selben Verzeichnis wie die Programmdateien liegen bleiben. Ansonsten
348 muss eine Umgebungsvariable gesetzt werden:
352 .. steht für das übergeordnete Verzeichnis. Ggf. muss hier ein
353 absoluter Pfad eingetragen werden, wenn das Abstimmungsverzeichnis
354 kein Unterverzeichnis des Usevote-Verzeichnisses ist.
356 Je nach Betriebssystem kann die obige Zeile etwas anders aussehen,
357 unter Windows sollte z.B. "SET PERL5LIB=C:\PERL\USEVOTE" in die
358 autoexec.bat aufgenommen oder sonstwie ausgeführt werden (Pfad
359 natürlich entsprechend anpassen).
362 7. Wahlschein generieren
363 ========================
365 Der Wahlschein ist ein Abschnitt des CfV, den die Leute zur Stimmabgabe
366 ausfuellen und zurueckschicken sollen. Am einfachsten erzeugst Du
367 diesen nach Anpassung der Konfiguration und ggfls. des Templates
368 mit "uvballot.pl". Folgendes Format ist erforderlich:
374 Eine zusaetzliche Beschreibung rechts daneben macht es dem Waehler
375 einfacher, ist aber fuer Usevote nicht zwingend erforderlich. Wichtig
376 sind nur die fortlaufenden Nummern, die entsprechend der Eintraege
377 in usevote.cfg zugeordnet werden.
379 Je nach Konfiguration koennen weitere Zeilen noetig sein, dazu spaeter.
381 Als Stimme in den eckigen Klammern werden diverse Strings erkannt,
382 die in usevote.cfg definiert werden koennen. JA, NEIN und ENTHALTUNG
383 sind Standard, einige Abwandlungen sind ebenfalls moeglich.
384 Zusaetzlich kann ANNULLIERUNG verwendet werden, um eine schon abgegebene
385 Stimme zu loeschen und somit nicht im Result aufzutauchen.
387 Bei der Verwendung von persoenlichen Wahlscheinen (Abschnitt 6a der
388 Wahlregeln fuer de.*) ist das Vorgehen etwas anders, siehe hierzu
389 den gesonderten Abschnitt weiter hinten.
392 8. Stimmen verarbeiten
393 ======================
395 Falls POP3 nicht benutzt werden soll (siehe usevote.cfg), werden alle
396 Wahlmails zu einer Abstimmung aus einer Mailboxdatei gelesen
397 (Name/Pfad der Datei in usevote.cfg einstellbar). Standardmaessig
398 wird das Unix-Mailboxformat erkannt, dieses ist aber ueber "mailstart"
399 in usevote.cfg konfigurierbar (bei komplett anderen Formaten muesste
400 der Quellcode geaendert werden).
402 Wechsele nun in das Verzeichnis, in dem die passenden
403 Konfigurationsdateien liegen (normalerweise werden diese aus
404 dem aktuellen Verzeichnis gelesen, was mehrere gleichzeitige
405 Verfahren moeglich macht) und starte uvvote.pl. Bei Problemen
406 mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
407 Meistens gibt es folgende Moeglichkeiten, die durch die
408 eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
410 (1) Anzeigen der Wahlmail
412 Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
417 (6) Datenschutzklausel
419 (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
422 Teilweise gibt es Unteroptionen:
423 (a) OK (Zweifel sind unbegründet, ist alles in Ordnung)
424 (b) Aendern (z.B. wenn der Realname von Usevote nicht vollstaendig
426 (c) Ungueltig (es handelt sich nach Deinem Ermessen nicht um
427 eine gueltige Stimmabgabe)
429 Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
430 der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
431 oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
433 Mit den Optionen (2) bis (6) kannst Du einzelne Eigenschaften
434 des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
435 eine Stimme nicht korrekt erkannt hat) oder auch einfach die
436 Korrektheit bestaetigen.
438 Wenn Du alle oben auf der Seite aufgelisteten Maengel beseitigst,
439 indem Du die entsprechenden Optionen waehlst, wird die Stimme
440 akzeptiert. Bleiben Zweifel unausgeraeumt, wird eine entsprechende
441 Fehlermail verschickt (Du erhaeltst dann noch eine gesonderte
444 Zum Schluss kannst Du (w) wählen, um fortzufahren. Möchtest Du,
445 dass eine Stimme komplett ignoriert wird (weil es sich z.B.
446 um Spam handelt), kannst Du (i) waehlen und die folgende
447 Sicherheitsfrage mit "JA" beantworten.
449 Ist uvvote.pl durchgelaufen, koennen im Unterverzeichnis tmp/
450 (wird ebenfalls aktuellen Verzeichnis angelegt!) die ermittelten
451 Ergebnisse und erzeugten Mails an die Waehler noch einmal geprueft
452 werden. Ist alles in Ordnung, werden mittels "uvvote.pl clean"
453 die Mails verschickt und die Ergebnisse gespeichert sowie die
454 Originalmails archiviert. Hierzu wird das Verzeichnis fertig/
457 Falls der komplette uvvote-Lauf verworfen werden soll, kann
458 die Datei mit den Waehlermails (stimmen-xyz im tmp-Verzeichnis,
459 xyz entspricht der aktuellen Unixtime waehrend des Durchlaufs)
460 wieder an den urspruenglichen Platz zurueckkopiert werden
461 (bei POP3: fuer den Neuversuch POP3 abschalten und die
462 Maildatei einlesen lassen, da auf dem Server die Mails
463 moeglicherweise geloescht wurden) und das komplette tmp-Verzeichnis
464 geloescht werden. Anschliessend den uvvote-Lauf erneut durchfuehren.
465 Wichtig ist nur, dass das Verzeichnis fertig/ waehrend der ganzen
466 Abstimmung mitsamt seines Inhaltes erhalten bleibt.
468 Noch ein kurzes Wort zum Verschicken der Mails: Jede Mail wird
469 in einer gesonderten durchnummerierten Datei (ack.1, ack.2, ...)
470 gespeichert, zusaetzlich wird eine Steuerungsdatei ("ack.control")
471 erzeugt, welche zu jeder Mail Dateinamen und Empfaenger auflistet.
472 Je nach Einstellung werden die Mails dann per SMTP verschickt oder
473 es wird ein Shellscript ("domail") erzeugt, welches nach und
474 nach die Mails in Sendmail einspeist. Zwecks Serialisierung ist
475 in usevote.cfg die Einstellung "sleepcmd" konfigurierbar,
476 normalerweise wird ein "sleep 1" nach jeder Mail ausgefuehrt.
477 Das Verschicken der Mails (und damit ggfls. der Aufruf von "domail")
478 erfolgt automatisch mit "uvvote.pl clean".
480 Unter Windows ist nur SMTP moeglich, es sei denn, es gibt
481 die Befehle sendmail, sleep und rm ;-)
484 9. Unzustellbare Bestaetigungen
485 ===============================
487 Leider kommt es immer mal wieder vor, dass jemand bei der Abstimmung
488 eine ungueltige Mailadresse angegeben hat. In diesem Fall erhaeltst Du
489 einen Bounce an die Absenderadresse zurueck (diese laesst sich in
490 usevote.cfg mit der Option "envelopefrom" einstellen bzw. bei
491 direkten Aufruf eines Mailers über die entsprechende Kommandozeilenoption
492 in der mailcmd-Einstellung, z.B. bei Sendmail -f). Du solltest
493 solche Fehlermails in einer gesonderten Datei speichern oder in
494 einem gesonderten POP3-Postfach halten und beim Erstellen
495 des 2. CfVs und des Results uvbounce.pl aufrufen.
497 Ausgegeben wird von uvbounce.pl eine Liste mit ungueltigen Adressen,
498 die einfach an den Abschnitt "ungueltige Stimmen" des 2. CfVs bzw.
499 Results angehaengt werden kann. Nicht vergessen, die Stimmen manuell
500 aus der Liste der gueltigen Stimmen zu loeschen (falls Du die
501 Policy verfolgst, nur Stimmen mit gueltiger Absenderadresse zu werten,
502 was empfehlenswert ist) und bei Bedarf das Ergebnis zu korrigieren!
508 Zum Erstellen des 2. CfVs kannst Du erst einmal den 1. CfV als Vorlage
509 benutzen. Am Ende sollte allerdings eine Liste der Personen folgen,
510 die bereits abgestimmt haben. Diese laesst sich mit "uvcount.pl -l"
511 erzeugen. Moeglicherweise fragt uvcount.pl wegen scheinbar doppelter
512 Stimmabgaben nach und bietet an, eine oder beide Stimmen zu ignorieren.
513 Du solltest das dann genauer untersuchen und die passende Wahl treffen.
515 Vorsicht bei doppelten Namen: Es gibt einige doppelt vorkommende
516 Namen, hinter denen sich voellig unterschiedliche Personen
517 verbergen! Die Mailadresse sollte in solchen Faellen Auskunft
518 geben koennen, notfalls einmal nachfragen.
520 Das Endergebnis kannst Du mit "uvcount.pl -r" ausgeben lassen.
521 Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
522 das folgende tabellarische Format verwendet:
524 Ja Nein : 2/3? >=60? : ang.? : Gruppe
525 ==== ==== : ==== ===== : ===== : =======================================
526 100 70 : Nein Ja : Nein : Einrichtung von xyz
528 Bei Abstimmungen ueber nur einen Punkt gibt es auch die Moeglichkeit,
529 einen einfachen beschreibenden Text zu verwenden:
530 "Es gab 100 JA und 70 NEIN-Stimmen ...".
532 Falls in usevote.cfg die Einstellung "multigroup = 1" gesetzt ist,
533 wird immer die tabellarische Form gewaehlt, bei "multigroup = 0"
534 benutzt uvcount.pl bei nur einem Abstimmungspunkt den beschreibenden
535 Text. Überschreiben laesst sich dieses mit Aufrufparametern:
537 uvcount.pl -r -m = Tabellarisch (m = multigroup)
538 uvcount.pl -r -o = Text (o = onegroup)
540 Falls in usevote.cfg die Option "proportional = 1" aktiviert ist,
541 wird standardmaessig folgendes Ausgabeformat angewandt:
543 Ja Nein : J>=N? Ja/Nein : ang.? : Gruppe
544 ==== ==== : ===== ======= : ===== : ====================================
545 100 70 : Ja 1.429 : : Einrichtung von abc
546 80 90 : Nein 0.888 : : Einrichtung von xyz
548 Das genaue Aussehen ist im Template "result-proportional" aenderbar,
549 die Bedingungen und Auswertungsformeln sind ueber usevote.cfg
550 einzustellen (prop_formula und condition1). Die Spalte "ang.?" muss
551 in diesem Fall manuell ausgefüllt werden, da manchmal auch mehrere
552 Abstimmungsgegenstände angenommen werden, z.B. bei Moderationsnachwahlen
553 für verschiedene Posten.
555 Die Waehlerliste mit abgegebenen Stimmen erzeugst Du mit
556 "uvcount -v". Diese Option laesst sich auch mit -r kombinieren,
557 so dass Du Dir das doppelte Aussortieren von Duplikaten sparst.
558 Wichtig: Diese Liste darf erst im Result veroeffentlicht werden,
561 Falls ein trivialer Schutz vor Spammern gewuenscht ist, koennen durch
562 eine Aenderung in den Template "voterlist", "votes-single", "votes-multi"
563 und "bouncelist" alle Mailadressen verfremdet werden. Entweder Du fuegst
564 folgende Definition ein:
566 mail := value mail | replace '@' ' -at - '
568 Oder Du veraenderst direkt die vorgegebenen Formate, indem Du
569 die Mailadresse mit Hilfe des Pipe-Symbols durch die replace-Funktion
572 multi-line := value mail | replace '@' ' -at- ' | justify-behind name 72
574 Die Replace-Funktion erwartet wie im Beispiel gezeigt zwei Werte,
575 die zu ersetztende Zeichenfolge (hier das '@') und eine neue Zeichenfolge,
576 die statt dessen eingesetzt werden soll und frei gewaehlt werden kann.
578 Wie bereits beschrieben, sollte am Ende des 2. CfVs bzw. Results noch die
579 Liste der gebouncten Mailadressen angehaengt werden (z.B. mit dem Programm
580 uvbounce.pl) und bei Bedarf die urspruenglichen Stimmen geloescht und das
581 Ergebnis korrigiert werden.
587 Zum Schutz der deutschen Wahlleiter wurden spezielle Klauseln
588 aufgenommen, die vom Waehler die Erlaubnis zur Verarbeitung
589 der Stimme verlangen. Die Option "bdsg" in usevote.cfg schaltet
590 diese Sonderbehandlung ein oder aus. Folgende Besonderheiten
591 gelten bei Aktivierung:
593 - Im Wahlschein ist ein spezieller Hinweistext enthalten, der
594 aus der Datei bdsgtext.cfg genommen wird. Beim Verarbeiten
595 abgegebener Stimmen wird der Abschnitt wieder mit der Datei
596 verglichen. Fehlt er oder wurde er veraendert, wird der
597 Wahlschein dem Wahlleiter zur Kontrolle vorgelegt.
598 Die Fehlerpruefung ignoriert Quote- und Leerzeichen sowie
599 Zeilenumbrueche, kann aber versagen, wenn dem Quotezeichen
600 Initialen vorangestellt sind (wie in manchen Mailboxnetzen
601 ueblich) oder eine Silbentrennung ueber den Text gelaufen ist.
603 - Ausserdem enthaelt der Wahlschein eine spezielle Frage,
604 die mit JA zu beantworten ist. Anderenfalls muss ebenfalls
605 Kontrolle durch den Wahlleiter erfolgen. Der Text dieser
606 Frage ist ueber usevote.cfg einzustellen.
608 Erfolgt eine derartige Kontroll-Vorlage beim uvvote.pl-Lauf,
609 sollte der Wahlleiter sich den Wahlschein genau anschauen
610 und dann entweder im Menue die Option (6)(a) waehlen oder
611 mit (w) fortfahren. Im letzteren Fall wird die Stimme
612 verworfen und eine Hinweismail zurueckgeschickt.
614 Wenn eine Wahlbestaetigung veraendert und zurueckgeschickt
615 wird, fehlt der entsprechende Datenschutzhinweis. Da in
616 diesem Fall die Zustimmung aber bereits bei der ersten
617 Stimmabgabe gegeben wurde, kann der Wahlleiter beruhigt
618 die Korrektheit wie oben beschrieben bestaetigen.
621 12. Personalisierte Wahlscheine
622 ===============================
624 Die Wahlregeln fuer de.* sehen im Abschnitt 6a ein Verfahren
625 mit persoenlichen Wahlscheinen vor, die mit einer speziellen
626 Kennung versehen mehr Sicherheit vor Manipulation bieten.
628 Um dieses Verfahren einzuschalten, muss zunaechst die Option
629 "personal = 1" in usevote.cfg gesetzt werden und das Template
630 "ballot-personal" im Unterverzeichnis "templates" um den Text
631 des CfVs erweitert werden (einfach statt des von Sternchen
632 umrandeten Kommentars in der Datei einfuegen). Bitte eventuell
633 im Text vorkommende eckige Klammern wie folgt unschaedlich
634 machen: \[Text\] (Backslash voranstellen), da in den Templates
635 diese Klammern spezielle Bedeutungen haben (siehe gesonderten
636 Abschnitt zu dem Thema in dieser Datei).
638 Der gepostete CfV enthaelt i.d.R. nur einen Dummy-Abschnitt
639 mit Hinweis auf die gesonderte Wahlscheinanforderung. So ein
640 Abschnitt kann mit uvballot.pl generiert werden.
642 Der dana-Moderation sollte beim Einreichen des CfVs auch
643 ein Dummy-Wahlschein mitgesendet werden, wie er bei der
644 Wahlscheinanforderung verschickt wird. Dieser laesst sich mit
645 "uvcfv.pl -t" erzeugen.
647 Die eingehenden Wahlscheinanforderungen sollten an eine
648 spezielle Mailadresse gehen und dann mit uvcfv.pl verarbeitet
649 werden. Je nach Konfiguration in usevote.cfg werden die
650 Mails aus einer Mailboxdatei oder per POP3 eingelesen und jeweils
651 mit einem personalisierten Wahlschein beantwortet. Bitte vor
652 dem Posten des CfVs einen Test durchfuehren, um sicherzustellen,
653 dass die generierten Wahlscheine korrekt sind und auch bei
654 der Auswertung akzeptiert werden (hierbei wird die speziell
655 eingefuegte Wahlscheinkennung in Verbindung mit der Absenderadresse
659 13. Die einzelnen Programme
660 ===========================
663 Generiert den Wahlschein fuer den CfV. Bei personalisierten
664 Wahlscheinen (personal = 1 in usevote.cfg) wird nur ein Dummy-
665 Abschnitt mit Hinweisen zur Wahlscheinanforderung ausgegeben.
667 Die Vorlage fuer den Wahlschein ist im templates-Unterverzeichnis
669 - ballot Standard-Wahlschein (personal=0)
670 - ballot-request Dummy-Abschnitt mit Hinweisen zur
671 Wahlscheinanforderung (personal=1)
672 - ballot-personal Wahlschein mit Scheinkennung, wird von
677 -c config_file liest die Konfiguration aus config_file
678 (usevote.cfg falls nicht angegeben)
680 --help zeigen einen Hilfetext an
684 Liest Bounces aus den uebergebenen Dateien oder aus einer POP3-
685 Mailbox ein (Verhalten haengt von usevote.cfg ab) und generiert
686 eine Liste von unzustellbaren Adressen, die an den 2. CfV oder das
687 Result angehaengt werden kann. Falls POP3 in usevote.cfg
688 eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
689 werden die uebergebenen Dateinamen ignoriert.
691 Die Vorlage fuer die ausgegebene Liste ist im templates-
692 Unterverzeichnis konfigurierbar (Datei "bouncelist").
696 -c config_file liest die Konfiguration aus config_file
698 --file dateiname(n) lesen die Bounces aus den uebergebenen Dateien,
699 auch wenn in der Konfigurationsdatei POP3
700 eingeschaltet ist. Diese Option wird benoetigt,
701 falls zwar die Stimmzettel per POP3 eingelesen
702 werden sollen, nicht aber die Bounces.
703 Die Dateinamen werden durch Leerzeichen getrennt.
705 --help zeigen einen Hilfetext an
710 Liest Mailboxen ein und beantwortet alle Mails mit personalisierten
711 CfVs (falls personal=1 in usevote.cfg).
713 Die Vorlage fuer die ausgegebene Liste ist im templates-
714 Unterverzeichnis konfigurierbar (Datei "ballot-personal").
718 -c config_file liest die Konfiguration aus config_file
719 (usevote.cfg falls nicht angegeben)
721 --test gibt einen Dummy-Wahlschein mit Scheinkennung
722 an der Standardausgabe aus, zur Pruefungszwecken
724 --help zeigen einen Hilfetext an
729 Zaehlt Stimmen und gibt Waehlerlisten aus. Dient zur Erstellung
730 von 2.CfV und Result.
732 Es werden die folgenden Vorlagen aus dem templates-Unterverzeichnis
735 - result-multi Ergebnisauszaehlung bei mehreren Gruppen
736 - result-single Ergebnisauszaehlung bei nur einem Abstimmungs-
737 gegenstand (nicht tabellarisch, sondern im
738 Fliesstext), falls in usevote.cfg multigroup=0
739 gesetzt ist oder die Option -o verwendet wird
741 - voterlist Reine Auflistung der bisherigen Waehler ohne
742 Stimmen (fuer 2. CfV)
743 - votes-multi Stimmenliste im Mehrgruppenformat (eine Liste
744 mit allen Waehlern, rechts daneben die jeweils
746 - votes-single Stimmenliste im Eingruppenformat (getrennte
747 Listen mit Ja-, Nein- und Enthaltungsstimmen)
751 -c config_file liest die Konfiguration aus config_file
752 (usevote.cfg falls nicht angegeben)
753 -f result_file liest die Stimmen aus result_file (ueberschreibt
754 die "resultfile"-Angabe aus der Konfigurationsdatei)
756 --list Geben eine Liste aller Waehler aus (ohne Stimmen).
758 --voters Wie --list, aber mit Angabe der abgegebenen Stimmen.
760 --result Ausgabe des Endergebnisses (kann mit --list oder
761 --voters kombiniert werden).
763 --multigroup Benutzt auch bei Eingruppenabstimmungen das
764 Mehrgruppenformat beim Endergebnis (ueberschreibt
765 die Einstellung aus usevote.cfg).
766 Nur in Kombination mit --result verwendbar,
767 schliesst --onegroup aus.
769 --onegroup Benutzt bei Eingruppenabstimmungen immer das
770 Eingruppenformat beim Endergebnis (ueberschreibt
771 die Einstellung aus usevote.cfg).
772 Nur in Kombination mit --result verwendbar,
773 schliesst --multigroup aus.
775 --nodup Verzichtet auf das Aussortieren von doppelten
776 Stimmabgaben. Nicht empfohlen!
778 --help zeigen einen Hilfetext an
784 Liest Mailboxen aus einer Datei oder per POP3 ein wertet die Mails
785 als Stimmzettel aus. Erst beim Aufruf mit der Option "clean" werden
786 die Ergebnisse endgueltig gespeichert und die Bestaetigungsmails
789 Es werden diverse Vorlagen aus dem templates-Unterverzeichnis
790 benutzt, um Bestaetigungs- und Fehlermails zu generieren.
794 -c config_file liest die Konfiguration aus config_file
795 (usevote.cfg falls nicht angegeben)
797 --test fuehrt einen Test der Konfiguration durch und
798 gibt das ermittelte Ergebnis aus.
800 --help zeigen einen Hilfetext an
804 14. Die Konfigurationsdateien
805 =============================
810 Diese Datei enthaelt einen regulaeren Ausdruck (Perl-Syntax) pro
811 Zeile. Passt die Mailadresse eines Abstimmenden auf eines der Muster,
812 wird dem Wahlleiter bei der Auswertung eine Warnung angezeigt.
813 In der Regel kann man diese ignorieren, weil heutzutage viele
814 Privatleute ihre eigene Domain haben und Role-Accounts wie news@
815 benutzen. Sieht man aber so etwas wie news@t-online.de ist
816 Vorsicht angebracht und man sollte durch Auswahl von "(W)eiter"
817 die Stimme ungueltig werten und eine entsprechende Fehlermail
818 zurueckschicken lassen.
824 Hier sind alle kuerzeren Texte enthalten, die Usevote ausgibt,
825 unabhaengig davon, ob sie nur dem Wahlleiter bei der Programmausfuehrung
826 ausgegeben werden oder in persoenlichen Mails bzw. dem Result
827 auftauchen. Laengere Textpassagen sind als eigene Dateien im
828 "templates"-Verzeichnis zu finden und bieten weitergehende
829 Formatierungsmoeglichkeiten.
831 Jede Zeile in der messages.cfg besteht aus einem Identifier, einem
832 Gleichheitszeichen und dem eigentlichen Text. Der Identifier ist
833 grundsaetzlich in Grossbuchstaben gehalten und vom Programmcode fest
834 vorgegeben. Aenderungen duerfen nur rechts vom Gleichzeichen vorgenommen
835 werden, wenn Dir z.B. Formulierungen nicht gefallen oder Du anders-
836 sprachige Ausgaben haben moechtest.
838 Variablen sind ueber ${VARIABLE} einzubauen, allerdings sind die
839 Variablennamen und deren Inhalte vom Programmcode vorgegeben und
840 sollten beibehalten werden. Es gibt keine vordefinierten Variablen,
841 die Du selbst einbauen kannst, es sei denn, Du erweiterst den
842 Programmcode an der entsprechenden Stelle.
844 Die einzigen Texte, die fest im Programmcode stehen, sind die
845 Hilfetexte der einzelnen Programme (ueber die Option -h oder --help
846 aufrufbar) sowie die Startmeldungen (Copyright etc.) und initiale
847 Fehlermeldungen (usevote.cfg oder messages.cfg nicht gefunden,
848 ungueltige oder falsch kombinierte Aufrufparameter).
854 Mit dieser Datei koennen spezielle Regeln fuer eine gueltige Stimmabgabe
855 bei Mehrgruppenabstimmungen erstellt werden, z.B. dass man Punkt 3 oder 4
856 waehlen muss, wenn man fuer Punkt 2 gestimmt hat (quasi als weitergehende
857 Auswahlmoeglichkeit). Solche Regeln verkomplizieren aber die Abstimmung
858 und sollten nur in Ausnahmefaellen benutzt werden. Urspruenglich gedacht
859 war diese Moeglichkeit z.B. fuer .misc Gruppen, die zwangsweise bei einer
860 Aufteilung mit angelegt werden mussten. Dadurch, dass das in den
861 Wahlregeln fuer de.* als Automatismus eingebaut ist, kann man sich
862 so etwas meistens sparen. Fuer den Fall, dass bei einer vorgeschlagenen
863 neuen Gruppe der Name noch unklar ist, gibt ebenfalls das Benutzen
864 von speziellen Wahlregeln wenig Sinn, da man auch eine Meinung ueber
865 den Gruppennamen haben kann, wenn man eigentlich gegen die Gruppe ist.
867 Wenn Du aber ein Verfahren betreust, in dem Du solche Sonderregeln
868 benoetigst, kannst Du eine Regel pro Zeile in der folgenden Syntax schreiben:
872 Eine Regel beginnt immer mit "if", und danach folgen eine Anzahl Symbole;
873 diese Anzahl muss gleich der Anzahl der Gruppen sein, ueber die abgestimmt
874 wird. Oben geht es also um eine Abstimmung ueber sechs Gruppen.
875 Die Symbole hinter "if" geben an, in welchem Fall diese Regel Anwendung
876 finden soll. Falls sie zutrifft, wird die Bedingung hinter "then"
877 geprueft (dort muessen nochmal so viele Symbole folgen, wie Gruppen
878 im Wahlschein vorkommen). Ist diese Bedingung nicht erfuellt, wird
879 der Wahlschein dem Wahlleiter als regelverletzend vorgelegt, und
880 wenn diese mit "(w)eiter" den Fehler bestaetigt, wird eine entsprechende
881 Fehlermeldung zurueckgeschickt und die Stimme als ungueltig gewertet.
883 Folgende Symbole sind erlaubt:
888 S eine JA- oder NEIN-Stimme
889 H eine Enthaltung oder JA-Stimme
890 I eine Enthaltung oder NEIN-Stimme
891 . egal (Ja, nein oder Enthaltung)
892 j eine oder mehrere der markierten Gruppen hat JA-Stimme
893 n "" "" "" "" "" "" "" NEIN-Stimme
894 e "" "" "" "" "" "" "" Enthaltung
895 s "" "" "" "" "" "" "" Ja- oder Nein-Stimme
896 h "" "" "" "" "" "" "" Enthaltung oder Ja-Stimme
897 i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme
899 Hier noch ein Beispiel:
904 Diese Regeln sagen: Wer fuer die erste Gruppe abstimmt, der muss auch
905 fuer die zweite und dritte Gruppe abstimmen - egal wie. Ausserdem muss er
906 (Regeln 2 und 3) sich bei 3 enthalten, wenn er bei 2 eine Stimme abgibt
907 und umgekehrt. Die vierte Gruppe wird hier gar nicht betroffen.
913 Dieses ist die zentrale Konfigurationsdatei fuer Usevote. Einige
914 Einstellungen sind nur einmal auf das System und Deine Gewohnheiten
915 anzupassen, andere muessen fuer jede Abstimmung geaendert werden.
916 Alle Einstellungen sind mit mehr oder weniger sinnvollen
917 Standardwerten vorgegeben, die sich bei leerer usevote.cfg mittels
918 "uvvote.pl -t" ermitteln lassen.
920 Es lassen sich durch eine Zeile "include dateiname" weitere
921 Konfigurationsdateien einbinden. Die Stelle, an der dieses geschieht,
922 ist dabei wichtig, da die usevote.cfg von oben nach unten gelesen
923 wird (zusätzlich eingebundene Konfigurationsdateien werden an der
924 Stelle der "include"-Zeile eingefügt) und bei mehrmals vorkommenen
925 Optionen der jeweils letzte gesetzte Wert benutzt wird.
926 Daher sollte eine Datei mit systemweiten Defaults am besten am
927 Anfang der usevote.cfg eingebunden werden, die dort gesetzten
928 Optionen sollten aber unbedingt aus der usevote.cfg geloescht werden,
929 damit die systemweiten Einstellungen nicht gleich wieder ueberschrieben
932 Das Format ist allgemein:
936 Der Wert muss in manchen Faellen 0 (=aus) oder ungleich 0 (=an) sein,
937 in anderen Faellen muss eine exakte Zahl oder Zeichenkette eingegeben
940 Alles, was hinter einem # Zeichen steht, wird als Kommentar gewertet
941 und ignoriert. Steht hinter einem Wert so ein Kommentar, wird
942 normalerweise alles bis zum Kommentarzeichen noch in den String
943 einbezogen. In so einem Fall sollte der Wert von Anfuehrungszeichen
944 umschlossen werden. Im folgenden Beispiel wird ein Dateiname
947 # Der Dateiname endet mit 10 Leerzeichen (bis zum Kommentarzeichen):
948 tpl_mailheader = mailheader # Kommentar
950 # Der Dateiname enthaelt keine Leerzeichen, da mit Anfuehrungsstrichen
952 tpl_mailheader = "mailheader" # Kommentar
954 Folgt kein Kommentar in der selben Zeile, koennen die Anfuehrungsstriche
957 Hier eine Auflistung der immer anzupassenden Optionen
958 (BOOL bedeutet, dass 0 (aus) oder 1 (an) eingetragen werden muss):
960 votename Name der Abstimmung
961 group1 Erster Abstimmungsgegenstand
962 group2 Zweiter (und so weiter durchnummerieren)
963 votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
964 personal Personalisierte Wahlscheine verwenden? [BOOL]
965 (siehe gesonderten Abschnitt weiter oben)
966 voteaccount Mailadresse, unter der abgestimmt werden kann
967 (Reply-To im CfV auf diese Adresse setzen)
968 requestfile Datei mit Anforderungsmails bei "personal=1", falls
969 POP3 ausgeschaltet ist
970 bdsg Datenschutzklausel generieren und auf deren Existenz
971 pruefen? [BOOL] (siehe gesonderten Abschnitt weiter oben)
972 replyto Reply-To Header auswerten? [BOOL] (nicht empfohlen und in
973 de.* von den GVV nicht praktiziert)
974 voteack Jede Stimme mit einer Bestaetigungsmail beantworten? [BOOL]
976 mailcc weitere Mailadresse, an die eine Kopie jeder Bestaetigungs-
977 oder Fehlermail geschickt wird (fuer Archivzwecke)
978 onestep Mails direkt verschicken und Ergebnisse speichern? [BOOL]
979 ("uvvote clean" Aufruf entfaellt)
980 multigroup Fuer das Ergebnis auch bei Eingruppenabstimmung des
981 Mehrgruppenformat waehlen? [BOOL]
982 condition1 Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
983 condition2 (normalerweise "$yes>=2*$no" und "$yes>=60"
984 resultfile Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
985 idfile Datei mit Scheinkennungen (bei "personal=1")
986 pop3 POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
987 pop3server POP3-Server fuer eingehende Wahlscheine
988 pop3port POP3-Serverport (normalerweise 110)
989 pop3user Benutzername
991 pop3delete Mails nach Abruf vom Server loeschen? [BOOL]
992 pop3uidlcache Dateiname zum Speichern bereits abgerufener Mail-IDs (UIDL)
993 pop3*_req entsprechende Optionen fuer Mailbox mit eingehenden
994 Wahlscheinanforderungen (bei "personal=1")
995 pop3*_bounce entsprechende Optionen fuer Mailbox mit Bounces (Fehlermails)
996 fuer die Verarbeitung durch uvbounce.pl
997 smtp SMTP zum Verschicken von Mails benutzen? [BOOL]
998 Andernfalls wird direkt an den MTA uebergeben (nur Unix)
999 smtpserver SMTP-Server
1000 smtpport SMTP-Serverport (normalerweise 25)
1001 smtpauth SMTP-Authentication nach RFC 2554 benutzen? [BOOL]
1002 smtpuser SMTP-Benutzername
1003 smtppass SMTP-Passwort
1004 smtphelo String fuer die HELO-Greeting bei SMTP (Default: Hostname)
1005 fqdn String fuer den Host-Teil der Message-ID
1006 (Fully Qualified Domain Name) (Default: Hostname)
1007 archivedir Verzeichnis fuer Archivierung von verarbeiteten Stimmen
1008 tmpdir temporaeres Verzeichnis
1009 templatedir Verzeichnis mit Templates (Vorlagen) fuer diverse Zwecke
1010 (normalerweise "templates", dort liegen bereits vordefinierte
1011 Templates, die i.d.R. nicht angepasst zu werden brauchen)
1012 formats Konvertierungsfunktionen fuer die Templates, mit Komma getrennt
1013 (mitgelieferte UVformats.pm muss hier aufgefuehrt werden,
1014 desweiteren koennen eigene Module mit weiteren Funktionen
1015 hier eingebunden werden)
1016 controlfile Name der Steuerungsdatei fuer den Mailversand (tmp/ack.control)
1017 domailfile Name des Shellscripts zum Versenden der Bestaetigungsmails
1018 (falls smtp=0, normalerweise tmp/domail)
1019 mailcmd Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
1020 Bestaetigungsmails (falls smtp=0), z.B.
1021 "sendmail -oi -oem -femail@adresse"
1022 sleepcmd Weiteres Kommando, welches nach jeder Mail aufgerufen werden
1023 soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
1024 langsamen Systemen hoeher gewaehlt werden sollte.
1025 clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
1026 muss unter Windows auf "cls" geaendert werden. Falls Shell
1027 oder Betriebssystem keinen solchen Befehl bereitstellen,
1028 sollte ein Kommando verwendet werden, welches eine Trennlinie
1029 oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
1030 pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
1031 Bildschirm (normalerweise "less"). Unter Windows muss "more"
1032 benutzt werden, unter Unix hingegen gibt es moeglicherweise
1033 bei "more" Probleme mit der Umleitung von STDERR in eine Datei
1034 (wie es z.B. von uvvote.pl benoetigt wird), daher ist "less"
1036 mailfrom Absender fuer den From-Header der Bestaetigungsmails. Wird
1037 auch in Bestaetigungsmails als Unterschrift eingefuegt und
1038 sollte daher am besten in folgendem Format sein:
1039 Vorname Nachname <gvv@foo.bar>
1040 (ohne Anfuehrungsstriche, falls rfc-konform moeglich)
1041 envelopefrom Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
1042 bei Verwendung von SMTP (bitte nur die Adresse eintragen, ohne
1043 Klammern und Zusaetze). Wenn SMTP ausgeschaltet ist, muss
1044 diese Einstellung entsprechend der Mailer-Doku in "mailcmd"
1045 gesetzt werden (z.B. bei Sendmail und kompatiblen mit -f)
1046 messagefile Datei mit diversen Meldungen und Textfragmenten (messages.cfg)
1047 rulefile Datei mit Wahlregeln (usevote.rul)
1048 badaddrfile Datei mit verdaechtigen Mailadressen (mailpatterns.cfg)
1049 errorfile Datei fuer Fehlermeldungen beim Programmlauf (errors.log)
1050 mailstart Einleitungszeile fuer naechste Mail (RegExp), falls Mails
1051 aus einer Datei eingelesen werden (smtp=0), normalerweise
1053 begin_divider Trennlinien vor und nach dem Wahlschein
1054 end_divider ("Alles vor/nach dieser Zeile bitte loeschen")
1055 nametext Text fuer die Namens-Angabe im Wahlschein. Muss im
1056 Wahlschein genauso stehen und wird beim Standardtemplate
1057 auch aus dieser Einstellung uebernommen. Beispieltext:
1058 "Dein Realname, falls nicht im FROM-Header:"
1059 nametext2 Text fuer Namens-Angabe in Bestaetigungsmails
1060 (dito, Standardwert "Waehlername:")
1061 addresstext Text fuer die Adress-Angabe im Wahlschein
1062 (dito, Standardwert "Waehleradresse:")
1063 ballotidtext Text für die Angabe der Wahlscheinkennung (falls personal=1)
1064 (dito, Standardwert "Wahlscheinkennung:")
1065 bdsgtext Text fuer Datenschutzklausel (falls bdsg=1), erscheint als
1066 Abstimmungspunkt (z.B. "Datenschutzklausel - Zustimmung: Ich
1067 bin mit der Verarbeitung meiner Daten wie oben beschrieben
1069 bdsgfile Datei mit Erklaerungstext fuer BDSG-Klausel (bdsgtext.cfg)
1070 rightmargin Zeilenbreite bei Ausgaben, die nicht durch Templates
1071 gesteuert werden. Hat vor allem auf Bildschirmausgaben
1073 name_re Regulaerer Ausdruck fuer Erkennung eines gueltigen Realnamens.
1074 Beispiel: "[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß-]{2,} +
1075 .*[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{2,}"
1076 (muss ohne Umbruch in eine Zeile)
1078 Regulaere Ausdruecke fuer Erkennung der Stimmen
1079 (Gross-/Kleinschreibung spielt keine Rolle):
1081 ja_stimme Standardwert: (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
1082 nein_stimme Standardwert: (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
1083 enth_stimme Standardwert: (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
1084 ann_stimme Standardwert: A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
1086 Definition der verwendeten Templatedateien
1087 (werden im Unterverzeichnis "templates" mitgeliefert):
1089 tpl_mailheader "mailheader" # generally used mail header
1090 tpl_bouncelist "bouncelist" # used by uvbounce.pl
1091 tpl_result_multi "result-multi" # used by uvcount.pl -r -m
1092 tpl_result_single "result-single" # used by uvcount.pl -r -o
1093 tpl_votes_multi "votes-multi" # used by uvcount.pl -v (multiple groups)
1094 tpl_votes_single "votes-single" # used by uvcount.pl -v (single group only)
1095 tpl_voterlist "voterlist" # used by uvcount.pl -l (2nd CfV)
1096 tpl_ballot "ballot" # used by uvballot.pl (personal = 0)
1097 tpl_ballot_request "ballot-request" # used by uvballot.pl (personal = 1)
1098 tpl_ballot_personal "ballot-personal" # used by uvcfv.pl (personal = 1)
1099 tpl_addr_reg "address-not-registered" # used by uvvote.pl (personal = 1)
1100 tpl_no_ballotid "no-ballotid" # used by uvvote.pl (personal = 1)
1101 tpl_wrong_ballotid "wrong-ballotid" # used by uvvote.pl (personal = 1)
1102 tpl_bdsg_error "bdsg-error" # used by uvvote.pl (bdsg = 1)
1103 tpl_ack_mail "ack-mail" # used by uvvote.pl (voteack = 1)
1104 tpl_cancelled "cancelled" # used by uvvote.pl
1105 tpl_invalid_account "invalid-account" # used by uvvote.pl
1106 tpl_invalid_name "invalid-name" # used by uvvote.pl
1107 tpl_multiple_votes "multiple-votes" # used by uvvote.pl
1108 tpl_no_ballot "no-ballot" # used by uvvote.pl
1109 tpl_no_votes "no-votes" # used by uvvote.pl
1110 tpl_rule_violated "rule-violated" # used by uvvote.pl (siehe usevote.rul)
1116 Die mitgelieferten Templates befinden sich im Verzeichnis "templates".
1117 In usevote.cfg koennen weitere Verzeichnisse definiert werden, in
1118 denen auch nach Templates gesucht wird ("templatedir", kommaseparierte
1119 Liste mit Verzeichnissen). Außerdem koennen dort die Dateinamen der einzelnen
1120 Templates eingestellt werden, wodurch es moeglich ist, in einzelnen
1121 Abstimmungen andere, selbst definierte Templates zu verwenden, die in
1122 einem gesonderten Verzeichnis abgelegt sind.
1124 Eine Templatedatei besteht aus zwei Teilen. Am Anfang werden die
1125 Formatierungen bestimmter Schluessel definiert und nach einem Trenner
1126 folgt der eigentlich Template-Koerper, der dann von Programm bearbeitet
1127 und ausgegeben wird.
1129 format-key := function1 param | function2 param
1131 == TEMPLATE ====================================
1133 Ich bin nun das eigentliche Template:
1135 format-key: [$format-key]
1137 Der Trenner beginnt mit den Zeichen '== TEMPLATE' danach koennen beliebige
1138 Zeichen folgen um die beiden Sektionen optisch voneinander abzugrenzen.
1140 Wenn es keine Formatierungsanweisungen gibt, kann der Trenner auch
1141 weggelassen werden. D.h. wenn kein Trenner gefunden wird, wird der
1142 komplette Text als Template-Koerper betrachtet.
1148 Im Template-Koerper werden die zu ersetzenden Token durch eckige
1149 Klammern abgegrenzt. Sollen eckige Klammern im Text ausgegeben werden,
1150 muessen diese durch einen Backslash freigestellt werden.
1152 [$termersetzung] [@schleife] nur eine \[ Klammer
1157 Ersetzt den Token durch den Wert des angegeben Schluessels:
1159 [$formatierung] [$schluessel]
1161 Es wird zuerst nach einer Formatierung mit den entsprechenden
1162 Bezeichner gesucht. Ist diese vorhanden, werden die entsprechenden
1163 Funktionen ausgefuehrt (siehe folgender Abschnitt).
1165 Kann kein Format gefunden werden, wird direkt in der im Programmcode
1166 gefuellten Datenstruktur nach einem Schluessel mit dem angegeben
1167 Bezeichner gesucht und sein Wert eingesetzt. Alle Einstellungen
1168 aus der usevote.cfg sind automatisch als Schluessel definiert, es
1169 kann also z.B. [$nametext] jederzeit verwendet werden. Eingesetzt
1170 wird an der Stelle der mit "nametext = " definierte Text aus
1173 Schlussendlich ist es noch moeglich einen default-Wert zu
1174 definieren, der eingesetzt wird, wenn keiner der obigen Wege
1177 Hallo [$name|Unbekannter]!
1179 Diese Zeile gibt, wenn kein Name definiert wurde, das Wort
1183 Bedingte Verzeigung:
1185 Ueberprueft ob der Wert des angegebenen Formats/Schluessel boolsch
1186 WAHR ist. Dementsprechend wird der then oder else Block eingefuegt:
1188 [?if|then|else] oder auch nur [?if|then]
1190 Die then/else Bloecke werden natuerlich auch auf Tokens geparst und
1191 diese dementsprechend ersetzt.
1196 Der nachfolgende Textblock wird fuer alle Elemente des durch den
1197 Schluessel bezeichneten Arrays ausgefuehrt und eingefuegt.
1199 [@schluessel|block] oder [@schluessel|block|sep]
1201 Als zweiter Parameter kann ein Separtor definiert werden, mit dem
1202 sich z.B. kommaseparierte Listen erzeugen lassen, da der Separator
1203 eben nur zwischen den Elementen eingefuegt wird.
1205 Auch fuer Schleifen koennen Formatierungen genutzt werden.Allerdings
1206 darf kein String zurueckgegeben werden, sondern ein Array mit einer
1207 Menge von UVtemplate-Objekten.
1212 Token die nach der Bearbeitungen entfernt werden:
1214 [# mich sieht man nicht]
1219 Um in Listen einen Zeilenumbruch zu erzwingen, muss lediglich ein
1220 '\n' eingefuegt werden, falls eine kompakte Definition der Liste
1223 [@names|[name] [email]\n]
1229 Eine Formatierung besteht eigentlich nur aus dem entsprechenden
1230 Namen und einer beliebigen Anzahl von Funktionsaufrufen:
1232 format := funktion param1 "param 2" | funktion param
1234 Aehnlich der Unix-Shell-Funktionalitaet, wird dabei die Ausgabe
1235 einer Funktion an die folgende weitergeleitet. So ist es moeglich,
1236 verschiedenste simple Formatierungen zu kombinieren um nicht fuer
1237 jeden Spezialfall eine neue Funktion schreiben zu muessen.
1239 Die jeweilige Formatierungsfunktion erhaelt als Input die
1240 Datenstruktur, den Output der vorherigen Funktion und die definierten
1241 Parameter in der entsprechenden Reihenfolge.
1243 Zahlen und einfache Bezeichner koennen direkt definiert werden.
1244 Sollen Sonderzeichen oder Leerzeichen uebergeben werden, muessen
1245 diese gequotet werden. Dazu kann ' oder " verwendet werden.
1247 Die Funktionen geben im Allgemeinen einen String zurueck. Im Rahmen
1248 von Listen können auch Arrays uebergeben werden.
1250 Die erste Funktion duerfte ueblicherweise 'value' sein. Sie gibt
1251 den Wert des angegeben Schluessel zurueck, der dann von den
1252 folgenden Funktionen definiert wird:
1254 name-60 := value name | fill-right 60
1256 Das Format "name-60" definiert also den Wert des Schluessel "name",
1257 der um Leerzeichen aufgefuellt wird, bis eine Laenge von 60 Zeichen
1260 name-email := value name | justify-behind mail 72
1262 "name-email" resultiert in einem String, der zwischen den Werten von
1263 "name" und "email" genau so viele Leerzeichen enthaelt, damit der
1264 gesamte String 72 Zeichen lang ist.
1266 Wird dieses Format in einer Liste angewandt, erhaelt man eine Tabelle
1267 in der die linke Spalte linksbuendig und die rechte Spalte
1268 entsprechend rechtsbuendig ist.
1270 Soweit ein kleiner Ueberblick ueber die Formatierungen. Ausfuehrliche
1271 Funktionsbeschreibungen und weitere Beispiele finden sich in der
1272 POD-Dokumentation des Moduls UVformat ("perldoc UVformat.pm").
1274 Es ist moeglich, selbst eigene Module mit Formatierungsfunktionen
1275 zu schreiben und ueber die Option "formats" in usevote.cfg einzubinden.
1276 Am besten kann dazu UVformats.pm als Vorlage genommen werden.
1277 Wichtig: der Name einer Formatierungsfunktionen darf nur aus
1278 Gross- und Kleinbuchstaben, Zahlen und Minuszeichen bestehen.
1279 Unterstriche, Punkte etc. sind nicht erlaubt!
1281 Falls eine elementare Funktion fehlt, kannst Du Dich auch gerne
1282 bei mir melden und ich pruefe, wie sie sich einbauen laesst.
1284 Marc Langer, im Oktober 2005