1 UseVoteGer 4.11 (c) 2001-2012 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.11 - 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)
94 (1) usevote.cfg auf das durchzufuehrende Voting anpassen
96 (2) bei Sonderregeln (Abhaengigkeiten der einzelnen Abstimmungspunkte)
97 in usevote.rul Regeln definieren (selbsterklaerend)
98 (3) CfV erstellen und Wahlschein mit uvballot.pl generieren
99 (4) Fertigen CfV einreichen und auf Veroeffentlichung warten ;-)
100 (5) Bis zum 2. CfV regelmaessig (an den ersten Tagen mehrmals taeglich,
101 spaeter einmal taeglich) dies tun:
102 - uvvote.pl durchlaufen lassen
103 - im Verzeichnis tmp/ die Datei ergebnis.* (Ergebnis der Auswertung)
104 und evtl. ack.* (Bestaetigungsmails an die Waehler) kontrollieren
105 - Falls es Probleme gab: Bitte den Abschnit "Stimmen verarbeiten"
106 weiter unten in dieser Datei genau durchlesen. Dort steht
107 beschrieben, wie Fehler korrigiert werden koennen
108 - "uvvote.pl clean" aufrufen, um die Bestaetigungen zu verschicken
109 und das Ergebnis zu speichern/archivieren
110 - Falls Wahlbestaetigungen als unzustellbar zurueckkommen, solltest
111 Du diese zusammen in einer Datei speichern oder in ein spezielles
113 (6) Zwischenbestaetigung fuer den 2. CfV mit "uvcount.pl -l" erzeugen und
114 veroeffentlichen. Falls Wahlbestaetigungen als unzustellbar
115 zurueckkamen, kannst Du mit "uvbounce.pl dateiname" automatisch eine
116 Liste der ungueltigen Adressen erzeugen ("dateiname" ist die Datei,
117 in die Du zuvor die Bounces gespeichert hattest). Siehe auch Abschnitt
118 "Unzustellbare Bestaetigungen" weiter unten in dieser Datei, dort
119 ist auch erklaert, wie die Bounces aus einem POP3-Postfach gelesen
121 (7) Bis zum Result wieder wie (5)
122 (8) Zum vorgegebenen Zeitpunkt die Wahl abschliessen,
123 mit "uvcount.pl -r -v" Endergebnis erzeugen und veroeffentlichen
124 (zuvor wiederum Liste der ungueltigen Mailadressen erzeugen, siehe
127 Weitere Details finden sich im Folgenden.
128 Jeder Nutzer dieser Software sollte sich diesen Text wenigstens einmal
131 Abschnitt 6 beschreibt, wie mehrere Abstimmungen gleichzeitig durchgefuehrt
132 werden koennen, ohne saemtliche Programmdateien zu kopieren.
135 3. Kompatibilitaet zu frueheren Versionen
136 =========================================
138 - englische Usevote-Versionen: keine Kompatibilitaet
140 - deutsche Usevote-Versionen (Usevote 3.0a, UseVoteGer 3.1):
141 * Wahlscheine haben neue Markierungen zum sicheren Erkennen
142 der Stimmen. Bisherige Wahlscheine sind mit dieser Version
143 nicht mehr einsetzbar!
145 * acktext.txt gibt es nicht mehr, statt dessen sind im Unterverzeichnis
146 "templates" Vorlagen zu finden, die diese Texte enthalten.
148 * usevote.cfg ist komplett inkompatibel
150 * usevote.rul: voll kompatibel, ohne Einschraenkungen
152 * Ergebnisdateien: Inhalt kompatibel, aber Namensgebung geaendert
153 (obwohl irrelevant, da Umstieg auf diese Version waehrend
154 einer laufenden Wahl nicht moeglich)
156 * scheinkennungen: Dateiformat gaendert (aus selbigen Gruenden
157 nicht weiter wichtig)
159 * uvshell: integriert in uvvote.pl, ueber usevote.cfg steuerbar
161 * uvvote.pl: Aufrufparameter geaendert / Zusammenfuehrung mit uvshell
163 * uvcfv.pl: Alte Funktionalitaet ist nicht mehr implementiert,
164 statt dessen dient das Tool jetzt zum Generieren der persoenlichen
165 Wahlscheine und Verschicken des CfV an die Waehler
167 * uvcount.pl: Beinhaltet auch uvack und uvdup. Drei Einzelprogramme
168 schienen mir ineffizient.
170 * uvbounce.pl: Ausgabeformat etwas anders
176 * Ausgelieferte Dateien:
178 CHANGES Versionsaenderungen
179 COPYING GNU General Public License
181 UVconfig.pm Routinen zum Einlesen und Pruefen der Konfiguration
182 UVformats.pm Routinen zum Formatieren von Texten in Templates
183 UVmenu.pm Routinen zur Interaktion mit dem Wahlleiter
184 UVmessage.pm Routinen zum Parsen von Texten und Ersetzen von Platzhaltern
185 UVreadmail.pm Routinen zum Einlesen und MIME-Decodieren der Mails
186 UVrules.pm Routinen zur Regelverarbeitung (usevote.rul)
187 UVsendmail.pm Routinen zum Erzeugen von Mails
188 UVtemplate.pm Routinen zur Verarbeitung von Vorlagen (Templates)
189 bdsgtext.cfg Spezieller Text fuer den Wahlschein (Hinweis auf
190 Datenschutzgesetz), muss ausserhalb Deutschlands ggfls.
191 angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
192 mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen
193 messages.cfg Programm-Meldungen (Ressourcen-Datei)
194 scheinkennungen Speicherung der Scheinkennungen bei personalisierten
195 Wahlscheinen. Muss zu Beginn der Abstimmung leer sein.
196 usevote.cfg Konfigurationsdatei
197 usevote.rul Abstimmungsregeln
198 uvballot.pl Wahlschein aus Abstimmungsdaten erstellen
199 uvbounce.pl Listen von unzustellbaren Bestaetigungen erzeugen
200 uvcfv.pl Erstellen und Verschicken von personalisierten Wahlscheinen
201 uvcount.pl Stimmenzaehlung, Erstellen von Waehlerlisten und
202 Aussortieren von doppelten Stimmabgaben
203 uvvote.pl Stimmen verarbeiten (fuer die taegliche Arbeit)
205 templates/ Verzeichnis mit Templates (Vorlagen)
206 ack-mail Template fuer Bestaetigungsmails
207 address-not-registered Fehlermail: Noch keine Scheinkennung fuer Adresse
209 ballot Template fuer einen Wahlschein
210 ballot-personal Template fuer personalisierten Wahlschein
211 ballot-request Template fuer eine Wahlscheinanforderung
212 bdsg-error Fehlermail: Datenschutzklausel nicht akzeptiert
213 bouncelist Template fuer Liste der ungueltigen Mailadressen
214 cancelled Template fuer Bestaetigung der Stimmannullierung
215 invalid-account Fehlermail: Fragwuerdige Mailadresse (Role Account)
216 invalid-name Fehlermail: Kein gueltiger Name in Mail/Wahlschein
218 mailheader Template fuer den Header von Mails an die Waehler
219 multiple-votes Fehlermail: Widerspruechliche Stimmen im Wahlschein
220 no-ballot Fehlermail: Kein Wahlschein in Mail gefunden
221 no-ballotid Fehlermail: Keine Wahlscheinkennung gefunden
222 no-votes Fehlermail: Keine Stimmen abgegeben
223 result-multi Template fuer ein Wahlergebnis mit mehreren Gruppen
224 result-single Template fuer ein Wahlergebnis mit einer Gruppe
225 result-proportional Template fuer ein Wahlergebnis, bei dem das Verhaeltnis
226 oder die Differenz von Ja- und Nein-Stimmen entscheidet
227 (z.B. Moderationsnachwahlen, "proportional=1" gesetzt)
228 rule-violated Fehlermail: Wahlregeln aus usevote.rul verletzt
229 voterlist Template fuer eine Waehlerliste (2. CfV)
230 votes-multi Template fuer eine Stimmenliste mit mehreren Gruppen
231 votes-single Template fuer eine Stimmenliste bei einer Gruppe
232 wrong-ballotid Fehlermail: Falsche Wahlscheinkennung angegeben
234 * Beim Programmlauf erstellte Dateien (Name ist konfigurierbar):
236 ergebnis.alle Saemtliche Einzelergebnisse zusammengefasst (wird
237 bei jedem Lauf von uvvote.pl neu erstellt)
238 errors.log Fehlermeldungen, die beim Programmlauf auftauchen,
239 werden hier abgelegt. Normalerweise bleibt die Datei
240 leer, ansonsten wird beim Programmende eine Warnung
241 mit Verweis auf die Datei ausgegeben.
242 uidlcache Eindeutige IDs der abgerufenen Mails (bei Benutzung
243 von POP3). Darf waehrend einer laufenden Abstimmung
244 keinesfalls geloescht werden, um Mehrfachzaehlung von
245 Stimmen zu verhindern.
246 uidlcache_req dto, fuer die Mailbox mit den Wahlscheinanforderungen
247 (bei Verwendung von personalisierten Wahlscheinen)
248 uidlcache_bounce dto, fuer die Mailbox mit den Bounces (wird von
249 uvbounce.pl ausgewertet)
250 usevote.lock Temporaere Lockdatei, um gleichzeitiges Ausfuehren
251 mehrerer Instanzen zu verhindern. Kann (falls vorhanden)
252 gefahrlos geloescht werden, wenn gerade keines der
253 Usevote-Scripts laeuft.
255 * Folgende Unterverzeichnisse werden von Usevote im aktuellen
256 Verzeichnis (CWD) angelegt:
258 fertig/ Verzeichnis fuer Archivierung verarbeiteter Dateien
259 tmp/ Verzeichnis fuer temporaere Dateien
261 * Von Usevote dort erstellte Dateien:
263 ack.* Bestaetigungsmails (in tmp/)
264 ack.control Steuerungsdatei fuer Bestaetigungsmails (in tmp/)
265 domail Shellscript zum Verschicken der Mails (in tmp/)
266 ergebnis.* Ergebnisdateien einzelner Durchlaeufe (zunaecht in tmp/,
267 spaeter nach fertig/ verschoben und archiviert)
268 stimmen.* Archivierte Stimmendateien (dto.)
271 5. Anfangs-Konfiguration
272 ========================
274 Zuerst solltest Du "usevote.cfg" fuer Dein System anpassen (Details
275 dort in den Kommentarzeilen und weiter hinten in dieser Dokumentation).
276 Unter Windows werden die Regular Expressions fuer die Stimmenerkennung
277 moeglicherweise lauter unlesbare Zeichen enthalten (anderer Zeichensatz),
278 dort sollten saemtliche in Namen vorkommende Umlaute und Buchstaben mit
279 Accents etc. aufgefuehrt werden. Weiter ist bei Nutzung von Windows zu
280 beachten, dass das Kommando zum Loeschen des Bildschirms "cls" und nicht
281 "clear" heisst. Dazu gibt es auch eine Einstellung in usevote.cfg. Den
282 standardmaessig eingestellten Pager "less" gibt es unter Windows zunaechst
283 nicht, more ist aber so buggy, dass man sich am besten "less" fuer
284 Windows herunterladen sollte:
285 http://www.greenwoodsoftware.com/less/less381d.zip
287 Im Unterverzeichnis "templates" findest Du Vorlagen, die fuer die
288 einzelnen Bestaetigungstexte, Mails, Wahlscheine und Waehlerlisten
289 verwendet werden. Hier kannst Du unter Beachtung der Syntax (siehe
290 gesonderte Dokumentation) alle Texte an Deinen Geschmack und Deine
291 Beduerfnisse anpassen.
294 6. Konfiguration fuer einzelne Abstimmungen
295 ===========================================
297 Fuer jede Abstimmung muss eine eigene Konfigurationsdatei geschrieben
298 werden. Aendere einfach usevote.cfg entsprechend der Regeln fuer die
299 betreffende Abstimmung. Falls Du haeufiger Wahlleiter spielst, solltest
300 Du Dir eine globale Konfigurationsdatei mit Standardeinstellungen
301 (z.B. als ~/.usevote-defaults.cfg) anlegen und in der usevote.cfg nur
302 noch die Einstellungen setzen, die sich fuer jede Abstimmunge aendern.
303 Die globale Datei kann am Anfang der usevote.cfg mit folgender Zeile
306 include ~/.usevote-defaults.cfg
308 Zu beachten ist aber, dass jeweils die letzte Definition einer Option
309 benutzt wird. Die usevote.cfg sollte daher wirklich nur noch
310 abstimmungsspezifische Einstellungen enthalten, um nicht versehentlich
311 die globalen Optionen zu überschreiben.
313 Ausserdem muss die Datei "usevote.rul" geprueft werden. Wenn Deine
314 Abstimmung irgendwelche speziellen Regeln enthaelt (z.B. man kann
315 nur fuer Gruppe x stimmen, wenn man auch fuer y gestimmt hat, oder man
316 muss fuer den .misc-Abschnitt stimmen, wenn man fuer irgendeinen
317 anderen Abschnitt gestimmt hat), dann solltest Du diese Datei lesen
318 und entsprechend aendern. Allerdings empfiehlt es sich, bereits im
319 RfD deutlich auf die Regeln hinzuweisen, die zur Anwendung kommen sollen.
320 Die eingegebenen Regeln koennen dann mit "uvvote -t" getestet werden.
322 Es ist auch moeglich, mehrere Abstimmungen gleichzeitig durchzufuehren,
323 ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
324 sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
325 usevote.cfg, darin können alle anderen Pfade angepasst werden):
334 Ggf. sollte das "templates"-Verzeichnis kopiert werden, falls
335 individuelle Templates fuer einzelne Abstimmungen verwendet werden.
337 Außerdem muessen i.d.R. einige Pfade in der usevote.cfg angepasst
338 werden. Dadurch ist auch die Angabe eines anderen Verzeichnisses
339 fuer einige der oben genannten Konfigurationsdateien moeglich,
340 falls diese zentral gepflegt werden sollen (z.B. messages.cfg und
343 Damit die Usevote-Perlmodule gefunden werden, sollten sie im
344 selben Verzeichnis wie die Programmdateien liegen bleiben. Ansonsten
345 muss eine Umgebungsvariable gesetzt werden:
349 .. steht für das übergeordnete Verzeichnis. Ggf. muss hier ein
350 absoluter Pfad eingetragen werden, wenn das Abstimmungsverzeichnis
351 kein Unterverzeichnis des Usevote-Verzeichnisses ist.
353 Je nach Betriebssystem kann die obige Zeile etwas anders aussehen,
354 unter Windows sollte z.B. "SET PERL5LIB=C:\PERL\USEVOTE" in die
355 autoexec.bat aufgenommen oder sonstwie ausgeführt werden (Pfad
356 natürlich entsprechend anpassen).
359 7. Wahlschein generieren
360 ========================
362 Der Wahlschein ist ein Abschnitt des CfV, den die Leute zur Stimmabgabe
363 ausfuellen und zurueckschicken sollen. Am einfachsten erzeugst Du
364 diesen nach Anpassung der Konfiguration und ggfls. des Templates
365 mit "uvballot.pl". Folgendes Format ist erforderlich:
371 Eine zusaetzliche Beschreibung rechts daneben macht es dem Waehler
372 einfacher, ist aber fuer Usevote nicht zwingend erforderlich. Wichtig
373 sind nur die fortlaufenden Nummern, die entsprechend der Eintraege
374 in usevote.cfg zugeordnet werden.
376 Je nach Konfiguration koennen weitere Zeilen noetig sein, dazu spaeter.
378 Als Stimme in den eckigen Klammern werden diverse Strings erkannt,
379 die in usevote.cfg definiert werden koennen. JA, NEIN und ENTHALTUNG
380 sind Standard, einige Abwandlungen sind ebenfalls moeglich.
381 Zusaetzlich kann ANNULLIERUNG verwendet werden, um eine schon abgegebene
382 Stimme zu loeschen und somit nicht im Result aufzutauchen.
384 Bei der Verwendung von persoenlichen Wahlscheinen (Abschnitt 6a der
385 Wahlregeln fuer de.*) ist das Vorgehen etwas anders, siehe hierzu
386 den gesonderten Abschnitt weiter hinten.
389 8. Stimmen verarbeiten
390 ======================
392 Falls POP3 nicht benutzt werden soll (siehe usevote.cfg), werden alle
393 Wahlmails zu einer Abstimmung aus einer Mailboxdatei gelesen
394 (Name/Pfad der Datei in usevote.cfg einstellbar). Standardmaessig
395 wird das Unix-Mailboxformat erkannt, dieses ist aber ueber "mailstart"
396 in usevote.cfg konfigurierbar (bei komplett anderen Formaten muesste
397 der Quellcode geaendert werden).
399 Wechsele nun in das Verzeichnis, in dem die passenden
400 Konfigurationsdateien liegen (normalerweise werden diese aus
401 dem aktuellen Verzeichnis gelesen, was mehrere gleichzeitige
402 Verfahren moeglich macht) und starte uvvote.pl. Bei Problemen
403 mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
404 Meistens gibt es folgende Moeglichkeiten, die durch die
405 eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
407 (1) Anzeigen der Wahlmail
409 Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
414 (6) Datenschutzklausel
416 (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
419 Teilweise gibt es Unteroptionen:
420 (a) OK (Zweifel sind unbegründet, ist alles in Ordnung)
421 (b) Aendern (z.B. wenn der Realname von Usevote nicht vollstaendig
423 (c) Ungueltig (es handelt sich nach Deinem Ermessen nicht um
424 eine gueltige Stimmabgabe)
426 Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
427 der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
428 oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
430 Mit den Optionen (2) bis (6) kannst Du einzelne Eigenschaften
431 des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
432 eine Stimme nicht korrekt erkannt hat) oder auch einfach die
433 Korrektheit bestaetigen.
435 Wenn Du alle oben auf der Seite aufgelisteten Maengel beseitigst,
436 indem Du die entsprechenden Optionen waehlst, wird die Stimme
437 akzeptiert. Bleiben Zweifel unausgeraeumt, wird eine entsprechende
438 Fehlermail verschickt (Du erhaeltst dann noch eine gesonderte
441 Zum Schluss kannst Du (w) wählen, um fortzufahren. Möchtest Du,
442 dass eine Stimme komplett ignoriert wird (weil es sich z.B.
443 um Spam handelt), kannst Du (i) waehlen und die folgende
444 Sicherheitsfrage mit "JA" beantworten.
446 Ist uvvote.pl durchgelaufen, koennen im Unterverzeichnis tmp/
447 (wird ebenfalls aktuellen Verzeichnis angelegt!) die ermittelten
448 Ergebnisse und erzeugten Mails an die Waehler noch einmal geprueft
449 werden. Ist alles in Ordnung, werden mittels "uvvote.pl clean"
450 die Mails verschickt und die Ergebnisse gespeichert sowie die
451 Originalmails archiviert. Hierzu wird das Verzeichnis fertig/
454 Falls der komplette uvvote-Lauf verworfen werden soll, kann
455 die Datei mit den Waehlermails (stimmen-xyz im tmp-Verzeichnis,
456 xyz entspricht der aktuellen Unixtime waehrend des Durchlaufs)
457 wieder an den urspruenglichen Platz zurueckkopiert werden
458 (bei POP3: fuer den Neuversuch POP3 abschalten und die
459 Maildatei einlesen lassen, da auf dem Server die Mails
460 moeglicherweise geloescht wurden) und das komplette tmp-Verzeichnis
461 geloescht werden. Anschliessend den uvvote-Lauf erneut durchfuehren.
462 Wichtig ist nur, dass das Verzeichnis fertig/ waehrend der ganzen
463 Abstimmung mitsamt seines Inhaltes erhalten bleibt.
465 Noch ein kurzes Wort zum Verschicken der Mails: Jede Mail wird
466 in einer gesonderten durchnummerierten Datei (ack.1, ack.2, ...)
467 gespeichert, zusaetzlich wird eine Steuerungsdatei ("ack.control")
468 erzeugt, welche zu jeder Mail Dateinamen und Empfaenger auflistet.
469 Je nach Einstellung werden die Mails dann per SMTP verschickt oder
470 es wird ein Shellscript ("domail") erzeugt, welches nach und
471 nach die Mails in Sendmail einspeist. Zwecks Serialisierung ist
472 in usevote.cfg die Einstellung "sleepcmd" konfigurierbar,
473 normalerweise wird ein "sleep 1" nach jeder Mail ausgefuehrt.
474 Das Verschicken der Mails (und damit ggfls. der Aufruf von "domail")
475 erfolgt automatisch mit "uvvote.pl clean".
477 Unter Windows ist nur SMTP moeglich, es sei denn, es gibt
478 die Befehle sendmail, sleep und rm ;-)
481 9. Unzustellbare Bestaetigungen
482 ===============================
484 Leider kommt es immer mal wieder vor, dass jemand bei der Abstimmung
485 eine ungueltige Mailadresse angegeben hat. In diesem Fall erhaeltst Du
486 einen Bounce an die Absenderadresse zurueck (diese laesst sich in
487 usevote.cfg mit der Option "envelopefrom" einstellen bzw. bei
488 direkten Aufruf eines Mailers über die entsprechende Kommandozeilenoption
489 in der mailcmd-Einstellung, z.B. bei Sendmail -f). Du solltest
490 solche Fehlermails in einer gesonderten Datei speichern oder in
491 einem gesonderten POP3-Postfach halten und beim Erstellen
492 des 2. CfVs und des Results uvbounce.pl aufrufen.
494 Ausgegeben wird von uvbounce.pl eine Liste mit ungueltigen Adressen,
495 die einfach an den Abschnitt "ungueltige Stimmen" des 2. CfVs bzw.
496 Results angehaengt werden kann. Nicht vergessen, die Stimmen manuell
497 aus der Liste der gueltigen Stimmen zu loeschen (falls Du die
498 Policy verfolgst, nur Stimmen mit gueltiger Absenderadresse zu werten,
499 was empfehlenswert ist) und bei Bedarf das Ergebnis zu korrigieren!
505 Zum Erstellen des 2. CfVs kannst Du erst einmal den 1. CfV als Vorlage
506 benutzen. Am Ende sollte allerdings eine Liste der Personen folgen,
507 die bereits abgestimmt haben. Diese laesst sich mit "uvcount.pl -l"
508 erzeugen. Moeglicherweise fragt uvcount.pl wegen scheinbar doppelter
509 Stimmabgaben nach und bietet an, eine oder beide Stimmen zu ignorieren.
510 Du solltest das dann genauer untersuchen und die passende Wahl treffen.
512 Vorsicht bei doppelten Namen: Es gibt einige doppelt vorkommende
513 Namen, hinter denen sich voellig unterschiedliche Personen
514 verbergen! Die Mailadresse sollte in solchen Faellen Auskunft
515 geben koennen, notfalls einmal nachfragen.
517 Das Endergebnis kannst Du mit "uvcount.pl -r" ausgeben lassen.
518 Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
519 das folgende tabellarische Format verwendet:
521 Ja Nein : 2/3? >=60? : ang.? : Gruppe
522 ==== ==== : ==== ===== : ===== : =======================================
523 100 70 : Nein Ja : Nein : Einrichtung von xyz
525 Bei Abstimmungen ueber nur einen Punkt gibt es auch die Moeglichkeit,
526 einen einfachen beschreibenden Text zu verwenden:
527 "Es gab 100 JA und 70 NEIN-Stimmen ...".
529 Falls in usevote.cfg die Einstellung "multigroup = 1" gesetzt ist,
530 wird immer die tabellarische Form gewaehlt, bei "multigroup = 0"
531 benutzt uvcount.pl bei nur einem Abstimmungspunkt den beschreibenden
532 Text. Überschreiben laesst sich dieses mit Aufrufparametern:
534 uvcount.pl -r -m = Tabellarisch (m = multigroup)
535 uvcount.pl -r -o = Text (o = onegroup)
537 Falls in usevote.cfg die Option "proportional = 1" aktiviert ist,
538 wird standardmaessig folgendes Ausgabeformat angewandt:
540 Ja Nein : J>=N? Ja/Nein : ang.? : Gruppe
541 ==== ==== : ===== ======= : ===== : ====================================
542 100 70 : Ja 1.429 : : Einrichtung von abc
543 80 90 : Nein 0.888 : : Einrichtung von xyz
545 Das genaue Aussehen ist im Template "result-proportional" aenderbar,
546 die Bedingungen und Auswertungsformeln sind ueber usevote.cfg
547 einzustellen (prop_formula und condition1). Die Spalte "ang.?" muss
548 in diesem Fall manuell ausgefüllt werden, da manchmal auch mehrere
549 Abstimmungsgegenstände angenommen werden, z.B. bei Moderationsnachwahlen
550 für verschiedene Posten.
552 Die Waehlerliste mit abgegebenen Stimmen erzeugst Du mit
553 "uvcount -v". Diese Option laesst sich auch mit -r kombinieren,
554 so dass Du Dir das doppelte Aussortieren von Duplikaten sparst.
555 Wichtig: Diese Liste darf erst im Result veroeffentlicht werden,
558 Falls ein trivialer Schutz vor Spammern gewuenscht ist, koennen durch
559 eine Aenderung in den Template "voterlist", "votes-single", "votes-multi"
560 und "bouncelist" alle Mailadressen verfremdet werden. Entweder Du fuegst
561 folgende Definition ein:
563 mail := value mail | replace '@' ' -at - '
565 Oder Du veraenderst direkt die vorgegebenen Formate, indem Du
566 die Mailadresse mit Hilfe des Pipe-Symbols durch die replace-Funktion
569 multi-line := value mail | replace '@' ' -at- ' | justify-behind name 72
571 Die Replace-Funktion erwartet wie im Beispiel gezeigt zwei Werte,
572 die zu ersetztende Zeichenfolge (hier das '@') und eine neue Zeichenfolge,
573 die statt dessen eingesetzt werden soll und frei gewaehlt werden kann.
575 Wie bereits beschrieben, sollte am Ende des 2. CfVs bzw. Results noch die
576 Liste der gebouncten Mailadressen angehaengt werden (z.B. mit dem Programm
577 uvbounce.pl) und bei Bedarf die urspruenglichen Stimmen geloescht und das
578 Ergebnis korrigiert werden.
584 Zum Schutz der deutschen Wahlleiter wurden spezielle Klauseln
585 aufgenommen, die vom Waehler die Erlaubnis zur Verarbeitung
586 der Stimme verlangen. Die Option "bdsg" in usevote.cfg schaltet
587 diese Sonderbehandlung ein oder aus. Folgende Besonderheiten
588 gelten bei Aktivierung:
590 - Im Wahlschein ist ein spezieller Hinweistext enthalten, der
591 aus der Datei bdsgtext.cfg genommen wird. Beim Verarbeiten
592 abgegebener Stimmen wird der Abschnitt wieder mit der Datei
593 verglichen. Fehlt er oder wurde er veraendert, wird der
594 Wahlschein dem Wahlleiter zur Kontrolle vorgelegt.
595 Die Fehlerpruefung ignoriert Quote- und Leerzeichen sowie
596 Zeilenumbrueche, kann aber versagen, wenn dem Quotezeichen
597 Initialen vorangestellt sind (wie in manchen Mailboxnetzen
598 ueblich) oder eine Silbentrennung ueber den Text gelaufen ist.
600 - Ausserdem enthaelt der Wahlschein eine spezielle Frage,
601 die mit JA zu beantworten ist. Anderenfalls muss ebenfalls
602 Kontrolle durch den Wahlleiter erfolgen. Der Text dieser
603 Frage ist ueber usevote.cfg einzustellen.
605 Erfolgt eine derartige Kontroll-Vorlage beim uvvote.pl-Lauf,
606 sollte der Wahlleiter sich den Wahlschein genau anschauen
607 und dann entweder im Menue die Option (6)(a) waehlen oder
608 mit (w) fortfahren. Im letzteren Fall wird die Stimme
609 verworfen und eine Hinweismail zurueckgeschickt.
611 Wenn eine Wahlbestaetigung veraendert und zurueckgeschickt
612 wird, fehlt der entsprechende Datenschutzhinweis. Da in
613 diesem Fall die Zustimmung aber bereits bei der ersten
614 Stimmabgabe gegeben wurde, kann der Wahlleiter beruhigt
615 die Korrektheit wie oben beschrieben bestaetigen.
618 12. Personalisierte Wahlscheine
619 ===============================
621 Die Wahlregeln fuer de.* sehen im Abschnitt 6a ein Verfahren
622 mit persoenlichen Wahlscheinen vor, die mit einer speziellen
623 Kennung versehen mehr Sicherheit vor Manipulation bieten.
625 Um dieses Verfahren einzuschalten, muss zunaechst die Option
626 "personal = 1" in usevote.cfg gesetzt werden und das Template
627 "ballot-personal" im Unterverzeichnis "templates" um den Text
628 des CfVs erweitert werden (einfach statt des von Sternchen
629 umrandeten Kommentars in der Datei einfuegen). Bitte eventuell
630 im Text vorkommende eckige Klammern wie folgt unschaedlich
631 machen: \[Text\] (Backslash voranstellen), da in den Templates
632 diese Klammern spezielle Bedeutungen haben (siehe gesonderten
633 Abschnitt zu dem Thema in dieser Datei).
635 Der gepostete CfV enthaelt i.d.R. nur einen Dummy-Abschnitt
636 mit Hinweis auf die gesonderte Wahlscheinanforderung. So ein
637 Abschnitt kann mit uvballot.pl generiert werden.
639 Der dana-Moderation sollte beim Einreichen des CfVs auch
640 ein Dummy-Wahlschein mitgesendet werden, wie er bei der
641 Wahlscheinanforderung verschickt wird. Dieser laesst sich mit
642 "uvcfv.pl -t" erzeugen.
644 Die eingehenden Wahlscheinanforderungen sollten an eine
645 spezielle Mailadresse gehen und dann mit uvcfv.pl verarbeitet
646 werden. Je nach Konfiguration in usevote.cfg werden die
647 Mails aus einer Mailboxdatei oder per POP3 eingelesen und jeweils
648 mit einem personalisierten Wahlschein beantwortet. Bitte vor
649 dem Posten des CfVs einen Test durchfuehren, um sicherzustellen,
650 dass die generierten Wahlscheine korrekt sind und auch bei
651 der Auswertung akzeptiert werden (hierbei wird die speziell
652 eingefuegte Wahlscheinkennung in Verbindung mit der Absenderadresse
656 13. Die einzelnen Programme
657 ===========================
660 Generiert den Wahlschein fuer den CfV. Bei personalisierten
661 Wahlscheinen (personal = 1 in usevote.cfg) wird nur ein Dummy-
662 Abschnitt mit Hinweisen zur Wahlscheinanforderung ausgegeben.
664 Die Vorlage fuer den Wahlschein ist im templates-Unterverzeichnis
666 - ballot Standard-Wahlschein (personal=0)
667 - ballot-request Dummy-Abschnitt mit Hinweisen zur
668 Wahlscheinanforderung (personal=1)
669 - ballot-personal Wahlschein mit Scheinkennung, wird von
674 -c config_file liest die Konfiguration aus config_file
675 (usevote.cfg falls nicht angegeben)
677 --help zeigen einen Hilfetext an
681 Liest Bounces aus den uebergebenen Dateien oder aus einer POP3-
682 Mailbox ein (Verhalten haengt von usevote.cfg ab) und generiert
683 eine Liste von unzustellbaren Adressen, die an den 2. CfV oder das
684 Result angehaengt werden kann. Falls POP3 in usevote.cfg
685 eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
686 werden die uebergebenen Dateinamen ignoriert.
688 Die Vorlage fuer die ausgegebene Liste ist im templates-
689 Unterverzeichnis konfigurierbar (Datei "bouncelist").
693 -c config_file liest die Konfiguration aus config_file
695 --file dateiname(n) lesen die Bounces aus den uebergebenen Dateien,
696 auch wenn in der Konfigurationsdatei POP3
697 eingeschaltet ist. Diese Option wird benoetigt,
698 falls zwar die Stimmzettel per POP3 eingelesen
699 werden sollen, nicht aber die Bounces.
700 Die Dateinamen werden durch Leerzeichen getrennt.
702 --help zeigen einen Hilfetext an
707 Liest Mailboxen ein und beantwortet alle Mails mit personalisierten
708 CfVs (falls personal=1 in usevote.cfg).
710 Die Vorlage fuer die ausgegebene Liste ist im templates-
711 Unterverzeichnis konfigurierbar (Datei "ballot-personal").
715 -c config_file liest die Konfiguration aus config_file
716 (usevote.cfg falls nicht angegeben)
718 --test gibt einen Dummy-Wahlschein mit Scheinkennung
719 an der Standardausgabe aus, zur Pruefungszwecken
721 --help zeigen einen Hilfetext an
726 Zaehlt Stimmen und gibt Waehlerlisten aus. Dient zur Erstellung
727 von 2.CfV und Result.
729 Es werden die folgenden Vorlagen aus dem templates-Unterverzeichnis
732 - result-multi Ergebnisauszaehlung bei mehreren Gruppen
733 - result-single Ergebnisauszaehlung bei nur einem Abstimmungs-
734 gegenstand (nicht tabellarisch, sondern im
735 Fliesstext), falls in usevote.cfg multigroup=0
736 gesetzt ist oder die Option -o verwendet wird
738 - voterlist Reine Auflistung der bisherigen Waehler ohne
739 Stimmen (fuer 2. CfV)
740 - votes-multi Stimmenliste im Mehrgruppenformat (eine Liste
741 mit allen Waehlern, rechts daneben die jeweils
743 - votes-single Stimmenliste im Eingruppenformat (getrennte
744 Listen mit Ja-, Nein- und Enthaltungsstimmen)
748 -c config_file liest die Konfiguration aus config_file
749 (usevote.cfg falls nicht angegeben)
750 -f result_file liest die Stimmen aus result_file (ueberschreibt
751 die "resultfile"-Angabe aus der Konfigurationsdatei)
753 --list Geben eine Liste aller Waehler aus (ohne Stimmen).
755 --voters Wie --list, aber mit Angabe der abgegebenen Stimmen.
757 --result Ausgabe des Endergebnisses (kann mit --list oder
758 --voters kombiniert werden).
760 --multigroup Benutzt auch bei Eingruppenabstimmungen das
761 Mehrgruppenformat beim Endergebnis (ueberschreibt
762 die Einstellung aus usevote.cfg).
763 Nur in Kombination mit --result verwendbar,
764 schliesst --onegroup aus.
766 --onegroup Benutzt bei Eingruppenabstimmungen immer das
767 Eingruppenformat beim Endergebnis (ueberschreibt
768 die Einstellung aus usevote.cfg).
769 Nur in Kombination mit --result verwendbar,
770 schliesst --multigroup aus.
772 --nodup Verzichtet auf das Aussortieren von doppelten
773 Stimmabgaben. Nicht empfohlen!
775 --help zeigen einen Hilfetext an
781 Liest Mailboxen aus einer Datei oder per POP3 ein wertet die Mails
782 als Stimmzettel aus. Erst beim Aufruf mit der Option "clean" werden
783 die Ergebnisse endgueltig gespeichert und die Bestaetigungsmails
786 Es werden diverse Vorlagen aus dem templates-Unterverzeichnis
787 benutzt, um Bestaetigungs- und Fehlermails zu generieren.
791 -c config_file liest die Konfiguration aus config_file
792 (usevote.cfg falls nicht angegeben)
794 --test fuehrt einen Test der Konfiguration durch und
795 gibt das ermittelte Ergebnis aus.
797 --help zeigen einen Hilfetext an
801 14. Die Konfigurationsdateien
802 =============================
807 Diese Datei enthaelt einen regulaeren Ausdruck (Perl-Syntax) pro
808 Zeile. Passt die Mailadresse eines Abstimmenden auf eines der Muster,
809 wird dem Wahlleiter bei der Auswertung eine Warnung angezeigt.
810 In der Regel kann man diese ignorieren, weil heutzutage viele
811 Privatleute ihre eigene Domain haben und Role-Accounts wie news@
812 benutzen. Sieht man aber so etwas wie news@t-online.de ist
813 Vorsicht angebracht und man sollte durch Auswahl von "(W)eiter"
814 die Stimme ungueltig werten und eine entsprechende Fehlermail
815 zurueckschicken lassen.
821 Hier sind alle kuerzeren Texte enthalten, die Usevote ausgibt,
822 unabhaengig davon, ob sie nur dem Wahlleiter bei der Programmausfuehrung
823 ausgegeben werden oder in persoenlichen Mails bzw. dem Result
824 auftauchen. Laengere Textpassagen sind als eigene Dateien im
825 "templates"-Verzeichnis zu finden und bieten weitergehende
826 Formatierungsmoeglichkeiten.
828 Jede Zeile in der messages.cfg besteht aus einem Identifier, einem
829 Gleichheitszeichen und dem eigentlichen Text. Der Identifier ist
830 grundsaetzlich in Grossbuchstaben gehalten und vom Programmcode fest
831 vorgegeben. Aenderungen duerfen nur rechts vom Gleichzeichen vorgenommen
832 werden, wenn Dir z.B. Formulierungen nicht gefallen oder Du anders-
833 sprachige Ausgaben haben moechtest.
835 Variablen sind ueber ${VARIABLE} einzubauen, allerdings sind die
836 Variablennamen und deren Inhalte vom Programmcode vorgegeben und
837 sollten beibehalten werden. Es gibt keine vordefinierten Variablen,
838 die Du selbst einbauen kannst, es sei denn, Du erweiterst den
839 Programmcode an der entsprechenden Stelle.
841 Die einzigen Texte, die fest im Programmcode stehen, sind die
842 Hilfetexte der einzelnen Programme (ueber die Option -h oder --help
843 aufrufbar) sowie die Startmeldungen (Copyright etc.) und initiale
844 Fehlermeldungen (usevote.cfg oder messages.cfg nicht gefunden,
845 ungueltige oder falsch kombinierte Aufrufparameter).
851 Mit dieser Datei koennen spezielle Regeln fuer eine gueltige Stimmabgabe
852 bei Mehrgruppenabstimmungen erstellt werden, z.B. dass man Punkt 3 oder 4
853 waehlen muss, wenn man fuer Punkt 2 gestimmt hat (quasi als weitergehende
854 Auswahlmoeglichkeit). Solche Regeln verkomplizieren aber die Abstimmung
855 und sollten nur in Ausnahmefaellen benutzt werden. Urspruenglich gedacht
856 war diese Moeglichkeit z.B. fuer .misc Gruppen, die zwangsweise bei einer
857 Aufteilung mit angelegt werden mussten. Dadurch, dass das in den
858 Wahlregeln fuer de.* als Automatismus eingebaut ist, kann man sich
859 so etwas meistens sparen. Fuer den Fall, dass bei einer vorgeschlagenen
860 neuen Gruppe der Name noch unklar ist, gibt ebenfalls das Benutzen
861 von speziellen Wahlregeln wenig Sinn, da man auch eine Meinung ueber
862 den Gruppennamen haben kann, wenn man eigentlich gegen die Gruppe ist.
864 Wenn Du aber ein Verfahren betreust, in dem Du solche Sonderregeln
865 benoetigst, kannst Du eine Regel pro Zeile in der folgenden Syntax schreiben:
869 Eine Regel beginnt immer mit "if", und danach folgen eine Anzahl Symbole;
870 diese Anzahl muss gleich der Anzahl der Gruppen sein, ueber die abgestimmt
871 wird. Oben geht es also um eine Abstimmung ueber sechs Gruppen.
872 Die Symbole hinter "if" geben an, in welchem Fall diese Regel Anwendung
873 finden soll. Falls sie zutrifft, wird die Bedingung hinter "then"
874 geprueft (dort muessen nochmal so viele Symbole folgen, wie Gruppen
875 im Wahlschein vorkommen). Ist diese Bedingung nicht erfuellt, wird
876 der Wahlschein dem Wahlleiter als regelverletzend vorgelegt, und
877 wenn diese mit "(w)eiter" den Fehler bestaetigt, wird eine entsprechende
878 Fehlermeldung zurueckgeschickt und die Stimme als ungueltig gewertet.
880 Folgende Symbole sind erlaubt:
885 S eine JA- oder NEIN-Stimme
886 H eine Enthaltung oder JA-Stimme
887 I eine Enthaltung oder NEIN-Stimme
888 . egal (Ja, nein oder Enthaltung)
889 j eine oder mehrere der markierten Gruppen hat JA-Stimme
890 n "" "" "" "" "" "" "" NEIN-Stimme
891 e "" "" "" "" "" "" "" Enthaltung
892 s "" "" "" "" "" "" "" Ja- oder Nein-Stimme
893 h "" "" "" "" "" "" "" Enthaltung oder Ja-Stimme
894 i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme
896 Hier noch ein Beispiel:
901 Diese Regeln sagen: Wer fuer die erste Gruppe abstimmt, der muss auch
902 fuer die zweite und dritte Gruppe abstimmen - egal wie. Ausserdem muss er
903 (Regeln 2 und 3) sich bei 3 enthalten, wenn er bei 2 eine Stimme abgibt
904 und umgekehrt. Die vierte Gruppe wird hier gar nicht betroffen.
910 Dieses ist die zentrale Konfigurationsdatei fuer Usevote. Einige
911 Einstellungen sind nur einmal auf das System und Deine Gewohnheiten
912 anzupassen, andere muessen fuer jede Abstimmung geaendert werden.
913 Alle Einstellungen sind mit mehr oder weniger sinnvollen
914 Standardwerten vorgegeben, die sich bei leerer usevote.cfg mittels
915 "uvvote.pl -t" ermitteln lassen.
917 Es lassen sich durch eine Zeile "include dateiname" weitere
918 Konfigurationsdateien einbinden. Die Stelle, an der dieses geschieht,
919 ist dabei wichtig, da die usevote.cfg von oben nach unten gelesen
920 wird (zusätzlich eingebundene Konfigurationsdateien werden an der
921 Stelle der "include"-Zeile eingefügt) und bei mehrmals vorkommenen
922 Optionen der jeweils letzte gesetzte Wert benutzt wird.
923 Daher sollte eine Datei mit systemweiten Defaults am besten am
924 Anfang der usevote.cfg eingebunden werden, die dort gesetzten
925 Optionen sollten aber unbedingt aus der usevote.cfg geloescht werden,
926 damit die systemweiten Einstellungen nicht gleich wieder ueberschrieben
929 Das Format ist allgemein:
933 Der Wert muss in manchen Faellen 0 (=aus) oder ungleich 0 (=an) sein,
934 in anderen Faellen muss eine exakte Zahl oder Zeichenkette eingegeben
937 Alles, was hinter einem # Zeichen steht, wird als Kommentar gewertet
938 und ignoriert. Steht hinter einem Wert so ein Kommentar, wird
939 normalerweise alles bis zum Kommentarzeichen noch in den String
940 einbezogen. In so einem Fall sollte der Wert von Anfuehrungszeichen
941 umschlossen werden. Im folgenden Beispiel wird ein Dateiname
944 # Der Dateiname endet mit 10 Leerzeichen (bis zum Kommentarzeichen):
945 tpl_mailheader = mailheader # Kommentar
947 # Der Dateiname enthaelt keine Leerzeichen, da mit Anfuehrungsstrichen
949 tpl_mailheader = "mailheader" # Kommentar
951 Folgt kein Kommentar in der selben Zeile, koennen die Anfuehrungsstriche
954 Hier eine Auflistung der immer anzupassenden Optionen
955 (BOOL bedeutet, dass 0 (aus) oder 1 (an) eingetragen werden muss):
957 votename Name der Abstimmung
958 group1 Erster Abstimmungsgegenstand
959 group2 Zweiter (und so weiter durchnummerieren)
960 votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
961 mailboxtype Typ der Mailbox (mbox, maildir)
962 personal Personalisierte Wahlscheine verwenden? [BOOL]
963 (siehe gesonderten Abschnitt weiter oben)
964 voteaccount Mailadresse, unter der abgestimmt werden kann
965 (Reply-To im CfV auf diese Adresse setzen)
966 requestfile Datei mit Anforderungsmails bei "personal=1", falls
967 POP3 ausgeschaltet ist
968 bdsg Datenschutzklausel generieren und auf deren Existenz
969 pruefen? [BOOL] (siehe gesonderten Abschnitt weiter oben)
970 replyto Reply-To Header auswerten? [BOOL] (nicht empfohlen und in
971 de.* von den GVV nicht praktiziert)
972 voteack Jede Stimme mit einer Bestaetigungsmail beantworten? [BOOL]
974 mailcc weitere Mailadresse, an die eine Kopie jeder Bestaetigungs-
975 oder Fehlermail geschickt wird (fuer Archivzwecke)
976 onestep Mails direkt verschicken und Ergebnisse speichern? [BOOL]
977 ("uvvote clean" Aufruf entfaellt)
978 multigroup Fuer das Ergebnis auch bei Eingruppenabstimmung des
979 Mehrgruppenformat waehlen? [BOOL]
980 condition1 Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
981 condition2 (normalerweise "$yes>=2*$no" und "$yes>=60"
982 resultfile Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
983 idfile Datei mit Scheinkennungen (bei "personal=1")
984 pop3 POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
985 pop3server POP3-Server fuer eingehende Wahlscheine
986 pop3port POP3-Serverport (normalerweise 110)
987 pop3user Benutzername
989 pop3delete Mails nach Abruf vom Server loeschen? [BOOL]
990 pop3uidlcache Dateiname zum Speichern bereits abgerufener Mail-IDs (UIDL)
991 pop3*_req entsprechende Optionen fuer Mailbox mit eingehenden
992 Wahlscheinanforderungen (bei "personal=1")
993 pop3*_bounce entsprechende Optionen fuer Mailbox mit Bounces (Fehlermails)
994 fuer die Verarbeitung durch uvbounce.pl
995 smtp SMTP zum Verschicken von Mails benutzen? [BOOL]
996 Andernfalls wird direkt an den MTA uebergeben (nur Unix)
997 smtpserver SMTP-Server
998 smtpport SMTP-Serverport (normalerweise 25)
999 smtpauth SMTP-Authentication nach RFC 2554 benutzen? [BOOL]
1000 smtpuser SMTP-Benutzername
1001 smtppass SMTP-Passwort
1002 smtphelo String fuer die HELO-Greeting bei SMTP (Default: Hostname)
1003 fqdn String fuer den Host-Teil der Message-ID
1004 (Fully Qualified Domain Name) (Default: Hostname)
1005 archivedir Verzeichnis fuer Archivierung von verarbeiteten Stimmen
1006 tmpdir temporaeres Verzeichnis
1007 templatedir Verzeichnis mit Templates (Vorlagen) fuer diverse Zwecke
1008 (normalerweise "templates", dort liegen bereits vordefinierte
1009 Templates, die i.d.R. nicht angepasst zu werden brauchen)
1010 formats Konvertierungsfunktionen fuer die Templates, mit Komma getrennt
1011 (mitgelieferte UVformats.pm muss hier aufgefuehrt werden,
1012 desweiteren koennen eigene Module mit weiteren Funktionen
1013 hier eingebunden werden)
1014 controlfile Name der Steuerungsdatei fuer den Mailversand (tmp/ack.control)
1015 domailfile Name des Shellscripts zum Versenden der Bestaetigungsmails
1016 (falls smtp=0, normalerweise tmp/domail)
1017 mailcmd Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
1018 Bestaetigungsmails (falls smtp=0), z.B.
1019 "sendmail -oi -oem -femail@adresse"
1020 sleepcmd Weiteres Kommando, welches nach jeder Mail aufgerufen werden
1021 soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
1022 langsamen Systemen hoeher gewaehlt werden sollte.
1023 clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
1024 muss unter Windows auf "cls" geaendert werden. Falls Shell
1025 oder Betriebssystem keinen solchen Befehl bereitstellen,
1026 sollte ein Kommando verwendet werden, welches eine Trennlinie
1027 oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
1028 pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
1029 Bildschirm (normalerweise "less"). Unter Windows muss "more"
1030 benutzt werden, unter Unix hingegen gibt es moeglicherweise
1031 bei "more" Probleme mit der Umleitung von STDERR in eine Datei
1032 (wie es z.B. von uvvote.pl benoetigt wird), daher ist "less"
1034 mailfrom Absender fuer den From-Header der Bestaetigungsmails. Wird
1035 auch in Bestaetigungsmails als Unterschrift eingefuegt und
1036 sollte daher am besten in folgendem Format sein:
1037 Vorname Nachname <gvv@foo.bar>
1038 (ohne Anfuehrungsstriche, falls rfc-konform moeglich)
1039 envelopefrom Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
1040 bei Verwendung von SMTP (bitte nur die Adresse eintragen, ohne
1041 Klammern und Zusaetze). Wenn SMTP ausgeschaltet ist, muss
1042 diese Einstellung entsprechend der Mailer-Doku in "mailcmd"
1043 gesetzt werden (z.B. bei Sendmail und kompatiblen mit -f)
1044 messagefile Datei mit diversen Meldungen und Textfragmenten (messages.cfg)
1045 rulefile Datei mit Wahlregeln (usevote.rul)
1046 badaddrfile Datei mit verdaechtigen Mailadressen (mailpatterns.cfg)
1047 errorfile Datei fuer Fehlermeldungen beim Programmlauf (errors.log)
1048 mailstart Einleitungszeile fuer naechste Mail (RegExp), falls Mails
1049 aus einer Datei eingelesen werden (smtp=0), normalerweise
1051 begin_divider Trennlinien vor und nach dem Wahlschein
1052 end_divider ("Alles vor/nach dieser Zeile bitte loeschen")
1053 nametext Text fuer die Namens-Angabe im Wahlschein. Muss im
1054 Wahlschein genauso stehen und wird beim Standardtemplate
1055 auch aus dieser Einstellung uebernommen. Beispieltext:
1056 "Dein Realname, falls nicht im FROM-Header:"
1057 nametext2 Text fuer Namens-Angabe in Bestaetigungsmails
1058 (dito, Standardwert "Waehlername:")
1059 addresstext Text fuer die Adress-Angabe im Wahlschein
1060 (dito, Standardwert "Waehleradresse:")
1061 ballotidtext Text für die Angabe der Wahlscheinkennung (falls personal=1)
1062 (dito, Standardwert "Wahlscheinkennung:")
1063 bdsgtext Text fuer Datenschutzklausel (falls bdsg=1), erscheint als
1064 Abstimmungspunkt (z.B. "Datenschutzklausel - Zustimmung: Ich
1065 bin mit der Verarbeitung meiner Daten wie oben beschrieben
1067 bdsgfile Datei mit Erklaerungstext fuer BDSG-Klausel (bdsgtext.cfg)
1068 rightmargin Zeilenbreite bei Ausgaben, die nicht durch Templates
1069 gesteuert werden. Hat vor allem auf Bildschirmausgaben
1071 name_re Regulaerer Ausdruck fuer Erkennung eines gueltigen Realnamens.
1072 Beispiel: "[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß-]{2,} +
1073 .*[a-zA-ZäöüáàâéèêíìîóòôúùûÄÖÜÁÁÂÉÈÊÍÌÎÓÒÔÚÙÛß]{2,}"
1074 (muss ohne Umbruch in eine Zeile)
1076 Regulaere Ausdruecke fuer Erkennung der Stimmen
1077 (Gross-/Kleinschreibung spielt keine Rolle):
1079 ja_stimme Standardwert: (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
1080 nein_stimme Standardwert: (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
1081 enth_stimme Standardwert: (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
1082 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
1084 Definition der verwendeten Templatedateien
1085 (werden im Unterverzeichnis "templates" mitgeliefert):
1087 tpl_mailheader "mailheader" # generally used mail header
1088 tpl_bouncelist "bouncelist" # used by uvbounce.pl
1089 tpl_result_multi "result-multi" # used by uvcount.pl -r -m
1090 tpl_result_single "result-single" # used by uvcount.pl -r -o
1091 tpl_votes_multi "votes-multi" # used by uvcount.pl -v (multiple groups)
1092 tpl_votes_single "votes-single" # used by uvcount.pl -v (single group only)
1093 tpl_voterlist "voterlist" # used by uvcount.pl -l (2nd CfV)
1094 tpl_ballot "ballot" # used by uvballot.pl (personal = 0)
1095 tpl_ballot_request "ballot-request" # used by uvballot.pl (personal = 1)
1096 tpl_ballot_personal "ballot-personal" # used by uvcfv.pl (personal = 1)
1097 tpl_addr_reg "address-not-registered" # used by uvvote.pl (personal = 1)
1098 tpl_no_ballotid "no-ballotid" # used by uvvote.pl (personal = 1)
1099 tpl_wrong_ballotid "wrong-ballotid" # used by uvvote.pl (personal = 1)
1100 tpl_bdsg_error "bdsg-error" # used by uvvote.pl (bdsg = 1)
1101 tpl_ack_mail "ack-mail" # used by uvvote.pl (voteack = 1)
1102 tpl_cancelled "cancelled" # used by uvvote.pl
1103 tpl_invalid_account "invalid-account" # used by uvvote.pl
1104 tpl_invalid_name "invalid-name" # used by uvvote.pl
1105 tpl_multiple_votes "multiple-votes" # used by uvvote.pl
1106 tpl_no_ballot "no-ballot" # used by uvvote.pl
1107 tpl_no_votes "no-votes" # used by uvvote.pl
1108 tpl_rule_violated "rule-violated" # used by uvvote.pl (siehe usevote.rul)
1114 Die mitgelieferten Templates befinden sich im Verzeichnis "templates".
1115 In usevote.cfg koennen weitere Verzeichnisse definiert werden, in
1116 denen auch nach Templates gesucht wird ("templatedir", kommaseparierte
1117 Liste mit Verzeichnissen). Außerdem koennen dort die Dateinamen der einzelnen
1118 Templates eingestellt werden, wodurch es moeglich ist, in einzelnen
1119 Abstimmungen andere, selbst definierte Templates zu verwenden, die in
1120 einem gesonderten Verzeichnis abgelegt sind.
1122 Eine Templatedatei besteht aus zwei Teilen. Am Anfang werden die
1123 Formatierungen bestimmter Schluessel definiert und nach einem Trenner
1124 folgt der eigentlich Template-Koerper, der dann von Programm bearbeitet
1125 und ausgegeben wird.
1127 format-key := function1 param | function2 param
1129 == TEMPLATE ====================================
1131 Ich bin nun das eigentliche Template:
1133 format-key: [$format-key]
1135 Der Trenner beginnt mit den Zeichen '== TEMPLATE' danach koennen beliebige
1136 Zeichen folgen um die beiden Sektionen optisch voneinander abzugrenzen.
1138 Wenn es keine Formatierungsanweisungen gibt, kann der Trenner auch
1139 weggelassen werden. D.h. wenn kein Trenner gefunden wird, wird der
1140 komplette Text als Template-Koerper betrachtet.
1146 Im Template-Koerper werden die zu ersetzenden Token durch eckige
1147 Klammern abgegrenzt. Sollen eckige Klammern im Text ausgegeben werden,
1148 muessen diese durch einen Backslash freigestellt werden.
1150 [$termersetzung] [@schleife] nur eine \[ Klammer
1155 Ersetzt den Token durch den Wert des angegeben Schluessels:
1157 [$formatierung] [$schluessel]
1159 Es wird zuerst nach einer Formatierung mit den entsprechenden
1160 Bezeichner gesucht. Ist diese vorhanden, werden die entsprechenden
1161 Funktionen ausgefuehrt (siehe folgender Abschnitt).
1163 Kann kein Format gefunden werden, wird direkt in der im Programmcode
1164 gefuellten Datenstruktur nach einem Schluessel mit dem angegeben
1165 Bezeichner gesucht und sein Wert eingesetzt. Alle Einstellungen
1166 aus der usevote.cfg sind automatisch als Schluessel definiert, es
1167 kann also z.B. [$nametext] jederzeit verwendet werden. Eingesetzt
1168 wird an der Stelle der mit "nametext = " definierte Text aus
1171 Schlussendlich ist es noch moeglich einen default-Wert zu
1172 definieren, der eingesetzt wird, wenn keiner der obigen Wege
1175 Hallo [$name|Unbekannter]!
1177 Diese Zeile gibt, wenn kein Name definiert wurde, das Wort
1181 Bedingte Verzeigung:
1183 Ueberprueft ob der Wert des angegebenen Formats/Schluessel boolsch
1184 WAHR ist. Dementsprechend wird der then oder else Block eingefuegt:
1186 [?if|then|else] oder auch nur [?if|then]
1188 Die then/else Bloecke werden natuerlich auch auf Tokens geparst und
1189 diese dementsprechend ersetzt.
1194 Der nachfolgende Textblock wird fuer alle Elemente des durch den
1195 Schluessel bezeichneten Arrays ausgefuehrt und eingefuegt.
1197 [@schluessel|block] oder [@schluessel|block|sep]
1199 Als zweiter Parameter kann ein Separtor definiert werden, mit dem
1200 sich z.B. kommaseparierte Listen erzeugen lassen, da der Separator
1201 eben nur zwischen den Elementen eingefuegt wird.
1203 Auch fuer Schleifen koennen Formatierungen genutzt werden.Allerdings
1204 darf kein String zurueckgegeben werden, sondern ein Array mit einer
1205 Menge von UVtemplate-Objekten.
1210 Token die nach der Bearbeitungen entfernt werden:
1212 [# mich sieht man nicht]
1217 Um in Listen einen Zeilenumbruch zu erzwingen, muss lediglich ein
1218 '\n' eingefuegt werden, falls eine kompakte Definition der Liste
1221 [@names|[name] [email]\n]
1227 Eine Formatierung besteht eigentlich nur aus dem entsprechenden
1228 Namen und einer beliebigen Anzahl von Funktionsaufrufen:
1230 format := funktion param1 "param 2" | funktion param
1232 Aehnlich der Unix-Shell-Funktionalitaet, wird dabei die Ausgabe
1233 einer Funktion an die folgende weitergeleitet. So ist es moeglich,
1234 verschiedenste simple Formatierungen zu kombinieren um nicht fuer
1235 jeden Spezialfall eine neue Funktion schreiben zu muessen.
1237 Die jeweilige Formatierungsfunktion erhaelt als Input die
1238 Datenstruktur, den Output der vorherigen Funktion und die definierten
1239 Parameter in der entsprechenden Reihenfolge.
1241 Zahlen und einfache Bezeichner koennen direkt definiert werden.
1242 Sollen Sonderzeichen oder Leerzeichen uebergeben werden, muessen
1243 diese gequotet werden. Dazu kann ' oder " verwendet werden.
1245 Die Funktionen geben im Allgemeinen einen String zurueck. Im Rahmen
1246 von Listen können auch Arrays uebergeben werden.
1248 Die erste Funktion duerfte ueblicherweise 'value' sein. Sie gibt
1249 den Wert des angegeben Schluessel zurueck, der dann von den
1250 folgenden Funktionen definiert wird:
1252 name-60 := value name | fill-right 60
1254 Das Format "name-60" definiert also den Wert des Schluessel "name",
1255 der um Leerzeichen aufgefuellt wird, bis eine Laenge von 60 Zeichen
1258 name-email := value name | justify-behind mail 72
1260 "name-email" resultiert in einem String, der zwischen den Werten von
1261 "name" und "email" genau so viele Leerzeichen enthaelt, damit der
1262 gesamte String 72 Zeichen lang ist.
1264 Wird dieses Format in einer Liste angewandt, erhaelt man eine Tabelle
1265 in der die linke Spalte linksbuendig und die rechte Spalte
1266 entsprechend rechtsbuendig ist.
1268 Soweit ein kleiner Ueberblick ueber die Formatierungen. Ausfuehrliche
1269 Funktionsbeschreibungen und weitere Beispiele finden sich in der
1270 POD-Dokumentation des Moduls UVformat ("perldoc UVformat.pm").
1272 Es ist moeglich, selbst eigene Module mit Formatierungsfunktionen
1273 zu schreiben und ueber die Option "formats" in usevote.cfg einzubinden.
1274 Am besten kann dazu UVformats.pm als Vorlage genommen werden.
1275 Wichtig: der Name einer Formatierungsfunktionen darf nur aus
1276 Gross- und Kleinbuchstaben, Zahlen und Minuszeichen bestehen.
1277 Unterstriche, Punkte etc. sind nicht erlaubt!
1279 Falls eine elementare Funktion fehlt, kannst Du Dich auch gerne
1280 bei mir melden und ich pruefe, wie sie sich einbauen laesst.
1282 Marc Langer, im Oktober 2005