From 9ff91396ed1361d0b31b76a7f0a63fa7b515852e Mon Sep 17 00:00:00 2001 From: markusbloch Date: Sat, 17 Jan 2015 16:50:38 +0000 Subject: [PATCH] FB_CALLMONITOR: fix not working telnet login, when user based authentication is configured in FritzBox git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@7599 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 2 ++ fhem/FHEM/72_FB_CALLMONITOR.pm | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index c91e970ba..0128d2561 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - bugfix: FB_CALLMONITOR: fix not working telnet login, when user based + authentication is configured in FritzBox - feature: 02_RSS.pm: improved frontpage for RSS - bugfix: FB_CALLMONITOR regognize "user:" as login prompt for remote telnet connection (phonebook) diff --git a/fhem/FHEM/72_FB_CALLMONITOR.pm b/fhem/FHEM/72_FB_CALLMONITOR.pm index 41428031f..e738b6dbb 100755 --- a/fhem/FHEM/72_FB_CALLMONITOR.pm +++ b/fhem/FHEM/72_FB_CALLMONITOR.pm @@ -847,10 +847,10 @@ sub FB_CALLMONITOR_readRemotePhonebook($;$) return "no password available to access FritzBox" unless(defined($fb_pw)); - my $telnet = new Net::Telnet ( Timeout=>5, Errmode=>'return'); + my $telnet = new Net::Telnet ( Timeout=>10, Errmode=>'return'); - $telnet->errmode("return"); delete($hash->{helper}{READ_PWD}) if(exists($hash->{helper}{READ_PWD})); + unless($telnet->open($fb_ip)) { return "Error Connecting to FritzBox: ".$telnet->errmsg; @@ -866,7 +866,7 @@ sub FB_CALLMONITOR_readRemotePhonebook($;$) return "Couldn't recognize login prompt: ".$telnet->errmsg; } - if($match =~ /(login|user):/ and defined($fb_user)) + if($match =~ /(login|user):/i and defined($fb_user)) { Log3 $name, 4, "FB_CALLMONITOR ($name) - setting user to FritzBox: $fb_user"; $telnet->print($fb_user); @@ -875,19 +875,22 @@ sub FB_CALLMONITOR_readRemotePhonebook($;$) $telnet->close; return "Error giving password to FritzBox: ".$telnet->errmsg; } + + Log3 $name, 4, "FB_CALLMONITOR ($name) - giving password to FritzBox"; + $telnet->print($fb_pw); } - elsif($match =~ /(login|user):/ and not defined($fb_user)) + elsif($match =~ /(login|user):/i and not defined($fb_user)) { $telnet->close; return "FritzBox needs a username to login via telnet. Please provide a valid username/password combination"; } - elsif($match =~ /password:/) + elsif($match =~ /password:/i) { Log3 $name, 4, "FB_CALLMONITOR ($name) - giving password to FritzBox"; $telnet->print($fb_pw); } - unless($telnet->waitfor('/#\s*$/i')) + unless($telnet->waitfor('/#\s*$/')) { $telnet->close; my $err = $telnet->errmsg;