Compare commits
59 commits
Author | SHA1 | Date | |
---|---|---|---|
|
f90cfdb57f | ||
|
1765b2e8d6 | ||
|
1696d12d62 | ||
|
fe022f745d | ||
|
b7f97daa67 | ||
|
b4bfb23488 | ||
|
7233d81f30 | ||
|
f406c344d9 | ||
|
ef9dd9e761 | ||
|
1135267f44 | ||
|
3cb13d5a31 | ||
|
52a699fdc7 | ||
|
98343f2272 | ||
|
7a0133efe6 | ||
|
dc651b4283 | ||
|
e54a12d618 | ||
|
10e21c1f97 | ||
|
8f4c5219c4 | ||
|
0d6bf22b47 | ||
|
0470756d59 | ||
|
075e6efe35 | ||
|
7a54626ef8 | ||
|
e670e40bb0 | ||
|
34809a2a81 | ||
|
0618b624e9 | ||
|
638b24050f | ||
|
305f8f61e9 | ||
|
6422cdc893 | ||
|
d0fda3342c | ||
|
e651da8b3f | ||
|
95135a1102 | ||
|
f9b53c6356 | ||
|
5b8997543c | ||
|
c6943e68ec | ||
|
a374bef4c7 | ||
|
1ca99f7368 | ||
|
f908d8a11a | ||
|
b9f5201405 | ||
|
8ab6f4b0df | ||
|
fb9d3eb071 | ||
|
2e9b881e81 | ||
|
691f834832 | ||
|
b4bfab9c0d | ||
|
101511c255 | ||
|
69291ddcaa | ||
|
a0c008eed7 | ||
|
a908bf98dc | ||
|
b1f71b6a18 | ||
|
a0d69f7532 | ||
|
6d43059e4a | ||
|
ccfa122651 | ||
|
45110d89e2 | ||
|
c1d1eea6c2 | ||
|
f3ce003de7 | ||
|
0684acb79b | ||
|
9854ee664c | ||
|
b00b7d6de5 | ||
|
ef29545875 | ||
|
a384e31e54 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
* text=auto
|
52
CHANGES
52
CHANGES
|
@ -1,14 +1,48 @@
|
||||||
UseVoteGer Versionshistorie (aktuelle Version: 4.10, released 17.09.2012)
|
UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 28.02.2014)
|
||||||
=========================================================================
|
=========================================================================
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- aussortieren von Bounces aus Stimmenliste
|
- aussortieren von Bounces aus Stimmenliste
|
||||||
- Unterstuetzung von Maildir
|
|
||||||
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
|
Version 4.13 (unreleased):
|
||||||
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
|
- BDSG-Klausel an die DSGVO angepasst
|
||||||
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
|
- "mailcmd" muss mit "--" enden, damit Mailadressen, die mit "-"
|
||||||
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
|
beginnen, richtig erkannt werden.
|
||||||
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
|
- "diff -u" ist ein besserer Default für das Diff-Programm
|
||||||
|
- Standardwert fuer Mindest-JA-Stimmenzahl von 50 auf 15 verringert
|
||||||
|
|
||||||
|
Version 4.12 (28.02.2014):
|
||||||
|
- uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen
|
||||||
|
Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg
|
||||||
|
(Bugfix in UVreadmail.pm)
|
||||||
|
- UVreadmail.pm setzt beim Schreiben eines Mailarchivs nun einen
|
||||||
|
Timestamp in der mbox-Fromline, der aus der Mail stammt
|
||||||
|
(timestamp()-Funktion von Mail::Box) statt dem aktuellen Datum
|
||||||
|
- UVreadmail.pm laesst nun Mailboxdateien bzw. -ordner bestehen,
|
||||||
|
auch wenn sie leer sind, um Kompatibiliaetsprobleme mit anderen
|
||||||
|
Programmen zu vermeiden
|
||||||
|
- neue Config-Optionen "diff" und "sampleballotfile"
|
||||||
|
- im Fehlermenue bei der Wahlscheinverarbeitung ist es nun moeglich,
|
||||||
|
mit der Option "0" einen Dateivergleich (diff) zwischen dem gemailten
|
||||||
|
Wahlschein und einem Musterwahlschein (wie im CfV geposted) zu starten.
|
||||||
|
Dazu muss die Config-Option "sampleballotfile" gesetzt und die Datei
|
||||||
|
vorhanden sein (Standard-Dateiname: ballot.sample)
|
||||||
|
- im Fehlermenue wird nun der Name der Abstimmung als Ueberschrift
|
||||||
|
angezeigt. Ausserdem wurde in UVmenu.pm ein redundanter Code-Abschnitt
|
||||||
|
entfernt
|
||||||
|
- BDSG-Klausel muss nun standardmaessig zwingend mit JA beantwortet
|
||||||
|
werden, DAFUER wird nicht mehr akzeptiert. Dies kann in usevote.cfg
|
||||||
|
konfiguriert werden
|
||||||
|
- Regular Expression fuer Pruefung des Abstimmungsnamens weiter
|
||||||
|
verbessert
|
||||||
|
- Standardwert fuer Mindest-JA-Stimmenzahl von 60 auf 50 verringert
|
||||||
|
|
||||||
|
Version 4.11 (25.09.2012):
|
||||||
|
- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert.
|
||||||
|
Es kam zu vielen False Positives
|
||||||
|
- Einlesen der Mailbox auf Perlmodul Mail::Box umgestellt, damit
|
||||||
|
auch Maildir moeglich (neue Option "mailboxtype" in usevote.cfg).
|
||||||
|
Archivierung erfolgt aber vorerst weiterhin immer als mbox
|
||||||
|
|
||||||
Version 4.10 (17.09.2012):
|
Version 4.10 (17.09.2012):
|
||||||
- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
|
- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
|
||||||
|
@ -23,7 +57,7 @@ Version 4.10 (17.09.2012):
|
||||||
auf die Ack-Mail geschickt werden koennen)
|
auf die Ack-Mail geschickt werden koennen)
|
||||||
- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
|
- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
|
||||||
oder letztem Abstimmungspunkt ausgewertet)
|
oder letztem Abstimmungspunkt ausgewertet)
|
||||||
- Abstimmungsname wird nun auf Korrektheit geprüft (Wahlschein gehört
|
- Abstimmungsname wird nun auf Korrektheit geprueft (Wahlschein gehört
|
||||||
zur richtigen Abstimmung)
|
zur richtigen Abstimmung)
|
||||||
- neue Konfigurations-Option "ballotintro" und neues Template
|
- neue Konfigurations-Option "ballotintro" und neues Template
|
||||||
tpl_wrong_voting
|
tpl_wrong_voting
|
||||||
|
@ -36,7 +70,7 @@ Version 4.09 (14.09.2007):
|
||||||
- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
|
- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
|
||||||
den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
|
den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
|
||||||
etwa wie vorher angegeben smtp=0)
|
etwa wie vorher angegeben smtp=0)
|
||||||
- Fehler in Template für Ergebnisausgabe korrigiert (fehlendes Newline
|
- Fehler in Template fuer Ergebnisausgabe korrigiert (fehlendes Newline
|
||||||
nach umgebrochenen Abstimmungspunkten)
|
nach umgebrochenen Abstimmungspunkten)
|
||||||
- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
|
- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
|
||||||
(--voters statt --votes)
|
(--voters statt --votes)
|
||||||
|
|
30
README
30
README
|
@ -1,4 +1,4 @@
|
||||||
UseVoteGer 4.10 (c) 2001-2012 Marc Langer
|
UseVoteGer 4.12 (c) 2001-2014 Marc Langer
|
||||||
|
|
||||||
UseVoteGer is a voting software for usenet votes.
|
UseVoteGer is a voting software for usenet votes.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
UseVoteGer 4.10 - Usenet-Abstimmungssoftware
|
UseVoteGer 4.12 - Usenet-Abstimmungssoftware
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
von Marc Langer <uv@marclanger.de>
|
von Marc Langer <uv@marclanger.de>
|
||||||
|
@ -187,7 +187,7 @@ UVrules.pm Routinen zur Regelverarbeitung (usevote.rul)
|
||||||
UVsendmail.pm Routinen zum Erzeugen von Mails
|
UVsendmail.pm Routinen zum Erzeugen von Mails
|
||||||
UVtemplate.pm Routinen zur Verarbeitung von Vorlagen (Templates)
|
UVtemplate.pm Routinen zur Verarbeitung von Vorlagen (Templates)
|
||||||
bdsgtext.cfg Spezieller Text fuer den Wahlschein (Hinweis auf
|
bdsgtext.cfg Spezieller Text fuer den Wahlschein (Hinweis auf
|
||||||
Datenschutzgesetz), muss ausserhalb Deutschlands ggfls.
|
DSGVO), muss ausserhalb Deutschlands ggfls.
|
||||||
angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
|
angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
|
||||||
mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen
|
mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen
|
||||||
messages.cfg Programm-Meldungen (Ressourcen-Datei)
|
messages.cfg Programm-Meldungen (Ressourcen-Datei)
|
||||||
|
@ -324,6 +324,7 @@ ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
|
||||||
sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
|
sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
|
||||||
usevote.cfg, darin können alle anderen Pfade angepasst werden):
|
usevote.cfg, darin können alle anderen Pfade angepasst werden):
|
||||||
|
|
||||||
|
ballot.sample
|
||||||
bdsgtext.cfg
|
bdsgtext.cfg
|
||||||
mailpatterns.cfg
|
mailpatterns.cfg
|
||||||
messages.cfg
|
messages.cfg
|
||||||
|
@ -404,6 +405,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
|
||||||
Meistens gibt es folgende Moeglichkeiten, die durch die
|
Meistens gibt es folgende Moeglichkeiten, die durch die
|
||||||
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
|
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
|
||||||
|
|
||||||
|
(0) Wahlschein mit Original vergleichen (diff)
|
||||||
(1) Anzeigen der Wahlmail
|
(1) Anzeigen der Wahlmail
|
||||||
|
|
||||||
Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
||||||
|
@ -412,6 +414,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
||||||
(4) Stimmen
|
(4) Stimmen
|
||||||
(5) Scheinkennung
|
(5) Scheinkennung
|
||||||
(6) Datenschutzklausel
|
(6) Datenschutzklausel
|
||||||
|
(7) Abstimmung
|
||||||
|
|
||||||
(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
|
(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
|
||||||
(w) Weiter
|
(w) Weiter
|
||||||
|
@ -426,8 +429,11 @@ Teilweise gibt es Unteroptionen:
|
||||||
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
|
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
|
||||||
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
|
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
|
||||||
oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
|
oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
|
||||||
|
Mit (0) kannst Du einen Dateivergleich zu einem vorher hinterlegten
|
||||||
|
Musterwahlschein ausfuehren ("diff"), um Aenderungen/Fehler schneller
|
||||||
|
zu sehen.
|
||||||
|
|
||||||
Mit den Optionen (2) bis (6) kannst Du einzelne Eigenschaften
|
Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften
|
||||||
des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
|
des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
|
||||||
eine Stimme nicht korrekt erkannt hat) oder auch einfach die
|
eine Stimme nicht korrekt erkannt hat) oder auch einfach die
|
||||||
Korrektheit bestaetigen.
|
Korrektheit bestaetigen.
|
||||||
|
@ -518,7 +524,7 @@ Das Endergebnis kannst Du mit "uvcount.pl -r" ausgeben lassen.
|
||||||
Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
|
Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
|
||||||
das folgende tabellarische Format verwendet:
|
das folgende tabellarische Format verwendet:
|
||||||
|
|
||||||
Ja Nein : 2/3? >=60? : ang.? : Gruppe
|
Ja Nein : 2/3? >=15? : ang.? : Gruppe
|
||||||
==== ==== : ==== ===== : ===== : =======================================
|
==== ==== : ==== ===== : ===== : =======================================
|
||||||
100 70 : Nein Ja : Nein : Einrichtung von xyz
|
100 70 : Nein Ja : Nein : Einrichtung von xyz
|
||||||
|
|
||||||
|
@ -685,6 +691,10 @@ uvbounce.pl
|
||||||
eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
|
eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
|
||||||
werden die uebergebenen Dateinamen ignoriert.
|
werden die uebergebenen Dateinamen ignoriert.
|
||||||
|
|
||||||
|
Die Mails werden aus den uebergebenen Mailboxdateien geloescht
|
||||||
|
und statt dessen in einer neuen Datei mit der Erweiterung ".processed"
|
||||||
|
gespeichert.
|
||||||
|
|
||||||
Die Vorlage fuer die ausgegebene Liste ist im templates-
|
Die Vorlage fuer die ausgegebene Liste ist im templates-
|
||||||
Unterverzeichnis konfigurierbar (Datei "bouncelist").
|
Unterverzeichnis konfigurierbar (Datei "bouncelist").
|
||||||
|
|
||||||
|
@ -957,7 +967,9 @@ Hier eine Auflistung der immer anzupassenden Optionen
|
||||||
votename Name der Abstimmung
|
votename Name der Abstimmung
|
||||||
group1 Erster Abstimmungsgegenstand
|
group1 Erster Abstimmungsgegenstand
|
||||||
group2 Zweiter (und so weiter durchnummerieren)
|
group2 Zweiter (und so weiter durchnummerieren)
|
||||||
|
sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff)
|
||||||
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
|
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
|
||||||
|
mailboxtype Typ der Mailbox (mbox, maildir)
|
||||||
personal Personalisierte Wahlscheine verwenden? [BOOL]
|
personal Personalisierte Wahlscheine verwenden? [BOOL]
|
||||||
(siehe gesonderten Abschnitt weiter oben)
|
(siehe gesonderten Abschnitt weiter oben)
|
||||||
voteaccount Mailadresse, unter der abgestimmt werden kann
|
voteaccount Mailadresse, unter der abgestimmt werden kann
|
||||||
|
@ -977,7 +989,7 @@ onestep Mails direkt verschicken und Ergebnisse speichern? [BOOL]
|
||||||
multigroup Fuer das Ergebnis auch bei Eingruppenabstimmung des
|
multigroup Fuer das Ergebnis auch bei Eingruppenabstimmung des
|
||||||
Mehrgruppenformat waehlen? [BOOL]
|
Mehrgruppenformat waehlen? [BOOL]
|
||||||
condition1 Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
|
condition1 Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
|
||||||
condition2 (normalerweise "$yes>=2*$no" und "$yes>=60"
|
condition2 (normalerweise "$yes>=2*$no" und "$yes>=15"
|
||||||
resultfile Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
|
resultfile Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
|
||||||
idfile Datei mit Scheinkennungen (bei "personal=1")
|
idfile Datei mit Scheinkennungen (bei "personal=1")
|
||||||
pop3 POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
|
pop3 POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
|
||||||
|
@ -1015,7 +1027,7 @@ domailfile Name des Shellscripts zum Versenden der Bestaetigungsmails
|
||||||
(falls smtp=0, normalerweise tmp/domail)
|
(falls smtp=0, normalerweise tmp/domail)
|
||||||
mailcmd Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
|
mailcmd Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
|
||||||
Bestaetigungsmails (falls smtp=0), z.B.
|
Bestaetigungsmails (falls smtp=0), z.B.
|
||||||
"sendmail -oi -oem -femail@adresse"
|
"sendmail -oi -oem -femail@adresse -- "
|
||||||
sleepcmd Weiteres Kommando, welches nach jeder Mail aufgerufen werden
|
sleepcmd Weiteres Kommando, welches nach jeder Mail aufgerufen werden
|
||||||
soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
|
soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
|
||||||
langsamen Systemen hoeher gewaehlt werden sollte.
|
langsamen Systemen hoeher gewaehlt werden sollte.
|
||||||
|
@ -1024,6 +1036,10 @@ clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
|
||||||
oder Betriebssystem keinen solchen Befehl bereitstellen,
|
oder Betriebssystem keinen solchen Befehl bereitstellen,
|
||||||
sollte ein Kommando verwendet werden, welches eine Trennlinie
|
sollte ein Kommando verwendet werden, welches eine Trennlinie
|
||||||
oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
|
oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
|
||||||
|
diff Shellbefehl zum Dateivergleich (diff); es koennen auch
|
||||||
|
Parameter angegeben werden, z.B. "diff -u". Das verwendete
|
||||||
|
Programm muss das Lesen einer Datei von STDIN erlauben
|
||||||
|
("-" statt Dateinamen fuer Einlesen von Standardeingabekanal)
|
||||||
pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
|
pager Shellbefehl zum seitenweisen Darstellen von Mails auf dem
|
||||||
Bildschirm (normalerweise "less"). Unter Windows muss "more"
|
Bildschirm (normalerweise "less"). Unter Windows muss "more"
|
||||||
benutzt werden, unter Unix hingegen gibt es moeglicherweise
|
benutzt werden, unter Unix hingegen gibt es moeglicherweise
|
||||||
|
|
|
@ -18,7 +18,7 @@ require Exporter;
|
||||||
$VERSION = "0.18";
|
$VERSION = "0.18";
|
||||||
|
|
||||||
# Usevote version
|
# Usevote version
|
||||||
$usevote_version = "UseVoteGer 4.10";
|
$usevote_version = "UseVoteGer 4.12";
|
||||||
|
|
||||||
sub read_config {
|
sub read_config {
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ sub read_config {
|
||||||
# Default configuration options (overwritten in usevote.cfg)
|
# Default configuration options (overwritten in usevote.cfg)
|
||||||
%config = (votefile => "votes",
|
%config = (votefile => "votes",
|
||||||
votename => "unkonfiguriertes Usevote",
|
votename => "unkonfiguriertes Usevote",
|
||||||
|
sampleballotfile => "ballot.sample",
|
||||||
resultfile => "ergebnis.alle",
|
resultfile => "ergebnis.alle",
|
||||||
rulefile => "usevote.rul",
|
rulefile => "usevote.rul",
|
||||||
badaddrfile => "mailpatterns.cfg",
|
badaddrfile => "mailpatterns.cfg",
|
||||||
|
@ -45,6 +46,7 @@ sub read_config {
|
||||||
voteaccount => "<> (unkonfiguriertes Usevote)",
|
voteaccount => "<> (unkonfiguriertes Usevote)",
|
||||||
mailfrom => "<> (unkonfiguriertes Usevote)",
|
mailfrom => "<> (unkonfiguriertes Usevote)",
|
||||||
envelopefrom => "<>",
|
envelopefrom => "<>",
|
||||||
|
mailboxtype => "mbox",
|
||||||
mailstart => "^From ",
|
mailstart => "^From ",
|
||||||
archivedir => "fertig",
|
archivedir => "fertig",
|
||||||
tmpdir => "tmp",
|
tmpdir => "tmp",
|
||||||
|
@ -56,6 +58,7 @@ sub read_config {
|
||||||
mailcc => "",
|
mailcc => "",
|
||||||
sleepcmd => "sleep 1",
|
sleepcmd => "sleep 1",
|
||||||
clearcmd => "clear",
|
clearcmd => "clear",
|
||||||
|
diff => "diff",
|
||||||
pager => "less",
|
pager => "less",
|
||||||
pop3 => 0,
|
pop3 => 0,
|
||||||
pop3server => "localhost",
|
pop3server => "localhost",
|
||||||
|
@ -89,8 +92,9 @@ sub read_config {
|
||||||
nein_stimme => '(N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)',
|
nein_stimme => '(N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)',
|
||||||
enth_stimme => '(E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)',
|
enth_stimme => '(E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)',
|
||||||
ann_stimme => 'A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G',
|
ann_stimme => 'A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G',
|
||||||
|
bdsg_confirm => 'JA',
|
||||||
condition1 => '$yes>=2*$no', # twice as many yes as no
|
condition1 => '$yes>=2*$no', # twice as many yes as no
|
||||||
condition2 => '$yes>=60', # min 60 yes votes
|
condition2 => '$yes>=15', # min 15 yes votes
|
||||||
prop_formula => '$yes/$no',
|
prop_formula => '$yes/$no',
|
||||||
tpl_ack_mail => 'ack-mail',
|
tpl_ack_mail => 'ack-mail',
|
||||||
tpl_bouncelist => 'bouncelist',
|
tpl_bouncelist => 'bouncelist',
|
||||||
|
@ -117,6 +121,7 @@ sub read_config {
|
||||||
tpl_rule_violated => 'rule-violated',
|
tpl_rule_violated => 'rule-violated',
|
||||||
begin_divider => 'Alles vor dieser Zeile bitte loeschen',
|
begin_divider => 'Alles vor dieser Zeile bitte loeschen',
|
||||||
end_divider => 'Alles nach dieser Zeile bitte loeschen',
|
end_divider => 'Alles nach dieser Zeile bitte loeschen',
|
||||||
|
ballotintro => 'WAHLSCHEIN fuer',
|
||||||
nametext => 'Dein Realname, falls nicht im FROM-Header:',
|
nametext => 'Dein Realname, falls nicht im FROM-Header:',
|
||||||
nametext2 => 'Waehlername:',
|
nametext2 => 'Waehlername:',
|
||||||
addresstext => 'Waehleradresse:',
|
addresstext => 'Waehleradresse:',
|
||||||
|
|
32
UVmenu.pm
32
UVmenu.pm
|
@ -60,6 +60,7 @@ sub menu {
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
||||||
system($config{clearcmd});
|
system($config{clearcmd});
|
||||||
|
print "-> $config{votename} <-\n";
|
||||||
print UVmessage::get("MENU_PROBLEMS") . "\n";
|
print UVmessage::get("MENU_PROBLEMS") . "\n";
|
||||||
|
|
||||||
foreach my $error (keys %errors) {
|
foreach my $error (keys %errors) {
|
||||||
|
@ -69,6 +70,12 @@ sub menu {
|
||||||
my $menucaption = UVmessage::get("MENU_CAPTION");
|
my $menucaption = UVmessage::get("MENU_CAPTION");
|
||||||
print "\n\n$menucaption\n";
|
print "\n\n$menucaption\n";
|
||||||
print "=" x length($menucaption), "\n\n";
|
print "=" x length($menucaption), "\n\n";
|
||||||
|
|
||||||
|
# don't print this option if called from uvcfv.pl
|
||||||
|
unless ($mailonly) {
|
||||||
|
print "(0) ", UVmessage::get("MENU_DIFF_BALLOT"), "\n";
|
||||||
|
}
|
||||||
|
|
||||||
print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
|
print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
|
||||||
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
|
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
|
||||||
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
|
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
|
||||||
|
@ -95,7 +102,14 @@ sub menu {
|
||||||
# only accept 1, 2, i and w if called from uvcfv.pl
|
# only accept 1, 2, i and w if called from uvcfv.pl
|
||||||
next if ($mailonly && $input !~ /^[12iw]$/i);
|
next if ($mailonly && $input !~ /^[12iw]$/i);
|
||||||
|
|
||||||
if ($input eq '1') {
|
if ($input eq '0') {
|
||||||
|
# ignore SIGPIPE (Bug in more and less)
|
||||||
|
$SIG{PIPE} = 'IGNORE';
|
||||||
|
open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}");
|
||||||
|
print DIFF $$body, "\n";
|
||||||
|
close (DIFF);
|
||||||
|
|
||||||
|
} elsif ($input eq '1') {
|
||||||
system($config{clearcmd});
|
system($config{clearcmd});
|
||||||
# ignore SIGPIPE (Bug in more and less)
|
# ignore SIGPIPE (Bug in more and less)
|
||||||
$SIG{PIPE} = 'IGNORE';
|
$SIG{PIPE} = 'IGNORE';
|
||||||
|
@ -287,22 +301,6 @@ sub menu {
|
||||||
$errors{WrongVoting} = UVmessage::get("MENU_WRONGVOTING");
|
$errors{WrongVoting} = UVmessage::get("MENU_WRONGVOTING");
|
||||||
}
|
}
|
||||||
|
|
||||||
} elsif ($input eq '7') {
|
|
||||||
my $sel;
|
|
||||||
do {
|
|
||||||
print "[a] ", UVmessage::get("MENU_VOTING_CORRECT"), "\n",
|
|
||||||
"[b] ", UVmessage::get("MENU_VOTING_WRONG"), "\n\n",
|
|
||||||
UVmessage::get("MENU_PROMPT");
|
|
||||||
$sel = <STDIN>;
|
|
||||||
} until ($sel =~ /^[ab]$/i);
|
|
||||||
|
|
||||||
if ($sel =~ /^a$/i) {
|
|
||||||
delete $errors{NoVoting};
|
|
||||||
delete $errors{WrongVoting};
|
|
||||||
} else {
|
|
||||||
$errors{WrongVoting} = UVmessage::get("MENU_WRONGVOTING");
|
|
||||||
}
|
|
||||||
|
|
||||||
} elsif ($input =~ /^i$/i) {
|
} elsif ($input =~ /^i$/i) {
|
||||||
my $ignore = UVmessage::get("MENU_IGNORE_STRING");
|
my $ignore = UVmessage::get("MENU_IGNORE_STRING");
|
||||||
# Set columns for Text::Wrap
|
# Set columns for Text::Wrap
|
||||||
|
|
|
@ -9,6 +9,7 @@ use UVmessage;
|
||||||
use MIME::QuotedPrint;
|
use MIME::QuotedPrint;
|
||||||
use MIME::Base64;
|
use MIME::Base64;
|
||||||
use MIME::Parser;
|
use MIME::Parser;
|
||||||
|
use Mail::Box::Manager;
|
||||||
use POSIX qw(strftime);
|
use POSIX qw(strftime);
|
||||||
|
|
||||||
use vars qw($VERSION);
|
use vars qw($VERSION);
|
||||||
|
@ -118,37 +119,65 @@ sub process {
|
||||||
close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n";
|
close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# make archive of all mails
|
|
||||||
my $fileproblem = 0;
|
|
||||||
open (VOTES, ">$filename") or $fileproblem = 1;
|
|
||||||
if ($fileproblem) {
|
|
||||||
print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM",
|
|
||||||
(FILE => $filename)) . "\n";
|
|
||||||
} else {
|
|
||||||
print VOTES join ("\n", @mails);
|
|
||||||
close (VOTES)
|
|
||||||
or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE",
|
|
||||||
(FILE => $filename)) . "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$pop->quit();
|
$pop->quit();
|
||||||
|
|
||||||
|
# Mailbox / Maildir
|
||||||
} else {
|
} else {
|
||||||
# open mail file
|
|
||||||
open(VOTES, "<$filename")
|
|
||||||
or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n";
|
|
||||||
|
|
||||||
# read all mails
|
my $readfilename;
|
||||||
my $i = 0;
|
|
||||||
while (<VOTES>) {
|
if ($caller==0) {
|
||||||
if (/$config{mailstart}/) {
|
# called from uvvote.pl: use configured mailbox file
|
||||||
$i++;
|
$readfilename = $config{votefile};
|
||||||
}
|
} else {
|
||||||
$mails[$i] = ($mails[$i] || "") . $_;
|
# else use filename provided in function call
|
||||||
|
$readfilename = $filename;
|
||||||
|
# and create backup archive filename
|
||||||
|
$filename .= '.processed';
|
||||||
}
|
}
|
||||||
|
|
||||||
# close mail file
|
my $mgr = Mail::Box::Manager->new;
|
||||||
close(VOTES);
|
my $folder;
|
||||||
|
|
||||||
|
eval{
|
||||||
|
$folder = $mgr->open( folder => $readfilename,
|
||||||
|
create => 0,
|
||||||
|
access => 'rw',
|
||||||
|
type => $config{mailboxtype},
|
||||||
|
expand => 'LAZY',
|
||||||
|
remove_when_empty => 0,
|
||||||
|
);
|
||||||
|
};
|
||||||
|
die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@;
|
||||||
|
|
||||||
|
# Iterate over the messages.
|
||||||
|
foreach (@$folder) {
|
||||||
|
my $mail = $_->string;
|
||||||
|
$_->delete();
|
||||||
|
my $fromline = 'From ';
|
||||||
|
if ($mail =~ /From: .*?<(.+?)>/) {
|
||||||
|
$fromline .= $1;
|
||||||
|
} elsif ($mail =~ /From:\s+?(\S+?\@\S+?)\s/) {
|
||||||
|
$fromline .= $1;
|
||||||
|
} else {
|
||||||
|
$fromline .= 'foo@bar.invalid';
|
||||||
|
}
|
||||||
|
$fromline .= ' ' . localtime($_->timestamp()) . "\n";
|
||||||
|
push (@mails, $fromline . $mail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# make archive of all mails
|
||||||
|
my $fileproblem = 0;
|
||||||
|
open (VOTES, ">$filename") or $fileproblem = 1;
|
||||||
|
if ($fileproblem) {
|
||||||
|
print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM",
|
||||||
|
(FILE => $filename)) . "\n";
|
||||||
|
} else {
|
||||||
|
print VOTES join ("\n", @mails);
|
||||||
|
close (VOTES)
|
||||||
|
or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE",
|
||||||
|
(FILE => $filename)) . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $mail (@mails) {
|
foreach my $mail (@mails) {
|
||||||
|
|
11
bdsgtext.cfg
11
bdsgtext.cfg
|
@ -4,10 +4,15 @@
|
||||||
# anfangen, werden ignoriert.
|
# anfangen, werden ignoriert.
|
||||||
#
|
#
|
||||||
Zur Verarbeitung des Wahlscheines und insbesondere der Veroeffentlichung
|
Zur Verarbeitung des Wahlscheines und insbesondere der Veroeffentlichung
|
||||||
des Ergebnisses ist deine Zustimmung zur Speicherung, Auswertung und
|
des Ergebnisses ist Deine Einwilligung zur Speicherung, Auswertung und
|
||||||
Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in
|
Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in
|
||||||
Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens
|
Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens
|
||||||
erforderlich. Wenn du im Feld unterhalb dieses Absatzes "JA"
|
erforderlich. Wenn du im Feld unterhalb dieses Absatzes "JA"
|
||||||
eintraegst, erklaerst du dich damit einverstanden. In allen anderen
|
eintraegst, erklaerst du dich damit einverstanden. In allen anderen
|
||||||
Faellen wird der Wahlschein mit Ruecksicht auf das deutsche
|
Faellen wird der Wahlschein mit Ruecksicht auf die DSGVO verworfen
|
||||||
Bundesdatenschutzgesetz verworfen und nicht gewertet.
|
und nicht gewertet. Die Einwilligung kann jederzeit mit Wirkung
|
||||||
|
fuer die Zukunft widerrufen werden. Dafuer genuegt eine E-Mail an
|
||||||
|
den Votetaker. Die Wertung und Veroeffentlichung der Stimmdaten
|
||||||
|
kann auch durch die erneute Einreichung eines Wahlscheins mit
|
||||||
|
"ANNULLIERUNG" (statt "JA" oder "NEIN") als Stimmabgabe beim
|
||||||
|
ersten Abstimmungspunkt verhindert werden.
|
||||||
|
|
9
createvote.sh
Normal file
9
createvote.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
cd ~/usevote
|
||||||
|
mkdir $1
|
||||||
|
cd $1
|
||||||
|
sed s/LOCALPART/$1/g ../usevote.tpl.cfg > usevote.cfg
|
||||||
|
mkdir tmp
|
||||||
|
mkdir done
|
||||||
|
|
||||||
|
echo "Voting $1 created!"
|
|
@ -42,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme
|
||||||
MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
|
MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
|
||||||
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
|
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
|
||||||
MENU_CAPTION = Auswahlmenue:
|
MENU_CAPTION = Auswahlmenue:
|
||||||
|
MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff)
|
||||||
MENU_SHOW_MAIL = Anzeigen der Wahlmail
|
MENU_SHOW_MAIL = Anzeigen der Wahlmail
|
||||||
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
||||||
MENU_ADDRESS = Mailadresse
|
MENU_ADDRESS = Mailadresse
|
||||||
|
|
|
@ -14,7 +14,7 @@ Ergebnisse [$votename-first]
|
||||||
|
|
||||||
Es wurden [$numvalid] gueltige Stimmen abgegeben.
|
Es wurden [$numvalid] gueltige Stimmen abgegeben.
|
||||||
|
|
||||||
Ja Nein : 2/3? >=50? : ang.? : Gruppe
|
Ja Nein : 2/3? >=15? : ang.? : Gruppe
|
||||||
---- ---- : ---- ----- : ----- : ---------------------------------------
|
---- ---- : ---- ----- : ----- : ---------------------------------------
|
||||||
[@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein] : [?result| Ja |Nein] : [$group-first]
|
[@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein] : [?result| Ja |Nein] : [$group-first]
|
||||||
[@group-more| : : : [$line]\n]\n]
|
[@group-more| : : : [$line]\n]\n]
|
||||||
|
|
|
@ -15,7 +15,7 @@ Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] E
|
||||||
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
|
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
|
||||||
|
|
||||||
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
|
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
|
||||||
50 Ja-Stimmen ein. Damit ist die [$votename-text-first]
|
15 Ja-Stimmen ein. Damit ist die [$votename-text-first]
|
||||||
[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
|
[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
|
||||||
|
|
||||||
Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
|
Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
|
||||||
|
|
17
usevote.cfg
17
usevote.cfg
|
@ -75,7 +75,11 @@ multigroup = 1
|
||||||
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
|
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
|
||||||
# werden.
|
# werden.
|
||||||
condition1 = $yes>=2*$no
|
condition1 = $yes>=2*$no
|
||||||
condition2 = $yes>=50
|
condition2 = $yes>=15
|
||||||
|
|
||||||
|
# Datei mit Musterwahlschein, wie er im CfV geposted wurde. Wird fuer
|
||||||
|
# Vergleich mit ankommenden Wahlscheinen per "diff" genutzt.
|
||||||
|
sampleballotfile = ballot.sample
|
||||||
|
|
||||||
# Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
|
# Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
|
||||||
# (wird bei jedem Programmlauf neu erstellt!)
|
# (wird bei jedem Programmlauf neu erstellt!)
|
||||||
|
@ -90,6 +94,8 @@ pop3 = 1
|
||||||
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
|
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
|
||||||
votefile = votes
|
votefile = votes
|
||||||
|
|
||||||
|
# Typ der Mailbox (mbox, maildir)
|
||||||
|
mailboxtype = mbox
|
||||||
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
|
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
|
||||||
# Server, Port, Benutzername, Passwort
|
# Server, Port, Benutzername, Passwort
|
||||||
pop3server = 127.0.0.1
|
pop3server = 127.0.0.1
|
||||||
|
@ -183,7 +189,7 @@ domailfile = tmp/domail
|
||||||
|
|
||||||
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
|
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
|
||||||
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
|
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
|
||||||
#mailcmd = sendmail -oi -oem -femail@adresse
|
#mailcmd = sendmail -oi -oem -femail@adresse --
|
||||||
|
|
||||||
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
|
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
|
||||||
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
|
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
|
||||||
|
@ -205,6 +211,9 @@ clearcmd = clear
|
||||||
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
|
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
|
||||||
pager = less
|
pager = less
|
||||||
|
|
||||||
|
# Shellbefehl fuer Dateivergleich
|
||||||
|
diff = diff -u
|
||||||
|
|
||||||
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
|
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
|
||||||
messagefile = messages.cfg
|
messagefile = messages.cfg
|
||||||
|
|
||||||
|
@ -271,6 +280,10 @@ enth_stimme = (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
|
||||||
# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
|
# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
|
||||||
ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
|
ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
|
||||||
|
|
||||||
|
# RegExp fuer Bestaetigung der Datenschutzklause (case-insensitive)
|
||||||
|
# Standardmaessig wird nur JA erkannt
|
||||||
|
bdsg_confirm = JA
|
||||||
|
|
||||||
# Template files (these files are in the template directory defined above)
|
# Template files (these files are in the template directory defined above)
|
||||||
tpl_mailheader = "mailheader" # generally used mail header
|
tpl_mailheader = "mailheader" # generally used mail header
|
||||||
tpl_bouncelist = "bouncelist" # used by uvbounce.pl
|
tpl_bouncelist = "bouncelist" # used by uvbounce.pl
|
||||||
|
|
177
usevote.global.cfg
Normal file
177
usevote.global.cfg
Normal file
|
@ -0,0 +1,177 @@
|
||||||
|
########################################################################
|
||||||
|
# Alles ab hier braucht i.d.R. nur einmal festgelegt werden.
|
||||||
|
# Es ist moeglich, diese Einstellungen in eine globale Konfigurations-
|
||||||
|
# datei auszulagern. Das Einbinden erfolgt mit der Zeile
|
||||||
|
#
|
||||||
|
# include /pfad/zur/globalen_datei
|
||||||
|
#
|
||||||
|
# Falls Einstellungen aus der globalen Konfigurationsdatei hier
|
||||||
|
# fuer einzelne Abstimmungen ueberschrieben werden sollen, muessen
|
||||||
|
# diese *hinter* dem Include-Befehl stehen!
|
||||||
|
# (der letzte Wert ueberschreibt vorhergehende Definitionen)
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# SMTP benutzen? (falls nicht, wird der weiter unten einstellbare
|
||||||
|
# MTA direkt aufgerufen; unter Windows kann nur SMTP benutzt werden!)
|
||||||
|
smtp = 0
|
||||||
|
|
||||||
|
# SMTP-Server (falls smtp = 1)
|
||||||
|
smtpserver = localhost
|
||||||
|
smtpport = 25
|
||||||
|
|
||||||
|
# SMTP-Authentifizierung benutzen? (RFC 2554)
|
||||||
|
# Das entsprechende Perlmodul (Net::SMTP) kann derzeit nur AUTH PLAIN,
|
||||||
|
# funktioniert also moeglicherweise nicht mit jedem Server
|
||||||
|
#smtpauth = 0
|
||||||
|
#smtpuser =
|
||||||
|
#smtppass =
|
||||||
|
|
||||||
|
# Falls als HELO etwas anderes als der Hostname verwendet werden soll:
|
||||||
|
#smtphelo = greenmeadow.szaf.org
|
||||||
|
|
||||||
|
# Falls ein anderer Fully Qualified Domain Name als der Hostname fuer
|
||||||
|
# die Message-ID verwendet werden soll:
|
||||||
|
fqdn = mid.thh.votetaker.de
|
||||||
|
|
||||||
|
# Verzeichnis fuer fertig verarbeitete Mails und Ergebnisse
|
||||||
|
archivedir = done
|
||||||
|
|
||||||
|
# Temporaeres Verzeichnis
|
||||||
|
tmpdir = tmp
|
||||||
|
|
||||||
|
# Pfad zu den Templates (kommaseparierte Liste mit Verzeichnissen)
|
||||||
|
templatedir = /home/gvv/usevote/templates
|
||||||
|
|
||||||
|
# Konvertierungsfunktionen f黵 die Templates
|
||||||
|
# (kommaseparierte Liste mit Funktions-Modulen)
|
||||||
|
formats = /home/gvv/usevote/UVformats.pm
|
||||||
|
|
||||||
|
# Dateiname der Steuerungsdatei fuer den Mailversandt
|
||||||
|
controlfile = tmp/ack.control
|
||||||
|
|
||||||
|
# Dateiname des Shellscripts zum Versenden der Bestaetigungsmails (falls smtp=0)
|
||||||
|
domailfile = tmp/domail
|
||||||
|
|
||||||
|
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
|
||||||
|
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
|
||||||
|
#mailcmd = sendmail -oi -oem -femail@adresse
|
||||||
|
mailcmd = /usr/sbin/sendmail -oi -oem -fvote-bounces@thh.votetaker.de --
|
||||||
|
|
||||||
|
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
|
||||||
|
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
|
||||||
|
# gewaehlt werden sollte, um die Belastung gering zu halten.
|
||||||
|
sleepcmd = sleep 1
|
||||||
|
|
||||||
|
# Shellbefehl zum Loeschen des Bildschirms
|
||||||
|
# Unix: i.d.R. "clear"
|
||||||
|
# Windows: "cls"
|
||||||
|
# Falls das Betriebssystem bzw. die Shell keinen solchen Befehl zur Verfuegung
|
||||||
|
# stellt, sollte ein Kommando verwendet werden, welches eine Trennlinie
|
||||||
|
# oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
|
||||||
|
clearcmd = clear
|
||||||
|
|
||||||
|
# Shellbefehl zum seitenweisen Darstellen von Mails auf dem Bildschirm
|
||||||
|
# Empfohlene Einstellung: "less", da more Probleme mit der Umleitung von
|
||||||
|
# STDERR in eine Datei Probleme hat. Unter Windows ist "less" nicht
|
||||||
|
# vorinstallirt, kann man sich aber herunterladen und einfach in das
|
||||||
|
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
|
||||||
|
pager = less
|
||||||
|
|
||||||
|
# Shellbefehl fuer Dateivergleich
|
||||||
|
diff = diff -u
|
||||||
|
|
||||||
|
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
|
||||||
|
messagefile = /home/gvv/usevote/messages.cfg
|
||||||
|
|
||||||
|
# Datei mit Wahlregeln
|
||||||
|
rulefile = /home/gvv/usevote/usevote.rul
|
||||||
|
|
||||||
|
# Datei mit verdaechtigen Mailadressen
|
||||||
|
badaddrfile = /home/gvv/usevote/mailpatterns.cfg
|
||||||
|
|
||||||
|
# Datei fuer Fehlermeldungen beim Programmlauf
|
||||||
|
errorfile = errors.log
|
||||||
|
|
||||||
|
# Lockdatei (Verhinderung von mehrfachen Programmstarts)
|
||||||
|
lockfile = usevote.lock
|
||||||
|
|
||||||
|
# Einleitungszeile fuer naechste Mail (RegExp)
|
||||||
|
mailstart = "^From "
|
||||||
|
|
||||||
|
# Trennlinien vor und nach dem Wahlschein
|
||||||
|
begin_divider = Alles vor dieser Zeile bitte loeschen
|
||||||
|
end_divider = Alles nach dieser Zeile bitte loeschen
|
||||||
|
|
||||||
|
# Ueberschrift fuer den Wahlschein
|
||||||
|
# Achtung, muss im Wahlschein genauso stehen!
|
||||||
|
ballotintro = WAHLSCHEIN fuer
|
||||||
|
|
||||||
|
# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
|
||||||
|
# Wahlschein genauso stehen!
|
||||||
|
nametext = Dein Realname, falls nicht im FROM-Header:
|
||||||
|
|
||||||
|
# Text fuer Namens-Angabe in Bestaetigungsmails
|
||||||
|
nametext2 = Waehlername:
|
||||||
|
|
||||||
|
# Text fuer die Adress-Angabe im Wahlschein
|
||||||
|
addresstext = Waehleradresse:
|
||||||
|
|
||||||
|
# Text f黵 die Angabe der Wahlscheinkennung (siehe Option "personal")
|
||||||
|
ballotidtext = Wahlscheinkennung:
|
||||||
|
|
||||||
|
# Text fuer Datenschutzklausel (siehe Option "bdsg"), erscheint als Abstimmungspunkt
|
||||||
|
bdsgtext = Datenschutzklausel - Zustimmung: Ich bin mit der Verarbeitung meiner Daten wie oben beschrieben einverstanden
|
||||||
|
|
||||||
|
# Datei mit Erklaerungstext fuer BDSG-Klausel
|
||||||
|
bdsgfile = /home/gvv/usevote/bdsgtext.cfg
|
||||||
|
|
||||||
|
# Rechter Rand fuer einige Bildschirmausgaben (Terminalbreite)
|
||||||
|
rightmargin = 72
|
||||||
|
|
||||||
|
# Regular Expression fuer Erkennung eines gueltigen Realnamens
|
||||||
|
name_re = [-a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,} +.*[a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,}
|
||||||
|
|
||||||
|
# RegExp fuer JA-Stimmen (case-insensitive)
|
||||||
|
# Standardmaessig wird J, JA, FUER und DAFUER erkannt
|
||||||
|
ja_stimme = (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
|
||||||
|
|
||||||
|
# RegExp fuer NEIN-Stimmen (case-insensitive)
|
||||||
|
# Standardmaessig wird N, NEIN, GEGEN und DAGEGEN erkannt
|
||||||
|
nein_stimme = (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
|
||||||
|
|
||||||
|
# RegExp fuer ENTHALTUNG (case-insensitive)
|
||||||
|
enth_stimme = (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
|
||||||
|
|
||||||
|
# RegExp fuer ANNULLIERUNG (case-insensitive)
|
||||||
|
# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
|
||||||
|
ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
|
||||||
|
|
||||||
|
# RegExp fuer Bestaetigung der Datenschutzklause (case-insensitive)
|
||||||
|
# Standardmaessig wird nur JA erkannt
|
||||||
|
bdsg_confirm = JA
|
||||||
|
|
||||||
|
# Template files (these files are in the template directory defined above)
|
||||||
|
tpl_mailheader = "mailheader" # generally used mail header
|
||||||
|
tpl_bouncelist = "bouncelist" # used by uvbounce.pl
|
||||||
|
tpl_result_multi = "result-multi" # used by uvcount.pl -r -m
|
||||||
|
tpl_result_single = "result-single" # used by uvcount.pl -r -o
|
||||||
|
tpl_result_prop = "result-proportional" # used by uvcount.pl -r (proportional = 1)
|
||||||
|
tpl_votes_multi = "votes-multi" # used by uvcount.pl -v (multiple groups)
|
||||||
|
tpl_votes_single = "votes-single" # used by uvcount.pl -v (single group only)
|
||||||
|
tpl_voterlist = "voterlist" # used by uvcount.pl -l (2nd CfV)
|
||||||
|
tpl_ballot = "ballot" # used by uvballot.pl (personal = 0)
|
||||||
|
tpl_ballot_request = "ballot-request" # used by uvballot.pl (personal = 1)
|
||||||
|
tpl_ballot_personal = "ballot-personal" # used by uvcfv.pl (personal = 1)
|
||||||
|
tpl_addr_reg = "address-not-registered" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_no_ballotid = "no-ballotid" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_wrong_ballotid = "wrong-ballotid" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_bdsg_error = "bdsg-error" # used by uvvote.pl (bdsg = 1)
|
||||||
|
tpl_ack_mail = "ack-mail" # used by uvvote.pl (voteack = 1)
|
||||||
|
tpl_cancelled = "cancelled" # used by uvvote.pl
|
||||||
|
tpl_invalid_account = "invalid-account" # used by uvvote.pl
|
||||||
|
tpl_invalid_name = "invalid-name" # used by uvvote.pl
|
||||||
|
tpl_multiple_votes = "multiple-votes" # used by uvvote.pl
|
||||||
|
tpl_no_ballot = "no-ballot" # used by uvvote.pl
|
||||||
|
tpl_no_votes = "no-votes" # used by uvvote.pl
|
||||||
|
tpl_wrong_voting = "wrong-voting" # used by uvvote.pl
|
||||||
|
tpl_rule_violated = "rule-violated" # used by uvvote.pl (c.f. usevote.rul)
|
85
usevote.tpl.cfg
Normal file
85
usevote.tpl.cfg
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
include /home/gvv/usevote/usevote.global.cfg
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Diese Einstellungen muessen fuer jede Abstimmung angepasst werden
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# Name der Abstimmung
|
||||||
|
votename = INSERT_HERE
|
||||||
|
|
||||||
|
# Abstimmungsgegenstaende (beliebig viele groupX moeglich,
|
||||||
|
# von 1 an durchzunummerieren)
|
||||||
|
group1 = INSERT_HERE
|
||||||
|
|
||||||
|
# Mailbox, in der die zu verarbeitenden Mails liegen (falls smtp=0)
|
||||||
|
votefile = votes
|
||||||
|
|
||||||
|
# Bei den folgenden Fragen bedeutet jeweils:
|
||||||
|
# 0: nein
|
||||||
|
# 1: ja
|
||||||
|
|
||||||
|
# Persoenliche Wahlscheine generieren und Scheinkennung erzwingen?
|
||||||
|
personal = 0
|
||||||
|
|
||||||
|
# Verhaeltniswahl durchfuehren? (z.B. fuer Moderationsnachwahlen)
|
||||||
|
proportional = 0
|
||||||
|
|
||||||
|
# Formel fuer die Berechnung des Verhaeltnisses. Kann z.B.
|
||||||
|
# $yes/$no oder $yes-$no sein, letzteres wird bei Moderationsnachwahlen
|
||||||
|
# verwendet. Als Variablen sind $yes und $no zulaessig, es kann
|
||||||
|
# beliebiger Perlcode angegeben werden, dessen Rueckgabewert im
|
||||||
|
# Result erscheinen soll. Ausserdem wird bei der Auswertung die
|
||||||
|
# Bedingung aus "condition1" weiter unten in dieser Datei ausgewertet.
|
||||||
|
prop_formula = $yes/$no
|
||||||
|
|
||||||
|
# Vote-Account (diese Adresse muss unbedingt korrekt sein, wird
|
||||||
|
# in das Reply-To uebernommen)
|
||||||
|
voteaccount = LOCALPART@thh.votetaker.de
|
||||||
|
|
||||||
|
# Absender fuer den From-Header der Bestaetigungsmails
|
||||||
|
mailfrom = Thomas Hochstein <thh@votetaker.de>
|
||||||
|
|
||||||
|
# Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
|
||||||
|
# (bitte einfach nur die Adresse eintragen, ohne Klammern und Zusaetze)
|
||||||
|
envelopefrom = bounce-LOCALPART@thh.votetaker.de
|
||||||
|
|
||||||
|
# Nur bei persoenlichen Wahlscheinen: Datei mit Anforderungsmails
|
||||||
|
# requestfile = anforderung
|
||||||
|
|
||||||
|
# Datenschutzklausel generieren und auf deren Existenz pruefen?
|
||||||
|
# Konfiguration siehe unten (bdsgtext)
|
||||||
|
bdsg = 1
|
||||||
|
|
||||||
|
# Reply-To beachten?
|
||||||
|
# Nicht empfohlen, da jemand fuer andere Personen abstimmen und
|
||||||
|
# die Bestaetigungen zu sich umlenken koennte.
|
||||||
|
replyto = 0
|
||||||
|
|
||||||
|
# Stimmen einzeln bestaetigen? Empfohlen!
|
||||||
|
voteack = 1
|
||||||
|
|
||||||
|
# Bcc-Adresse fuer alle Mails (Backup fuer alle Faelle)
|
||||||
|
#
|
||||||
|
mailcc = gvv@localhost
|
||||||
|
|
||||||
|
# Alles in einem Schritt durchfuehren (gesonderter Aufruf von
|
||||||
|
# "uvvote.pl clean" entfaellt)? Fuehrt zu geringeren
|
||||||
|
# Eingreifmoeglichkeiten! (Mails werden automatisch verschickt)
|
||||||
|
onestep = 0
|
||||||
|
|
||||||
|
# Fuer das Ergebnis (xx Ja-Stimmen, xx Nein-Stimmen, xx Enthaltungen)
|
||||||
|
# auch bei Eingruppenabstimmung des Mehrgruppenformat waehlen?
|
||||||
|
multigroup = 1
|
||||||
|
|
||||||
|
# Bedingungen fuer einen Erfolg der Abstimmung (genau zwei erforderlich).
|
||||||
|
# Es muss sich jeweils um gueltigen Perl-Code handeln, Rueckgabewert
|
||||||
|
# wird boolesch ausgewertet (true/false). Als Variablen sind $yes
|
||||||
|
# und $no zugelassen. Falls oben "proportional = 1" gesetzt wurde,
|
||||||
|
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
|
||||||
|
# werden.
|
||||||
|
# condition1 = $yes>=2*$no
|
||||||
|
# condition2 = $yes>=50
|
||||||
|
condition1 = $yes>=2*$no
|
||||||
|
condition2 = $yes>=15
|
||||||
|
|
||||||
|
mailcmd = /usr/sbin/sendmail -oi -oem -fbounce-LOCALPART@thh.votetaker.de --
|
4
uvballot.pl
Normal file → Executable file
4
uvballot.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.10 Wahlscheingenerierung
|
# UseVoteGer 4.12 Wahlscheingenerierung
|
||||||
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2014 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
|
4
uvbounce.pl
Normal file → Executable file
4
uvbounce.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.10 Bounce-Verarbeitung
|
# UseVoteGer 4.12 Bounce-Verarbeitung
|
||||||
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2014 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
|
4
uvcfv.pl
Normal file → Executable file
4
uvcfv.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.10 Personalisierte Wahlscheine
|
# UseVoteGer 4.12 Personalisierte Wahlscheine
|
||||||
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2014 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
|
4
uvcount.pl
Normal file → Executable file
4
uvcount.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.10 Stimmauswertung
|
# UseVoteGer 4.12 Stimmauswertung
|
||||||
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2014 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
|
20
uvvote.pl
Normal file → Executable file
20
uvvote.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.10 Wahldurchfuehrung
|
# UseVoteGer 4.12 Wahldurchfuehrung
|
||||||
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2014 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
@ -135,16 +135,6 @@ if ($clean) {
|
||||||
my $thisresult = "ergebnis-" . $ext;
|
my $thisresult = "ergebnis-" . $ext;
|
||||||
my $thisvotes = "stimmen-" . $ext;
|
my $thisvotes = "stimmen-" . $ext;
|
||||||
|
|
||||||
# POP3 not activated: rename votes file
|
|
||||||
unless ($config{pop3}) {
|
|
||||||
print UVmessage::get("VOTE_RENAMING_MAILBOX"), "\n";
|
|
||||||
rename ($config{votefile}, "$config{tmpdir}/$thisvotes")
|
|
||||||
or die UVmessage::get("ERR_RENAME_MAILFILE") . "$!\n\n";
|
|
||||||
|
|
||||||
# wait, so that current mail deliveries can finalize
|
|
||||||
sleep 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
# open results file
|
# open results file
|
||||||
open (RESULT, ">>$config{tmpdir}/$thisresult")
|
open (RESULT, ">>$config{tmpdir}/$thisresult")
|
||||||
or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
|
or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
|
||||||
|
@ -241,9 +231,9 @@ sub process_vote {
|
||||||
}
|
}
|
||||||
|
|
||||||
# correct voting?
|
# correct voting?
|
||||||
if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n(.*?[\t ]+(\S+.+)\s*$)?/m) {
|
if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) {
|
||||||
$voting = $1;
|
$voting = $1;
|
||||||
$voting .= " $3" if defined($3);
|
$voting .= " $3" if (defined($3) and $3 !~ /\Q$config{nametext}\E/);
|
||||||
push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);
|
push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);
|
||||||
} else {
|
} else {
|
||||||
push (@errors, 'NoVoting');
|
push (@errors, 'NoVoting');
|
||||||
|
@ -329,7 +319,7 @@ sub process_vote {
|
||||||
# Should read like this: #a [ STIMME ] Text
|
# Should read like this: #a [ STIMME ] Text
|
||||||
# (Text is configurable in usevote.cfg)
|
# (Text is configurable in usevote.cfg)
|
||||||
unless ($$body =~ /$bdsg_regexp/s &&
|
unless ($$body =~ /$bdsg_regexp/s &&
|
||||||
$$body =~ /#a\W*?\[\W*?$config{ja_stimme}\W*?\]\W*?$bdsg2_regexp/is) {
|
$$body =~ /#a\W*?\[\W*?$config{bdsg_confirm}\W*?\]\W*?$bdsg2_regexp/is) {
|
||||||
|
|
||||||
push (@errors, 'InvalidBDSG');
|
push (@errors, 'InvalidBDSG');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue