Compare commits
	
		
			26 commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 290f1a1631 | |||
| 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 | 
					 21 changed files with 300 additions and 97 deletions
				
			
		
							
								
								
									
										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:
 | 
					TODO:
 | 
				
			||||||
- aussortieren von Bounces aus Stimmenliste
 | 
					- aussortieren von Bounces aus Stimmenliste
 | 
				
			||||||
- Unterstuetzung von Maildir
 | 
					 | 
				
			||||||
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
 | 
					 | 
				
			||||||
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):
 | 
					Version 4.09 (14.09.2007):
 | 
				
			||||||
- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
 | 
					- "votefile"-Option in usevote.cfg an passendere Stelle verschoben und
 | 
				
			||||||
  den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
 | 
					  den Kommentar korrigiert (natuerlich gilt pop3=0 als Bedingung, nicht
 | 
				
			||||||
  etwa wie vorher angegeben smtp=0)
 | 
					  etwa wie vorher angegeben smtp=0)
 | 
				
			||||||
- Fehler in Template für Ergebnisausgabe korrigiert (fehlendes Newline
 | 
					- Fehler in Template fuer Ergebnisausgabe korrigiert (fehlendes Newline
 | 
				
			||||||
  nach umgebrochenen Abstimmungspunkten)
 | 
					  nach umgebrochenen Abstimmungspunkten)
 | 
				
			||||||
- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
 | 
					- Fehler in Doku der Kommandozeilenoptionen von uvcount.pl behoben
 | 
				
			||||||
  (--voters statt --votes)
 | 
					  (--voters statt --votes)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										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.
 | 
					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)
 | 
					- Wolfgang Behrens (UseVoteGer 3.1, based on Frederik's translation, 1998/99)
 | 
				
			||||||
- Cornell Binder for some good advice and code fragments
 | 
					- Cornell Binder for some good advice and code fragments
 | 
				
			||||||
  (e.g. UVtemplate.pm, UVformats.pm)
 | 
					  (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
 | 
					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!
 | 
					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>
 | 
					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
 | 
					       sehr einfach mit "perl -MCPAN -e shell", ActivePerl fuer
 | 
				
			||||||
       Windows hat einen eigenen Paketmanager)
 | 
					       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
 | 
					II. Fuer jedes Voting
 | 
				
			||||||
   (1) usevote.cfg auf das durchzufuehrende Voting anpassen
 | 
					   (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
 | 
					UVsendmail.pm     Routinen zum Erzeugen von Mails
 | 
				
			||||||
UVtemplate.pm     Routinen zur Verarbeitung von Vorlagen (Templates)
 | 
					UVtemplate.pm     Routinen zur Verarbeitung von Vorlagen (Templates)
 | 
				
			||||||
bdsgtext.cfg      Spezieller Text fuer den Wahlschein (Hinweis auf
 | 
					bdsgtext.cfg      Spezieller Text fuer den Wahlschein (Hinweis auf
 | 
				
			||||||
                  Datenschutzgesetz), muss ausserhalb Deutschlands ggfls.
 | 
					                  DSGVO), muss ausserhalb der EU ggfls. angepasst werden
 | 
				
			||||||
                  angepasst oder kann ignoriert werden (bdsg=0 in usevote.cfg)
 | 
					                  oder kann dort ignoriert werden (bdsg=0 in usevote.cfg)
 | 
				
			||||||
mailpatterns.cfg  Wildcards fuer verdaechtige Mailadressen
 | 
					mailpatterns.cfg  Wildcards fuer verdaechtige Mailadressen
 | 
				
			||||||
messages.cfg      Programm-Meldungen (Ressourcen-Datei)
 | 
					messages.cfg      Programm-Meldungen (Ressourcen-Datei)
 | 
				
			||||||
scheinkennungen   Speicherung der Scheinkennungen bei personalisierten
 | 
					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
 | 
					sollten im Abstimmungsverzeichnis vorhanden sein (notwendig ist nur
 | 
				
			||||||
usevote.cfg, darin können alle anderen Pfade angepasst werden):
 | 
					usevote.cfg, darin können alle anderen Pfade angepasst werden):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ballot.sample
 | 
				
			||||||
bdsgtext.cfg
 | 
					bdsgtext.cfg
 | 
				
			||||||
mailpatterns.cfg
 | 
					mailpatterns.cfg
 | 
				
			||||||
messages.cfg
 | 
					messages.cfg
 | 
				
			||||||
| 
						 | 
					@ -407,6 +406,7 @@ mit einzelnen Stimmen wirst Du interaktiv durch Menues gefuehrt.
 | 
				
			||||||
Meistens gibt es folgende Moeglichkeiten, die durch die
 | 
					Meistens gibt es folgende Moeglichkeiten, die durch die
 | 
				
			||||||
eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
 | 
					eingeklammerten Buchstaben und Zahlen aufgerufen werden koennen:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(0) Wahlschein mit Original vergleichen (diff)
 | 
				
			||||||
(1) Anzeigen der Wahlmail
 | 
					(1) Anzeigen der Wahlmail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 | 
					Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 | 
				
			||||||
| 
						 | 
					@ -415,6 +415,7 @@ Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 | 
				
			||||||
(4) Stimmen
 | 
					(4) Stimmen
 | 
				
			||||||
(5) Scheinkennung
 | 
					(5) Scheinkennung
 | 
				
			||||||
(6) Datenschutzklausel
 | 
					(6) Datenschutzklausel
 | 
				
			||||||
 | 
					(7) Abstimmung
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
 | 
					(i) Diese Stimme ignorieren (ohne Benachrichtigung verwerfen)
 | 
				
			||||||
(w) Weiter
 | 
					(w) Weiter
 | 
				
			||||||
| 
						 | 
					@ -429,8 +430,11 @@ Teilweise gibt es Unteroptionen:
 | 
				
			||||||
Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
 | 
					Nun solltest Du zunaechst mit (1) die Mail ansehen und anhand
 | 
				
			||||||
der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
 | 
					der bemaengelten Punkte entscheiden, ob der Wahlschein gueltig
 | 
				
			||||||
oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
 | 
					oder ungueltig ist bzw. welche Maengel tatsaechlich zutreffen.
 | 
				
			||||||
 | 
					Mit (0) kannst Du einen Dateivergleich zu einem vorher hinterlegten
 | 
				
			||||||
 | 
					Musterwahlschein ausfuehren ("diff"), um Aenderungen/Fehler schneller
 | 
				
			||||||
 | 
					zu sehen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Mit den Optionen (2) bis (6) kannst Du einzelne Eigenschaften
 | 
					Mit den Optionen (2) bis (7) kannst Du einzelne Eigenschaften
 | 
				
			||||||
des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
 | 
					des Wahlscheins nachbessern (wenn Usevote z.B. einen Namen oder
 | 
				
			||||||
eine Stimme nicht korrekt erkannt hat) oder auch einfach die
 | 
					eine Stimme nicht korrekt erkannt hat) oder auch einfach die
 | 
				
			||||||
Korrektheit bestaetigen.
 | 
					Korrektheit bestaetigen.
 | 
				
			||||||
| 
						 | 
					@ -521,7 +525,7 @@ Das Endergebnis kannst Du mit "uvcount.pl -r" ausgeben lassen.
 | 
				
			||||||
Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
 | 
					Bei Verfahren mit mehreren Abstimmungspunkten wird automatusch
 | 
				
			||||||
das folgende tabellarische Format verwendet:
 | 
					das folgende tabellarische Format verwendet:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Ja  Nein : 2/3? >=60? : ang.? : Gruppe
 | 
					 Ja  Nein : 2/3? >=15? : ang.? : Gruppe
 | 
				
			||||||
==== ==== : ==== ===== : ===== : =======================================
 | 
					==== ==== : ==== ===== : ===== : =======================================
 | 
				
			||||||
 100   70 : Nein   Ja  :  Nein : Einrichtung von xyz
 | 
					 100   70 : Nein   Ja  :  Nein : Einrichtung von xyz
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -688,6 +692,10 @@ uvbounce.pl
 | 
				
			||||||
  eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
 | 
					  eingeschaltet und die Option -f (siehe unten) nicht benutzt wurde,
 | 
				
			||||||
  werden die uebergebenen Dateinamen ignoriert.
 | 
					  werden die uebergebenen Dateinamen ignoriert.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Die Mails werden aus den uebergebenen Mailboxdateien geloescht
 | 
				
			||||||
 | 
					  und statt dessen in einer neuen Datei mit der Erweiterung ".processed"
 | 
				
			||||||
 | 
					  gespeichert.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Die Vorlage fuer die ausgegebene Liste ist im templates-
 | 
					  Die Vorlage fuer die ausgegebene Liste ist im templates-
 | 
				
			||||||
  Unterverzeichnis konfigurierbar (Datei "bouncelist").
 | 
					  Unterverzeichnis konfigurierbar (Datei "bouncelist").
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -960,7 +968,9 @@ Hier eine Auflistung der immer anzupassenden Optionen
 | 
				
			||||||
votename         Name der Abstimmung
 | 
					votename         Name der Abstimmung
 | 
				
			||||||
group1           Erster Abstimmungsgegenstand
 | 
					group1           Erster Abstimmungsgegenstand
 | 
				
			||||||
group2           Zweiter (und so weiter durchnummerieren)
 | 
					group2           Zweiter (und so weiter durchnummerieren)
 | 
				
			||||||
 | 
					sampleballotfile Datei mit Musterwahlschein aus dem CfV fuer Dateivergleich (diff)
 | 
				
			||||||
votefile         Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
 | 
					votefile         Mailbox mit eingehenden Stimmen (falls POP3 ausgeschaltet)
 | 
				
			||||||
 | 
					mailboxtype      Typ der Mailbox (mbox, maildir)
 | 
				
			||||||
personal         Personalisierte Wahlscheine verwenden? [BOOL]
 | 
					personal         Personalisierte Wahlscheine verwenden? [BOOL]
 | 
				
			||||||
                 (siehe gesonderten Abschnitt weiter oben)
 | 
					                 (siehe gesonderten Abschnitt weiter oben)
 | 
				
			||||||
voteaccount      Mailadresse, unter der abgestimmt werden kann
 | 
					voteaccount      Mailadresse, unter der abgestimmt werden kann
 | 
				
			||||||
| 
						 | 
					@ -980,7 +990,7 @@ onestep          Mails direkt verschicken und Ergebnisse speichern? [BOOL]
 | 
				
			||||||
multigroup       Fuer das Ergebnis auch bei Eingruppenabstimmung des
 | 
					multigroup       Fuer das Ergebnis auch bei Eingruppenabstimmung des
 | 
				
			||||||
                 Mehrgruppenformat waehlen? [BOOL]
 | 
					                 Mehrgruppenformat waehlen? [BOOL]
 | 
				
			||||||
condition1       Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
 | 
					condition1       Bedingungen fuer einen Erfolg der Abstimmung in Perl-Syntax
 | 
				
			||||||
condition2       (normalerweise "$yes>=2*$no" und "$yes>=60"
 | 
					condition2       (normalerweise "$yes>=2*$no" und "$yes>=15"
 | 
				
			||||||
resultfile       Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
 | 
					resultfile       Datei fuer Gesamtergebnis (normalerweise ergebnis.alle)
 | 
				
			||||||
idfile           Datei mit Scheinkennungen (bei "personal=1")
 | 
					idfile           Datei mit Scheinkennungen (bei "personal=1")
 | 
				
			||||||
pop3             POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
 | 
					pop3             POP3 benutzen? [BOOL] (andernfalls Stimmen aus Datei lesen)
 | 
				
			||||||
| 
						 | 
					@ -1018,7 +1028,7 @@ domailfile       Name des Shellscripts zum Versenden der Bestaetigungsmails
 | 
				
			||||||
                 (falls smtp=0, normalerweise tmp/domail)
 | 
					                 (falls smtp=0, normalerweise tmp/domail)
 | 
				
			||||||
mailcmd          Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
 | 
					mailcmd          Aufruf des Mail Transfer Agents (MTA) zum Verschicken der
 | 
				
			||||||
                 Bestaetigungsmails (falls smtp=0), z.B.
 | 
					                 Bestaetigungsmails (falls smtp=0), z.B.
 | 
				
			||||||
                 "sendmail -oi -oem -femail@adresse"
 | 
					                 "sendmail -oi -oem -femail@adresse --"
 | 
				
			||||||
sleepcmd         Weiteres Kommando, welches nach jeder Mail aufgerufen werden
 | 
					sleepcmd         Weiteres Kommando, welches nach jeder Mail aufgerufen werden
 | 
				
			||||||
                 soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
 | 
					                 soll (falls smtp=0). Sinnvoll ist ein "sleep x", wobei x bei
 | 
				
			||||||
                 langsamen Systemen hoeher gewaehlt werden sollte.
 | 
					                 langsamen Systemen hoeher gewaehlt werden sollte.
 | 
				
			||||||
| 
						 | 
					@ -1027,6 +1037,10 @@ clearcmd         Shellbefehl zum Loeschen des Bildschirms (Standard: clear),
 | 
				
			||||||
                 oder Betriebssystem keinen solchen Befehl bereitstellen,
 | 
					                 oder Betriebssystem keinen solchen Befehl bereitstellen,
 | 
				
			||||||
                 sollte ein Kommando verwendet werden, welches eine Trennlinie
 | 
					                 sollte ein Kommando verwendet werden, welches eine Trennlinie
 | 
				
			||||||
                 oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
 | 
					                 oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
 | 
				
			||||||
 | 
					diff             Shellbefehl zum Dateivergleich (diff); es koennen auch 
 | 
				
			||||||
 | 
					                 Parameter angegeben werden, z.B. "diff -u". Das verwendete
 | 
				
			||||||
 | 
					                 Programm muss das Lesen einer Datei von STDIN erlauben
 | 
				
			||||||
 | 
					                 ("-" statt Dateinamen fuer Einlesen von Standardeingabekanal)
 | 
				
			||||||
pager            Shellbefehl zum seitenweisen Darstellen von Mails auf dem
 | 
					pager            Shellbefehl zum seitenweisen Darstellen von Mails auf dem
 | 
				
			||||||
                 Bildschirm (normalerweise "less"). Unter Windows muss "more"
 | 
					                 Bildschirm (normalerweise "less"). Unter Windows muss "more"
 | 
				
			||||||
                 benutzt werden, unter Unix hingegen gibt es moeglicherweise
 | 
					                 benutzt werden, unter Unix hingegen gibt es moeglicherweise
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,7 +18,7 @@ require Exporter;
 | 
				
			||||||
$VERSION = "0.18";
 | 
					$VERSION = "0.18";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usevote version
 | 
					# Usevote version
 | 
				
			||||||
$usevote_version = "UseVoteGer 4.09";
 | 
					$usevote_version = "UseVoteGer 4.13";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub read_config {
 | 
					sub read_config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,6 +27,7 @@ sub read_config {
 | 
				
			||||||
  # Default configuration options (overwritten in usevote.cfg)
 | 
					  # Default configuration options (overwritten in usevote.cfg)
 | 
				
			||||||
  %config = (votefile             => "votes",
 | 
					  %config = (votefile             => "votes",
 | 
				
			||||||
             votename             => "unkonfiguriertes Usevote",
 | 
					             votename             => "unkonfiguriertes Usevote",
 | 
				
			||||||
 | 
					             sampleballotfile     => "ballot.sample",
 | 
				
			||||||
             resultfile           => "ergebnis.alle",
 | 
					             resultfile           => "ergebnis.alle",
 | 
				
			||||||
             rulefile             => "usevote.rul",
 | 
					             rulefile             => "usevote.rul",
 | 
				
			||||||
             badaddrfile          => "mailpatterns.cfg",
 | 
					             badaddrfile          => "mailpatterns.cfg",
 | 
				
			||||||
| 
						 | 
					@ -45,6 +46,7 @@ sub read_config {
 | 
				
			||||||
             voteaccount          => "<> (unkonfiguriertes Usevote)",
 | 
					             voteaccount          => "<> (unkonfiguriertes Usevote)",
 | 
				
			||||||
             mailfrom             => "<> (unkonfiguriertes Usevote)",
 | 
					             mailfrom             => "<> (unkonfiguriertes Usevote)",
 | 
				
			||||||
             envelopefrom         => "<>",
 | 
					             envelopefrom         => "<>",
 | 
				
			||||||
 | 
					             mailboxtype          => "mbox",
 | 
				
			||||||
             mailstart            => "^From ",
 | 
					             mailstart            => "^From ",
 | 
				
			||||||
             archivedir           => "fertig",
 | 
					             archivedir           => "fertig",
 | 
				
			||||||
             tmpdir               => "tmp",
 | 
					             tmpdir               => "tmp",
 | 
				
			||||||
| 
						 | 
					@ -56,6 +58,7 @@ sub read_config {
 | 
				
			||||||
             mailcc               => "",
 | 
					             mailcc               => "",
 | 
				
			||||||
             sleepcmd             => "sleep 1",
 | 
					             sleepcmd             => "sleep 1",
 | 
				
			||||||
             clearcmd             => "clear",
 | 
					             clearcmd             => "clear",
 | 
				
			||||||
 | 
					             diff                 => "diff",
 | 
				
			||||||
             pager                => "less",
 | 
					             pager                => "less",
 | 
				
			||||||
             pop3                 => 0,
 | 
					             pop3                 => 0,
 | 
				
			||||||
             pop3server           => "localhost",
 | 
					             pop3server           => "localhost",
 | 
				
			||||||
| 
						 | 
					@ -89,8 +92,9 @@ sub read_config {
 | 
				
			||||||
             nein_stimme          => '(N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)',
 | 
					             nein_stimme          => '(N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)',
 | 
				
			||||||
             enth_stimme          => '(E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)',
 | 
					             enth_stimme          => '(E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)',
 | 
				
			||||||
             ann_stimme           => 'A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G',
 | 
					             ann_stimme           => 'A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G',
 | 
				
			||||||
 | 
					             bdsg_confirm         => 'JA',
 | 
				
			||||||
             condition1           => '$yes>=2*$no', # twice as many yes as no
 | 
					             condition1           => '$yes>=2*$no', # twice as many yes as no
 | 
				
			||||||
             condition2           => '$yes>=60',    # min 60 yes votes
 | 
					             condition2           => '$yes>=15',    # min 60 yes votes
 | 
				
			||||||
             prop_formula         => '$yes/$no',
 | 
					             prop_formula         => '$yes/$no',
 | 
				
			||||||
             tpl_ack_mail         => 'ack-mail',
 | 
					             tpl_ack_mail         => 'ack-mail',
 | 
				
			||||||
             tpl_bouncelist       => 'bouncelist',
 | 
					             tpl_bouncelist       => 'bouncelist',
 | 
				
			||||||
| 
						 | 
					@ -117,6 +121,7 @@ sub read_config {
 | 
				
			||||||
             tpl_rule_violated    => 'rule-violated',
 | 
					             tpl_rule_violated    => 'rule-violated',
 | 
				
			||||||
             begin_divider        => 'Alles vor dieser Zeile bitte loeschen',
 | 
					             begin_divider        => 'Alles vor dieser Zeile bitte loeschen',
 | 
				
			||||||
             end_divider          => 'Alles nach dieser Zeile bitte loeschen',
 | 
					             end_divider          => 'Alles nach dieser Zeile bitte loeschen',
 | 
				
			||||||
 | 
					             ballotintro          => 'WAHLSCHEIN fuer',
 | 
				
			||||||
             nametext             => 'Dein Realname, falls nicht im FROM-Header:',
 | 
					             nametext             => 'Dein Realname, falls nicht im FROM-Header:',
 | 
				
			||||||
             nametext2            => 'Waehlername:',
 | 
					             nametext2            => 'Waehlername:',
 | 
				
			||||||
             addresstext          => 'Waehleradresse:',
 | 
					             addresstext          => 'Waehleradresse:',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										38
									
								
								UVmenu.pm
									
										
									
									
									
								
							
							
						
						
									
										38
									
								
								UVmenu.pm
									
										
									
									
									
								
							| 
						 | 
					@ -17,7 +17,8 @@ $VERSION = "0.4";
 | 
				
			||||||
##############################################################################
 | 
					##############################################################################
 | 
				
			||||||
# Menu for interaction with the votetaker                                    #
 | 
					# Menu for interaction with the votetaker                                    #
 | 
				
			||||||
# Parameters: votes list and header (references to arrays)                   #
 | 
					# 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 newly set fields (reference to array)                  #
 | 
				
			||||||
#             List of errors to correct (Array-Ref)                          #
 | 
					#             List of errors to correct (Array-Ref)                          #
 | 
				
			||||||
# Return Values: 'w': proceed                                                #
 | 
					# Return Values: 'w': proceed                                                #
 | 
				
			||||||
| 
						 | 
					@ -25,7 +26,7 @@ $VERSION = "0.4";
 | 
				
			||||||
##############################################################################
 | 
					##############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub menu {
 | 
					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 $input = "";
 | 
				
			||||||
  my $voter_addr = $$addr || '';
 | 
					  my $voter_addr = $$addr || '';
 | 
				
			||||||
  my $voter_name = $$name || '';
 | 
					  my $voter_name = $$name || '';
 | 
				
			||||||
| 
						 | 
					@ -59,6 +60,7 @@ sub menu {
 | 
				
			||||||
  while (1) {
 | 
					  while (1) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    system($config{clearcmd});
 | 
					    system($config{clearcmd});
 | 
				
			||||||
 | 
					    print "-> $config{votename} <-\n";
 | 
				
			||||||
    print UVmessage::get("MENU_PROBLEMS") . "\n";
 | 
					    print UVmessage::get("MENU_PROBLEMS") . "\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach my $error (keys %errors) {
 | 
					    foreach my $error (keys %errors) {
 | 
				
			||||||
| 
						 | 
					@ -68,6 +70,12 @@ sub menu {
 | 
				
			||||||
    my $menucaption = UVmessage::get("MENU_CAPTION");
 | 
					    my $menucaption = UVmessage::get("MENU_CAPTION");
 | 
				
			||||||
    print "\n\n$menucaption\n";
 | 
					    print "\n\n$menucaption\n";
 | 
				
			||||||
    print "=" x length($menucaption), "\n\n";
 | 
					    print "=" x length($menucaption), "\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # don't print this option if called from uvcfv.pl
 | 
				
			||||||
 | 
					    unless ($mailonly) {
 | 
				
			||||||
 | 
					      print "(0) ", UVmessage::get("MENU_DIFF_BALLOT"), "\n";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
 | 
					    print "(1) ", UVmessage::get("MENU_SHOW_MAIL"), "\n\n",
 | 
				
			||||||
          UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
 | 
					          UVmessage::get("MENU_CHANGE_PROPERTIES"), "\n",
 | 
				
			||||||
          "(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
 | 
					          "(2) ", UVmessage::get("MENU_ADDRESS"), " [$voter_addr]\n";
 | 
				
			||||||
| 
						 | 
					@ -79,6 +87,7 @@ sub menu {
 | 
				
			||||||
      print "(5) ", UVmessage::get("MENU_BALLOT_ID"), " [$$ballot_id]\n"
 | 
					      print "(5) ", UVmessage::get("MENU_BALLOT_ID"), " [$$ballot_id]\n"
 | 
				
			||||||
        if ($config{personal});
 | 
					        if ($config{personal});
 | 
				
			||||||
      print "(6) ", UVmessage::get("MENU_BDSG"), "\n" if ($config{bdsg});
 | 
					      print "(6) ", UVmessage::get("MENU_BDSG"), "\n" if ($config{bdsg});
 | 
				
			||||||
 | 
					      print "(7) ", UVmessage::get("MENU_VOTING"), " [", $$voting, "]\n";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print "\n",
 | 
					    print "\n",
 | 
				
			||||||
| 
						 | 
					@ -93,7 +102,14 @@ sub menu {
 | 
				
			||||||
    # only accept 1, 2, i and w if called from uvcfv.pl
 | 
					    # only accept 1, 2, i and w if called from uvcfv.pl
 | 
				
			||||||
    next if ($mailonly && $input !~ /^[12iw]$/i);
 | 
					    next if ($mailonly && $input !~ /^[12iw]$/i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($input eq '1') {
 | 
					    if ($input eq '0') {
 | 
				
			||||||
 | 
					      # ignore SIGPIPE (Bug in more and less)
 | 
				
			||||||
 | 
					      $SIG{PIPE} = 'IGNORE';
 | 
				
			||||||
 | 
					      open (DIFF, "|$config{diff} - $config{sampleballotfile} | $config{pager}");
 | 
				
			||||||
 | 
					      print DIFF $$body, "\n";
 | 
				
			||||||
 | 
					      close (DIFF);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } elsif ($input eq '1') {
 | 
				
			||||||
      system($config{clearcmd});
 | 
					      system($config{clearcmd});
 | 
				
			||||||
      # ignore SIGPIPE (Bug in more and less)
 | 
					      # ignore SIGPIPE (Bug in more and less)
 | 
				
			||||||
      $SIG{PIPE} = 'IGNORE';
 | 
					      $SIG{PIPE} = 'IGNORE';
 | 
				
			||||||
| 
						 | 
					@ -269,6 +285,22 @@ sub menu {
 | 
				
			||||||
        $errors{InvalidBDSG} = UVmessage::get("MENU_INVALIDBDSG");
 | 
					        $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) {
 | 
					    } elsif ($input =~ /^i$/i) {
 | 
				
			||||||
      my $ignore = UVmessage::get("MENU_IGNORE_STRING");
 | 
					      my $ignore = UVmessage::get("MENU_IGNORE_STRING");
 | 
				
			||||||
      # Set columns for Text::Wrap
 | 
					      # Set columns for Text::Wrap
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,7 @@ use UVmessage;
 | 
				
			||||||
use MIME::QuotedPrint;
 | 
					use MIME::QuotedPrint;
 | 
				
			||||||
use MIME::Base64;
 | 
					use MIME::Base64;
 | 
				
			||||||
use MIME::Parser;
 | 
					use MIME::Parser;
 | 
				
			||||||
 | 
					use Mail::Box::Manager;
 | 
				
			||||||
use POSIX qw(strftime);
 | 
					use POSIX qw(strftime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use vars qw($VERSION);
 | 
					use vars qw($VERSION);
 | 
				
			||||||
| 
						 | 
					@ -118,37 +119,65 @@ sub process {
 | 
				
			||||||
      close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n";
 | 
					      close (UIDLCACHE) or print STDERR UVmessage::get("READMAIL_UIDL_CLOSE") . "\n";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # make archive of all mails
 | 
					 | 
				
			||||||
    my $fileproblem = 0;
 | 
					 | 
				
			||||||
    open (VOTES, ">$filename") or $fileproblem = 1;
 | 
					 | 
				
			||||||
    if ($fileproblem) {
 | 
					 | 
				
			||||||
      print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM",
 | 
					 | 
				
			||||||
                   (FILE => $filename)) . "\n";
 | 
					 | 
				
			||||||
    } else {
 | 
					 | 
				
			||||||
      print VOTES join ("\n", @mails);
 | 
					 | 
				
			||||||
      close (VOTES)
 | 
					 | 
				
			||||||
        or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE",
 | 
					 | 
				
			||||||
                        (FILE => $filename)) . "\n";
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $pop->quit();
 | 
					    $pop->quit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Mailbox / Maildir
 | 
				
			||||||
  } else {
 | 
					  } else {
 | 
				
			||||||
    # open mail file
 | 
					 | 
				
			||||||
    open(VOTES, "<$filename")
 | 
					 | 
				
			||||||
        or die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $filename)) . "\n\n";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # read all mails
 | 
					    my $readfilename;
 | 
				
			||||||
    my $i = 0;
 | 
					
 | 
				
			||||||
    while (<VOTES>) {
 | 
					    if ($caller==0) {
 | 
				
			||||||
      if (/$config{mailstart}/) {
 | 
					      # called from uvvote.pl: use configured mailbox file
 | 
				
			||||||
        $i++;
 | 
					      $readfilename = $config{votefile};
 | 
				
			||||||
      }
 | 
					    } else {
 | 
				
			||||||
      $mails[$i] = ($mails[$i] || "") . $_;
 | 
					      # else use filename provided in function call
 | 
				
			||||||
 | 
					      $readfilename = $filename;
 | 
				
			||||||
 | 
					      # and create backup archive filename
 | 
				
			||||||
 | 
					      $filename .= '.processed';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # close mail file
 | 
					    my $mgr = Mail::Box::Manager->new;
 | 
				
			||||||
    close(VOTES);
 | 
					    my $folder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    eval{
 | 
				
			||||||
 | 
					      $folder = $mgr->open( folder => $readfilename,
 | 
				
			||||||
 | 
					                create => 0,
 | 
				
			||||||
 | 
					                access => 'rw',
 | 
				
			||||||
 | 
					                type   => $config{mailboxtype},
 | 
				
			||||||
 | 
					                expand => 'LAZY',
 | 
				
			||||||
 | 
					                remove_when_empty => 0,
 | 
				
			||||||
 | 
					              );
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $readfilename)) . "\n\n" if $@;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Iterate over the messages.
 | 
				
			||||||
 | 
					    foreach (@$folder) {
 | 
				
			||||||
 | 
					      my $mail = $_->string;
 | 
				
			||||||
 | 
					      $_->delete();
 | 
				
			||||||
 | 
					      my $fromline = 'From ';
 | 
				
			||||||
 | 
					      if ($mail =~ /From: .*?<(.+?)>/) {
 | 
				
			||||||
 | 
					        $fromline .= $1;
 | 
				
			||||||
 | 
					      } elsif ($mail =~ /From:\s+?(\S+?\@\S+?)\s/) {
 | 
				
			||||||
 | 
					        $fromline .= $1;
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        $fromline .= 'foo@bar.invalid';
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      $fromline .= ' ' . localtime($_->timestamp()) . "\n";
 | 
				
			||||||
 | 
					      push (@mails, $fromline . $mail);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # make archive of all mails
 | 
				
			||||||
 | 
					  my $fileproblem = 0;
 | 
				
			||||||
 | 
					  open (VOTES, ">$filename") or $fileproblem = 1;
 | 
				
			||||||
 | 
					  if ($fileproblem) {
 | 
				
			||||||
 | 
					    print STDERR UVmessage::get("READMAIL_ARCHIVE_PROBLEM",
 | 
				
			||||||
 | 
					                 (FILE => $filename)) . "\n";
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    print VOTES join ("\n", @mails);
 | 
				
			||||||
 | 
					    close (VOTES)
 | 
				
			||||||
 | 
					      or print STDERR UVmessage::get("READMAIL_ARCHIVE_CLOSE",
 | 
				
			||||||
 | 
					                      (FILE => $filename)) . "\n";
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  foreach my $mail (@mails) {
 | 
					  foreach my $mail (@mails) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								bdsgtext.cfg
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								bdsgtext.cfg
									
										
									
									
									
								
							| 
						 | 
					@ -3,11 +3,16 @@
 | 
				
			||||||
# wieder abgeprueft wird. Alle Zeilen, die mit dem Kommentarzeichen #
 | 
					# wieder abgeprueft wird. Alle Zeilen, die mit dem Kommentarzeichen #
 | 
				
			||||||
# anfangen, werden ignoriert.
 | 
					# 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
 | 
					des Ergebnisses ist Deine Einwilligung zur Speicherung, Auswertung und
 | 
				
			||||||
Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in
 | 
					Veroeffentlichung deiner Stimmdaten (Name und E-Mail-Adresse in
 | 
				
			||||||
Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens
 | 
					Verbindung mit dem Stimmverhalten) im Rahmen dieses Verfahrens
 | 
				
			||||||
erforderlich. Wenn du im Feld unterhalb dieses Absatzes "JA"
 | 
					erforderlich. Wenn du im Feld unterhalb dieses Absatzes "JA"
 | 
				
			||||||
eintraegst, erklaerst du dich damit einverstanden. In allen anderen
 | 
					eintraegst, erklaerst du dich damit einverstanden. In allen anderen
 | 
				
			||||||
Faellen wird der Wahlschein mit Ruecksicht auf das deutsche
 | 
					Faellen wird der Wahlschein mit Ruecksicht auf die DSGVO verworfen
 | 
				
			||||||
Bundesdatenschutzgesetz verworfen und nicht gewertet.
 | 
					und nicht gewertet. Die Einwilligung kann jederzeit mit Wirkung
 | 
				
			||||||
 | 
					fuer die Zukunft widerrufen werden. Dafuer genuegt eine E-Mail an
 | 
				
			||||||
 | 
					den Votetaker. Die Wertung und Veroeffentlichung der Stimmdaten
 | 
				
			||||||
 | 
					kann auch durch die erneute Einreichung eines Wahlscheins mit
 | 
				
			||||||
 | 
					"ANNULLIERUNG" (statt "JA" oder "NEIN") als Stimmabgabe beim
 | 
				
			||||||
 | 
					ersten Abstimmungspunkt verhindert werden.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,6 @@ hostmaster@
 | 
				
			||||||
install@
 | 
					install@
 | 
				
			||||||
mailer.*@
 | 
					mailer.*@
 | 
				
			||||||
maint.*@
 | 
					maint.*@
 | 
				
			||||||
news@
 | 
					 | 
				
			||||||
newsmaster@
 | 
					newsmaster@
 | 
				
			||||||
nobody@
 | 
					nobody@
 | 
				
			||||||
operator@
 | 
					operator@
 | 
				
			||||||
| 
						 | 
					@ -38,5 +37,4 @@ sysop@
 | 
				
			||||||
system@
 | 
					system@
 | 
				
			||||||
test@
 | 
					test@
 | 
				
			||||||
tutor@
 | 
					tutor@
 | 
				
			||||||
usenet@
 | 
					 | 
				
			||||||
uucp@ 
 | 
					uucp@ 
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,8 @@ MENU_INVALIDBDSG = Datenschutzhinweis fehlerhaft oder nicht bestaetigt.
 | 
				
			||||||
MENU_DUPLICATEVOTE = Doppelte Stimmabgabe gefunden.
 | 
					MENU_DUPLICATEVOTE = Doppelte Stimmabgabe gefunden.
 | 
				
			||||||
MENU_NOVOTE = Keine Stimmabgabe gefunden.
 | 
					MENU_NOVOTE = Keine Stimmabgabe gefunden.
 | 
				
			||||||
MENU_INVALIDVOTE = Ungueltige Stimmabgabe.
 | 
					MENU_INVALIDVOTE = Ungueltige Stimmabgabe.
 | 
				
			||||||
 | 
					MENU_NOVOTING = Bezeichnung der Abstimmung nicht gefunden.
 | 
				
			||||||
 | 
					MENU_WRONGVOTING = Wahlschein fuer andere Abstimmung.
 | 
				
			||||||
MENU_NOBALLOTID = Keine Scheinkennung gefunden.
 | 
					MENU_NOBALLOTID = Keine Scheinkennung gefunden.
 | 
				
			||||||
MENU_WRONGBALLOTID = Scheinkennung falsch.
 | 
					MENU_WRONGBALLOTID = Scheinkennung falsch.
 | 
				
			||||||
MENU_ADDRESSNOTREGISTERED = Adresse nicht registriert.
 | 
					MENU_ADDRESSNOTREGISTERED = Adresse nicht registriert.
 | 
				
			||||||
| 
						 | 
					@ -40,6 +42,7 @@ MENU_UNRECOGNIZED_LIST = Stimme
 | 
				
			||||||
MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
 | 
					MENU_VIOLATEDRULE = Regel ${RULE} verletzt.
 | 
				
			||||||
MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
 | 
					MENU_PROBLEMS = Die folgenden Probleme muessen beseitigt werden:
 | 
				
			||||||
MENU_CAPTION = Auswahlmenue:
 | 
					MENU_CAPTION = Auswahlmenue:
 | 
				
			||||||
 | 
					MENU_DIFF_BALLOT = Wahlschein mit Original vergleichen (diff)
 | 
				
			||||||
MENU_SHOW_MAIL = Anzeigen der Wahlmail
 | 
					MENU_SHOW_MAIL = Anzeigen der Wahlmail
 | 
				
			||||||
MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 | 
					MENU_CHANGE_PROPERTIES = Bestaetigen oder Aendern von Wahlschein-Eigenschaften:
 | 
				
			||||||
MENU_ADDRESS = Mailadresse
 | 
					MENU_ADDRESS = Mailadresse
 | 
				
			||||||
| 
						 | 
					@ -67,6 +70,9 @@ MENU_BALLOT_ID = Scheinkennung
 | 
				
			||||||
MENU_BDSG = Datenschutzklausel
 | 
					MENU_BDSG = Datenschutzklausel
 | 
				
			||||||
MENU_BDSG_ACCEPTED = Datenschutzklausel wurde akzeptiert
 | 
					MENU_BDSG_ACCEPTED = Datenschutzklausel wurde akzeptiert
 | 
				
			||||||
MENU_BDSG_DECLINED = Datenschutzklausel nicht akzeptiert bzw. Text veraendert
 | 
					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 = 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_WARNING = Die Stimme wird nicht aufgezeichnet, und es wird keine Bestaetigung verschickt. ${MENU_IGNORE_STRING} eingeben, wenn Du sicher bist: 
 | 
				
			||||||
MENU_IGNORE_STRING = JA
 | 
					MENU_IGNORE_STRING = JA
 | 
				
			||||||
| 
						 | 
					@ -162,7 +168,7 @@ COUNT_DELETED = ${NUM} Stimme(n) geloescht.
 | 
				
			||||||
VOTE_RENAMING_MAILBOX = Benenne Stimmdatei um...
 | 
					VOTE_RENAMING_MAILBOX = Benenne Stimmdatei um...
 | 
				
			||||||
VOTE_WRITE_RESULTS = Ergebnisdatei ${FILE} nicht schreibbar!
 | 
					VOTE_WRITE_RESULTS = Ergebnisdatei ${FILE} nicht schreibbar!
 | 
				
			||||||
VOTE_CLOSE_RESULTS = Ergebnisdatei ${FILE} konnte nicht erfolgreich geschlossen werden!
 | 
					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_NUM_VOTES = ${COUNT} Stimmen bearbeitet.
 | 
				
			||||||
VOTE_NOT_SAVED = ${COUNT} Stimmen bearbeitet, aber nicht gespeichert.
 | 
					VOTE_NOT_SAVED = ${COUNT} Stimmen bearbeitet, aber nicht gespeichert.
 | 
				
			||||||
VOTE_FIRSTRUN = 'uvvote clean' aufrufen, um Ergebnisse zu speichern und Bestaetigungen zu verschicken.
 | 
					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_INVALID_VOTE = Ungueltige Stimmabgabe
 | 
				
			||||||
VOTE_VIOLATED_RULE = Regel ${RULE} verletzt
 | 
					VOTE_VIOLATED_RULE = Regel ${RULE} verletzt
 | 
				
			||||||
VOTE_NO_VOTES = Keine Stimmen abgegeben
 | 
					VOTE_NO_VOTES = Keine Stimmen abgegeben
 | 
				
			||||||
 | 
					VOTE_WRONG_VOTING = Wahlschein gehoert nicht zu dieser Abstimmung
 | 
				
			||||||
VOTE_INVALID_ACCOUNT = Ungueltiger Account
 | 
					VOTE_INVALID_ACCOUNT = Ungueltiger Account
 | 
				
			||||||
VOTE_INVALID_ADDRESS = Ungueltige Adresse
 | 
					VOTE_INVALID_ADDRESS = Ungueltige Adresse
 | 
				
			||||||
VOTE_INVALID_REALNAME = Ungueltiger Realname
 | 
					VOTE_INVALID_REALNAME = Ungueltiger Realname
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,15 +5,22 @@ pos             := value pos | fill-right 2
 | 
				
			||||||
group-first 	:= value group | first-words 50 
 | 
					group-first 	:= value group | first-words 50 
 | 
				
			||||||
group-more  	:= value group | drop-words 50 | create-lines 50
 | 
					group-more  	:= value group | drop-words 50 | create-lines 50
 | 
				
			||||||
vote            := value vote  | fill-both 10
 | 
					vote            := value vote  | fill-both 10
 | 
				
			||||||
votetaker       := value mailfrom | fill-left 65
 | 
					votetaker       := value mailfrom
 | 
				
			||||||
 | 
					voteaccount-line := value voteaccount | fill-both 70
 | 
				
			||||||
 | 
					
 | 
				
			||||||
== TEMPLATE =================================================================
 | 
					== TEMPLATE =================================================================
 | 
				
			||||||
Diese automatische Nachricht wurde dir nach Zaehlung deiner Stimme
 | 
					Diese automatische Nachricht wurde dir nach Zaehlung deiner Stimme
 | 
				
			||||||
zugesandt. Wenn alles stimmt, gibt es keinen Anlass fuer eine Reaktion.
 | 
					zugesandt. Wenn alles stimmt, gibt es keinen Anlass fuer eine Reaktion.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Wenn deine Stimme falsch registriert wurde, stimme bitte erneut ab,
 | 
					Wenn deine Stimme falsch registriert wurde, stimme bitte erneut ab,
 | 
				
			||||||
indem du diese Mail komplett zitierst und die falschen Wertungen
 | 
					indem du diese Mail komplett zitierst und die falschen Wertungen
 | 
				
			||||||
korrigierst (zwischen die eckigen Klammern schreiben). Dabei darf
 | 
					korrigierst (zwischen die eckigen Klammern schreiben). Dabei darf
 | 
				
			||||||
keinesfalls die laufende Nummer am Zeilenanfang entfernt werden.
 | 
					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
 | 
					Diese Wahl ist oeffentlich, und die Adressen aller Waehlerinnen und
 | 
				
			||||||
Waehler werden am Ende bekanntgegeben. Wenn du deine Adresse & Stimme
 | 
					Waehler werden am Ende bekanntgegeben. Wenn du deine Adresse & Stimme
 | 
				
			||||||
| 
						 | 
					@ -29,8 +36,8 @@ Wahlscheinkennung gueltig!
 | 
				
			||||||
[$name-line]
 | 
					[$name-line]
 | 
				
			||||||
  (Real-Namen sind fuer diese Abstimmung vorgeschrieben. Wenn hier
 | 
					  (Real-Namen sind fuer diese Abstimmung vorgeschrieben. Wenn hier
 | 
				
			||||||
   nicht Dein wirklicher Name steht, dann korrigiere die Zeile
 | 
					   nicht Dein wirklicher Name steht, dann korrigiere die Zeile
 | 
				
			||||||
   bitte und sende die Nachricht zurueck; sonst kann die Stimme
 | 
					   bitte und sende die Nachricht erneut an die Abstimmadresse,
 | 
				
			||||||
   spaeter als ungueltig gewertet werden.)
 | 
					   sonst kann die Stimme spaeter als ungueltig gewertet werden.)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Deine Stimmabgabe wurde wie folgt erkannt:
 | 
					Deine Stimmabgabe wurde wie folgt erkannt:
 | 
				
			||||||
| 
						 | 
					@ -39,8 +46,7 @@ Deine Stimmabgabe wurde wie folgt erkannt:
 | 
				
			||||||
[@group-more|                        [$line]\n]|\n]
 | 
					[@group-more|                        [$line]\n]|\n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Danke fuer deine Stimmabgabe.  Eine Kopie des CfV kannst du von mir er-
 | 
					Danke fuer deine Stimmabgabe.
 | 
				
			||||||
halten (bitte Namen der Abstimmung angeben, falls mehrere laufen).
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[$votetaker]
 | 
					[$votetaker]
 | 
				
			||||||
\[mit [$usevote_version]\]
 | 
					\[mit [$usevote_version]\]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@ bdsgtext-more   := value bdsgtext | drop-words 50 | create-lines 50
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 | 
					=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WAHLSCHEIN fuer [$votename-first]
 | 
					[$ballotintro] [$votename-first]
 | 
				
			||||||
[@votename-more|                [$line]\n]
 | 
					[@votename-more|                [$line]\n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,7 +29,7 @@ votetaker       := value mailfrom | fill-left 65
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 | 
					=-=-=-=-=-=-=-=- Alles vor dieser Zeile bitte loeschen =-=-=-=-=-=-=-=-
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WAHLSCHEIN fuer [$votename-first]
 | 
					[$ballotintro] [$votename-first]
 | 
				
			||||||
[@votename-more|                [$line]\n]
 | 
					[@votename-more|                [$line]\n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,9 +11,10 @@ group-more            := value group | drop-words 40 | create-lines 40
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ergebnisse [$votename-first]
 | 
					Ergebnisse [$votename-first]
 | 
				
			||||||
[@votename-more|           [$line]\n]
 | 
					[@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]
 | 
					[@count|[$yes] [$no] : [?cond1| Ja |Nein] [?cond2| Ja |Nein]  : [?result| Ja |Nein]  : [$group-first]
 | 
				
			||||||
[@group-more|          :            :       : [$line]\n]\n]
 | 
					[@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
 | 
					Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 | 
				
			||||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
					E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
				
			||||||
siehe Signatur) einzulegen.
 | 
					siehe Signatur) einzulegen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
					Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
				
			||||||
werden, wird die Moderation von de.admin.news.announce das
 | 
					werden, wird die Moderation von de.admin.news.announce das
 | 
				
			||||||
Ergebnis danach umsetzen.
 | 
					Ergebnis danach umsetzen.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,8 @@ group-more            := value group | drop-words 40 | create-lines 40
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ergebnisse [$votename-first]
 | 
					Ergebnisse [$votename-first]
 | 
				
			||||||
[@votename-more|           [$line]\n]
 | 
					[@votename-more|           [$line]\n]
 | 
				
			||||||
([$numvalid] gueltige Stimmen)
 | 
					
 | 
				
			||||||
 | 
					Es wurden [$numvalid] gueltige Stimmen abgegeben.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 Ja  Nein : J>=N? Ja/Nein : ang.? : Gruppe
 | 
					 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
 | 
					Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 | 
				
			||||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
					E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
				
			||||||
siehe Signatur) einzulegen.
 | 
					siehe Signatur) einzulegen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
					Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
				
			||||||
werden, wird die Moderation von de.admin.news.announce das
 | 
					werden, wird die Moderation von de.admin.news.announce das
 | 
				
			||||||
Ergebnis danach umsetzen.
 | 
					Ergebnis danach umsetzen.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,19 +8,21 @@ votename-text-more    := value votename | drop-words 30 | create-lines 72
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Ergebnisse [$votename-first]
 | 
					Ergebnisse [$votename-first]
 | 
				
			||||||
[@votename-more|           [$line]\n]
 | 
					[@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].
 | 
					Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] Enthaltungen].
 | 
				
			||||||
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
 | 
					[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
 | 
					Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
 | 
				
			||||||
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].
 | 
					[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 | 
					Gegen dieses Ergebnis kann innerhalb einer Woche nach seiner
 | 
				
			||||||
Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 | 
					Veroeffentlichung Einspruch erhoben werden. Der Einspruch ist per
 | 
				
			||||||
E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
					E-Mail bei der Moderation von de.admin.news.announce (Adressen
 | 
				
			||||||
siehe Signatur) einzulegen.
 | 
					siehe Signatur) einzulegen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
					Wenn es keine ernsthaften Einsprueche gibt oder diese abgelehnt
 | 
				
			||||||
werden, wird die Moderation von de.admin.news.announce das
 | 
					werden, wird die Moderation von de.admin.news.announce das
 | 
				
			||||||
Ergebnis danach umsetzen.
 | 
					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
 | 
					# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
 | 
				
			||||||
# werden.
 | 
					# werden.
 | 
				
			||||||
condition1 = $yes>=2*$no
 | 
					condition1 = $yes>=2*$no
 | 
				
			||||||
condition2 = $yes>=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
 | 
					# Ergebnisdatei, in der alle Einzelergebniss zusammengeschrieben werden
 | 
				
			||||||
# (wird bei jedem Programmlauf neu erstellt!)
 | 
					# (wird bei jedem Programmlauf neu erstellt!)
 | 
				
			||||||
| 
						 | 
					@ -90,6 +94,9 @@ pop3 = 1
 | 
				
			||||||
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
 | 
					# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
 | 
				
			||||||
votefile = votes
 | 
					votefile = votes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Typ der Mailbox (mbox, maildir)
 | 
				
			||||||
 | 
					mailboxtype = mbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
 | 
					# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
 | 
				
			||||||
# Server, Port, Benutzername, Passwort
 | 
					# Server, Port, Benutzername, Passwort
 | 
				
			||||||
pop3server = 127.0.0.1
 | 
					pop3server = 127.0.0.1
 | 
				
			||||||
| 
						 | 
					@ -183,7 +190,7 @@ domailfile = tmp/domail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
 | 
					# MTA-Aufruf zum Verschicken der Bestaetigungsmails
 | 
				
			||||||
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
 | 
					# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
 | 
				
			||||||
#mailcmd = sendmail -oi -oem -femail@adresse
 | 
					#mailcmd = sendmail -oi -oem -femail@adresse --
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
 | 
					# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
 | 
				
			||||||
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
 | 
					# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
 | 
				
			||||||
| 
						 | 
					@ -205,6 +212,9 @@ clearcmd = clear
 | 
				
			||||||
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
 | 
					# Windows-Verzeichnis kopieren (URL siehe README-Datei)
 | 
				
			||||||
pager = less
 | 
					pager = less
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Shellbefehl fuer Dateivergleich
 | 
				
			||||||
 | 
					diff = diff -u
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
 | 
					# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
 | 
				
			||||||
messagefile = messages.cfg
 | 
					messagefile = messages.cfg
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -227,6 +237,10 @@ mailstart = "^From "
 | 
				
			||||||
begin_divider = Alles vor dieser Zeile bitte loeschen
 | 
					begin_divider = Alles vor dieser Zeile bitte loeschen
 | 
				
			||||||
end_divider = Alles nach dieser Zeile bitte loeschen
 | 
					end_divider = Alles nach dieser Zeile bitte loeschen
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ueberschrift fuer den Wahlschein
 | 
				
			||||||
 | 
					# Achtung, muss im Wahlschein genauso stehen!
 | 
				
			||||||
 | 
					ballotintro = WAHLSCHEIN fuer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
 | 
					# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
 | 
				
			||||||
# Wahlschein genauso stehen!
 | 
					# Wahlschein genauso stehen!
 | 
				
			||||||
nametext = Dein Realname, falls nicht im FROM-Header:
 | 
					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
 | 
					# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
 | 
				
			||||||
ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
 | 
					ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# RegExp fuer Bestaetigung der Datenschutzklause (case-insensitive)
 | 
				
			||||||
 | 
					# Standardmaessig wird nur JA erkannt
 | 
				
			||||||
 | 
					bdsg_confirm = JA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Template files (these files are in the template directory defined above)
 | 
					# Template files (these files are in the template directory defined above)
 | 
				
			||||||
tpl_mailheader = "mailheader"            # generally used mail header
 | 
					tpl_mailheader = "mailheader"            # generally used mail header
 | 
				
			||||||
tpl_bouncelist = "bouncelist"            # used by uvbounce.pl
 | 
					tpl_bouncelist = "bouncelist"            # used by uvbounce.pl
 | 
				
			||||||
| 
						 | 
					@ -290,4 +308,5 @@ tpl_invalid_name = "invalid-name"        # used by uvvote.pl
 | 
				
			||||||
tpl_multiple_votes = "multiple-votes"    # used by uvvote.pl
 | 
					tpl_multiple_votes = "multiple-votes"    # used by uvvote.pl
 | 
				
			||||||
tpl_no_ballot = "no-ballot"              # used by uvvote.pl
 | 
					tpl_no_ballot = "no-ballot"              # used by uvvote.pl
 | 
				
			||||||
tpl_no_votes = "no-votes"                # 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)
 | 
					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
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
# UseVoteGer 4.09 Wahlscheingenerierung
 | 
					# UseVoteGer 4.13 Wahlscheingenerierung
 | 
				
			||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
 | 
					# (c) 2001-2022 Marc Langer <uv@marclanger.de>
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
# This script package is free software; you can redistribute it and/or
 | 
					# This script package is free software; you can redistribute it and/or
 | 
				
			||||||
# modify it under the terms of the GNU Public License as published by the
 | 
					# modify it under the terms of the GNU Public License as published by the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								uvbounce.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										4
									
								
								uvbounce.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
#!/usr/bin/perl -w
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
# UseVoteGer 4.09 Bounce-Verarbeitung
 | 
					# UseVoteGer 4.13 Bounce-Verarbeitung
 | 
				
			||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
 | 
					# (c) 2001-2022 Marc Langer <uv@marclanger.de>
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
# This script package is free software; you can redistribute it and/or
 | 
					# This script package is free software; you can redistribute it and/or
 | 
				
			||||||
# modify it under the terms of the GNU Public License as published by the
 | 
					# modify it under the terms of the GNU Public License as published by the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								uvcfv.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										8
									
								
								uvcfv.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
#!/usr/bin/perl -w
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
# UseVoteGer 4.09 Personalisierte Wahlscheine
 | 
					# UseVoteGer 4.13 Personalisierte Wahlscheine
 | 
				
			||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
 | 
					# (c) 2001-2022 Marc Langer <uv@marclanger.de>
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
# This script package is free software; you can redistribute it and/or
 | 
					# This script package is free software; you can redistribute it and/or
 | 
				
			||||||
# modify it under the terms of the GNU Public License as published by the
 | 
					# modify it under the terms of the GNU Public License as published by the
 | 
				
			||||||
| 
						 | 
					@ -152,9 +152,9 @@ sub process_request {
 | 
				
			||||||
    # check for suspicious addresses
 | 
					    # check for suspicious addresses
 | 
				
			||||||
    foreach my $element (@bad_addr) {
 | 
					    foreach my $element (@bad_addr) {
 | 
				
			||||||
      if ($voter_addr =~ /^$element/) {
 | 
					      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 @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
 | 
					        # "Ignore": don't deliver a ballot
 | 
				
			||||||
        return 0 if ($res eq 'i');
 | 
					        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
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
# UseVoteGer 4.09 Stimmauswertung
 | 
					# UseVoteGer 4.13 Stimmauswertung
 | 
				
			||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
 | 
					# (c) 2001-2022 Marc Langer <uv@marclanger.de>
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
# This script package is free software; you can redistribute it and/or
 | 
					# This script package is free software; you can redistribute it and/or
 | 
				
			||||||
# modify it under the terms of the GNU Public License as published by the
 | 
					# modify it under the terms of the GNU Public License as published by the
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										40
									
								
								uvvote.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										40
									
								
								uvvote.pl
									
										
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
					@ -1,8 +1,8 @@
 | 
				
			||||||
#!/usr/bin/perl -w
 | 
					#!/usr/bin/perl -w
 | 
				
			||||||
 | 
					
 | 
				
			||||||
###############################################################################
 | 
					###############################################################################
 | 
				
			||||||
# UseVoteGer 4.09 Wahldurchfuehrung
 | 
					# UseVoteGer 4.13 Wahldurchfuehrung
 | 
				
			||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
 | 
					# (c) 2001-2022 Marc Langer <uv@marclanger.de>
 | 
				
			||||||
# 
 | 
					# 
 | 
				
			||||||
# This script package is free software; you can redistribute it and/or
 | 
					# This script package is free software; you can redistribute it and/or
 | 
				
			||||||
# modify it under the terms of the GNU Public License as published by the
 | 
					# modify it under the terms of the GNU Public License as published by the
 | 
				
			||||||
| 
						 | 
					@ -123,7 +123,7 @@ if ($clean) {
 | 
				
			||||||
  my $ext = time;
 | 
					  my $ext = time;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  opendir (TMP, $config{tmpdir});
 | 
					  opendir (TMP, $config{tmpdir});
 | 
				
			||||||
  my @tmpfiles = readdir (DIR);
 | 
					  my @tmpfiles = readdir (TMP);
 | 
				
			||||||
  closedir (TMP);
 | 
					  closedir (TMP);
 | 
				
			||||||
  opendir (FERTIG, $config{archivedir});
 | 
					  opendir (FERTIG, $config{archivedir});
 | 
				
			||||||
  my @fertigfiles = readdir (FERTIG);
 | 
					  my @fertigfiles = readdir (FERTIG);
 | 
				
			||||||
| 
						 | 
					@ -135,16 +135,6 @@ if ($clean) {
 | 
				
			||||||
  my $thisresult = "ergebnis-" . $ext;
 | 
					  my $thisresult = "ergebnis-" . $ext;
 | 
				
			||||||
  my $thisvotes = "stimmen-" . $ext;
 | 
					  my $thisvotes = "stimmen-" . $ext;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  # POP3 not activated: rename votes file
 | 
					 | 
				
			||||||
  unless ($config{pop3}) {
 | 
					 | 
				
			||||||
    print UVmessage::get("VOTE_RENAMING_MAILBOX"), "\n";
 | 
					 | 
				
			||||||
    rename ($config{votefile}, "$config{tmpdir}/$thisvotes")
 | 
					 | 
				
			||||||
       or die UVmessage::get("ERR_RENAME_MAILFILE") . "$!\n\n";
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
    #  wait, so that current mail deliveries can finalize
 | 
					 | 
				
			||||||
    sleep 2;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # open results file
 | 
					  # open results file
 | 
				
			||||||
  open (RESULT, ">>$config{tmpdir}/$thisresult")
 | 
					  open (RESULT, ">>$config{tmpdir}/$thisresult")
 | 
				
			||||||
     or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
 | 
					     or die UVmessage::get("VOTE_WRITE_RESULTS", (FILE=>$thisresult)) . "\n\n";
 | 
				
			||||||
| 
						 | 
					@ -158,7 +148,7 @@ if ($clean) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # no mails: exit here
 | 
					  # no mails: exit here
 | 
				
			||||||
  unless ($count) {
 | 
					  unless ($count) {
 | 
				
			||||||
    print UVmessage::get("VOTE_NO_VOTES") . "\n\n";
 | 
					    print UVmessage::get("VOTE_NO_VOTEMAILS") . "\n\n";
 | 
				
			||||||
    exit 0;
 | 
					    exit 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -224,6 +214,7 @@ sub process_vote {
 | 
				
			||||||
  my $onevote = 0;             # 0=no votes, 1=everything OK, 2=vote cancelled
 | 
					  my $onevote = 0;             # 0=no votes, 1=everything OK, 2=vote cancelled
 | 
				
			||||||
  my $voteerror = "";          # error message in case of invalid vote
 | 
					  my $voteerror = "";          # error message in case of invalid vote
 | 
				
			||||||
  my $ballot_id = "";          # ballot id (German: Wahlscheinkennung)
 | 
					  my $ballot_id = "";          # ballot id (German: Wahlscheinkennung)
 | 
				
			||||||
 | 
					  my $voting = "";             # voting (should be votename)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # found address?
 | 
					  # found address?
 | 
				
			||||||
  if ($voter_addr) {
 | 
					  if ($voter_addr) {
 | 
				
			||||||
| 
						 | 
					@ -239,6 +230,15 @@ sub process_vote {
 | 
				
			||||||
    push (@errors, 'InvalidAddress');
 | 
					    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?
 | 
					  # personalized ballots?
 | 
				
			||||||
  if ($config{personal}) {
 | 
					  if ($config{personal}) {
 | 
				
			||||||
    if ($$body =~ /$config{ballotidtext}\s+([a-z0-9]+)/) {
 | 
					    if ($$body =~ /$config{ballotidtext}\s+([a-z0-9]+)/) {
 | 
				
			||||||
| 
						 | 
					@ -273,7 +273,7 @@ sub process_vote {
 | 
				
			||||||
    # this matches on a single appearance:
 | 
					    # this matches on a single appearance:
 | 
				
			||||||
    if ($$body =~ /#$votenum\W*?\[(.+)\]/) {
 | 
					    if ($$body =~ /#$votenum\W*?\[(.+)\]/) {
 | 
				
			||||||
      # one or more vote strings were found
 | 
					      # one or more vote strings were found
 | 
				
			||||||
      $onevote = 1;
 | 
					      $onevote ||= 1; # set $onevote to 1 if it was 0
 | 
				
			||||||
      my $votestring = $1;
 | 
					      my $votestring = $1;
 | 
				
			||||||
      if ($votestring =~ /^\W*$config{ja_stimme}\W*$/i) {
 | 
					      if ($votestring =~ /^\W*$config{ja_stimme}\W*$/i) {
 | 
				
			||||||
        $vote = "J";
 | 
					        $vote = "J";
 | 
				
			||||||
| 
						 | 
					@ -319,7 +319,7 @@ sub process_vote {
 | 
				
			||||||
    # Should read like this: #a [ STIMME ] Text
 | 
					    # Should read like this: #a [ STIMME ] Text
 | 
				
			||||||
    # (Text is configurable in usevote.cfg)
 | 
					    # (Text is configurable in usevote.cfg)
 | 
				
			||||||
    unless ($$body =~ /$bdsg_regexp/s &&
 | 
					    unless ($$body =~ /$bdsg_regexp/s &&
 | 
				
			||||||
            $$body =~ /#a\W*?\[\W*?$config{ja_stimme}\W*?\]\W*?$bdsg2_regexp/is) {
 | 
					            $$body =~ /#a\W*?\[\W*?$config{bdsg_confirm}\W*?\]\W*?$bdsg2_regexp/is) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      push (@errors, 'InvalidBDSG');
 | 
					      push (@errors, 'InvalidBDSG');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -343,7 +343,7 @@ sub process_vote {
 | 
				
			||||||
  # Errors encountered?
 | 
					  # Errors encountered?
 | 
				
			||||||
  if (@errors) {
 | 
					  if (@errors) {
 | 
				
			||||||
    my $res = UVmenu::menu(\@votes, \@header, $body, \$voter_addr, \$voter_name,
 | 
					    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
 | 
					    return 0 if ($res eq 'i');      # "Ignore": Ignore vote, don't save
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $tpl;
 | 
					    my $tpl;
 | 
				
			||||||
| 
						 | 
					@ -402,6 +402,12 @@ sub process_vote {
 | 
				
			||||||
      my $msg = $template->processTemplate($config{tpl_bdsg_error});
 | 
					      my $msg = $template->processTemplate($config{tpl_bdsg_error});
 | 
				
			||||||
      UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
 | 
					      UVsendmail::mail($voter_addr, "Fehler", $msg, $msgid) if ($config{voteack});
 | 
				
			||||||
      return 0;
 | 
					      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}) {
 | 
					    } elsif ($error{NoVote}) {
 | 
				
			||||||
      $voteerror = UVmessage::get("VOTE_NO_VOTES");
 | 
					      $voteerror = UVmessage::get("VOTE_NO_VOTES");
 | 
				
			||||||
      my $template = UVtemplate->new();
 | 
					      my $template = UVtemplate->new();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue