Compare commits
26 commits
Author | SHA1 | Date | |
---|---|---|---|
Thomas Hochstein | 290f1a1631 | ||
Thomas Hochstein | 68b0879787 | ||
150c91add6 | |||
68d2e7d047 | |||
a5ab9d2620 | |||
3c2b60126f | |||
b7e3bdd951 | |||
a94e81c653 | |||
adf1f9a735 | |||
f9a99fd83a | |||
6f88a29957 | |||
923dc1773e | |||
3ab56bde53 | |||
f5828d9fad | |||
3aca529725 | |||
c1cc3954b4 | |||
62d56462b4 | |||
7ae85f86e3 | |||
c50a97a62c | |||
7450382ef3 | |||
e91a2b7fa5 | |||
300f47d616 | |||
6f31c0dc7a | |||
c9497882fb | |||
bb61da3743 | |||
b0edfe72dd |
71
CHANGES
71
CHANGES
|
@ -1,21 +1,76 @@
|
|||
UseVoteGer Versionshistorie (aktuelle Version: 4.09, released 07.10.2007)
|
||||
UseVoteGer Versionshistorie (aktuelle Version: 4.13, released 27.01.2022)
|
||||
=========================================================================
|
||||
|
||||
TODO:
|
||||
- aussortieren von Bounces aus Stimmenliste
|
||||
- Unterstuetzung von Maildir
|
||||
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
|
||||
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
|
||||
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
|
||||
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
|
||||
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
|
||||
|
||||
Version 4.13 (27.01.2022):
|
||||
- BDSG-Klausel an die DSGVO angepasst
|
||||
- "mailcmd" muss mit "--" enden, damit Mailadressen, die mit "-"
|
||||
beginnen, richtig erkannt werden.
|
||||
- "diff -u" ist ein besserer Default fuer 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):
|
||||
- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
|
||||
Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien
|
||||
geprueft)
|
||||
- Typo in bdsgtext.cfg behoben
|
||||
- doppelten Identifier "VOTE_NO_VOTES" in messages.cfg/uvvote.pl umbenannt
|
||||
- templates/ack-mail: Votetaker (Unterschrift) linksbuendig statt
|
||||
wie vorher rechtsbuendig einfuegen; Anleitung fuer Annullierungen
|
||||
verbessert; Hinweis darauf, dass Stimmaenderungen an den
|
||||
Voteaccount geschickt werden muessen und nicht einfach als Antwort
|
||||
auf die Ack-Mail geschickt werden koennen)
|
||||
- Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem
|
||||
oder letztem Abstimmungspunkt ausgewertet)
|
||||
- Abstimmungsname wird nun auf Korrektheit geprueft (Wahlschein gehört
|
||||
zur richtigen Abstimmung)
|
||||
- neue Konfigurations-Option "ballotintro" und neues Template
|
||||
tpl_wrong_voting
|
||||
- usenet@ und news@ werden nicht mehr als ungueltige Mailadressen
|
||||
angesehen. Vor allem usenet@ wird von vielen Waehlern verwendet.
|
||||
- Aenderung der Wahlregeln: statt 60 nur noch 50 JA-Stimmen benoetigt
|
||||
- kleinere Template-Aenderungen (verbesserte Texte/Formatierungen)
|
||||
|
||||
Version 4.09 (14.09.2007):
|
||||
- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
|
||||
den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
|
||||
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)
|
||||
- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
|
||||
(--voters statt --votes)
|
||||
|
|
36
README
36
README
|
@ -1,4 +1,4 @@
|
|||
UseVoteGer 4.09 (c) 2001-2007 Marc Langer
|
||||
UseVoteGer 4.13 (c) 2001-2022 Marc Langer
|
||||
|
||||
UseVoteGer is a voting software for usenet votes.
|
||||
|
||||
|
@ -12,13 +12,14 @@ Many thanks to:
|
|||
- Wolfgang Behrens (UseVoteGer 3.1, based on Frederik's translation, 1998/99)
|
||||
- Cornell Binder for some good advice and code fragments
|
||||
(e.g. UVtemplate.pm, UVformats.pm)
|
||||
- Thomas Hochstein for some patches
|
||||
|
||||
This is a complete rewrite of UseVoteGer 3.1 in Perl (former versions were
|
||||
written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
UseVoteGer 4.09 - Usenet-Abstimmungssoftware
|
||||
UseVoteGer 4.13 - Usenet-Abstimmungssoftware
|
||||
===========================================
|
||||
|
||||
von Marc Langer <uv@marclanger.de>
|
||||
|
@ -89,9 +90,6 @@ I. Einmalig bei der Usevote-Erstinstallation
|
|||
sehr einfach mit "perl -MCPAN -e shell", ActivePerl fuer
|
||||
Windows hat einen eigenen Paketmanager)
|
||||
|
||||
Achtung: Bei meinem ActivePerl 5.6.1 war eine alte Libnet-Version
|
||||
enthalten, die noch keine SMTP-Authentication unterstuetzte.
|
||||
Bei Benutzung dieses Features muss evtl. erst upgedated werden.
|
||||
|
||||
II. Fuer jedes Voting
|
||||
(1) usevote.cfg auf das durchzufuehrende Voting anpassen
|
||||
|
@ -190,8 +188,8 @@ UVrules.pm Routinen zur Regelverarbeitung (usevote.rul)
|
|||
UVsendmail.pm Routinen zum Erzeugen von Mails
|
||||
UVtemplate.pm Routinen zur Verarbeitung von Vorlagen (Templates)
|
||||
bdsgtext.cfg Spezieller Text fuer den Wahlschein (Hinweis auf
|
||||
Datenschutzgesetz), muss ausserhalb Deutschlands ggfls.
|
||||
angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
|
||||
DSGVO), muss ausserhalb der EU ggfls. angepasst werden
|
||||
oder kann dort ignoriert werden (bdsg=0 in usevote.cfg)
|
||||
mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen
|
||||
messages.cfg Programm-Meldungen (Ressourcen-Datei)
|
||||
scheinkennungen Speicherung der Scheinkennungen bei personalisierten
|
||||
|
@ -327,6 +325,7 @@ ohne die .pl und .pm Dateien jedesmal mitzukopieren. Folgende Dateien
|
|||
sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
|
||||
usevote.cfg, darin können alle anderen Pfade angepasst werden):
|
||||
|
||||
ballot.sample
|
||||
bdsgtext.cfg
|
||||
mailpatterns.cfg
|
||||
messages.cfg
|
||||
|
@ -407,6 +406,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
|
|||
Meistens gibt es folgende Moeglichkeiten, die durch die
|
||||
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
|
||||
|
||||
(0) Wahlschein mit Original vergleichen (diff)
|
||||
(1) Anzeigen der Wahlmail
|
||||
|
||||
Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
||||
|
@ -415,6 +415,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
|||
(4) Stimmen
|
||||
(5) Scheinkennung
|
||||
(6) Datenschutzklausel
|
||||
(7) Abstimmung
|
||||
|
||||
(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
|
||||
(w) Weiter
|
||||
|
@ -429,8 +430,11 @@ Teilweise gibt es Unteroptionen:
|
|||
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
|
||||
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
|
||||
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
|
||||
eine Stimme nicht korrekt erkannt hat) oder auch einfach die
|
||||
Korrektheit bestaetigen.
|
||||
|
@ -521,7 +525,7 @@ Das Endergebnis kannst Du mit "uvcount.pl -r" ausgeben lassen.
|
|||
Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
|
||||
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
|
||||
|
||||
|
@ -688,6 +692,10 @@ uvbounce.pl
|
|||
eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
|
||||
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-
|
||||
Unterverzeichnis konfigurierbar (Datei "bouncelist").
|
||||
|
||||
|
@ -960,7 +968,9 @@ Hier eine Auflistung der immer anzupassenden Optionen
|
|||
votename Name der Abstimmung
|
||||
group1 Erster Abstimmungsgegenstand
|
||||
group2 Zweiter (und so weiter durchnummerieren)
|
||||
sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff)
|
||||
votefile Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
|
||||
mailboxtype Typ der Mailbox (mbox, maildir)
|
||||
personal Personalisierte Wahlscheine verwenden? [BOOL]
|
||||
(siehe gesonderten Abschnitt weiter oben)
|
||||
voteaccount Mailadresse, unter der abgestimmt werden kann
|
||||
|
@ -980,7 +990,7 @@ onestep Mails direkt verschicken und Ergebnisse speichern? [BOOL]
|
|||
multigroup Fuer das Ergebnis auch bei Eingruppenabstimmung des
|
||||
Mehrgruppenformat waehlen? [BOOL]
|
||||
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)
|
||||
idfile Datei mit Scheinkennungen (bei "personal=1")
|
||||
pop3 POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
|
||||
|
@ -1018,7 +1028,7 @@ domailfile Name des Shellscripts zum Versenden der Bestaetigungsmails
|
|||
(falls smtp=0, normalerweise tmp/domail)
|
||||
mailcmd Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
|
||||
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
|
||||
soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
|
||||
langsamen Systemen hoeher gewaehlt werden sollte.
|
||||
|
@ -1027,6 +1037,10 @@ clearcmd Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
|
|||
oder Betriebssystem keinen solchen Befehl bereitstellen,
|
||||
sollte ein Kommando verwendet werden, welches eine Trennlinie
|
||||
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
|
||||
Bildschirm (normalerweise "less"). Unter Windows muss "more"
|
||||
benutzt werden, unter Unix hingegen gibt es moeglicherweise
|
||||
|
|
|
@ -18,7 +18,7 @@ require Exporter;
|
|||
$VERSION = "0.18";
|
||||
|
||||
# Usevote version
|
||||
$usevote_version = "UseVoteGer 4.09";
|
||||
$usevote_version = "UseVoteGer 4.13";
|
||||
|
||||
sub read_config {
|
||||
|
||||
|
@ -27,6 +27,7 @@ sub read_config {
|
|||
# Default configuration options (overwritten in usevote.cfg)
|
||||
%config = (votefile => "votes",
|
||||
votename => "unkonfiguriertes Usevote",
|
||||
sampleballotfile => "ballot.sample",
|
||||
resultfile => "ergebnis.alle",
|
||||
rulefile => "usevote.rul",
|
||||
badaddrfile => "mailpatterns.cfg",
|
||||
|
@ -45,6 +46,7 @@ sub read_config {
|
|||
voteaccount => "<> (unkonfiguriertes Usevote)",
|
||||
mailfrom => "<> (unkonfiguriertes Usevote)",
|
||||
envelopefrom => "<>",
|
||||
mailboxtype => "mbox",
|
||||
mailstart => "^From ",
|
||||
archivedir => "fertig",
|
||||
tmpdir => "tmp",
|
||||
|
@ -56,6 +58,7 @@ sub read_config {
|
|||
mailcc => "",
|
||||
sleepcmd => "sleep 1",
|
||||
clearcmd => "clear",
|
||||
diff => "diff",
|
||||
pager => "less",
|
||||
pop3 => 0,
|
||||
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)',
|
||||
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',
|
||||
bdsg_confirm => 'JA',
|
||||
condition1 => '$yes>=2*$no', # twice as many yes as no
|
||||
condition2 => '$yes>=60', # min 60 yes votes
|
||||
condition2 => '$yes>=15', # min 60 yes votes
|
||||
prop_formula => '$yes/$no',
|
||||
tpl_ack_mail => 'ack-mail',
|
||||
tpl_bouncelist => 'bouncelist',
|
||||
|
@ -117,6 +121,7 @@ sub read_config {
|
|||
tpl_rule_violated => 'rule-violated',
|
||||
begin_divider => 'Alles vor dieser Zeile bitte loeschen',
|
||||
end_divider => 'Alles nach dieser Zeile bitte loeschen',
|
||||
ballotintro => 'WAHLSCHEIN fuer',
|
||||
nametext => 'Dein Realname, falls nicht im FROM-Header:',
|
||||
nametext2 => 'Waehlername:',
|
||||
addresstext => 'Waehleradresse:',
|
||||
|
|
38
UVmenu.pm
38
UVmenu.pm
|
@ -17,7 +17,8 @@ $VERSION = "0.4";
|
|||
##############################################################################
|
||||
# Menu for interaction with the votetaker #
|
||||
# Parameters: votes list and header (references to arrays) #
|
||||
# Body, Mailadress, Name, Ballot ID (references to strings) #
|
||||
# Body, Mailadress, Name, Ballot ID, #
|
||||
# Voting (references to strings) #
|
||||
# List of newly set fields (reference to array) #
|
||||
# List of errors to correct (Array-Ref) #
|
||||
# Return Values: 'w': proceed #
|
||||
|
@ -25,7 +26,7 @@ $VERSION = "0.4";
|
|||
##############################################################################
|
||||
|
||||
sub menu {
|
||||
my ($votes, $header, $body, $addr, $name, $ballot_id, $set, $errors) = @_;
|
||||
my ($votes, $header, $body, $addr, $name, $ballot_id, $voting, $set, $errors) = @_;
|
||||
my $input = "";
|
||||
my $voter_addr = $$addr || '';
|
||||
my $voter_name = $$name || '';
|
||||
|
@ -59,6 +60,7 @@ sub menu {
|
|||
while (1) {
|
||||
|
||||
system($config{clearcmd});
|
||||
print "-> $config{votename} <-\n";
|
||||
print UVmessage::get("MENU_PROBLEMS") . "\n";
|
||||
|
||||
foreach my $error (keys %errors) {
|
||||
|
@ -68,6 +70,12 @@ sub menu {
|
|||
my $menucaption = UVmessage::get("MENU_CAPTION");
|
||||
print "\n\n$menucaption\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",
|
||||
UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
|
||||
"(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
|
||||
|
@ -79,6 +87,7 @@ sub menu {
|
|||
print "(5) ", UVmessage::get("MENU_BALLOT_ID"), " [$$ballot_id]\n"
|
||||
if ($config{personal});
|
||||
print "(6) ", UVmessage::get("MENU_BDSG"), "\n" if ($config{bdsg});
|
||||
print "(7) ", UVmessage::get("MENU_VOTING"), " [", $$voting, "]\n";
|
||||
}
|
||||
|
||||
print "\n",
|
||||
|
@ -93,7 +102,14 @@ sub menu {
|
|||
# only accept 1, 2, i and w if called from uvcfv.pl
|
||||
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});
|
||||
# ignore SIGPIPE (Bug in more and less)
|
||||
$SIG{PIPE} = 'IGNORE';
|
||||
|
@ -269,6 +285,22 @@ sub menu {
|
|||
$errors{InvalidBDSG} = UVmessage::get("MENU_INVALIDBDSG");
|
||||
}
|
||||
|
||||
} 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) {
|
||||
my $ignore = UVmessage::get("MENU_IGNORE_STRING");
|
||||
# Set columns for Text::Wrap
|
||||
|
|
|
@ -9,6 +9,7 @@ use UVmessage;
|
|||
use MIME::QuotedPrint;
|
||||
use MIME::Base64;
|
||||
use MIME::Parser;
|
||||
use Mail::Box::Manager;
|
||||
use POSIX qw(strftime);
|
||||
|
||||
use vars qw($VERSION);
|
||||
|
@ -118,37 +119,65 @@ sub process {
|
|||
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();
|
||||
|
||||
# Mailbox / Maildir
|
||||
} else {
|
||||
# open mail file
|
||||
open(VOTES, "<$filename")
|
||||
or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n";
|
||||
|
||||
# read all mails
|
||||
my $i = 0;
|
||||
while (<VOTES>) {
|
||||
if (/$config{mailstart}/) {
|
||||
$i++;
|
||||
}
|
||||
$mails[$i] = ($mails[$i] || "") . $_;
|
||||
my $readfilename;
|
||||
|
||||
if ($caller==0) {
|
||||
# called from uvvote.pl: use configured mailbox file
|
||||
$readfilename = $config{votefile};
|
||||
} else {
|
||||
# else use filename provided in function call
|
||||
$readfilename = $filename;
|
||||
# and create backup archive filename
|
||||
$filename .= '.processed';
|
||||
}
|
||||
|
||||
# close mail file
|
||||
close(VOTES);
|
||||
my $mgr = Mail::Box::Manager->new;
|
||||
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) {
|
||||
|
|
13
bdsgtext.cfg
13
bdsgtext.cfg
|
@ -3,11 +3,16 @@
|
|||
# wieder abgeprueft wird. Alle Zeilen, die mit dem Kommentarzeichen #
|
||||
# anfangen, werden ignoriert.
|
||||
#
|
||||
Zur Verarbeitung des Wahlscheines und inbesondere der Veroeffentlichung
|
||||
des Ergebnisses ist deine Zustimmung zur Speicherung, Auswertung und
|
||||
Zur Verarbeitung des Wahlscheines und insbesondere der Veroeffentlichung
|
||||
des Ergebnisses ist Deine Einwilligung zur Speicherung, Auswertung und
|
||||
Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in
|
||||
Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens
|
||||
erforderlich. Wenn du im Feld unterhalb dieses Absatzes "JA"
|
||||
eintraegst, erklaerst du dich damit einverstanden. In allen anderen
|
||||
Faellen wird der Wahlschein mit Ruecksicht auf das deutsche
|
||||
Bundesdatenschutzgesetz verworfen und nicht gewertet.
|
||||
Faellen wird der Wahlschein mit Ruecksicht auf die DSGVO verworfen
|
||||
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.
|
||||
|
|
|
@ -25,7 +25,6 @@ hostmaster@
|
|||
install@
|
||||
mailer.*@
|
||||
maint.*@
|
||||
news@
|
||||
newsmaster@
|
||||
nobody@
|
||||
operator@
|
||||
|
@ -38,5 +37,4 @@ sysop@
|
|||
system@
|
||||
test@
|
||||
tutor@
|
||||
usenet@
|
||||
uucp@
|
||||
|
|
|
@ -29,6 +29,8 @@ MENU_INVALIDBDSG = Datenschutzhinweis fehlerhaft oder nicht bestaetigt.
|
|||
MENU_DUPLICATEVOTE = Doppelte Stimmabgabe gefunden.
|
||||
MENU_NOVOTE = Keine Stimmabgabe gefunden.
|
||||
MENU_INVALIDVOTE = Ungueltige Stimmabgabe.
|
||||
MENU_NOVOTING = Bezeichnung der Abstimmung nicht gefunden.
|
||||
MENU_WRONGVOTING = Wahlschein fuer andere Abstimmung.
|
||||
MENU_NOBALLOTID = Keine Scheinkennung gefunden.
|
||||
MENU_WRONGBALLOTID = Scheinkennung falsch.
|
||||
MENU_ADDRESSNOTREGISTERED = Adresse nicht registriert.
|
||||
|
@ -40,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme
|
|||
MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
|
||||
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
|
||||
MENU_CAPTION = Auswahlmenue:
|
||||
MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff)
|
||||
MENU_SHOW_MAIL = Anzeigen der Wahlmail
|
||||
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
|
||||
MENU_ADDRESS = Mailadresse
|
||||
|
@ -67,6 +70,9 @@ MENU_BALLOT_ID = Scheinkennung
|
|||
MENU_BDSG = Datenschutzklausel
|
||||
MENU_BDSG_ACCEPTED = Datenschutzklausel wurde akzeptiert
|
||||
MENU_BDSG_DECLINED = Datenschutzklausel nicht akzeptiert bzw. Text veraendert
|
||||
MENU_VOTING = Abstimmung
|
||||
MENU_VOTING_CORRECT = Korrekter Wahlschein fuer diese Abstimmung
|
||||
MENU_VOTING_WRONG = Wahlschein fuer andere Abstimmung
|
||||
MENU_IGNORE = Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
|
||||
MENU_IGNORE_WARNING = Die Stimme wird nicht aufgezeichnet, und es wird keine Bestaetigung verschickt. ${MENU_IGNORE_STRING} eingeben, wenn Du sicher bist:
|
||||
MENU_IGNORE_STRING = JA
|
||||
|
@ -162,7 +168,7 @@ COUNT_DELETED = ${NUM} Stimme(n) geloescht.
|
|||
VOTE_RENAMING_MAILBOX = Benenne Stimmdatei um...
|
||||
VOTE_WRITE_RESULTS = Ergebnisdatei ${FILE} nicht schreibbar!
|
||||
VOTE_CLOSE_RESULTS = Ergebnisdatei ${FILE} konnte nicht erfolgreich geschlossen werden!
|
||||
VOTE_NO_VOTES = Keine Stimmen zu verarbeiten.
|
||||
VOTE_NO_VOTEMAILS = Keine Stimmen zu verarbeiten.
|
||||
VOTE_NUM_VOTES = ${COUNT} Stimmen bearbeitet.
|
||||
VOTE_NOT_SAVED = ${COUNT} Stimmen bearbeitet, aber nicht gespeichert.
|
||||
VOTE_FIRSTRUN = 'uvvote clean' aufrufen, um Ergebnisse zu speichern und Bestaetigungen zu verschicken.
|
||||
|
@ -173,6 +179,7 @@ VOTE_UNREGISTERED_ADDRESS = Adresse nicht registriert
|
|||
VOTE_INVALID_VOTE = Ungueltige Stimmabgabe
|
||||
VOTE_VIOLATED_RULE = Regel ${RULE} verletzt
|
||||
VOTE_NO_VOTES = Keine Stimmen abgegeben
|
||||
VOTE_WRONG_VOTING = Wahlschein gehoert nicht zu dieser Abstimmung
|
||||
VOTE_INVALID_ACCOUNT = Ungueltiger Account
|
||||
VOTE_INVALID_ADDRESS = Ungueltige Adresse
|
||||
VOTE_INVALID_REALNAME = Ungueltiger Realname
|
||||
|
|
|
@ -5,15 +5,22 @@ pos := value pos | fill-right 2
|
|||
group-first := value group | first-words 50
|
||||
group-more := value group | drop-words 50 | create-lines 50
|
||||
vote := value vote | fill-both 10
|
||||
votetaker := value mailfrom | fill-left 65
|
||||
votetaker := value mailfrom
|
||||
voteaccount-line := value voteaccount | fill-both 70
|
||||
|
||||
== TEMPLATE =================================================================
|
||||
Diese automatische Nachricht wurde dir nach Zaehlung deiner Stimme
|
||||
zugesandt. Wenn alles stimmt, gibt es keinen Anlass fuer eine Reaktion.
|
||||
|
||||
Wenn deine Stimme falsch registriert wurde, stimme bitte erneut ab,
|
||||
indem du diese Mail komplett zitierst und die falschen Wertungen
|
||||
korrigierst (zwischen die eckigen Klammern schreiben). Dabei darf
|
||||
keinesfalls die laufende Nummer am Zeilenanfang entfernt werden.
|
||||
Beachte bitte, dass Du Deine Stimme an die Abstimmadresse senden
|
||||
musst! Es genuegt daher nicht, einfach auf diese E-Mail zu antworten,
|
||||
vielmehr muss die Antwort an die Adresse
|
||||
[$voteaccount-line]
|
||||
gerichtet sein.
|
||||
|
||||
Diese Wahl ist oeffentlich, und die Adressen aller Waehlerinnen und
|
||||
Waehler werden am Ende bekanntgegeben. Wenn du deine Adresse & Stimme
|
||||
|
@ -29,8 +36,8 @@ Wahlscheinkennung gueltig!
|
|||
[$name-line]
|
||||
(Real-Namen sind fuer diese Abstimmung vorgeschrieben. Wenn hier
|
||||
nicht Dein wirklicher Name steht, dann korrigiere die Zeile
|
||||
bitte und sende die Nachricht zurueck; sonst kann die Stimme
|
||||
spaeter als ungueltig gewertet werden.)
|
||||
bitte und sende die Nachricht erneut an die Abstimmadresse,
|
||||
sonst kann die Stimme spaeter als ungueltig gewertet werden.)
|
||||
|
||||
|
||||
Deine Stimmabgabe wurde wie folgt erkannt:
|
||||
|
@ -39,8 +46,7 @@ Deine Stimmabgabe wurde wie folgt erkannt:
|
|||
[@group-more| [$line]\n]|\n]
|
||||
|
||||
|
||||
Danke fuer deine Stimmabgabe. Eine Kopie des CfV kannst du von mir er-
|
||||
halten (bitte Namen der Abstimmung angeben, falls mehrere laufen).
|
||||
Danke fuer deine Stimmabgabe.
|
||||
|
||||
[$votetaker]
|
||||
\[mit [$usevote_version]\]
|
||||
|
|
|
@ -14,7 +14,7 @@ bdsgtext-more := value bdsgtext | drop-words 50 | create-lines 50
|
|||
|
||||
=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
|
||||
|
||||
WAHLSCHEIN fuer [$votename-first]
|
||||
[$ballotintro] [$votename-first]
|
||||
[@votename-more| [$line]\n]
|
||||
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ votetaker := value mailfrom | fill-left 65
|
|||
|
||||
=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
|
||||
|
||||
WAHLSCHEIN fuer [$votename-first]
|
||||
[$ballotintro] [$votename-first]
|
||||
[@votename-more| [$line]\n]
|
||||
|
||||
|
||||
|
|
|
@ -11,9 +11,10 @@ group-more := value group | drop-words 40 | create-lines 40
|
|||
|
||||
Ergebnisse [$votename-first]
|
||||
[@votename-more| [$line]\n]
|
||||
([$numvalid] gueltige Stimmen)
|
||||
|
||||
Ja Nein : 2/3? >=60? : ang.? : Gruppe
|
||||
Es wurden [$numvalid] gueltige Stimmen abgegeben.
|
||||
|
||||
Ja Nein : 2/3? >=15? : ang.? : Gruppe
|
||||
---- ---- : ---- ----- : ----- : ---------------------------------------
|
||||
[@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein] : [?result| Ja |Nein] : [$group-first]
|
||||
[@group-more| : : : [$line]\n]\n]
|
||||
|
@ -24,6 +25,7 @@ Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
|
|||
Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
|
||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
|
||||
siehe Signatur) einzulegen.
|
||||
|
||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
|
||||
werden, wird die Moderation von de.admin.news.announce das
|
||||
Ergebnis danach umsetzen.
|
||||
|
|
|
@ -12,7 +12,8 @@ group-more := value group | drop-words 40 | create-lines 40
|
|||
|
||||
Ergebnisse [$votename-first]
|
||||
[@votename-more| [$line]\n]
|
||||
([$numvalid] gueltige Stimmen)
|
||||
|
||||
Es wurden [$numvalid] gueltige Stimmen abgegeben.
|
||||
|
||||
Ja Nein : J>=N? Ja/Nein : ang.? : Gruppe
|
||||
---- ---- : ----- ------- : ----- : ---------------------------------------
|
||||
|
@ -24,6 +25,7 @@ Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
|
|||
Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
|
||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
|
||||
siehe Signatur) einzulegen.
|
||||
|
||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
|
||||
werden, wird die Moderation von de.admin.news.announce das
|
||||
Ergebnis danach umsetzen.
|
||||
|
|
|
@ -8,19 +8,21 @@ votename-text-more := value votename | drop-words 30 | create-lines 72
|
|||
|
||||
Ergebnisse [$votename-first]
|
||||
[@votename-more| [$line]\n]
|
||||
([$numvalid] gueltige Stimmen)
|
||||
|
||||
Es wurden [$numvalid] gueltige Stimmen abgegeben.
|
||||
|
||||
Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] Enthaltungen].
|
||||
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
|
||||
|
||||
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
|
||||
60 Ja-Stimmen ein. Damit ist die [$votename-text-first]
|
||||
15 Ja-Stimmen ein. Damit ist die [$votename-text-first]
|
||||
[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
|
||||
|
||||
Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
|
||||
Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
|
||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
|
||||
siehe Signatur) einzulegen.
|
||||
|
||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
|
||||
werden, wird die Moderation von de.admin.news.announce das
|
||||
Ergebnis danach umsetzen.
|
||||
|
|
21
templates/wrong-voting
Normal file
21
templates/wrong-voting
Normal file
|
@ -0,0 +1,21 @@
|
|||
votetaker := value mailfrom | fill-left 65
|
||||
body := value body | quote "> "
|
||||
|
||||
== TEMPLATE =================================================================
|
||||
Offenbar hast du einen Wahlschein fuer eine andere Abstimmung eingesandt
|
||||
oder der Name der Abstimmung geht aus dem Wahlschein nicht hervor. Wenn
|
||||
das ein Irrtum war, pruefe bitte noch einmal die im CfV angegebene
|
||||
Abstimmungsadresse und wiederhole Deine Stimmabgabe.
|
||||
|
||||
Dieser Fehler kann auftreten, wenn Du an mehreren Abstimmungen teilnimmst
|
||||
und den Wahlschein von Hand einsendest (und dabei mehrere Abstimmungen
|
||||
verwechselst), oder wenn Du die Bezeichnung der Abstimmung im Wahlschein
|
||||
veraendert oder geloescht hast.
|
||||
|
||||
Hier die Mail, die ich erhalten habe:
|
||||
|
||||
[$body]
|
||||
|
||||
|
||||
[$votetaker]
|
||||
\[mit [$usevote_version]\]
|
23
usevote.cfg
23
usevote.cfg
|
@ -75,7 +75,11 @@ multigroup = 1
|
|||
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
|
||||
# werden.
|
||||
condition1 = $yes>=2*$no
|
||||
condition2 = $yes>=60
|
||||
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
|
||||
# (wird bei jedem Programmlauf neu erstellt!)
|
||||
|
@ -90,6 +94,9 @@ pop3 = 1
|
|||
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
|
||||
votefile = votes
|
||||
|
||||
# Typ der Mailbox (mbox, maildir)
|
||||
mailboxtype = mbox
|
||||
|
||||
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
|
||||
# Server, Port, Benutzername, Passwort
|
||||
pop3server = 127.0.0.1
|
||||
|
@ -183,7 +190,7 @@ 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 = sendmail -oi -oem -femail@adresse --
|
||||
|
||||
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
|
||||
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
|
||||
|
@ -205,6 +212,9 @@ clearcmd = clear
|
|||
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
|
||||
pager = less
|
||||
|
||||
# Shellbefehl fuer Dateivergleich
|
||||
diff = diff -u
|
||||
|
||||
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
|
||||
messagefile = messages.cfg
|
||||
|
||||
|
@ -227,6 +237,10 @@ mailstart = "^From "
|
|||
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:
|
||||
|
@ -267,6 +281,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
|
||||
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
|
||||
|
@ -290,4 +308,5 @@ 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)
|
||||
|
|
4
uvballot.pl
Normal file → Executable file
4
uvballot.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
###############################################################################
|
||||
# UseVoteGer 4.09 Wahlscheingenerierung
|
||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
||||
# UseVoteGer 4.13 Wahlscheingenerierung
|
||||
# (c) 2001-2022 Marc Langer <uv@marclanger.de>
|
||||
#
|
||||
# This script package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Public License as published by the
|
||||
|
|
4
uvbounce.pl
Normal file → Executable file
4
uvbounce.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
###############################################################################
|
||||
# UseVoteGer 4.09 Bounce-Verarbeitung
|
||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
||||
# UseVoteGer 4.13 Bounce-Verarbeitung
|
||||
# (c) 2001-2022 Marc Langer <uv@marclanger.de>
|
||||
#
|
||||
# This script package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Public License as published by the
|
||||
|
|
8
uvcfv.pl
Normal file → Executable file
8
uvcfv.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
###############################################################################
|
||||
# UseVoteGer 4.09 Personalisierte Wahlscheine
|
||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
||||
# UseVoteGer 4.13 Personalisierte Wahlscheine
|
||||
# (c) 2001-2022 Marc Langer <uv@marclanger.de>
|
||||
#
|
||||
# This script package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Public License as published by the
|
||||
|
@ -152,9 +152,9 @@ sub process_request {
|
|||
# check for suspicious addresses
|
||||
foreach my $element (@bad_addr) {
|
||||
if ($voter_addr =~ /^$element/) {
|
||||
my (@votes, @set, $ballot_id); # irrelevant, but necessary for UVmenu::menu()
|
||||
my (@votes, @set, $ballot_id, $voting); # irrelevant, but necessary for UVmenu::menu()
|
||||
my @errors = ('SuspiciousAccountBallot');
|
||||
my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name, \$ballot_id, \@set, \@errors);
|
||||
my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name, \$ballot_id, \$voting, \@set, \@errors);
|
||||
|
||||
# "Ignore": don't deliver a ballot
|
||||
return 0 if ($res eq 'i');
|
||||
|
|
4
uvcount.pl
Normal file → Executable file
4
uvcount.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
###############################################################################
|
||||
# UseVoteGer 4.09 Stimmauswertung
|
||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
||||
# UseVoteGer 4.13 Stimmauswertung
|
||||
# (c) 2001-2022 Marc Langer <uv@marclanger.de>
|
||||
#
|
||||
# This script package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Public License as published by the
|
||||
|
|
40
uvvote.pl
Normal file → Executable file
40
uvvote.pl
Normal file → Executable file
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
###############################################################################
|
||||
# UseVoteGer 4.09 Wahldurchfuehrung
|
||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
||||
# UseVoteGer 4.13 Wahldurchfuehrung
|
||||
# (c) 2001-2022 Marc Langer <uv@marclanger.de>
|
||||
#
|
||||
# This script package is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Public License as published by the
|
||||
|
@ -123,7 +123,7 @@ if ($clean) {
|
|||
my $ext = time;
|
||||
|
||||
opendir (TMP, $config{tmpdir});
|
||||
my @tmpfiles = readdir (DIR);
|
||||
my @tmpfiles = readdir (TMP);
|
||||
closedir (TMP);
|
||||
opendir (FERTIG, $config{archivedir});
|
||||
my @fertigfiles = readdir (FERTIG);
|
||||
|
@ -135,16 +135,6 @@ if ($clean) {
|
|||
my $thisresult = "ergebnis-" . $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 (RESULT, ">>$config{tmpdir}/$thisresult")
|
||||
or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
|
||||
|
@ -158,7 +148,7 @@ if ($clean) {
|
|||
|
||||
# no mails: exit here
|
||||
unless ($count) {
|
||||
print UVmessage::get("VOTE_NO_VOTES") . "\n\n";
|
||||
print UVmessage::get("VOTE_NO_VOTEMAILS") . "\n\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
|
@ -224,6 +214,7 @@ sub process_vote {
|
|||
my $onevote = 0; # 0=no votes, 1=everything OK, 2=vote cancelled
|
||||
my $voteerror = ""; # error message in case of invalid vote
|
||||
my $ballot_id = ""; # ballot id (German: Wahlscheinkennung)
|
||||
my $voting = ""; # voting (should be votename)
|
||||
|
||||
# found address?
|
||||
if ($voter_addr) {
|
||||
|
@ -239,6 +230,15 @@ sub process_vote {
|
|||
push (@errors, 'InvalidAddress');
|
||||
}
|
||||
|
||||
# correct voting?
|
||||
if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) {
|
||||
$voting = $1;
|
||||
$voting .= " $3" if (defined($3) and $3 !~ /\Q$config{nametext}\E/);
|
||||
push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/);
|
||||
} else {
|
||||
push (@errors, 'NoVoting');
|
||||
}
|
||||
|
||||
# personalized ballots?
|
||||
if ($config{personal}) {
|
||||
if ($$body =~ /$config{ballotidtext}\s+([a-z0-9]+)/) {
|
||||
|
@ -273,7 +273,7 @@ sub process_vote {
|
|||
# this matches on a single appearance:
|
||||
if ($$body =~ /#$votenum\W*?\[(.+)\]/) {
|
||||
# one or more vote strings were found
|
||||
$onevote = 1;
|
||||
$onevote ||= 1; # set $onevote to 1 if it was 0
|
||||
my $votestring = $1;
|
||||
if ($votestring =~ /^\W*$config{ja_stimme}\W*$/i) {
|
||||
$vote = "J";
|
||||
|
@ -319,7 +319,7 @@ sub process_vote {
|
|||
# Should read like this: #a [ STIMME ] Text
|
||||
# (Text is configurable in usevote.cfg)
|
||||
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');
|
||||
}
|
||||
|
@ -343,7 +343,7 @@ sub process_vote {
|
|||
# Errors encountered?
|
||||
if (@errors) {
|
||||
my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name,
|
||||
\$ballot_id, \@set, \@errors);
|
||||
\$ballot_id, \$voting, \@set, \@errors);
|
||||
return 0 if ($res eq 'i'); # "Ignore": Ignore vote, don't save
|
||||
|
||||
my $tpl;
|
||||
|
@ -402,6 +402,12 @@ sub process_vote {
|
|||
my $msg = $template->processTemplate($config{tpl_bdsg_error});
|
||||
UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
|
||||
return 0;
|
||||
} elsif ($error{NoVoting} or $error{WrongVoting}) {
|
||||
$voteerror = UVmessage::get("VOTE_WRONG_VOTING");
|
||||
my $template = UVtemplate->new();
|
||||
$template->setKey('body' => $$body);
|
||||
my $msg = $template->processTemplate($config{tpl_wrong_voting});
|
||||
UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
|
||||
} elsif ($error{NoVote}) {
|
||||
$voteerror = UVmessage::get("VOTE_NO_VOTES");
|
||||
my $template = UVtemplate->new();
|
||||
|
|
Loading…
Reference in a new issue