FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: Tompkin am 31 Mai 2015, 12:00:32

Titel: Verbindung zu EIBD über Unix Sockets
Beitrag von: Tompkin am 31 Mai 2015, 12:00:32
Hallo!

Da ich es ungern mag TCP Ports offen zu halten und noch dazu mit nicht vorhandenen Sicherheitsfunktionen im EIBD, würde ich es mir wünschen, wenn FHEM die Unix Sockets Verbindung unterstützen würde. Nein, mit iptables will ich auch nicht hantieren.

Ich denke aber mal, dass vermutlich keiner Zeit und Lust dazu haben wird, habe ich es selbst gebaut:

--- 00_TUL.pm-orig      2015-05-31 10:20:10.514377428 +0200
+++ 00_TUL.pm   2015-05-31 10:48:50.770847746 +0200
@@ -475,6 +475,26 @@
     $selectlist{"$name.$dev"} = $hash;

   }
+  elsif($dev =~ m/^(ueibd):(.+)$/) { # ueibd:/path/to/unix.socket
+    my $dev = $2;
+
+    my $conn = IO::Socket::UNIX->new(Type => SOCK_STREAM(), Peer => $dev);
+
+    if(!$conn) {
+      return undef if($reopen);
+      Log(3, "Can't open $dev: $!");
+      $readyfnlist{"$name.$dev"} = $hash;
+      $hash->{STATE} = "disconnected";
+      return "";
+    }
+
+    $hash->{DevType} = 'EIBD';
+    $hash->{TCPDev} = $conn;
+    $hash->{FD} = $conn->fileno();
+    delete($readyfnlist{"$name.$dev"});
+    $selectlist{"$name.$dev"} = $hash;
+
+  }
   elsif ($dev =~ m/^(tul|tpuart):(.+)$/) { # tpuart:ttydev[@baudrate] / USB/Serial device
     
     my $dev = $2;


Wäre super, wenn man das in die offiziellen Quellen integrieren könnte, gerne auch noch verbessert, da ich nicht der Perl Spezi bin.
Danke euch für das hammer Projekt!