98_telnet.pm: allow to listen on special interfaces.

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@10212 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2015-12-20 11:31:26 +00:00
parent d02f779460
commit db7a8d2a6e
2 changed files with 16 additions and 10 deletions

View File

@ -147,8 +147,7 @@ telnet_Define($$$)
return "Usage: define <name> telnet { [IPV6:]<tcp-portnr> [global] | ". return "Usage: define <name> telnet { [IPV6:]<tcp-portnr> [global] | ".
" [IPV6:]serverName:port }" " [IPV6:]serverName:port }"
if(!($isServer || $isClient) || if(!($isServer || $isClient) ||
($isClient && $global) || ($isClient && $global));
($global && $global ne "global"));
# Make sure that fhem only runs once # Make sure that fhem only runs once
if($isServer) { if($isServer) {
@ -366,15 +365,19 @@ telnet_ActivateInform($;$)
<a name="telnetdefine"></a> <a name="telnetdefine"></a>
<b>Define</b> <b>Define</b>
<ul> <ul>
<code>define &lt;name&gt; telnet &lt;portNumber&gt; [global]</code><br> <code>define &lt;name&gt; telnet &lt;portNumber&gt;
[global|hostname]</code><br>
or<br> or<br>
<code>define &lt;name&gt; telnet &lt;servername&gt:&lt;portNumber&gt;</code> <code>define &lt;name&gt; telnet &lt;servername&gt:&lt;portNumber&gt;</code>
<br><br> <br><br>
First form, <b>server</b> mode:<br> First form, <b>server</b> mode:<br>
Listen on the TCP/IP port <code>&lt;portNumber&gt;</code> for incoming Listen on the TCP/IP port <code>&lt;portNumber&gt;</code> for incoming
connections. If the second parameter global is <b>not</b> specified, connections. If the second parameter is <b>not</b> specified,
the server will only listen to localhost connections. 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.
<br> <br>
To use IPV6, specify the portNumber as IPV6:&lt;number&gt;, in this To use IPV6, specify the portNumber as IPV6:&lt;number&gt;, in this
case the perl module IO::Socket:INET6 will be requested. case the perl module IO::Socket:INET6 will be requested.
@ -512,16 +515,19 @@ telnet_ActivateInform($;$)
<a name="telnetdefine"></a> <a name="telnetdefine"></a>
<b>Define</b> <b>Define</b>
<ul> <ul>
<code>define &lt;name&gt; telnet &lt;portNumber&gt; [global]</code><br> <code>define &lt;name&gt; telnet &lt;portNumber&gt;
oder<br> [global|hostname]</code><br> oder<br>
<code>define &lt;name&gt; telnet &lt;servername&gt:&lt;portNummer&gt;</code> <code>define &lt;name&gt; telnet &lt;servername&gt:&lt;portNummer&gt;</code>
<br><br> <br><br>
Erste Form, <b>Server</b>-mode:<br> Erste Form, <b>Server</b>-mode:<br>
&Uuml;berwacht den TCP/IP-Port <code>&lt;portNummer&gt;</code> auf &Uuml;berwacht den TCP/IP-Port <code>&lt;portNummer&gt;</code> auf
ankommende Verbindungen. Wenn der zweite Parameter gobal <b>nicht</b> ankommende Verbindungen. Wenn der zweite Parameter <b>nicht</b>
angegeben wird, wird der Server nur auf Verbindungen von localhost achten. 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&ouml;ren, ansonsten wird der Parameter als Hostname
oder Adresse interpretiert, und nur diese lokale Adresse bedient.
<br> <br>
F&uuml;r den Gebrauch von IPV6 muss die Portnummer als IPV6:&lt;nummer&gt; F&uuml;r den Gebrauch von IPV6 muss die Portnummer als IPV6:&lt;nummer&gt;
angegeben werden, in diesem Fall wird das Perl-Modul IO::Socket:INET6 angegeben werden, in diesem Fall wird das Perl-Modul IO::Socket:INET6

View File

@ -25,7 +25,7 @@ TcpServer_Open($$$)
my @opts = ( my @opts = (
Domain => ($hash->{IPV6} ? AF_INET6() : AF_UNSPEC), # Linux bug 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, LocalPort => $port,
Listen => 10, Listen => 10,
Blocking => ($^O =~ /Win/ ? 1 : 0), # Needed for .WRITEBUFFER@darwin Blocking => ($^O =~ /Win/ ? 1 : 0), # Needed for .WRITEBUFFER@darwin