diff --git a/fhem/contrib/98_GoogleAuth.pm b/fhem/contrib/98_GoogleAuth.pm index 7f4053d57..16d2d9d61 100644 --- a/fhem/contrib/98_GoogleAuth.pm +++ b/fhem/contrib/98_GoogleAuth.pm @@ -16,43 +16,26 @@ sub GoogleAuth_Initialize($) { my ($hash) = @_; $hash->{DefFn} = "GoogleAuth_Define"; - $hash->{UndefFn} = "GoogleAuth_Undefine"; $hash->{DeleteFn} = "GoogleAuth_Delete"; $hash->{SetFn} = "GoogleAuth_Set"; $hash->{GetFn} = "GoogleAuth_Get"; - $hash->{detailFn} = "GoogleAuth_Detail"; + $hash->{FW_detailFn} = "GoogleAuth_Detail"; # $hash->{AttrFn} = "GoogleAuth_Attr"; $hash->{AttrList} = "ga_qrsize ". "$readingFnAttributes"; } -sub GoogleAuth_Detail { -#Debug "detailFn called"; -return; -} - sub GoogleAuth_Define($$) { my ($hash, $def) = @_; my $name = $hash->{NAME}; my @a = split("[ \t][ \t]*", $def); return "Usage: Use Google Authenticator" if(@a != 2); -## ich würde keine Prüfung auf bereits vorhandene GA machen, -## es kann durchaus Fälle geben, in denen man mehr als 1 Schlüssel definieren möchte - -# my $d = $modules{$hash->{TYPE}}{defptr}; -# return "$hash->{TYPE} device already defined as $d->{NAME}." if( defined($d) ); Log3($hash,4,"googleAuth $name: defined"); readingsSingleUpdate($hash,'state','defined',1); return undef; } -sub GoogleAuth_Undefine($$) { - my ($hash, $arg) = @_; - delete $modules{$hash->{TYPE}}{defptr}; - return undef; -} - sub GoogleAuth_Delete() { my ($hash, $arg) = @_; my $name = $hash->{NAME}; @@ -73,15 +56,13 @@ sub GoogleAuth_Set($$@) { setKeyValue("googleAuth$name",$secret_base32); # write to fhem keystore my $label = "FHEM%20Authentication%20$name"; - my $qrsize = AttrVal("$name",'ga_qrsize','200x200'); + my $qrsize = AttrVal($name,'ga_qrsize','200x200'); my $url = "otpauth://totp/$label?secret=$secret_base32"; my $qr_url = "https://chart.googleapis.com/chart?cht=qr&chs=$qrsize"."&chl=".uri_escape($url); - readingsSingleUpdate($hash,'qr_url',$qr_url,1); - my $ret = "<\/a>"; - return $ret; - ; - + readingsSingleUpdate($hash,'qr_url',$qr_url,0); + readingsSingleUpdate($hash,'state','active',1); + return undef; } return $usage; } @@ -113,6 +94,18 @@ sub GoogleAuth_Get($$@) { return $usage; } +sub GoogleAuth_Detail($@) { + my ($FW_wname, $d, $room, $pageHash) = @_; + my $qr_url = ReadingsVal($d,'qr_url',undef); + return unless defined($qr_url); + my $ret = "<\/a>
"; + return $ret; +} + + + +# helper functions + sub _ga_make_token_6($) { my $token = shift; while (length $token < 6) {