Port Schließen

Hi,

weiß zufällig jemand, wie ich einen netzwerkport z.b. 80 aus IPS per skript schließen kann?

Ich möchte nicht das IPS von außen erreichbar ist wenn alle zuhause sind.

System laüft auf windows 7 und eine Fritzbox sorgt für die I-net verbindung

danke schon mal im vorraus.

MFG

Peter

Hallo
Ich nehme an du willst „intern“ schon noch auf Port 80 zugreifen und nur die
Freigabe in der Fritzbox aktivieren/deaktivieren ?

Dann schau mal hier :
http://www.ip-symcon.de/forum/threads/19030-Netzwerk-Freigaben-der-Fritzbox-per-IPS-steuern?p=169377#post169377

Da hatte ich schon mal vor längerem gesucht, habe es aber nicht wirklich zum laufen gebracht.
könnte natürlich auch der Firmware der FB liegen.

ich dachte es gibt vieleicht einen einfacheren zugriff auf die FB oder auf die Firewall

@1007

Läuft das bei Dir noch? Mit welcher FB? Firmware? Bin für alle Tipps offen. Siehe http://www.ip-symcon.de/forum/threads/19030-Netzwerk-Freigaben-der-Fritzbox-per-IPS-steuern

auf die schnelle. Hier ist Port 2 geschlossen, 1 und 3-7 offen sowie upnp ist ein

<?
include "inc_fritz_login.php";
$adresse = "http://{$fritzbox_ip}/internet/port_fw.lua?sid={$SID}";
//***************************************************//
	$port1 = "active_1=1&"; // ausschalten: ""
	$port2 = ""; // ausschalten: ""
	$port3 = "active_3=1&"; // ausschalten: ""
	$port4 = "active_4=1&"; // ausschalten: ""
	$port5 = "active_5=1&"; // ausschalten: ""
	$port6 = "active_6=1&"; // ausschalten: ""
	$port7 = "active_7=1&"; // ausschalten: ""
	$upnp = "box_upnp_control_activated=0"; // ausschalten: ""
//***************************************************//
   $ch = curl_init($adresse);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, ("$port1&$port2&$port3&$port4&$port5&$port6&$port7&$upnp") . "&sid=" . $SID. "&apply=");
   curl_exec($ch);
   curl_close($ch);

$StatusPage = file_get_contents($adresse);
	$p1=substr(strstr($StatusPage,'[1] = '),59,1);
	$p2=substr(strstr($StatusPage,'[2] = '),59,1);
	$p3=substr(strstr($StatusPage,'[3] = '),59,1);
	$p4=substr(strstr($StatusPage,'[4] = '),59,1);
	$p5=substr(strstr($StatusPage,'[5] = '),59,1);
	$p6=substr(strstr($StatusPage,'[6] = '),59,1);
	$p7=substr(strstr($StatusPage,'[7] = '),59,1);

print_r("P1:$p1
P2:$p2
P3:$p3
P4:$p4
P5:$p5
P6:$p6
P7:$p7
");
?>

Werde es heute Abend mal ausprobieren

kannst du mit noch die

include "inc_fritz_login.php";

schicken wenn ich nicht weis da drin steht wird es 100% nicht´s

MFG

Peter

inc_fritz_login.php

<?php 
 $fritzbox_ip = '192.168.1.1';
    $password    = 'xxxxx';
    $ein         = '1';
    $aus         = '0';

$ch = curl_init('http://' . $fritzbox_ip . '/login_sid.lua');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
$session_status_simplexml = simplexml_load_string($login);
if ($session_status_simplexml->SID != '0000000000000000')
{
   $SID = $session_status_simplexml->SID;
}
else
{
   $challenge = $session_status_simplexml->Challenge;
   $response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
   curl_setopt($ch, CURLOPT_POSTFIELDS, "response={$response}&page=/login_sid.lua");
   $sendlogin = curl_exec($ch);
   $session_status_simplexml = simplexml_load_string($sendlogin);
   if ($session_status_simplexml->SID != '0000000000000000')
       {
       $SID = $session_status_simplexml->SID;
       }
   else
       {
       echo "Fehler: Login fehlgeschlagen";
       return;
       }
}
?>

Hallo Jürg,
danke für den Schalt-Code. Funktioniert auch bei meiner 7490 OS 6.
Hast du auch schon was fürs WF gebaselt? Ich muss das Rad ja nicht neu erfinden.

Füge dieses Geschnipsel oben im Script über dem include ein Lege die entsprechenden Bool-Variablen an und als eigene Aktion das Script.

if($_IPS["SENDER"] == "WebFront")
	{
   	SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
	}
$port1 = GetValue(59880 /*[Fritzbox\Portfreigaben\Variablen\1]*/);
$name1 = IPS_GetName(59880 /*[Fritzbox\Portfreigaben\Variablen\1]*/);
$port2 = GetValue(38491 /*[Fritzbox\Portfreigaben\Variablen\2]*/);
$name2 = IPS_GetName(38491 /*[Fritzbox\Portfreigaben\Variablen\2]*/);
$port3 = GetValue(16487 /*[Fritzbox\Portfreigaben\Variablen\3]*/);
$name3 = IPS_GetName(16487 /*[Fritzbox\Portfreigaben\Variablen\3]*/);
$port4 = GetValue(16464 /*[Fritzbox\Portfreigaben\Variablen\4]*/);
$name4 = IPS_GetName(16464 /*[Fritzbox\Portfreigaben\Variablen\4]*/);
$port5 = GetValue(33433 /*[Fritzbox\Portfreigaben\Variablen\5]*/);
$name5 = IPS_GetName(33433 /*[Fritzbox\Portfreigaben\Variablen\5]*/);
$port6 = GetValue(21801 /*[Fritzbox\Portfreigaben\Variablen\6]*/);
$name6 = IPS_GetName(21801 /*[Fritzbox\Portfreigaben\Variablen\6]*/);
$port7 = GetValue(36800 /*[Fritzbox\Portfreigaben\Variablen\7]*/);
$name7 = IPS_GetName(36800 /*[Fritzbox\Portfreigaben\Variablen\7]*/);

$status1 = array("0"=>"", "1"=>"active_$name1=1&");
$status2 = array("0"=>"", "1"=>"active_$name2=1&");
$status3 = array("0"=>"", "1"=>"active_$name3=1&");
$status4 = array("0"=>"", "1"=>"active_$name4=1&");
$status5 = array("0"=>"", "1"=>"active_$name5=1&");
$status6 = array("0"=>"", "1"=>"active_$name6=1&");
$status7 = array("0"=>"", "1"=>"active_$name7=1&");

$port1 = str_replace("0", "","$status1[$port1]");
$port2 = str_replace("0", "","$status2[$port2]");
$port3 = str_replace("0", "","$status3[$port3]");
$port4 = str_replace("0", "","$status4[$port4]");
$port5 = str_replace("0", "","$status5[$port5]");
$port6 = str_replace("0", "","$status6[$port6]");
$port7 = str_replace("0", "","$status7[$port7]");

$upnp = "box_upnp_control_activated=0"; // ausschalten: ""

danke an smarthomeschweiz!

hat direkt funktioniert!

mfg

Peter

Hallo zusammen,
kann mir jemand mal erklären wie ich das ganze ins WF eingebunden bekomme? Unb vor allem wie muss die inc_fritz_login.php eingebunden werden? Ich denke nicht im Ordner c:\IP-Symcon\scripts\ entsprechend die Datei ablegen, oder?

Hallo Jürg,

vielen Dank für den Code fürs WF und sorry für die späte Rückmeldung.

Funtioniert. FB OS 6.20

@kirus22:

  • für die Login ein neues Script beliebigen Namens anlegen und den Inhalt von Jürgs Login reinkopieren und die Variablen IP u Password anpassen. Ich hab mir dazu ganz oben in meinem Baum eine Kategorie Global angelegt in der ich solche Scripts mit Variablen oder Logins Pflege die ich in vielen anderene Scripts verwende.

  • eine neue Kategorie beliebigen Namens anlegen und in dieser …

  • für das Schaltscript u.g. Inhalt in ein Script beliebigen Namens kopieren. Das Schript wird Versteckt.

  • ich hab mir noch ein Bool-Variablenprofil gemacht mit false-closed und true-opend

  • unter dem Script im Baum für jeden Port eine BoolVariablemit Namen 1 - 7 anlegen und jeder das Variablenprofil und das Schaltscript als Actionscript zuweisen.

  • die Variablen im 1. Block des Schaltscripts entsprechend den IDs Deiner Boolvariablen und den Dateinamen der Login anpassen.

  • Jetzt noch die Kategorie ins WF einbinden und los gehts.

  • Ich hab mir noch ganz unten im Baum eine Kategorie WFs angelegt in dem ich wiederum Kategorien für verschiedene WFs habe. In denen erstelle ich dann wieder Kategorien die meine WFs abbilden. In diese Kategorien verlinke ich dann meine logisch kategorisierten Codes.
    Geht nicht mit der Basic.

<?
//http://www.ip-symcon.de/forum/threads/25241-Port-Schlie%C3%9Fen?p=231790#post231790
if($_IPS["SENDER"] == "WebFront")
    {
       SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
    }
$port1 = GetValue(51075 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\1]*/ );
$name1 = IPS_GetName(51075 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\1]*/ );
$port2 = GetValue(37770 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\2]*/ );
$name2 = IPS_GetName(37770 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\2]*/ );
$port3 = GetValue(49586 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\3]*/ );
$name3 = IPS_GetName(49586 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\3]*/ );
$port4 = GetValue(19561 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\4]*/ );
$name4 = IPS_GetName(19561 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\4]*/ );
$port5 = GetValue(44059 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\5]*/ );
$name5 = IPS_GetName(44059 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\5]*/ );
$port6 = GetValue(40478 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\6]*/ );
$name6 = IPS_GetName(40478 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\6]*/ );
$port7 = GetValue(19061 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\7]*/ );
$name7 = IPS_GetName(19061 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\7]*/ );

//print_r($port7." - ".$name7);

$status1 = array("0"=>"", "1"=>"active_$name1=1&");
$status2 = array("0"=>"", "1"=>"active_$name2=1&");
$status3 = array("0"=>"", "1"=>"active_$name3=1&");
$status4 = array("0"=>"", "1"=>"active_$name4=1&");
$status5 = array("0"=>"", "1"=>"active_$name5=1&");
$status6 = array("0"=>"", "1"=>"active_$name6=1&");
$status7 = array("0"=>"", "1"=>"active_$name7=1&");

$port1 = str_replace("0", "","$status1[$port1]");
$port2 = str_replace("0", "","$status2[$port2]");
$port3 = str_replace("0", "","$status3[$port3]");
$port4 = str_replace("0", "","$status4[$port4]");
$port5 = str_replace("0", "","$status5[$port5]");
$port6 = str_replace("0", "","$status6[$port6]");
$port7 = str_replace("0", "","$status7[$port7]");

$upnp = "";//"box_upnp_control_activated=0"; // ausschalten: ""


include "FB-7490-01_Login_lua.ips.php";
$adresse = "http://{$fritzbox1}/internet/port_fw.lua?sid={$SID}";
//***************************************************//
   $ch = curl_init($adresse);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_POSTFIELDS, ("$port1&$port2&$port3&$port4&$port5&$port6&$port7&$upnp") . "&sid=" . $SID. "&apply=");
   curl_exec($ch);
   curl_close($ch);
//print_r($ch);
$StatusPage = file_get_contents($adresse);
//print_r($StatusPage);
    $p1=substr(strstr($StatusPage,'[1] = '),59,1);
    $p2=substr(strstr($StatusPage,'[2] = '),59,1);
    $p3=substr(strstr($StatusPage,'[3] = '),59,1);
    $p4=substr(strstr($StatusPage,'[4] = '),59,1);
    $p5=substr(strstr($StatusPage,'[5] = '),59,1);
    $p6=substr(strstr($StatusPage,'[6] = '),59,1);
    $p7=substr(strstr($StatusPage,'[7] = '),59,1);

//print_r("P1:$p1
P2:$p2
P3:$p3
P4:$p4
P5:$p5
P6:$p6
P7:$p7
");
SetValue(52495 /*[Logisch\Fritz\FritzBox7490-01\ÜberLoginLua\System\Freigaben\Freigaben\Letzte Änderung]*/, date("d.m.Y H:i:s", time())." Uhr");
?>