From a0b0403a05d7435ac1cfb21413b3c02c9a5e1fc9 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 20 Dec 2015 11:31:26 +0000 Subject: [PATCH] 98_telnet.pm: allow to listen on special interfaces. git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@10212 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_telnet.pm | 24 +++++++++++++++--------- fhem/FHEM/TcpServerUtils.pm | 2 +- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/fhem/FHEM/98_telnet.pm b/fhem/FHEM/98_telnet.pm index 19db579a3..44d6123f9 100644 --- a/fhem/FHEM/98_telnet.pm +++ b/fhem/FHEM/98_telnet.pm @@ -147,8 +147,7 @@ telnet_Define($$$) return "Usage: define telnet { [IPV6:] [global] | ". " [IPV6:]serverName:port }" if(!($isServer || $isClient) || - ($isClient && $global) || - ($global && $global ne "global")); + ($isClient && $global)); # Make sure that fhem only runs once if($isServer) { @@ -366,15 +365,19 @@ telnet_ActivateInform($;$) Define
    - define <name> telnet <portNumber> [global]
    + define <name> telnet <portNumber> + [global|hostname]
    + or
    define <name> telnet <servername>:<portNumber>

    First form, server mode:
    Listen on the TCP/IP port <portNumber> for incoming - connections. If the second parameter global is not specified, - the server will only listen to localhost connections. + connections. If the second parameter is not specified, + the server will only listen to localhost connections. If the second + parameter is global, telnet will listen on all interfaces, else it wil try + to resolve the parameter as a hostname, and listen only on this interface.
    To use IPV6, specify the portNumber as IPV6:<number>, in this case the perl module IO::Socket:INET6 will be requested. @@ -512,16 +515,19 @@ telnet_ActivateInform($;$) Define
      - define <name> telnet <portNumber> [global]
      - oder
      + define <name> telnet <portNumber> + [global|hostname]
      oder
      + define <name> telnet <servername>:<portNummer>

      Erste Form, Server-mode:
      Überwacht den TCP/IP-Port <portNummer> auf - ankommende Verbindungen. Wenn der zweite Parameter gobal nicht + ankommende Verbindungen. Wenn der zweite Parameter nicht angegeben wird, wird der Server nur auf Verbindungen von localhost achten. - + Falls der zweite Parameter global ist, dann wird telnet auf allen lokalen + Netzwerk-Interfaces zuhören, ansonsten wird der Parameter als Hostname + oder Adresse interpretiert, und nur diese lokale Adresse bedient.
      Für den Gebrauch von IPV6 muss die Portnummer als IPV6:<nummer> angegeben werden, in diesem Fall wird das Perl-Modul IO::Socket:INET6 diff --git a/fhem/FHEM/TcpServerUtils.pm b/fhem/FHEM/TcpServerUtils.pm index 2ddea3e39..a4ade2f3c 100644 --- a/fhem/FHEM/TcpServerUtils.pm +++ b/fhem/FHEM/TcpServerUtils.pm @@ -25,7 +25,7 @@ TcpServer_Open($$$) my @opts = ( Domain => ($hash->{IPV6} ? AF_INET6() : AF_UNSPEC), # Linux bug - LocalHost => ($global ? undef : "localhost"), + LocalHost => ($global ? ($global eq "global"? undef:$global) : "127.0.0.1"), LocalPort => $port, Listen => 10, Blocking => ($^O =~ /Win/ ? 1 : 0), # Needed for .WRITEBUFFER@darwin