Moritz Bunkus [Wed, 29 Aug 2012 15:58:14 +0000 (17:58 +0200)]
Task-Server-Control: Auch STDERR vom ausgeführten Kommando (start/stop) auslesen
Das geht leider nicht mehr mit
my $output = `$exe 2>&1`;
weil das nach dem Forken irgendwie einen Zombie-Prozess hinterlässt
und Perl aus dem `...` nicht zurückkehrt. Also die Variante mit
Umleitung in temporäre Datei wählen.
Moritz Bunkus [Mon, 27 Aug 2012 13:00:48 +0000 (15:00 +0200)]
Login-Maske: Zu Menu redirecten falls bereits eingeloggt
Wenn man bereits eingeloggt ist und irgendwo im Programm zu login.pl
redirectet wird (z.B. beim Speichern der Benutzereinstellungen), so
wurde durch die Umstellung des Loginmechanismusses neulich leider die
Loginmaske erneut angezeigt, obwohl eine anständig authentifizierte
Session vorliegt.
Moritz Bunkus [Fri, 24 Aug 2012 10:03:48 +0000 (12:03 +0200)]
Via SMTP Zeilen normalisiert verschicken
Der SMTP-Standard (RFC 821) verlangt, dass Zeilen nicht länger als
1000 Zeichen sind und mit <CRLF> abgeschlossen werden.
Anhänge kommen in der "sub print" aber als ein großer Blob an, der
zwar schon nach Zeilen aufgespalten ist, aber trotzdem zu groß ist,
sodass der annehmende Server teilweise komische Dinge mit der Eingabe
tut.
Also wirklich nur Zeile für Zeile schicken sowie dafür sorgen, dass
alle Zeilen auch wirklich mit <CRLF> aka \r\n abgeschlossen werden.
Moritz Bunkus [Fri, 24 Aug 2012 09:15:30 +0000 (11:15 +0200)]
Beim Anlegen der Auth-DB/-Tabellen Admin-Passwort mitschleifen
Solange die Auth-Strukturen nicht existieren, muss das Admin-Passwort
als Zeichen des gültigen Logins als Hiddens mitgeschliffen werden. Das
war auch vorher schon so, nur steht das vom Benutzer eingegebene
Passwort seit 670f76a für die Controller nicht mehr als Formvariable
zur Verfügung.
Moritz Bunkus [Fri, 24 Aug 2012 08:05:21 +0000 (10:05 +0200)]
Ermöglichen, dass Templates in SL/Dispatcher.pm übersetzt werden
In Dispatcher.pm erledigt die Sub "show_error" das Rendern. Ihr wird
der Name des Templates übergeben. Das erkennt aber
"scripts/locales.pl" nicht als Render-Anweisung und übersetzt die
Templates deshalb nicht automatisch. Also muss Dispatcher.pm etwas
nachhelfen und explizit erwähnen, dass diese Templates übersetzt
werden sollen.
Moritz Bunkus [Wed, 22 Aug 2012 16:24:12 +0000 (18:24 +0200)]
E-Mails auch per SMTP verschicken können
Default ist nun, via SMTP über localhost zu verschicken. Mögliche
Optionen sind: TLS oder SSL-Verschlüsselung, Authentifizierung,
Verwendung von Sendmail anstelle von SMTP (wie bisher).
Moritz Bunkus [Fri, 17 Aug 2012 11:16:45 +0000 (13:16 +0200)]
Formularfelder und Session-Keys für Logins umbenannt
Ziel: Ermöglichen, dass Login & Passwort auch wieder per
Formularfelder mit jedem Request übertragen werden, aber nicht mehr so
offensichtlich im "Formularfeldernamensraum" rumgeistern -- sondern
leicht aussortierbar sind. Die Formularfelder, die mit "{AUTH}"
starten, werden vom Dispatcher nach erfolgter Loginüberprüfung
automatisch entfernt, bevor die Kontrolle an die Controller/Actions
übergeben wird (unabhängig vom Routingtyp).
Vorher waren Formularfelder sowie die Session-Keys für User-Logins
"login" und "password", für Admin-Login "rpw".
Jetzt:
- Formularfelder: für User-Logins "{AUTH}login" und "{AUTH}password",
für Admin-Login "{AUTH}admin_password".
- Session-Keys: jeweils ohne "{AUTH}", sprich für User-Logins
weiterhin "login" und "password", für Admin-Login neu
"admin_password".
Moritz Bunkus [Fri, 17 Aug 2012 10:24:58 +0000 (12:24 +0200)]
Dispatcher: Auch Controller ermöglichen, die Admin-Login benötigen
Default ist für Controller, dass all ihre Funktionen User-Logins
benötigen. Kann ein Controller ändern, indem er die Sub
"get_auth_level" überschreibt (siehe Doku in
SL::Contrller::Base). Dies schafft die Basis dafür, auch Admin-Dinge
in der neuen Controller-Architektur zu implementieren.
Für die Zukunft kann man leicht ein weiteres Level neben 'user' und
'admin' einbauen, z.B. 'none' für Actions, die definitiv kein Login
benötigen.
Funktionierendes Beispiel für einen solchen Controller (Aufruf dann
über URL ".../controller.pl?action=AdminTest/proof_of_concept"):
package SL::Controller::AdminTest;
use strict;
use parent qw(SL::Controller::Base);
use Rose::Object::MakeMethods::Generic
(
scalar => [ qw(business) ],
);
#
# actions
#
sub action_proof_of_concept {
my ($self) = @_;
$::form->header;
print $self->render(<<EOHTML, { inline => 1 });
<body>
<p>I've been called with an ADMIN login only!</p>
</body>
</html>
EOHTML
}