From b0edfe72ddcbf74c952bb04b494524e1c9820bd7 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 21 Nov 2010 23:06:22 +0100 Subject: [PATCH 01/23] Pre-release of upstream version 4.10. Signed-off-by: Thomas Hochstein --- CHANGES | 14 +++++++++++++- bdsgtext.cfg | 2 +- uvvote.pl | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index 2d0d6d2..306cd4e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,7 +1,9 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.09, released 07.10.2007) +UseVoteGer Versionshistorie (aktuelle Version: 4.10, released ) ========================================================================= TODO: +- Fehler in Annullierungsbearbeitung (wird nur bei erstem oder letztem + Abstimmungspunkt ausgewertet) - aussortieren von Bounces aus Stimmenliste - Unterstuetzung von Maildir - [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins @@ -10,6 +12,16 @@ 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.10: +- 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 +- 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) Version 4.09 (14.09.2007): - "votefile"-Option in usevote.cfg an passendere Stelle verschoben und diff --git a/bdsgtext.cfg b/bdsgtext.cfg index 28bc3b5..fa1c1e6 100644 --- a/bdsgtext.cfg +++ b/bdsgtext.cfg @@ -3,7 +3,7 @@ # wieder abgeprueft wird. Alle Zeilen, die mit dem Kommentarzeichen # # anfangen, werden ignoriert. # -Zur Verarbeitung des Wahlscheines und inbesondere der Veroeffentlichung +Zur Verarbeitung des Wahlscheines und insbesondere der Veroeffentlichung des Ergebnisses ist deine Zustimmung zur Speicherung, Auswertung und Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens diff --git a/uvvote.pl b/uvvote.pl index a86ef43..ff8f1b9 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -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); From bb61da374349f7d48c2f5e1976afd94fd489f122 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Sep 2012 17:37:34 +0200 Subject: [PATCH 02/23] Release of upstream version 4.10. Signed-off-by: Thomas Hochstein --- CHANGES | 17 ++++++++++++---- README | 7 ++----- UVconfig.pm | 2 +- UVmenu.pm | 38 +++++++++++++++++++++++++++++++++-- mailpatterns.cfg | 2 -- messages.cfg | 8 +++++++- templates/ack-mail | 16 ++++++++++----- templates/ballot | 2 +- templates/ballot-personal | 2 +- templates/result-multi | 6 ++++-- templates/result-proportional | 4 +++- templates/result-single | 6 ++++-- templates/wrong-voting | 21 +++++++++++++++++++ usevote.cfg | 7 ++++++- uvballot.pl | 4 ++-- uvbounce.pl | 4 ++-- uvcfv.pl | 8 ++++---- uvcount.pl | 4 ++-- uvvote.pl | 26 +++++++++++++++++++----- 19 files changed, 141 insertions(+), 43 deletions(-) create mode 100644 templates/wrong-voting diff --git a/CHANGES b/CHANGES index 306cd4e..281a395 100644 --- a/CHANGES +++ b/CHANGES @@ -1,9 +1,7 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.10, released ) +UseVoteGer Versionshistorie (aktuelle Version: 4.10, released 17.09.2012) ========================================================================= TODO: -- Fehler in Annullierungsbearbeitung (wird nur bei erstem oder letztem - Abstimmungspunkt ausgewertet) - aussortieren von Bounces aus Stimmenliste - Unterstuetzung von Maildir - [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins @@ -12,16 +10,27 @@ 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.10: +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 geprüft (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 diff --git a/README b/README index e2a7e66..158e3b6 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.09 (c) 2001-2007 Marc Langer +UseVoteGer 4.10 (c) 2001-2012 Marc Langer 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.09 - Usenet-Abstimmungssoftware +UseVoteGer 4.10 - Usenet-Abstimmungssoftware =========================================== von Marc Langer @@ -89,9 +89,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 diff --git a/UVconfig.pm b/UVconfig.pm index c93f135..ee7f21e 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.09"; +$usevote_version = "UseVoteGer 4.10"; sub read_config { diff --git a/UVmenu.pm b/UVmenu.pm index d90da9c..46eb779 100644 --- a/UVmenu.pm +++ b/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 || ''; @@ -79,6 +80,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", @@ -269,6 +271,38 @@ 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 = ; + } until ($sel =~ /^[ab]$/i); + + if ($sel =~ /^a$/i) { + delete $errors{NoVoting}; + delete $errors{WrongVoting}; + } else { + $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 = ; + } 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 diff --git a/mailpatterns.cfg b/mailpatterns.cfg index 0fbbd31..3add0f8 100644 --- a/mailpatterns.cfg +++ b/mailpatterns.cfg @@ -25,7 +25,6 @@ hostmaster@ install@ mailer.*@ maint.*@ -news@ newsmaster@ nobody@ operator@ @@ -38,5 +37,4 @@ sysop@ system@ test@ tutor@ -usenet@ uucp@ diff --git a/messages.cfg b/messages.cfg index 6b1dd5d..6c9b339 100644 --- a/messages.cfg +++ b/messages.cfg @@ -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. @@ -67,6 +69,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 +167,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 +178,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 diff --git a/templates/ack-mail b/templates/ack-mail index 150df0b..4d69cef 100644 --- a/templates/ack-mail +++ b/templates/ack-mail @@ -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]\] diff --git a/templates/ballot b/templates/ballot index 5e3242a..30add33 100644 --- a/templates/ballot +++ b/templates/ballot @@ -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] diff --git a/templates/ballot-personal b/templates/ballot-personal index 13aef2a..495baec 100644 --- a/templates/ballot-personal +++ b/templates/ballot-personal @@ -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] diff --git a/templates/result-multi b/templates/result-multi index cc3659b..01abd88 100644 --- a/templates/result-multi +++ b/templates/result-multi @@ -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? >=50? : 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. diff --git a/templates/result-proportional b/templates/result-proportional index 53685d1..fa9db75 100644 --- a/templates/result-proportional +++ b/templates/result-proportional @@ -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. diff --git a/templates/result-single b/templates/result-single index 1be10d2..8345efa 100644 --- a/templates/result-single +++ b/templates/result-single @@ -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] +50 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. diff --git a/templates/wrong-voting b/templates/wrong-voting new file mode 100644 index 0000000..f233b7d --- /dev/null +++ b/templates/wrong-voting @@ -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]\] diff --git a/usevote.cfg b/usevote.cfg index cf801f5..d6a6b33 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -75,7 +75,7 @@ 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>=50 # Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden # (wird bei jedem Programmlauf neu erstellt!) @@ -227,6 +227,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: @@ -290,4 +294,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) diff --git a/uvballot.pl b/uvballot.pl index 4085a7f..7081744 100644 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Wahlscheingenerierung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.10 Wahlscheingenerierung +# (c) 2001-2012 Marc Langer # # 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 diff --git a/uvbounce.pl b/uvbounce.pl index 1bf5139..eb95143 100644 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Bounce-Verarbeitung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.10 Bounce-Verarbeitung +# (c) 2001-2012 Marc Langer # # 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 diff --git a/uvcfv.pl b/uvcfv.pl index 74174c6..f2a81b0 100644 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Personalisierte Wahlscheine -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.10 Personalisierte Wahlscheine +# (c) 2001-2012 Marc Langer # # 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'); diff --git a/uvcount.pl b/uvcount.pl index 014494e..5c4ba2f 100644 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Stimmauswertung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.10 Stimmauswertung +# (c) 2001-2012 Marc Langer # # 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 diff --git a/uvvote.pl b/uvvote.pl index ff8f1b9..4affb4c 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.09 Wahldurchfuehrung -# (c) 2001-2005 Marc Langer +# UseVoteGer 4.10 Wahldurchfuehrung +# (c) 2001-2012 Marc Langer # # 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 @@ -158,7 +158,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 +224,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 +240,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); + 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 +283,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"; @@ -343,7 +353,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 +412,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(); From c9497882fb70672ae59fd5c5b955dc4fb4dab614 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 26 Sep 2012 21:26:54 +0200 Subject: [PATCH 03/23] Release of upstream version 4.11. Signed-off-by: Thomas Hochstein --- CHANGES | 14 +++++++---- README | 5 ++-- UVconfig.pm | 3 ++- UVreadmail.pm | 64 ++++++++++++++++++++++++++++++++------------------- usevote.cfg | 3 +++ uvballot.pl | 2 +- uvbounce.pl | 2 +- uvcfv.pl | 2 +- uvcount.pl | 2 +- uvvote.pl | 14 ++--------- 10 files changed, 64 insertions(+), 47 deletions(-) diff --git a/CHANGES b/CHANGES index 281a395..e26eb94 100644 --- a/CHANGES +++ b/CHANGES @@ -1,15 +1,21 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.10, released 17.09.2012) +UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) ========================================================================= 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.11 (25.09.2012): +- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. + Es kam zu vielen False Positives +- Einlesen der Mailbox auf Perlmodule 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 @@ -23,7 +29,7 @@ Version 4.10 (17.09.2012): auf die Ack-Mail geschickt werden koennen) - Fehler in Annullierungsbearbeitung behoben (wurde nur bei erstem 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) - neue Konfigurations-Option "ballotintro" und neues Template tpl_wrong_voting @@ -36,7 +42,7 @@ 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) diff --git a/README b/README index 158e3b6..3746e04 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.10 (c) 2001-2012 Marc Langer +UseVoteGer 4.11 (c) 2001-2012 Marc Langer 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.11 - Usenet-Abstimmungssoftware =========================================== von Marc Langer @@ -958,6 +958,7 @@ votename Name der Abstimmung group1 Erster Abstimmungsgegenstand group2 Zweiter (und so weiter durchnummerieren) 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 diff --git a/UVconfig.pm b/UVconfig.pm index ee7f21e..a12aa56 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.10"; +$usevote_version = "UseVoteGer 4.11"; sub read_config { @@ -45,6 +45,7 @@ sub read_config { voteaccount => "<> (unkonfiguriertes Usevote)", mailfrom => "<> (unkonfiguriertes Usevote)", envelopefrom => "<>", + mailboxtype => "mbox", mailstart => "^From ", archivedir => "fertig", tmpdir => "tmp", diff --git a/UVreadmail.pm b/UVreadmail.pm index e1e599c..01d062f 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -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,52 @@ 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 () { - if (/$config{mailstart}/) { - $i++; + my $mgr = Mail::Box::Manager->new; + my $folder; + + eval{ + $folder = $mgr->open( folder => $config{votefile}, + create => 0, + access => 'rw', + type => $config{mailboxtype}, + expand => 'LAZY', + ); + }; + die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $config{votefile})) . "\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'; } - $mails[$i] = ($mails[$i] || "") . $_; + $fromline .= ' ' . localtime() . "\n"; #strftime ('%a %b %d %H:%M:%S %Y', localtime) . "\n"; + push (@mails, $fromline . $mail); } + } - # close mail file - close(VOTES); + # 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) { diff --git a/usevote.cfg b/usevote.cfg index d6a6b33..20f4bc9 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -90,6 +90,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 diff --git a/uvballot.pl b/uvballot.pl index 7081744..6933233 100644 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.10 Wahlscheingenerierung +# UseVoteGer 4.11 Wahlscheingenerierung # (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or diff --git a/uvbounce.pl b/uvbounce.pl index eb95143..03f1e1d 100644 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.10 Bounce-Verarbeitung +# UseVoteGer 4.11 Bounce-Verarbeitung # (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or diff --git a/uvcfv.pl b/uvcfv.pl index f2a81b0..a053e77 100644 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.10 Personalisierte Wahlscheine +# UseVoteGer 4.11 Personalisierte Wahlscheine # (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or diff --git a/uvcount.pl b/uvcount.pl index 5c4ba2f..11af9c1 100644 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.10 Stimmauswertung +# UseVoteGer 4.11 Stimmauswertung # (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or diff --git a/uvvote.pl b/uvvote.pl index 4affb4c..4b3b2b1 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.10 Wahldurchfuehrung +# UseVoteGer 4.11 Wahldurchfuehrung # (c) 2001-2012 Marc Langer # # This script package is free software; you can redistribute it and/or @@ -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"; @@ -241,7 +231,7 @@ sub process_vote { } # correct voting? - if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n(.*?[\t ]+(\S+.+)\s*$)?/m) { + if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)[^\S\n]*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) { $voting = $1; $voting .= " $3" if defined($3); push (@errors, 'WrongVoting') if ($config{votename} !~ /^\s*\Q$voting\E\s*$/); From 6f31c0dc7a1739d305ae46715c316365f8002e95 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:24:02 +0100 Subject: [PATCH 04/23] Add "bdsg_confirm" to UVconf.pm Set default for "bdsg_confirm". Picked from upstream. Signed-off-by: Thomas Hochstein --- UVconfig.pm | 1 + 1 file changed, 1 insertion(+) diff --git a/UVconfig.pm b/UVconfig.pm index a12aa56..aa3b883 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -90,6 +90,7 @@ 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 prop_formula => '$yes/$no', From 300f47d6164562e776a6a6b4efcd6125a629e710 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:53 +0100 Subject: [PATCH 05/23] Documentation: Add votename to UVmenu. Those new options to check the votename had not been added to the README file. Also fix a typo. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 2 +- README | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index e26eb94..cde0093 100644 --- a/CHANGES +++ b/CHANGES @@ -12,7 +12,7 @@ am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt). Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. Es kam zu vielen False Positives -- Einlesen der Mailbox auf Perlmodule Mail::Box umgestellt, damit +- 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 diff --git a/README b/README index 3746e04..c586961 100644 --- a/README +++ b/README @@ -412,6 +412,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften: (4) Stimmen (5) Scheinkennung (6) Datenschutzklausel +(7) Abstimmung (i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen) (w) Weiter @@ -427,7 +428,7 @@ 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 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. From e91a2b7fa54667982a8c4822f892cda181e77356 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:33:47 +0100 Subject: [PATCH 06/23] Add option to compare ballot to sample ballot. It may be desriable to compare a ballot to a sample ballot when checking votes. * Add options "diff" and "sampleballotfile" to usevote.cfg an UVconfig.pm * Add menu option to UVmenu.pm Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 13 ++++++++----- README | 10 ++++++++++ UVconfig.pm | 2 ++ UVmenu.pm | 15 ++++++++++++++- messages.cfg | 1 + usevote.cfg | 7 +++++++ 6 files changed, 42 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index cde0093..064e2aa 100644 --- a/CHANGES +++ b/CHANGES @@ -3,11 +3,14 @@ UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) TODO: - aussortieren von Bounces aus Stimmenliste -- [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.12 (19.01.2014): +- 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) Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. diff --git a/README b/README index c586961..aa26972 100644 --- a/README +++ b/README @@ -324,6 +324,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 @@ -404,6 +405,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: @@ -427,6 +429,9 @@ 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 ausführen ("diff"), um Aenderungen/Fehler schneller +zu sehen. Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder @@ -958,6 +963,7 @@ 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] @@ -1026,6 +1032,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 diff --git a/UVconfig.pm b/UVconfig.pm index aa3b883..2df748f 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -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", @@ -57,6 +58,7 @@ sub read_config { mailcc => "", sleepcmd => "sleep 1", clearcmd => "clear", + diff => "diff", pager => "less", pop3 => 0, pop3server => "localhost", diff --git a/UVmenu.pm b/UVmenu.pm index 46eb779..486bb2c 100644 --- a/UVmenu.pm +++ b/UVmenu.pm @@ -69,6 +69,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"; @@ -95,7 +101,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'; diff --git a/messages.cfg b/messages.cfg index 6c9b339..e1f1b13 100644 --- a/messages.cfg +++ b/messages.cfg @@ -42,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 diff --git a/usevote.cfg b/usevote.cfg index 20f4bc9..8e0ada3 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -77,6 +77,10 @@ multigroup = 1 condition1 = $yes>=2*$no condition2 = $yes>=50 +# 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!) resultfile = ergebnis.alle @@ -208,6 +212,9 @@ clearcmd = clear # Windows-Verzeichnis kopieren (URL siehe README-Datei) pager = less +# Shellbefehl fuer Dateivergleich +diff = diff + # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei) messagefile = messages.cfg From 7450382ef39c57c7092fcb5a75015aff17ab15b2 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:35:34 +0100 Subject: [PATCH 07/23] Fix UVreadmail.pm Use filename from function call. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ README | 4 ++++ UVreadmail.pm | 16 ++++++++++++++-- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 064e2aa..e1c4529 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,9 @@ TODO: - aussortieren von Bounces aus Stimmenliste Version 4.12 (19.01.2014): +- uvbounce.pl und uvballot.pl benutzen jetzt wieder den uebergebenen + Dateinamen statt irrtuemlich das Mailboxfile aus usevote.cfg + (Bugfix in UVreadmail.pm) - 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 diff --git a/README b/README index aa26972..9f2be7e 100644 --- a/README +++ b/README @@ -691,6 +691,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"). diff --git a/UVreadmail.pm b/UVreadmail.pm index 01d062f..ac1b843 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -124,18 +124,30 @@ sub process { # Mailbox / Maildir } else { + 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'; + } + my $mgr = Mail::Box::Manager->new; my $folder; eval{ - $folder = $mgr->open( folder => $config{votefile}, + $folder = $mgr->open( folder => $readfilename, create => 0, access => 'rw', type => $config{mailboxtype}, expand => 'LAZY', ); }; - die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $config{votefile})) . "\n\n" if $@; + die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@; # Iterate over the messages. foreach (@$folder) { From c50a97a62ca4a74c142a4a23ccb1f84d88083741 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:07 +0100 Subject: [PATCH 08/23] Don't remove empty mailbox files/maildirs. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ UVreadmail.pm | 1 + 2 files changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index e1c4529..6ccc966 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Version 4.12 (19.01.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 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 diff --git a/UVreadmail.pm b/UVreadmail.pm index ac1b843..35dda15 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -145,6 +145,7 @@ sub process { access => 'rw', type => $config{mailboxtype}, expand => 'LAZY', + remove_when_empty => 0, ); }; die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@; From 7ae85f86e37d9040cc0925d7375d54492011ab53 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:36:28 +0100 Subject: [PATCH 09/23] Add correct timestamp to mbox when processing. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ UVreadmail.pm | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 6ccc966..f73d3d8 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Version 4.12 (19.01.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 diff --git a/UVreadmail.pm b/UVreadmail.pm index 35dda15..0a1f98f 100644 --- a/UVreadmail.pm +++ b/UVreadmail.pm @@ -162,7 +162,7 @@ sub process { } else { $fromline .= 'foo@bar.invalid'; } - $fromline .= ' ' . localtime() . "\n"; #strftime ('%a %b %d %H:%M:%S %Y', localtime) . "\n"; + $fromline .= ' ' . localtime($_->timestamp()) . "\n"; push (@mails, $fromline . $mail); } } From 62d56462b42ca2a59066c22bf7839eecec3e206b Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 16 Feb 2014 13:37:39 +0100 Subject: [PATCH 10/23] Update documentation to 4.12. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 2 +- README | 4 ++-- UVconfig.pm | 2 +- uvballot.pl | 4 ++-- uvbounce.pl | 4 ++-- uvcfv.pl | 4 ++-- uvcount.pl | 4 ++-- uvvote.pl | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CHANGES b/CHANGES index f73d3d8..4afa606 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,4 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012) +UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 19.01.2014) ========================================================================= TODO: diff --git a/README b/README index 9f2be7e..286e1ad 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.11 (c) 2001-2012 Marc Langer +UseVoteGer 4.12 (c) 2001-2014 Marc Langer 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.11 - Usenet-Abstimmungssoftware +UseVoteGer 4.12 - Usenet-Abstimmungssoftware =========================================== von Marc Langer diff --git a/UVconfig.pm b/UVconfig.pm index 2df748f..571ab69 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.11"; +$usevote_version = "UseVoteGer 4.12"; sub read_config { diff --git a/uvballot.pl b/uvballot.pl index 6933233..7d7ff27 100644 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Wahlscheingenerierung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Wahlscheingenerierung +# (c) 2001-2014 Marc Langer # # 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 diff --git a/uvbounce.pl b/uvbounce.pl index 03f1e1d..4375bf3 100644 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Bounce-Verarbeitung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Bounce-Verarbeitung +# (c) 2001-2014 Marc Langer # # 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 diff --git a/uvcfv.pl b/uvcfv.pl index a053e77..275da9b 100644 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Personalisierte Wahlscheine -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Personalisierte Wahlscheine +# (c) 2001-2014 Marc Langer # # 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 diff --git a/uvcount.pl b/uvcount.pl index 11af9c1..4e1ea57 100644 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Stimmauswertung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Stimmauswertung +# (c) 2001-2014 Marc Langer # # 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 diff --git a/uvvote.pl b/uvvote.pl index 4b3b2b1..0e7e2bd 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.11 Wahldurchfuehrung -# (c) 2001-2012 Marc Langer +# UseVoteGer 4.12 Wahldurchfuehrung +# (c) 2001-2014 Marc Langer # # 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 From 3aca529725c836e6aa7968f462cff67cb63e0e60 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:43:48 +0100 Subject: [PATCH 11/23] Add votename to Menu. Display the current voting's description. Also purge some dead code. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ UVmenu.pm | 19 ++----------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/CHANGES b/CHANGES index 4afa606..f911feb 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,9 @@ Version 4.12 (19.01.2014): 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 Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. diff --git a/UVmenu.pm b/UVmenu.pm index 486bb2c..07e32c8 100644 --- a/UVmenu.pm +++ b/UVmenu.pm @@ -60,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) { @@ -107,7 +108,7 @@ sub menu { 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) @@ -300,22 +301,6 @@ sub menu { $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 = ; - } 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 From f5828d9fad01f6e4ec78b5a6c00db848b0ba2018 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:45:08 +0100 Subject: [PATCH 12/23] Enforce strict response for data protection clause. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 3 +++ usevote.cfg | 4 ++++ uvvote.pl | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index f911feb..ba7460a 100644 --- a/CHANGES +++ b/CHANGES @@ -23,6 +23,9 @@ Version 4.12 (19.01.2014): - 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 Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. diff --git a/usevote.cfg b/usevote.cfg index 8e0ada3..eb99d33 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -281,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 diff --git a/uvvote.pl b/uvvote.pl index 0e7e2bd..a82874a 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -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'); } From 3ab56bde53da7d77b3119e6793059aa9689e0d11 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:46:32 +0100 Subject: [PATCH 13/23] Correctly find $votename. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 2 ++ UVconfig.pm | 1 + uvvote.pl | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index ba7460a..5067501 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,8 @@ Version 4.12 (19.01.2014): - 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 Version 4.11 (25.09.2012): - Regular Expression fuer Pruefung des Abstimmungsnamens verbessert. diff --git a/UVconfig.pm b/UVconfig.pm index 571ab69..1c64b14 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -121,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:', diff --git a/uvvote.pl b/uvvote.pl index a82874a..c101f1f 100644 --- a/uvvote.pl +++ b/uvvote.pl @@ -231,9 +231,9 @@ sub process_vote { } # correct voting? - if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)[^\S\n]*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) { + if ($$body =~ /\Q$config{ballotintro}\E\s+(.+?)\s*\n([>:|]*?[\t ]+(\S+.+)\s*$)?/m) { $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*$/); } else { push (@errors, 'NoVoting'); From 923dc1773ec7aac5b3600730945ba2e0d12e76df Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:48:02 +0100 Subject: [PATCH 14/23] Change quorum default value to 50 "JA" votes. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 1 + UVconfig.pm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 5067501..162d6c6 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,7 @@ Version 4.12 (19.01.2014): 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. diff --git a/UVconfig.pm b/UVconfig.pm index 1c64b14..f78e3b9 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -94,7 +94,7 @@ sub read_config { 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>=50', # min 60 yes votes prop_formula => '$yes/$no', tpl_ack_mail => 'ack-mail', tpl_bouncelist => 'bouncelist', From 6f88a29957653b1a7719f1ad11c8d48ee98cfc48 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:48:25 +0100 Subject: [PATCH 15/23] Fix typo in README. Picked from upstream. Signed-off-by: Thomas Hochstein --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 286e1ad..fec87c8 100644 --- a/README +++ b/README @@ -430,7 +430,7 @@ 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 ausführen ("diff"), um Aenderungen/Fehler schneller +Musterwahlschein ausfuehren ("diff"), um Aenderungen/Fehler schneller zu sehen. Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften From f9a99fd83a49d5e8ea785af3e91fa2679482da44 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Wed, 19 Mar 2014 21:48:48 +0100 Subject: [PATCH 16/23] Update CHANGES for release. Picked from upstream. Signed-off-by: Thomas Hochstein --- CHANGES | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 162d6c6..f434572 100644 --- a/CHANGES +++ b/CHANGES @@ -1,10 +1,10 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 19.01.2014) +UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 28.02.2014) ========================================================================= TODO: - aussortieren von Bounces aus Stimmenliste -Version 4.12 (19.01.2014): +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) From a94e81c653c147c7d7d78210a0f43d92edbe0ebf Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sat, 12 Nov 2011 16:49:11 +0100 Subject: [PATCH 17/23] Add executive bits to scripts. Signed-off-by: Thomas Hochstein --- uvballot.pl | 0 uvbounce.pl | 0 uvcfv.pl | 0 uvcount.pl | 0 uvvote.pl | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 uvballot.pl mode change 100644 => 100755 uvbounce.pl mode change 100644 => 100755 uvcfv.pl mode change 100644 => 100755 uvcount.pl mode change 100644 => 100755 uvvote.pl diff --git a/uvballot.pl b/uvballot.pl old mode 100644 new mode 100755 diff --git a/uvbounce.pl b/uvbounce.pl old mode 100644 new mode 100755 diff --git a/uvcfv.pl b/uvcfv.pl old mode 100644 new mode 100755 diff --git a/uvcount.pl b/uvcount.pl old mode 100644 new mode 100755 diff --git a/uvvote.pl b/uvvote.pl old mode 100644 new mode 100755 From b7e3bdd9511f8df527dbf194f70c323fcb525c41 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Mon, 20 Sep 2021 21:11:33 +0200 Subject: [PATCH 18/23] Adapt bdsgtext.cfg to DSGVO. Signed-off-by: Thomas Hochstein --- bdsgtext.cfg | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bdsgtext.cfg b/bdsgtext.cfg index fa1c1e6..45b90f1 100644 --- a/bdsgtext.cfg +++ b/bdsgtext.cfg @@ -4,10 +4,15 @@ # anfangen, werden ignoriert. # 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 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. From 3c2b60126fd2385ef3345ac45506e2bcd56651f6 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Mon, 20 Sep 2021 21:15:23 +0200 Subject: [PATCH 19/23] Global config: add " --" to mail command. Otherwise mail addresses beginning with a dash ("-mymail-@provider.example") will lead to Exim erroring out. Signed-off-by: Thomas Hochstein --- usevote.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usevote.cfg b/usevote.cfg index eb99d33..3e5f0bd 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -190,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 From a5ab9d262009660142260d50e8d00ca6a0858dfd Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 19 Dec 2021 14:20:30 +0100 Subject: [PATCH 20/23] Global config: change diff command to "diff -u". Signed-off-by: Thomas Hochstein --- usevote.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usevote.cfg b/usevote.cfg index 3e5f0bd..5c7aeda 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -213,7 +213,7 @@ clearcmd = clear pager = less # Shellbefehl fuer Dateivergleich -diff = diff +diff = diff -u # Datei mit diversen Meldungen und Textfragmenten (Resourcendatei) messagefile = messages.cfg From 68d2e7d047309a51c360aa3abab681a6b16e3faf Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 19 Dec 2021 14:23:51 +0100 Subject: [PATCH 21/23] Change quorum (50 -> 15 votes) Change in config and templates: - result-single - result-multi Signed-off-by: Thomas Hochstein --- UVconfig.pm | 2 +- templates/result-multi | 2 +- templates/result-single | 2 +- usevote.cfg | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/UVconfig.pm b/UVconfig.pm index f78e3b9..67b0eee 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -94,7 +94,7 @@ sub read_config { 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>=50', # min 60 yes votes + condition2 => '$yes>=15', # min 15 yes votes prop_formula => '$yes/$no', tpl_ack_mail => 'ack-mail', tpl_bouncelist => 'bouncelist', diff --git a/templates/result-multi b/templates/result-multi index 01abd88..8c6cfba 100644 --- a/templates/result-multi +++ b/templates/result-multi @@ -14,7 +14,7 @@ Ergebnisse [$votename-first] 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] [@group-more| : : : [$line]\n]\n] diff --git a/templates/result-single b/templates/result-single index 8345efa..fdb3912 100644 --- a/templates/result-single +++ b/templates/result-single @@ -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.] 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]. Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner diff --git a/usevote.cfg b/usevote.cfg index 5c7aeda..81de4c2 100644 --- a/usevote.cfg +++ b/usevote.cfg @@ -75,7 +75,7 @@ multigroup = 1 # wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt # werden. 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. From 150c91add62708f4b86ec550d72fcc8b365002a4 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 19 Dec 2021 15:09:08 +0100 Subject: [PATCH 22/23] Update documentation. Signed-off-by: Thomas Hochstein --- CHANGES | 7 +++++++ README | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index f434572..dfcda25 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,13 @@ UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 28.02.2014) TODO: - aussortieren von Bounces aus Stimmenliste +Version 4.13 (unreleased): +- BDSG-Klausel an die DSGVO angepasst +- "mailcmd" muss mit "--" enden, damit Mailadressen, die mit "-" + beginnen, richtig erkannt werden. +- "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 diff --git a/README b/README index fec87c8..d45d71a 100644 --- a/README +++ b/README @@ -187,7 +187,7 @@ 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. + DSGVO), muss ausserhalb Deutschlands ggfls. angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg) mailpatterns.cfg Wildcards fuer verdaechtige Mailadressen messages.cfg Programm-Meldungen (Ressourcen-Datei) @@ -524,7 +524,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 @@ -989,7 +989,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) @@ -1027,7 +1027,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. From 290f1a1631907941892d78cc41b37beb6859770f Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Thu, 27 Jan 2022 18:07:13 +0100 Subject: [PATCH 23/23] Usevote 4.0.13 Signed-off-by: Thomas Hochstein --- CHANGES | 6 +++--- README | 11 ++++++----- UVconfig.pm | 4 ++-- uvballot.pl | 4 ++-- uvbounce.pl | 4 ++-- uvcfv.pl | 4 ++-- uvcount.pl | 4 ++-- uvvote.pl | 4 ++-- 8 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGES b/CHANGES index dfcda25..72e69cc 100644 --- a/CHANGES +++ b/CHANGES @@ -1,14 +1,14 @@ -UseVoteGer Versionshistorie (aktuelle Version: 4.12, released 28.02.2014) +UseVoteGer Versionshistorie (aktuelle Version: 4.13, released 27.01.2022) ========================================================================= TODO: - aussortieren von Bounces aus Stimmenliste -Version 4.13 (unreleased): +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 für das Diff-Programm +- "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): diff --git a/README b/README index d45d71a..3c42498 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -UseVoteGer 4.12 (c) 2001-2014 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.12 - Usenet-Abstimmungssoftware +UseVoteGer 4.13 - Usenet-Abstimmungssoftware =========================================== von Marc Langer @@ -187,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 - DSGVO), 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 @@ -1027,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. diff --git a/UVconfig.pm b/UVconfig.pm index 67b0eee..fd262c9 100644 --- a/UVconfig.pm +++ b/UVconfig.pm @@ -18,7 +18,7 @@ require Exporter; $VERSION = "0.18"; # Usevote version -$usevote_version = "UseVoteGer 4.12"; +$usevote_version = "UseVoteGer 4.13"; sub read_config { @@ -94,7 +94,7 @@ sub read_config { 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>=15', # min 15 yes votes + condition2 => '$yes>=15', # min 60 yes votes prop_formula => '$yes/$no', tpl_ack_mail => 'ack-mail', tpl_bouncelist => 'bouncelist', diff --git a/uvballot.pl b/uvballot.pl index 7d7ff27..428a097 100755 --- a/uvballot.pl +++ b/uvballot.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.12 Wahlscheingenerierung -# (c) 2001-2014 Marc Langer +# UseVoteGer 4.13 Wahlscheingenerierung +# (c) 2001-2022 Marc Langer # # 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 diff --git a/uvbounce.pl b/uvbounce.pl index 4375bf3..0a7352f 100755 --- a/uvbounce.pl +++ b/uvbounce.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.12 Bounce-Verarbeitung -# (c) 2001-2014 Marc Langer +# UseVoteGer 4.13 Bounce-Verarbeitung +# (c) 2001-2022 Marc Langer # # 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 diff --git a/uvcfv.pl b/uvcfv.pl index 275da9b..5f09080 100755 --- a/uvcfv.pl +++ b/uvcfv.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.12 Personalisierte Wahlscheine -# (c) 2001-2014 Marc Langer +# UseVoteGer 4.13 Personalisierte Wahlscheine +# (c) 2001-2022 Marc Langer # # 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 diff --git a/uvcount.pl b/uvcount.pl index 4e1ea57..4af9a8f 100755 --- a/uvcount.pl +++ b/uvcount.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.12 Stimmauswertung -# (c) 2001-2014 Marc Langer +# UseVoteGer 4.13 Stimmauswertung +# (c) 2001-2022 Marc Langer # # 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 diff --git a/uvvote.pl b/uvvote.pl index c101f1f..181aca2 100755 --- a/uvvote.pl +++ b/uvvote.pl @@ -1,8 +1,8 @@ #!/usr/bin/perl -w ############################################################################### -# UseVoteGer 4.12 Wahldurchfuehrung -# (c) 2001-2014 Marc Langer +# UseVoteGer 4.13 Wahldurchfuehrung +# (c) 2001-2022 Marc Langer # # 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