--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/conf.example/sender Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,2 @@
+# the envelope sender to use
+noreply@localhost
--- a/conf.example/subject Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-# subject line prefix. ASCII ONLY
-[Retter packen]
--- a/index.cgi Mon Jul 04 17:26:13 2011 +0200
+++ b/index.cgi Mon Jul 04 21:30:38 2011 +0200
@@ -25,10 +25,12 @@
$ENV{PATH} = "/usr/bin:/usr/sbin:/bin:/sbin";
my $DSN = "DBI:SQLite:var/db.sqlite3";
-my $SECRET = read_conf "conf/secret"; chomp($SECRET);
-my $SELF = read_conf "conf/self"; chomp($SELF);
-my $EXPIRATION = 60; # the link is valid for XX minutes only
-my $SENDMAIL = "/usr/sbin/sendmail -t";
+my $EXPIRATION = 60; # expiration time of the first link
+my $SECRET = read_conf "conf/secret";
+my $SELF = read_conf "conf/self";
+my $SENDER = read_conf "conf/sender";
+my $SENDMAIL = "/usr/sbin/sendmail -f $SENDER -t";
+
my %FIELDS = (
MAN => [qw[givenname surname mail]],
OPT => [qw[tel]]
@@ -36,7 +38,6 @@
my %ttconfig = (
INCLUDE_PATH => "templates",
- DEBUG => 1,
);
my $DBH = DBI->connect($DSN, undef, undef, {RaiseError=>1});
@@ -79,12 +80,14 @@
to => scalar(param("mail")),
url => "$SELF/$xxx.tmp"}, $sendmail)
or die $tt->error();
- close($sendmail);
+ close($sendmail)
+ or die "problem sending mail to "
+ . param("mail");
$sent = param("mail");
}
}
- $tt->process("access.tpl", {
+ $tt->process("html.access.tpl", {
sent => $sent,
warn => %warn ? \%warn : undef,
expires => $EXPIRATION,
@@ -107,7 +110,7 @@
time() - $time < (60 * $EXPIRATION) or die "EXPIRED";
};
if ($@) {
- $tt->process("denied.tpl", {
+ $tt->process("html.denied.tpl", {
url => $SELF,
}) or die $tt->error();
exit 0;
@@ -127,7 +130,7 @@
or die $tt->error();
close($sendmail);
- $tt->process("confirm.tpl", {
+ $tt->process("html.confirm.tpl", {
confirmed => $confirmed,
error => delete $data{error},
value => \%data}) or die $tt->error();
@@ -192,7 +195,7 @@
close($sendmail);
- $tt->process("form.ack.tpl", {
+ $tt->process("html.form.ack.tpl", {
value => \%value,
timestamp => $r{timestamp},
uuid => $r{uuid},
@@ -203,7 +206,7 @@
## Formular
- $tt->process("form.tpl", {
+ $tt->process("html.form.tpl", {
warn => %warn ? \%warn : undef,
value => {
givenname => scalar param("givenname"),
@@ -272,8 +275,10 @@
}
sub read_conf($) {
- open(my $_, $_[0]) or die "Can't open $_[0]: $!\n";
local $/ = undef;
+ open(my $f, $_[0]) or die "Can't open $_[0]: $!\n";
+ my $_ = <$f>;
s/^#.*//mg;
- return <$_>;
+ /^\s*(.*?)\s*$/s;
+ return $1;
}
--- a/templates/access.tpl Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-[%INCLUDE "head"%]
-
-[%IF !sent%]
-
- Schön, daß Du Dich anmelden möchtest. Um Mißbrauch zu werden wir Dir
- jetzt einen Link zusenden, den Du für die Anmeldung verwenden
- kannst.
-
- <p>
- Bitte gib dafür eine Mailadresse an, auf der Du
- in den nächsten [%expires%] Minuten erreichbar bist.
- Diese Adresse wird nirgendwo gespeichert.
-
- <form>
-
- [%IF warn.mail%]
- <div class="warn">
- Die Mailadresse sieht nicht gut aus.
- </div>
- [%END%]
-
- <label for="mail">Mail-Adresse</label>
- <input type="text" id="mail" name="mail"
- value="[%value.mail%]" class="[%warn.mail ? "warn" : "" %]" />
- <br>
- <input type="submit" name="submit" value="Los">
- </form>
-
-[%ELSE%]
-
- Vielen Dank. Eine Mail mit einem Anmeldelink wurde an Deine
- Mailadresse <u>[%sent%]</u> geschickt. Der Link ist [%expires%]
- Minuten gültig. Diese Adresse wurde von uns nicht gespeichert.
-
-[%END%]
-
-[%INCLUDE "foot"%]
--- a/templates/confirm.tpl Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-[%INCLUDE "head"%]
-
-[%IF error%]
-
- <div class="warn">
- Leider konnte die An- oder Abmeldung nicht bestätigt werden. Bitte überprüfe den
- verwendeten Link.
- </div>
-
-[%ELSIF confirmed%]
-
- Danke, Deine Anmeldung ist jetzt bestätigt. Folgende Daten haben wir von
- Dir gespeichert:
-
- <table>
- <tr><td>Vorname:</td><td>[%value.givenname%]</td></tr>
- <tr><td>Name:</td> <td>[%value.surname%]</td></tr>
- <tr><td>Mail:</td> <td>[%value.mail%]</td></tr>
- [%IF value.tel%]
- <tr><td>Telefon:</td><td>[%value.tel%]</td></tr>
- [%END%]
- </table>
-
-[%ELSE%]
-
-Danke, Deine Daten wurden wieder gelöscht.
-
-[%END%]
-
-<p>
-Solltest Du weitere Fragen haben, kontaktiere bitte
-<a href="mailto:[%MAILTO%]">[%MAILTO%]</a>.
-
-[%INCLUDE "foot"%]
--- a/templates/denied.tpl Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-[%INCLUDE "head"%]
-
-<p>
-Tut uns leid, die angegebene URL oder Session existiert nicht oder nicht
-mehr. Bitte versuche es über
-<a href="[%url%]">[%url%]</a> noch einmal.
-
-<p>
-Danke für Dein Verständnis.
-
-[%INCLUDE "foot"%]
--- a/templates/foot Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<hr/>
-<div align="right">
- <a href="https://ssl.schlittermann.de/hg/oa">Scripting</a>
- © 2011
- <a href="mailto:hs@schlittermann.de">Heiko Schlittermann</a>
-</body>
-</html>
--- a/templates/form.ack.tpl Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-[%INCLUDE "head"%]
-[%USE date%]
-
-[%IF timestamp %]
-
- Deine Daten stehen bereits in unserer Datenbank. Wir haben Dir den
- Link zur Bestätigung noch einmal an die hinterlegte
- Mailadresse (<u>[%value.mail%]</u>) geschickt.
-
- (Zeitstempel der Eintragung: [%date.format(timestamp, locale = "de_DE")%])
-
-[%ELSE%]
-
- <p>
- Vielen Dank für Deine Anmeldung.
- Du erhälst jetzt per Mail an [%value.mail%] einen
- Link, mit dem Du bitte die Anmeldung bestätigst. Bevor Du damit die
- Anmeldung nicht bestätigst, wird sie nicht weiter bearbeitet.
-
- <p>
- Folgende Daten haben wir jetzt gespeichert:
-
- <table>
- <tr><td>Vorname:</td><td>[%value.givenname%]</td></tr>
- <tr><td>Name:</td> <td>[%value.surname%]</td></tr>
- <tr><td>Mail:</td> <td>[%value.mail%]</td></tr>
- [%IF value.tel %]
- <tr><td>Telefon:</td><td>[%value.tel%]</td></tr>
- [%END%]
- </table>
-
-[%END%]
-
-[%INCLUDE "foot"%]
--- a/templates/form.tpl Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-[%INCLUDE "head"%]
-<p>
-Nach dem Ausfüllen des Formulars werden wir Dir noch per Mail an die im
-Formular angegebene Adresse einen Link schicken, mit dem Du bitte die
-Anmeldung vervollständigst.
-
-
-[%IF warn%]
- <div class="warn">
- Bitte überprüfe die markierten Felder noch einmal.
- </div>
-[%END%]
-
-<form accept-charset="UTF-8">
-
- <p>
- Die folgenden Felder sind Pflicht. Ohne diese Angaben wird die Anmeldung nicht
- bearbeitet.
-
- <p>
- <label for="givenname">Vorname</label>
- <input id="givenname" name="givenname" type="text"
- value="[%value.givenname%]" class="[%warn.givenname ? "warn" :"" %]" />
- <font class="warn">[%warn.givenname%]</font>
- <br/>
-
- <label for="surname">Name</label>
- <input id="surname" name="surname" type="text"
- value="[%value.surname%]" class="[%warn.surname ? "warn" : ""%]"/>
- <font class="warn">[%warn.surname%]</font>
- <br/>
-
- <label for="mail">Mail-Adresse</label>
- <input id="mail" name="mail" type="text"
- value="[%value.mail%]" class="[%warn.mail ? "warn" : "" %]"/>
- <font class="warn">[%warn.mail%]</font>
- <br/>
-
- <p>
- Die Telefonnummer benötigen wir, um Dich gegebenenfalls anrufen zu
- können, sie ist nicht Pflicht, aber sehr hilfreich.
-
- <p>
- <label for="tel">Telefon</label>
- <input id="tel" name="tel" type="text"
- value="[%value.tel%]" class="[%warn.tel%] ? "warn" : "" %]"/>
- <font class="warn">[%warn.tel%]</font>
- <br/>
-
- <p>
- <label>[und los]</label>
- <input type="submit" name="submit" value="Anmelden"/>
- <input type="submit" name="clear" value="Löschen"/>
-
-</form>
-[%INCLUDE "foot"%]
--- a/templates/head Mon Jul 04 17:26:13 2011 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html;charset=UTF8">
-<style type="text/css">
-<!--
- .warn { color:red; border-color:red; }
- form * label { display:block; float:left; width:12ex; }
--->
-</style>
-</head>
-<body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.access.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,41 @@
+[%INCLUDE "html.head"%]
+
+[%IF !sent%]
+
+[% set MAILFROM "hs" %]
+
+ Schön, daß Du Dich anmelden möchtest. Um Mißbrauch zu erschweren,
+ werden wir Dir jetzt einen Link zusenden, den Du für die Anmeldung verwenden
+ kannst.
+
+ <p>
+ Bitte gib dafür eine Mailadresse an, auf der Du
+ in den nächsten [%expires%] Minuten erreichbar bist.
+ Diese Adresse wird nirgendwo gespeichert.
+
+ <form>
+
+ [%IF warn.mail%]
+ <div class="warn">
+ Die Mailadresse sieht nicht gut aus.
+ </div>
+ [%END%]
+
+ <label for="mail">Mail-Adresse</label>
+ <input type="text" id="mail" name="mail"
+ value="[%value.mail%]" class="[%warn.mail ? "warn" : "" %]" />
+ <br>
+ <input type="submit" name="submit" value="Los">
+ </form>
+
+[%ELSE%]
+
+ Vielen Dank. Eine Mail mit einem Anmeldelink wurde an Deine
+ Mailadresse <u>[%sent%]</u> geschickt. Absender der Mail ist
+ <a href="hs+retter@schlittermann.de">hs+retter@schlittermann.de</a>.
+ Der Link ist [%expires%] Minuten gültig. Diese Adresse wurde
+ von uns nicht gespeichert.
+
+[%END%]
+
+[%INCLUDE "html.foot"%]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.confirm.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,34 @@
+[%INCLUDE "html.head"%]
+
+[%IF error%]
+
+ <div class="warn">
+ Leider konnte die An- oder Abmeldung nicht bestätigt werden. Bitte überprüfe den
+ verwendeten Link.
+ </div>
+
+[%ELSIF confirmed%]
+
+ Danke, Deine Anmeldung ist jetzt bestätigt. Folgende Daten haben wir von
+ Dir gespeichert:
+
+ <table>
+ <tr><td>Vorname:</td><td>[%value.givenname%]</td></tr>
+ <tr><td>Name:</td> <td>[%value.surname%]</td></tr>
+ <tr><td>Mail:</td> <td>[%value.mail%]</td></tr>
+ [%IF value.tel%]
+ <tr><td>Telefon:</td><td>[%value.tel%]</td></tr>
+ [%END%]
+ </table>
+
+[%ELSE%]
+
+Danke, Deine Daten wurden wieder gelöscht.
+
+[%END%]
+
+<p>
+Solltest Du weitere Fragen haben, kontaktiere bitte
+<a href="mailto:[%MAILTO%]">[%MAILTO%]</a>.
+
+[%INCLUDE "html.foot"%]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.denied.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,11 @@
+[%INCLUDE "html.head"%]
+
+<p>
+Tut uns leid, die angegebene URL oder Session existiert nicht oder nicht
+mehr. Bitte versuche es über
+<a href="[%url%]">[%url%]</a> noch einmal.
+
+<p>
+Danke für Dein Verständnis.
+
+[%INCLUDE "html.foot"%]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.foot Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,7 @@
+<hr/>
+<div align="right">
+ <a href="https://ssl.schlittermann.de/hg/oa">Scripting</a>
+ © 2011
+ <a href="mailto:hs@schlittermann.de">Heiko Schlittermann</a>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.form.ack.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,34 @@
+[%INCLUDE "html.head"%]
+[%USE date%]
+
+[%IF timestamp %]
+
+ Deine Daten stehen bereits in unserer Datenbank. Wir haben Dir den
+ Link zur Bestätigung noch einmal an die hinterlegte
+ Mailadresse (<u>[%value.mail%]</u>) geschickt.
+
+ (Zeitstempel der Eintragung: [%date.format(timestamp, locale = "de_DE")%])
+
+[%ELSE%]
+
+ <p>
+ Vielen Dank für Deine Anmeldung.
+ Du erhälst jetzt per Mail an [%value.mail%] einen
+ Link, mit dem Du bitte die Anmeldung bestätigst. Bevor Du damit die
+ Anmeldung nicht bestätigst, wird sie nicht weiter bearbeitet.
+
+ <p>
+ Folgende Daten haben wir jetzt gespeichert:
+
+ <table>
+ <tr><td>Vorname:</td><td>[%value.givenname%]</td></tr>
+ <tr><td>Name:</td> <td>[%value.surname%]</td></tr>
+ <tr><td>Mail:</td> <td>[%value.mail%]</td></tr>
+ [%IF value.tel %]
+ <tr><td>Telefon:</td><td>[%value.tel%]</td></tr>
+ [%END%]
+ </table>
+
+[%END%]
+
+[%INCLUDE "html.foot"%]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.form.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,56 @@
+[%INCLUDE "html.head"%]
+<p>
+Nach dem Ausfüllen des Formulars werden wir Dir noch per Mail an die im
+Formular angegebene Adresse einen Link schicken, mit dem Du bitte die
+Anmeldung vervollständigst.
+
+
+[%IF warn%]
+ <div class="warn">
+ Bitte überprüfe die markierten Felder noch einmal.
+ </div>
+[%END%]
+
+<form accept-charset="UTF-8">
+
+ <p>
+ Die folgenden Felder sind Pflicht. Ohne diese Angaben wird die Anmeldung nicht
+ bearbeitet.
+
+ <p>
+ <label for="givenname">Vorname</label>
+ <input id="givenname" name="givenname" type="text"
+ value="[%value.givenname%]" class="[%warn.givenname ? "warn" :"" %]" />
+ <font class="warn">[%warn.givenname%]</font>
+ <br/>
+
+ <label for="surname">Name</label>
+ <input id="surname" name="surname" type="text"
+ value="[%value.surname%]" class="[%warn.surname ? "warn" : ""%]"/>
+ <font class="warn">[%warn.surname%]</font>
+ <br/>
+
+ <label for="mail">Mail-Adresse</label>
+ <input id="mail" name="mail" type="text"
+ value="[%value.mail%]" class="[%warn.mail ? "warn" : "" %]"/>
+ <font class="warn">[%warn.mail%]</font>
+ <br/>
+
+ <p>
+ Die Telefonnummer benötigen wir, um Dich gegebenenfalls anrufen zu
+ können, sie ist nicht Pflicht, aber sehr hilfreich.
+
+ <p>
+ <label for="tel">Telefon</label>
+ <input id="tel" name="tel" type="text"
+ value="[%value.tel%]" class="[%warn.tel%] ? "warn" : "" %]"/>
+ <font class="warn">[%warn.tel%]</font>
+ <br/>
+
+ <p>
+ <label>[und los]</label>
+ <input type="submit" name="submit" value="Anmelden"/>
+ <input type="submit" name="clear" value="Löschen"/>
+
+</form>
+[%INCLUDE "html.foot"%]
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/templates/html.head Mon Jul 04 21:30:38 2011 +0200
@@ -0,0 +1,11 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html;charset=UTF8">
+<style type="text/css">
+<!--
+ .warn { color:red; border-color:red; }
+ form * label { display:block; float:left; width:12ex; }
+-->
+</style>
+</head>
+<body>
--- a/templates/mail.confirmed.tpl Mon Jul 04 17:26:13 2011 +0200
+++ b/templates/mail.confirmed.tpl Mon Jul 04 21:30:38 2011 +0200
@@ -9,7 +9,7 @@
unter 0172 7909055.
Bitte vergiß nicht, den Betrag von 50€ zu überweisen.
-[%ELSE%]
+[%ELSE-%]
Du bist *nicht* zum Retterpackkurs angemeldet. Alle Deine uns bekannten
Daten wurden wieder gelöscht.
[%END%]