2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

Do \r\n in telnet mode

git-svn-id: https://svn.fhem.de/fhem/trunk@1616 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2012-06-14 19:23:53 +00:00
parent deba93470a
commit 88b7923f28

View File

@ -463,8 +463,7 @@ while (1) {
$client{$fd}{addr} = "$caddr:$port"; $client{$fd}{addr} = "$caddr:$port";
$client{$fd}{buffer} = ""; $client{$fd}{buffer} = "";
Log 4, "Connection accepted from $client{$fd}{addr}"; Log 4, "Connection accepted from $client{$fd}{addr}";
# Telnet is strange: tell "Will echo" to supress password syswrite($fd, sprintf("%c%c%cPassword: ", 255, 251, 1)) # WILL ECHO
syswrite($fd, sprintf("%c%c%cPassword: ", 255, 251, 1))
if($attr{global}{portpassword}); if($attr{global}{portpassword});
} }
@ -643,13 +642,14 @@ AnalyzeInput($)
{ {
my $c = shift; my $c = shift;
my @ret; my @ret;
my $gotCmd;
while($client{$c}{buffer} =~ m/\n/) { while($client{$c}{buffer} =~ m/\n/) {
my ($cmd, $rest) = split("\n", $client{$c}{buffer}, 2); my ($cmd, $rest) = split("\n", $client{$c}{buffer}, 2);
$client{$c}{buffer} = $rest; $client{$c}{buffer} = $rest;
if($attr{global}{portpassword} && !$client{$c}{pwEntered}) { if($attr{global}{portpassword} && !$client{$c}{pwEntered}) {
syswrite($client{$c}{fd}, sprintf("%c%c%c\n", 255, 252, 1)); # Wont echo. syswrite($client{$c}{fd}, sprintf("%c%c%c\r\n", 255, 252, 1)); # WONT ECHO
if($attr{global}{portpassword} eq $cmd) { if($attr{global}{portpassword} eq $cmd) {
$client{$c}{pwEntered} = 1; $client{$c}{pwEntered} = 1;
next; next;
@ -658,7 +658,7 @@ AnalyzeInput($)
return; return;
} }
} }
$gotCmd = 1;
if($cmd) { if($cmd) {
if($cmd =~ m/\\ *$/) { # Multi-line if($cmd =~ m/\\ *$/) { # Multi-line
$client{$c}{prevlines} .= $cmd . "\n"; $client{$c}{prevlines} .= $cmd . "\n";
@ -678,8 +678,11 @@ AnalyzeInput($)
my $ret = ""; my $ret = "";
$ret .= (join("\n", @ret) . "\n") if(@ret); $ret .= (join("\n", @ret) . "\n") if(@ret);
$ret .= ($client{$c}{prevlines} ? "> " : "fhem> ") $ret .= ($client{$c}{prevlines} ? "> " : "fhem> ")
if($client{$c}{prompt} && !$client{$c}{rcvdQuit}); if($gotCmd && $client{$c}{prompt} && !$client{$c}{rcvdQuit});
syswrite($client{$c}{fd}, $ret) if($ret); if($ret) {
$ret =~ s/\n/\r\n/g if($attr{global}{portpassword});
syswrite($client{$c}{fd}, $ret);
}
DoClose($c) if($client{$c}{rcvdQuit}); DoClose($c) if($client{$c}{rcvdQuit});
} }