Merge branch 'thh-pickfromupstream' into next
* thh-pickfromupstream: Adapt some templates to upstream version. Fix handling of template files like upstream. Fix problem with recognition of ANNULLIERUNG. Add option to read from Maildir. Update version number and copyright. Drop commonly used accounts from mailpatterns. Update documentation from upstream.
This commit is contained in:
commit
0470756d59
33
CHANGES
33
CHANGES
|
@ -1,21 +1,48 @@
|
||||||
UseVoteGer Versionshistorie (aktuelle Version: 4.09, released 07.10.2007)
|
UseVoteGer Versionshistorie (aktuelle Version: 4.11, released 25.09.2012)
|
||||||
=========================================================================
|
=========================================================================
|
||||||
|
|
||||||
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
|
- [Zugschlus] ich fänd es klasse, wenn man eine Kopie des Wahlscheines ins
|
||||||
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
|
Abstimmungsverzeichnis legt und Usevote einem dann auf Abruf ein diff
|
||||||
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
|
oder wdiff zwischen Sollwahlschein und wirklich eingreichtem
|
||||||
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
|
Wahlschein macht. Auf diese Weise erwischt man auch kleine Änderungen
|
||||||
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
|
am Datenschutzhinweis (da bin ich eben in eine Falle von th-h getappt).
|
||||||
|
|
||||||
|
Version 4.11 (25.09.2012):
|
||||||
|
- Regular Expression fuer Pruefung des Abstimmungsnamens verbessert.
|
||||||
|
Es kam zu vielen False Positives
|
||||||
|
- Einlesen der Mailbox auf Perlmodule Mail::Box umgestellt, damit
|
||||||
|
auch Maildir moeglich (neue Option "mailboxtype" in usevote.cfg).
|
||||||
|
Archivierung erfolgt aber vorerst weiterhin immer als mbox
|
||||||
|
|
||||||
|
Version 4.10 (17.09.2012):
|
||||||
|
- Fehler in uvvote.pl, Zeile 126 behoben (Verarbeitung von temporaeren
|
||||||
|
Dateien - es wurde nicht korrekt auf vorhandene Temp-Dateien
|
||||||
|
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)
|
||||||
|
|
8
README
8
README
|
@ -1,4 +1,4 @@
|
||||||
UseVoteGer 4.09 (c) 2001-2007 Marc Langer
|
UseVoteGer 4.11 (c) 2001-2012 Marc Langer
|
||||||
|
|
||||||
UseVoteGer is a voting software for usenet votes.
|
UseVoteGer is a voting software for usenet votes.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ written in C). Not all functions of Usevote/UseVoteGer 3.x are implemented!
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
UseVoteGer 4.09 - Usenet-Abstimmungssoftware
|
UseVoteGer 4.11 - Usenet-Abstimmungssoftware
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
von Marc Langer <uv@marclanger.de>
|
von Marc Langer <uv@marclanger.de>
|
||||||
|
@ -89,9 +89,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
|
||||||
|
@ -961,6 +958,7 @@ votename Name der Abstimmung
|
||||||
group1 Erster Abstimmungsgegenstand
|
group1 Erster Abstimmungsgegenstand
|
||||||
group2 Zweiter (und so weiter durchnummerieren)
|
group2 Zweiter (und so weiter durchnummerieren)
|
||||||
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
|
||||||
|
|
|
@ -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.11";
|
||||||
|
|
||||||
sub read_config {
|
sub read_config {
|
||||||
|
|
||||||
|
@ -45,6 +45,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",
|
||||||
|
|
|
@ -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,52 @@ 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 $mgr = Mail::Box::Manager->new;
|
||||||
my $i = 0;
|
my $folder;
|
||||||
while (<VOTES>) {
|
|
||||||
if (/$config{mailstart}/) {
|
eval{
|
||||||
$i++;
|
$folder = $mgr->open( folder => $config{votefile},
|
||||||
|
create => 0,
|
||||||
|
access => 'rw',
|
||||||
|
type => $config{mailboxtype},
|
||||||
|
expand => 'LAZY',
|
||||||
|
);
|
||||||
|
};
|
||||||
|
die UVmessage::get("READMAIL_NOMAILFILE", (FILE => $config{votefile})) . "\n\n" if $@;
|
||||||
|
|
||||||
|
# Iterate over the messages.
|
||||||
|
foreach (@$folder) {
|
||||||
|
my $mail = $_->string;
|
||||||
|
$_->delete();
|
||||||
|
my $fromline = 'From ';
|
||||||
|
if ($mail =~ /From: .*?<(.+?)>/) {
|
||||||
|
$fromline .= $1;
|
||||||
|
} elsif ($mail =~ /From:\s+?(\S+?\@\S+?)\s/) {
|
||||||
|
$fromline .= $1;
|
||||||
|
} else {
|
||||||
|
$fromline .= 'foo@bar.invalid';
|
||||||
}
|
}
|
||||||
$mails[$i] = ($mails[$i] || "") . $_;
|
$fromline .= ' ' . localtime() . "\n"; #strftime ('%a %b %d %H:%M:%S %Y', localtime) . "\n";
|
||||||
|
push (@mails, $fromline . $mail);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# close mail file
|
# make archive of all mails
|
||||||
close(VOTES);
|
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) {
|
||||||
|
|
|
@ -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@
|
||||||
|
|
|
@ -26,9 +26,6 @@ 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
|
||||||
loeschen willst, kannst du erneut abstimmen und dabei 'ANNULLIERUNG'
|
loeschen willst, kannst du erneut abstimmen und dabei 'ANNULLIERUNG'
|
||||||
anstelle von 'JA' oder 'NEIN' angeben. \[Doppel-N, Doppel-L :-)\]
|
anstelle von 'JA' oder 'NEIN' angeben. \[Doppel-N, Doppel-L :-)\]
|
||||||
Bei mehreren Abstimmungspunkten muss 'ANNULLIERUNG' bereits beim
|
|
||||||
Abstimmungspunkt #1 angegeben werden, damit der erhoffte Erfolg
|
|
||||||
eintritt. ;)
|
|
||||||
|
|
||||||
[?personal|Da diese Abstimmung mit personalisierten Wahlscheinen durchgefuehrt
|
[?personal|Da diese Abstimmung mit personalisierten Wahlscheinen durchgefuehrt
|
||||||
wird, sind auch saemtliche Aenderungen nur mit Angabe der folgenden
|
wird, sind auch saemtliche Aenderungen nur mit Angabe der folgenden
|
||||||
|
@ -39,7 +36,7 @@ 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 erneut an die Abstimmadresse;
|
bitte und sende die Nachricht erneut an die Abstimmadresse,
|
||||||
sonst kann die Stimme spaeter als ungueltig gewertet werden.)
|
sonst kann die Stimme spaeter als ungueltig gewertet werden.)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,4 +18,4 @@ Hier die Mail, die ich erhalten habe:
|
||||||
|
|
||||||
|
|
||||||
[$votetaker]
|
[$votetaker]
|
||||||
\[mit [$usevote_version]\]
|
\[mit [$usevote_version]\]
|
||||||
|
|
|
@ -90,6 +90,8 @@ pop3 = 1
|
||||||
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
|
# Mailbox, in der die zu verarbeitenden Mails liegen (falls pop3=0)
|
||||||
votefile = votes
|
votefile = votes
|
||||||
|
|
||||||
|
# Typ der Mailbox (mbox, maildir)
|
||||||
|
mailboxtype = mbox
|
||||||
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
|
# POP3-Einstellungen fuer Abruf der eingehenden Wahlscheine:
|
||||||
# Server, Port, Benutzername, Passwort
|
# Server, Port, Benutzername, Passwort
|
||||||
pop3server = 127.0.0.1
|
pop3server = 127.0.0.1
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Wahlscheingenerierung
|
# UseVoteGer 4.11 Wahlscheingenerierung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2012 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
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Bounce-Verarbeitung
|
# UseVoteGer 4.11 Bounce-Verarbeitung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2012 Marc Langer <uv@marclanger.de>
|
||||||
#
|
#
|
||||||
# This script package is free software; you can redistribute it and/or
|
# This script package is free software; you can redistribute it and/or
|
||||||
# modify it under the terms of the GNU Public License as published by the
|
# modify it under the terms of the GNU Public License as published by the
|
||||||
|
|
4
uvcfv.pl
4
uvcfv.pl
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Personalisierte Wahlscheine
|
# UseVoteGer 4.11 Personalisierte Wahlscheine
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2012 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
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Stimmauswertung
|
# UseVoteGer 4.11 Stimmauswertung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2012 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
|
||||||
|
|
22
uvvote.pl
22
uvvote.pl
|
@ -1,8 +1,8 @@
|
||||||
#!/usr/bin/perl -w
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# UseVoteGer 4.09 Wahldurchfuehrung
|
# UseVoteGer 4.11 Wahldurchfuehrung
|
||||||
# (c) 2001-2005 Marc Langer <uv@marclanger.de>
|
# (c) 2001-2012 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
|
||||||
|
@ -122,9 +122,9 @@ if ($clean) {
|
||||||
# normally unixtime is sufficient, if it is not unique append our PID
|
# normally unixtime is sufficient, if it is not unique append our PID
|
||||||
my $ext = time;
|
my $ext = time;
|
||||||
|
|
||||||
opendir (DIR, $config{tmpdir});
|
opendir (TMP, $config{tmpdir});
|
||||||
my @tmpfiles = readdir (DIR);
|
my @tmpfiles = readdir (TMP);
|
||||||
closedir (DIR);
|
closedir (TMP);
|
||||||
opendir (FERTIG, $config{archivedir});
|
opendir (FERTIG, $config{archivedir});
|
||||||
my @fertigfiles = readdir (FERTIG);
|
my @fertigfiles = readdir (FERTIG);
|
||||||
closedir (FERTIG);
|
closedir (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";
|
||||||
|
@ -283,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";
|
||||||
|
|
Loading…
Reference in a new issue