Initial checkin of personal version.
Signed-off-by: Thomas Hochstein <thh@inter.net>
This commit is contained in:
parent
ac7e2c541a
commit
a384e31e54
36
UVrules.pm
36
UVrules.pm
|
@ -149,10 +149,10 @@ sub read_rulefile {
|
||||||
die $errortext . ": $_\n\n" if ($errortext);
|
die $errortext . ": $_\n\n" if ($errortext);
|
||||||
|
|
||||||
# check for correct characters in conditions
|
# check for correct characters in conditions
|
||||||
if ($if !~ /^[JjNnEeSsHhIi\.]+$/) {
|
if ($if !~ /^[JjNnEeSsIi\.]+$/) {
|
||||||
die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n";
|
die UVmessage::get ("RULES_INVCHARS", (NUM=>$num+1, TYPE=>"if")) . ": $if\n\n";
|
||||||
|
|
||||||
} elsif ($then !~ /^[JjNnEeSsHhIi\.]+$/) {
|
} elsif ($then !~ /^[JjNnEeSsIi\.]+$/) {
|
||||||
die UVmessage::get ("RULES_INVCHARS",
|
die UVmessage::get ("RULES_INVCHARS",
|
||||||
(NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
|
(NUM=>$num+1, TYPE=>"if")) . ": $then\n\n";
|
||||||
}
|
}
|
||||||
|
@ -194,9 +194,8 @@ sub read_rulefile {
|
||||||
sub make_regex_pos {
|
sub make_regex_pos {
|
||||||
my $pat = $_[0];
|
my $pat = $_[0];
|
||||||
|
|
||||||
$pat =~ s/[hijens]/./g;
|
$pat =~ s/[jens]/./g;
|
||||||
$pat =~ s/S/[JN]/g;
|
$pat =~ s/S/[JN]/g;
|
||||||
$pat =~ s/H/[EJ]/g;
|
|
||||||
$pat =~ s/I/[EN]/g;
|
$pat =~ s/I/[EN]/g;
|
||||||
|
|
||||||
return $pat;
|
return $pat;
|
||||||
|
@ -217,19 +216,22 @@ sub make_regex_neg {
|
||||||
|
|
||||||
# upper case characters are replaced with dots
|
# upper case characters are replaced with dots
|
||||||
# (are covered by make_regex_pos)
|
# (are covered by make_regex_pos)
|
||||||
$pat =~ s/[HIJENS]/./g;
|
$pat =~ s/[JENS]/./g;
|
||||||
|
|
||||||
# reverse lower case characters
|
# reverse lower case characters
|
||||||
$pat =~ s/j/[NE]/g;
|
$pat =~ s/j/[NE]/g;
|
||||||
$pat =~ s/n/[JE]/g;
|
$pat =~ s/n/[JE]/g;
|
||||||
$pat =~ s/e/[JN]/g;
|
$pat =~ s/e/[JN]/g;
|
||||||
$pat =~ s/s/E/g;
|
$pat =~ s/s/E/g;
|
||||||
$pat =~ s/h/N/g;
|
|
||||||
$pat =~ s/i/J/g;
|
$pat =~ s/i/J/g;
|
||||||
|
|
||||||
# If the string contained only upper case characters they are now all
|
# to be translated:
|
||||||
# replaced with dots and the RegEx would match everything, i.e. declare
|
# Falls keine Kleinbuchstaben vorkamen (es sind nur Punkte uebrig):
|
||||||
# every vote as invalid. In this case an empty pattern is returned.
|
# Wenn keine optionalen Forderungen vorhanden sind, wuerde der Regex
|
||||||
|
# immer matchen und somit die Stimme immer als nicht passend erkannt
|
||||||
|
# werden. Deswegen wird versucht auf den leeren String zu ueberpruefen,
|
||||||
|
# was durch die Negation dazu fuehrt, dass die Stimme als passend
|
||||||
|
# gewertet wird.
|
||||||
$pat =~ s/^\.+$//;
|
$pat =~ s/^\.+$//;
|
||||||
|
|
||||||
return $pat;
|
return $pat;
|
||||||
|
@ -303,10 +305,6 @@ sub rule_print {
|
||||||
$fill = " $and ";
|
$fill = " $and ";
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
||||||
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
||||||
} elsif ($rule[$i] eq 'H') {
|
|
||||||
$fill = " $and ";
|
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
|
||||||
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
|
|
||||||
} elsif ($rule[$i] eq 'I') {
|
} elsif ($rule[$i] eq 'I') {
|
||||||
$fill = " $and ";
|
$fill = " $and ";
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
||||||
|
@ -324,10 +322,6 @@ sub rule_print {
|
||||||
$fill = " $or ";
|
$fill = " $or ";
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
||||||
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
||||||
} elsif ($rule[$i] eq 'h') {
|
|
||||||
$fill = " $or ";
|
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
|
||||||
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
|
|
||||||
} elsif ($rule[$i] eq 'i') {
|
} elsif ($rule[$i] eq 'i') {
|
||||||
$fill = " $or ";
|
$fill = " $or ";
|
||||||
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
$text1 = UVmessage::get ("RULES_IFCLAUSE",
|
||||||
|
@ -363,10 +357,6 @@ sub rule_print {
|
||||||
$fill = " $and ";
|
$fill = " $and ";
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
||||||
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
||||||
} elsif ($rule[$i] eq 'H') {
|
|
||||||
$fill = " $and ";
|
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
|
||||||
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
|
|
||||||
} elsif ($rule[$i] eq 'I') {
|
} elsif ($rule[$i] eq 'I') {
|
||||||
$fill = " $and ";
|
$fill = " $and ";
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
||||||
|
@ -384,10 +374,6 @@ sub rule_print {
|
||||||
$fill = " $or ";
|
$fill = " $or ";
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
||||||
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
(VOTE=>"$yes $or $no", GROUP=>$groups[$i]));
|
||||||
} elsif ($rule[$i] eq 'h') {
|
|
||||||
$fill = " $or ";
|
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
|
||||||
(VOTE=>"$abst $or $yes", GROUP=>$groups[$i]));
|
|
||||||
} elsif ($rule[$i] eq 'i') {
|
} elsif ($rule[$i] eq 'i') {
|
||||||
$fill = " $or ";
|
$fill = " $or ";
|
||||||
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
$text1 = UVmessage::get ("RULES_THENCLAUSE",
|
||||||
|
|
|
@ -154,7 +154,6 @@ CFV_SUBJECT = Wahlschein
|
||||||
#
|
#
|
||||||
COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
|
COUNT_ERR_OPEN = Kann Ergebnisdatei ${FILE} nicht oeffnen!
|
||||||
COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE}
|
COUNT_ERR_RESULT = Fehler in ${FILE} Zeile ${LINE}
|
||||||
COUNT_ERR_GROUPCOUNT = Bei Stimme von <${ADDR}>: ${NUM1} statt ${NUM2} Stimmen gefunden (${RESULTFILE} kontrollieren!)
|
|
||||||
COUNT_DELETED = ${NUM} Stimme(n) geloescht.
|
COUNT_DELETED = ${NUM} Stimme(n) geloescht.
|
||||||
#
|
#
|
||||||
# uvvote.pl
|
# uvvote.pl
|
||||||
|
|
|
@ -11,12 +11,13 @@ 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 : 2/3? >=60? : ang.? : Gruppe
|
Ja Nein : 2/3? >=60? : 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]
|
||||||
[?numabstain|[$numabstain-formatted] Enthaltungen]
|
[?numabstain|[$numabstain-formatted] Enthaltungen]
|
||||||
[?numinvalid|[$numinvalid] ungueltige Stimme(n)]
|
[?numinvalid|[$numinvalid] ungueltige Stimme(n)]
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ Es gab [$yes] Ja-Stimmen und [$no] Nein-Stimmen[?numabstain| bei [$numabstain] E
|
||||||
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
|
[?numinvalid|[$numinvalid] Stimme(n) wurden als ungueltig gewertet.]
|
||||||
|
|
||||||
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
|
Es wurde [?cond1|die|keine] 2/3-Mehrheit erreicht und es gingen [?cond2|mehr|weniger] als
|
||||||
60 Ja-Stimmen ein. Damit ist die [$votename-text-first]
|
60 Ja-Stimmen ein. Damit ist die [$votename-first]
|
||||||
[@votename-text-more|[$line] |\n][?cond1|[?cond2|angenommen|abgelehnt]|abgelehnt].
|
[@votename-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
|
||||||
|
|
165
usevote.global.cfg
Normal file
165
usevote.global.cfg
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
########################################################################
|
||||||
|
# Alles ab hier braucht i.d.R. nur einmal festgelegt werden.
|
||||||
|
# Es ist moeglich, diese Einstellungen in eine globale Konfigurations-
|
||||||
|
# datei auszulagern. Das Einbinden erfolgt mit der Zeile
|
||||||
|
#
|
||||||
|
# include /pfad/zur/globalen_datei
|
||||||
|
#
|
||||||
|
# Falls Einstellungen aus der globalen Konfigurationsdatei hier
|
||||||
|
# fuer einzelne Abstimmungen ueberschrieben werden sollen, muessen
|
||||||
|
# diese *hinter* dem Include-Befehl stehen!
|
||||||
|
# (der letzte Wert ueberschreibt vorhergehende Definitionen)
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# SMTP benutzen? (falls nicht, wird der weiter unten einstellbare
|
||||||
|
# MTA direkt aufgerufen; unter Windows kann nur SMTP benutzt werden!)
|
||||||
|
smtp = 0
|
||||||
|
|
||||||
|
# SMTP-Server (falls smtp = 1)
|
||||||
|
smtpserver = localhost
|
||||||
|
smtpport = 25
|
||||||
|
|
||||||
|
# SMTP-Authentifizierung benutzen? (RFC 2554)
|
||||||
|
# Das entsprechende Perlmodul (Net::SMTP) kann derzeit nur AUTH PLAIN,
|
||||||
|
# funktioniert also moeglicherweise nicht mit jedem Server
|
||||||
|
#smtpauth = 0
|
||||||
|
#smtpuser =
|
||||||
|
#smtppass =
|
||||||
|
|
||||||
|
# Falls als HELO etwas anderes als der Hostname verwendet werden soll:
|
||||||
|
#smtphelo = greenmeadow.szaf.org
|
||||||
|
|
||||||
|
# Falls ein anderer Fully Qualified Domain Name als der Hostname fuer
|
||||||
|
# die Message-ID verwendet werden soll:
|
||||||
|
fqdn = gvv.th-h.de
|
||||||
|
|
||||||
|
# Verzeichnis fuer fertig verarbeitete Mails und Ergebnisse
|
||||||
|
archivedir = done
|
||||||
|
|
||||||
|
# Temporaeres Verzeichnis
|
||||||
|
tmpdir = tmp
|
||||||
|
|
||||||
|
# Pfad zu den Templates (kommaseparierte Liste mit Verzeichnissen)
|
||||||
|
templatedir = /home/gvv/usevote/templates
|
||||||
|
|
||||||
|
# Konvertierungsfunktionen f黵 die Templates
|
||||||
|
# (kommaseparierte Liste mit Funktions-Modulen)
|
||||||
|
formats = /home/gvv/usevote/UVformats.pm
|
||||||
|
|
||||||
|
# Dateiname der Steuerungsdatei fuer den Mailversandt
|
||||||
|
controlfile = tmp/ack.control
|
||||||
|
|
||||||
|
# Dateiname des Shellscripts zum Versenden der Bestaetigungsmails (falls smtp=0)
|
||||||
|
domailfile = tmp/domail
|
||||||
|
|
||||||
|
# MTA-Aufruf zum Verschicken der Bestaetigungsmails
|
||||||
|
# nuetzlich ist die Sendmail-Option -f zum Setzen des Absenders
|
||||||
|
#mailcmd = sendmail -oi -oem -femail@adresse
|
||||||
|
mailcmd = /usr/sbin/sendmail -oi -oem -fvote-bounces@gvv.th-h.de
|
||||||
|
|
||||||
|
# Weiteres Kommando, welches nach jeder Mail aufgerufen werden soll (falls smtp=0).
|
||||||
|
# Sinnvoll ist ein "sleep x", wobei x bei langsamen Systemen hoeher
|
||||||
|
# gewaehlt werden sollte, um die Belastung gering zu halten.
|
||||||
|
sleepcmd = sleep 1
|
||||||
|
|
||||||
|
# Shellbefehl zum Loeschen des Bildschirms
|
||||||
|
# Unix: i.d.R. "clear"
|
||||||
|
# Windows: "cls"
|
||||||
|
# Falls das Betriebssystem bzw. die Shell keinen solchen Befehl zur Verfuegung
|
||||||
|
# stellt, sollte ein Kommando verwendet werden, welches eine Trennlinie
|
||||||
|
# oder aehnliches auf dem Bildschirm ausgibt, z.B. mit "echo"
|
||||||
|
clearcmd = clear
|
||||||
|
|
||||||
|
# Shellbefehl zum seitenweisen Darstellen von Mails auf dem Bildschirm
|
||||||
|
# Empfohlene Einstellung: "less", da more Probleme mit der Umleitung von
|
||||||
|
# STDERR in eine Datei Probleme hat. Unter Windows ist "less" nicht
|
||||||
|
# vorinstallirt, kann man sich aber herunterladen und einfach in das
|
||||||
|
# Windows-Verzeichnis kopieren (URL siehe README-Datei)
|
||||||
|
pager = less
|
||||||
|
|
||||||
|
# Datei mit diversen Meldungen und Textfragmenten (Resourcendatei)
|
||||||
|
messagefile = /home/gvv/usevote/messages.cfg
|
||||||
|
|
||||||
|
# Datei mit Wahlregeln
|
||||||
|
rulefile = /home/gvv/usevote/usevote.rul
|
||||||
|
|
||||||
|
# Datei mit verdaechtigen Mailadressen
|
||||||
|
badaddrfile = /home/gvv/usevote/mailpatterns.cfg
|
||||||
|
|
||||||
|
# Datei fuer Fehlermeldungen beim Programmlauf
|
||||||
|
errorfile = errors.log
|
||||||
|
|
||||||
|
# Lockdatei (Verhinderung von mehrfachen Programmstarts)
|
||||||
|
lockfile = usevote.lock
|
||||||
|
|
||||||
|
# Einleitungszeile fuer naechste Mail (RegExp)
|
||||||
|
mailstart = "^From "
|
||||||
|
|
||||||
|
# Trennlinien vor und nach dem Wahlschein
|
||||||
|
begin_divider = Alles vor dieser Zeile bitte loeschen
|
||||||
|
end_divider = Alles nach dieser Zeile bitte loeschen
|
||||||
|
|
||||||
|
# Text fuer die Namens-Angabe im Wahlschein. Achtung, muss im
|
||||||
|
# Wahlschein genauso stehen!
|
||||||
|
nametext = Dein Realname, falls nicht im FROM-Header:
|
||||||
|
|
||||||
|
# Text fuer Namens-Angabe in Bestaetigungsmails
|
||||||
|
nametext2 = Waehlername:
|
||||||
|
|
||||||
|
# Text fuer die Adress-Angabe im Wahlschein
|
||||||
|
addresstext = Waehleradresse:
|
||||||
|
|
||||||
|
# Text f黵 die Angabe der Wahlscheinkennung (siehe Option "personal")
|
||||||
|
ballotidtext = Wahlscheinkennung:
|
||||||
|
|
||||||
|
# Text fuer Datenschutzklausel (siehe Option "bdsg"), erscheint als Abstimmungspunkt
|
||||||
|
bdsgtext = Datenschutzklausel - Zustimmung: Ich bin mit der Verarbeitung meiner Daten wie oben beschrieben einverstanden
|
||||||
|
|
||||||
|
# Datei mit Erklaerungstext fuer BDSG-Klausel
|
||||||
|
bdsgfile = /home/gvv/usevote/bdsgtext.cfg
|
||||||
|
|
||||||
|
# Rechter Rand fuer einige Bildschirmausgaben (Terminalbreite)
|
||||||
|
rightmargin = 72
|
||||||
|
|
||||||
|
# Regular Expression fuer Erkennung eines gueltigen Realnamens
|
||||||
|
name_re = [-a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,} +.*[a-zA-Z漩<5A>噔殍觏祛篁酊<E7AF81>闹芰谅扇释涛右在氽遌{2,}
|
||||||
|
|
||||||
|
# RegExp fuer JA-Stimmen (case-insensitive)
|
||||||
|
# Standardmaessig wird J, JA, FUER und DAFUER erkannt
|
||||||
|
ja_stimme = (J\s*A|J|(D\s*A\s*)?F\s*U\s*E\s*R)
|
||||||
|
|
||||||
|
# RegExp fuer NEIN-Stimmen (case-insensitive)
|
||||||
|
# Standardmaessig wird N, NEIN, GEGEN und DAGEGEN erkannt
|
||||||
|
nein_stimme = (N\s*E\s*I\s*N|N|(D\s*A\s*)?G\s*E\s*G\s*E\s*N)
|
||||||
|
|
||||||
|
# RegExp fuer ENTHALTUNG (case-insensitive)
|
||||||
|
enth_stimme = (E|E\s*N\s*T\s*H\s*A\s*L\s*T\s*U\s*N\s*G)
|
||||||
|
|
||||||
|
# RegExp fuer ANNULLIERUNG (case-insensitive)
|
||||||
|
# Achtung, sollte auch in den Templates im Bestaetigungstext angepasst werden
|
||||||
|
ann_stimme = A\s*N\s*N\s*U\s*L\s*L\s*I\s*E\s*R\s*U\s*N\s*G
|
||||||
|
|
||||||
|
# Template files (these files are in the template directory defined above)
|
||||||
|
tpl_mailheader = "mailheader" # generally used mail header
|
||||||
|
tpl_bouncelist = "bouncelist" # used by uvbounce.pl
|
||||||
|
tpl_result_multi = "result-multi" # used by uvcount.pl -r -m
|
||||||
|
tpl_result_single = "result-single" # used by uvcount.pl -r -o
|
||||||
|
tpl_result_prop = "result-proportional" # used by uvcount.pl -r (proportional = 1)
|
||||||
|
tpl_votes_multi = "votes-multi" # used by uvcount.pl -v (multiple groups)
|
||||||
|
tpl_votes_single = "votes-single" # used by uvcount.pl -v (single group only)
|
||||||
|
tpl_voterlist = "voterlist" # used by uvcount.pl -l (2nd CfV)
|
||||||
|
tpl_ballot = "ballot" # used by uvballot.pl (personal = 0)
|
||||||
|
tpl_ballot_request = "ballot-request" # used by uvballot.pl (personal = 1)
|
||||||
|
tpl_ballot_personal = "ballot-personal" # used by uvcfv.pl (personal = 1)
|
||||||
|
tpl_addr_reg = "address-not-registered" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_no_ballotid = "no-ballotid" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_wrong_ballotid = "wrong-ballotid" # used by uvvote.pl (personal = 1)
|
||||||
|
tpl_bdsg_error = "bdsg-error" # used by uvvote.pl (bdsg = 1)
|
||||||
|
tpl_ack_mail = "ack-mail" # used by uvvote.pl (voteack = 1)
|
||||||
|
tpl_cancelled = "cancelled" # used by uvvote.pl
|
||||||
|
tpl_invalid_account = "invalid-account" # used by uvvote.pl
|
||||||
|
tpl_invalid_name = "invalid-name" # used by uvvote.pl
|
||||||
|
tpl_multiple_votes = "multiple-votes" # used by uvvote.pl
|
||||||
|
tpl_no_ballot = "no-ballot" # used by uvvote.pl
|
||||||
|
tpl_no_votes = "no-votes" # used by uvvote.pl
|
||||||
|
tpl_rule_violated = "rule-violated" # used by uvvote.pl (c.f. usevote.rul)
|
|
@ -30,14 +30,12 @@
|
||||||
# N eine NEIN-Stimme
|
# N eine NEIN-Stimme
|
||||||
# E eine Enthaltung
|
# E eine Enthaltung
|
||||||
# S eine JA- oder NEIN-Stimme
|
# S eine JA- oder NEIN-Stimme
|
||||||
# H eine Enthaltung oder JA-Stimme
|
|
||||||
# I eine Enthaltung oder NEIN-Stimme
|
# I eine Enthaltung oder NEIN-Stimme
|
||||||
# . egal (Ja, nein oder Enthaltung)
|
# . egal (Ja, nein oder Enthaltung)
|
||||||
# j eine oder mehrere der markierten Gruppen hat JA-Stimme
|
# j eine oder mehrere der markierten Gruppen hat JA-Stimme
|
||||||
# n "" "" "" "" "" "" "" NEIN-Stimme
|
# n "" "" "" "" "" "" "" NEIN-Stimme
|
||||||
# e "" "" "" "" "" "" "" Enthaltung
|
# e "" "" "" "" "" "" "" Enthaltung
|
||||||
# s "" "" "" "" "" "" "" Ja- oder Nein-Stimme
|
# s "" "" "" "" "" "" "" Ja- oder Nein-Stimme
|
||||||
# h "" "" "" "" "" "" "" Enthaltung oder Ja-Stimme
|
|
||||||
# i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme
|
# i "" "" "" "" "" "" "" Enthaltung oder Nein-Stimme
|
||||||
#
|
#
|
||||||
# Alles klar? Jede Stimme wird mit den Symbolen verglichen, und wenn alle
|
# Alles klar? Jede Stimme wird mit den Symbolen verglichen, und wenn alle
|
||||||
|
|
76
usevote.tpl.cfg
Normal file
76
usevote.tpl.cfg
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
include /home/gvv/usevote/usevote.global.cfg
|
||||||
|
|
||||||
|
########################################################################
|
||||||
|
# Diese Einstellungen muessen fuer jede Abstimmung angepasst werden
|
||||||
|
########################################################################
|
||||||
|
|
||||||
|
# Name der Abstimmung
|
||||||
|
votename = [INSERT_HERE]
|
||||||
|
|
||||||
|
# Abstimmungsgegenstaende (beliebig viele groupX moeglich,
|
||||||
|
# von 1 an durchzunummerieren)
|
||||||
|
group1 = [INSERT_HERE]
|
||||||
|
|
||||||
|
# Mailbox, in der die zu verarbeitenden Mails liegen (falls smtp=0)
|
||||||
|
votefile = votes
|
||||||
|
|
||||||
|
# Bei den folgenden Fragen bedeutet jeweils:
|
||||||
|
# 0: nein
|
||||||
|
# 1: ja
|
||||||
|
|
||||||
|
# Persoenliche Wahlscheine generieren und Scheinkennung erzwingen?
|
||||||
|
personal = 0
|
||||||
|
|
||||||
|
# Verhaeltniswahl durchfuehren? (z.B. fuer Moderationsnachwahlen)
|
||||||
|
proportional = 0
|
||||||
|
|
||||||
|
# Formel fuer die Berechnung des Verhaeltnisses. Kann z.B.
|
||||||
|
# $yes/$no oder $yes-$no sein, letzteres wird bei Moderationsnachwahlen
|
||||||
|
# verwendet. Als Variablen sind $yes und $no zulaessig, es kann
|
||||||
|
# beliebiger Perlcode angegeben werden, dessen Rueckgabewert im
|
||||||
|
# Result erscheinen soll. Ausserdem wird bei der Auswertung die
|
||||||
|
# Bedingung aus "condition1" weiter unten in dieser Datei ausgewertet.
|
||||||
|
prop_formula = $yes/$no
|
||||||
|
|
||||||
|
# Vote-Account (diese Adresse muss unbedingt korrekt sein, wird
|
||||||
|
# in das Reply-To uebernommen)
|
||||||
|
voteaccount = [INSERT_HERE]@gvv.th-h.de
|
||||||
|
|
||||||
|
# Absender fuer den From-Header der Bestaetigungsmails
|
||||||
|
mailfrom = Thomas Hochstein <votetaker@gvv.th-h.de>
|
||||||
|
|
||||||
|
# Absender fuer den Envelope (Return-Path) der Bestaetigungsmails
|
||||||
|
# (bitte einfach nur die Adresse eintragen, ohne Klammern und Zusaetze)
|
||||||
|
envelopefrom = [INSERT_HERE]@gvv.th-h.de
|
||||||
|
|
||||||
|
# Nur bei persoenlichen Wahlscheinen: Datei mit Anforderungsmails
|
||||||
|
# requestfile = anforderung
|
||||||
|
|
||||||
|
# Datenschutzklausel generieren und auf deren Existenz pruefen?
|
||||||
|
# Konfiguration siehe unten (bdsgtext)
|
||||||
|
bdsg = 1
|
||||||
|
|
||||||
|
# Reply-To beachten?
|
||||||
|
# Nicht empfohlen, da jemand fuer andere Personen abstimmen und
|
||||||
|
# die Bestaetigungen zu sich umlenken koennte.
|
||||||
|
replyto = 0
|
||||||
|
|
||||||
|
# Stimmen einzeln bestaetigen? Empfohlen!
|
||||||
|
voteack = 1
|
||||||
|
|
||||||
|
# Bcc-Adresse fuer alle Mails (Backup fuer alle Faelle)
|
||||||
|
#
|
||||||
|
mailcc = gvv@greenmeadow.szaf.org
|
||||||
|
|
||||||
|
# Bedingungen fuer einen Erfolg der Abstimmung (genau zwei erforderlich).
|
||||||
|
# Es muss sich jeweils um gueltigen Perl-Code handeln, Rueckgabewert
|
||||||
|
# wird boolesch ausgewertet (true/false). Als Variablen sind $yes
|
||||||
|
# und $no zugelassen. Falls oben "proportional = 1" gesetzt wurde,
|
||||||
|
# wird nur Bedingung 1 ausgewertet und kann z.B. auf "$yes>$no" gesetzt
|
||||||
|
# werden.
|
||||||
|
# condition1 = $yes>=2*$no
|
||||||
|
# condition2 = $yes>=60
|
||||||
|
condition1 = $yes>=2*$no
|
||||||
|
condition2 = $yes>=60
|
||||||
|
|
||||||
|
mailcmd = /usr/sbin/sendmail -oi -oem -f[INSERT_HERE]@gvv.th-h.de
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Wahlscheingenerierung
|
# UseVoteGer 4.07 Wahlscheingenerierung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2004 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
|
||||||
|
@ -31,7 +31,7 @@ use UVtemplate;
|
||||||
|
|
||||||
my %opt_ctl = ();
|
my %opt_ctl = ();
|
||||||
|
|
||||||
print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2005 Marc Langer\n\n";
|
print STDERR "\n$usevote_version Wahlscheingenerierung - (c) 2001-2004 Marc Langer\n\n";
|
||||||
|
|
||||||
# unknown parameters remain in @ARGV (for "help")
|
# unknown parameters remain in @ARGV (for "help")
|
||||||
Getopt::Long::Configure(qw(pass_through bundling));
|
Getopt::Long::Configure(qw(pass_through bundling));
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Bounce-Verarbeitung
|
# UseVoteGer 4.07 Bounce-Verarbeitung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2004 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
|
||||||
|
@ -33,7 +33,7 @@ my %opt_ctl = ();
|
||||||
my %bounces = ();
|
my %bounces = ();
|
||||||
my $pop3 = 0;
|
my $pop3 = 0;
|
||||||
|
|
||||||
print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2005 Marc Langer\n\n";
|
print STDERR "\n$usevote_version Bounce-Verarbeitung - (c) 2001-2004 Marc Langer\n\n";
|
||||||
|
|
||||||
# unknown parameters remain in @ARGV (for "help")
|
# unknown parameters remain in @ARGV (for "help")
|
||||||
Getopt::Long::Configure(qw(pass_through bundling));
|
Getopt::Long::Configure(qw(pass_through bundling));
|
||||||
|
|
6
uvcfv.pl
6
uvcfv.pl
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Personalisierte Wahlscheine
|
# UseVoteGer 4.07 Personalisierte Wahlscheine
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2004 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
|
||||||
|
@ -35,7 +35,7 @@ use UVtemplate;
|
||||||
|
|
||||||
my %opt_ctl = ();
|
my %opt_ctl = ();
|
||||||
|
|
||||||
print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2005 Marc Langer\n\n";
|
print "\n$usevote_version Personalisierte Wahlscheine - (c) 2001-2004 Marc Langer\n\n";
|
||||||
|
|
||||||
# unknown parameters remain in @ARGV (for "help")
|
# unknown parameters remain in @ARGV (for "help")
|
||||||
Getopt::Long::Configure(qw(pass_through bundling));
|
Getopt::Long::Configure(qw(pass_through bundling));
|
||||||
|
|
10
uvvote.pl
10
uvvote.pl
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Wahldurchfuehrung
|
# UseVoteGer 4.07 Wahldurchfuehrung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2004 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
|
||||||
|
@ -37,7 +37,7 @@ use UVtemplate;
|
||||||
my $clean = 0;
|
my $clean = 0;
|
||||||
my %opt_ctl = ();
|
my %opt_ctl = ();
|
||||||
|
|
||||||
print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2005 Marc Langer\n\n";
|
print "\n$usevote_version Wahldurchfuehrung - (c) 2001-2004 Marc Langer\n\n";
|
||||||
|
|
||||||
# unknown parameters remain in @ARGV (for "help")
|
# unknown parameters remain in @ARGV (for "help")
|
||||||
Getopt::Long::Configure(qw(pass_through bundling));
|
Getopt::Long::Configure(qw(pass_through bundling));
|
||||||
|
@ -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);
|
||||||
|
@ -216,7 +216,7 @@ sub process_vote {
|
||||||
my @header = split(/\n/, $entity->stringify_header);
|
my @header = split(/\n/, $entity->stringify_header);
|
||||||
my $head = $entity->head;
|
my $head = $entity->head;
|
||||||
my $msgid = $head->get('Message-ID');
|
my $msgid = $head->get('Message-ID');
|
||||||
chomp($msgid) if ($msgid);
|
chomp($msgid) if defined($msgid);
|
||||||
|
|
||||||
my @votes = (); # the votes
|
my @votes = (); # the votes
|
||||||
my @set; # interactively changed fields
|
my @set; # interactively changed fields
|
||||||
|
|
Loading…
Reference in a new issue