Hallo,
Ich habe ein Password Hilfsmodul geschrieben um Passwörter entsprechend zu verwalten. Bedeutet speichern, auslesen, löschen und ändern.
Die Passwörter werden als md5 Hash (sofern Digest::MD5 vorhanden ist, ansonstern Klartext) im keyFileName (default uniqueID) abgespeichert.
Beispiel Anwendung:
Klasse einbinden und global im Modul ein Objekthash mittels des Constructors erzeugen
use FHEM::Core::Authentication::Passwords qw(:ALL);
my passwdObj = FHEM::Core::Authentication::Passwords->new();
Passwort speichern
my ($passResp,$passErr);
($passResp,$passErr) = $passwdObj->setStorePassword($name,$password);
Passwort löschen
my ($passResp,$passErr);
($passResp,$passErr) = $passwdObj->setDeletePassword($name);
Ist $passResp definiert und $passErr ist undef wurde das Passwort erfolgreich abgespeichert. Bei einem Fehler bekommt $passResp ein undef und $passErr enthält den Fehlergrund
Es muß nicht zwingend eine globale Objekthash erzeugt werden. Man kann auch ein Objekthash in der Define erzeugen und an den Instanz Hash binden.
sub Define {
my $hash = shift // return;
my $aArg = shift // return;
.....
### create password object to handle pass keystore
$hash->{helper}->{passObj} = FHEM::Core::Authentication::Passwords->new();
.....
}
Wenn Devices/Instanzen umbenannt werden so muss man eine Rename Funktion in seinem Modul haben welche entsprechend in der Initialize Funktion zugewiesen wurde.
$hash->{RenameFn} = \&Rename;
Die Funktion könnte dann zum Beispiel so aussehen.
sub Rename {
my $new = shift;
my $old = shift;
my $hash = $::defs{$new};
my ($passResp,$passErr);
($passResp,$passErr) = $hash->{helper}->{passObj}->setRename($new,$old);
::Log3($new, 1,
qq(MODULNAME \(${new}\) - error while change the password hash after rename - $passErr))
if ( !defined($passResp)
and defined($passErr) );
::Log3($new, 1,
qq(MODULNAME \(${new}\) - change password hash after rename successfully))
if ( defined($passResp)
and !defined($passErr) );
return;
}
Spricht etwas gegen das einchecken ins SVN?
Das Modul befindet sich seit heute im SVN
Grüße
Marko