[mq]: wip
authorheiko
Mon, 04 Jul 2011 21:30:38 +0200
changeset 10 fd14fab1744d
parent 7 c89c297e5d53
child 11 d5fe97443919
[mq]: wip
conf.example/sender
conf.example/subject
index.cgi
templates/access.tpl
templates/confirm.tpl
templates/denied.tpl
templates/foot
templates/form.ack.tpl
templates/form.tpl
templates/head
templates/html.access.tpl
templates/html.confirm.tpl
templates/html.denied.tpl
templates/html.foot
templates/html.form.ack.tpl
templates/html.form.tpl
templates/html.head
templates/mail.confirmed.tpl
--- /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>
-    &copy; 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>
+    &copy; 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%]