Thema geschlossen
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 15
  1. #1
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Scripts für Fritzbox/Repeater/Fritzfon ab V2.5 und PHP 5.4.x

    Ab Version 2.5 gibt es einige Neuerungen. In diesem Zusammenhang hab ich die Scripts umgeschrieben.

    Scripts ab Version sind mit "Ab V2.5" gekennzeichnet. Alle anderen sollten normal laufen.

    Für einige Scripts werden 2 Extension benötigt. php_curl.dll und php_mbstring.dll

    Für Fragen, macht bitte einen eigenen Thread auf. Wer Scripts beisteuern will, nur zu. Ich füge sie gerne ein.
    Geändert von RWN (04.12.11 um 11:08 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  2. #2
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Systemlogs

    PHP-Code:
    <?
    $fritzbox_ip 
    'fritz.box'// Name oder IP eintragen
    $password    'xxxxx'// Passwort eintragen

    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);


    if (
    $session_status_simplexml->iswriteaccess == 1)
    {
       
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
        
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
       if (isset(
    $matches[1]) && $matches[1] != '0000000000000000')
       {
          
    $SID $matches[1];
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }
    curl_close($ch);

    // Log auslesen. Das gewünschte Log aktiviren.

    //$log = file("http://fritz.box/system/syslog.lua?tab=telefon&sid=".$SID); // Telefonie
    //$log = file("http://fritz.box/system/syslog.lua?tab=usb&sid=".$SID); // USB-Geräte
    //$log = file("http://fritz.box/system/syslog.lua?tab=internet&sid=".$SID); // Internetverbindung
    //$log = file("http://fritz.box/system/syslog.lua?tab=system&sid=".$SID); // System
    $log file("http://fritz.box/system/syslog.lua?tab=wlan&sid=".$SID); // Wlan

    print_r(utf8_decode($log)); // Ausgabe zum weiterverarbeiten

    ?>
    Geändert von RWN (23.11.11 um 20:26 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  3. #3
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Telefonbuch auslesen ab V2.5

    PHP-Code:
    <?
    ini_set
    ("max_execution_time"15);

    if(
    $_IPS['SENDER'] == "Variable" || $_IPS['SENDER'] == "Execute")
    {
        
    $fritzbox_ip 'fritz.box'// Name oder IP eingeben
        
    $fritzCfg    'http://fritz.box/cgi-bin/firmwarecfg';
        
    $telefonbuch 2// Auswahl des Telefonbuches
        
    $password    'xxxxx';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
            
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
           if (isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
        }

        
    curl_setopt($chCURLOPT_URL$fritzCfg);
        
    curl_setopt($chCURLOPT_POSTFIELDS, array("sid" => $SID"PhonebookId" => $telefonbuch"PhonebookExportName" => "Telefonbuch""PhonebookExport" => ""));
        
    $book curl_exec($ch);
       
    curl_close($ch);
    }

    $xml simplexml_load_string($book);

    foreach(
    $xml->phonebook->contact as $nummer => $value)
    {
        
    $nummer0 $value->telephony->number[0]."\r\n";
       
    $nummer1 $value->telephony->number[1]."\r\n";
       
    $nummer2 $value->telephony->number[2]."\r\n";
        
    $namen $value->person->realName."\r\n";
        
    $daten[] = array(trim($nummer0),trim($nummer1),trim($nummer2),trim($namen));
    }
    //print_r($daten);
    $rufnummer GetValue(30553 /*[Fritzbox\Anrufe\Anruf]*/); // Nummer vom Anrufer, Variable z.B. mit GetValue und Trigger auf das Script

    for($i=0$i<count($daten); $i++)
    {
        if((
    $daten[$i][0] == $rufnummer) || ($daten[$i][1] == $rufnummer) || ($daten[$i][2] == $rufnummer))
        {
            
    SetValue(10528 /*[Fritzbox\Anrufe\Name]*/utf8_decode($daten[$i][3])); // Ausgabe des Namen, z.B in Variable schreiben mit SetValue(xxxxx, utf8_decode($daten[$i][3]));
            
    echo utf8_decode($daten[$i][3]);
        }
    }

    ?>
    Geändert von RWN (04.12.11 um 10:28 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  4. #4
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Anrufbeantworter ab V2.5

    PHP-Code:
    <?
    if($_IPS['SENDER'] == "WebFront")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $password    'xxxxxx';
        
    $ein         '1';
        
    $aus         '0';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
            
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
           if(isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
        }

        if(
    $_IPS['VALUE'])
        {
            
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&tam:settings/TAM1/Active={$ein}");
            
    curl_exec($ch);
        }
        else
        {
           
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&tam:settings/TAM1/Active={$aus}");
           
    curl_exec($ch);
        }
        
    curl_close($ch);
        
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    }

    ?>
    Geändert von RWN (04.12.11 um 10:29 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  5. #5
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Wlan ab V2.5

    PHP-Code:
    <?
    if($_IPS['SENDER'] == "WebFront")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $password    'xxxxxx';
        
    $ein         '1';
        
    $aus         '0';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
            
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
           if(isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
        }

        if(
    $_IPS['VALUE'])
        {
            
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&wlan:settings/ap_enabled={$ein}");
            
    curl_exec($ch);
        }
        else
        {
           
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&wlan:settings/ap_enabled={$aus}");
           
    curl_exec($ch);
        }
        
    curl_close($ch);
        
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    }

    ?>
    Geändert von RWN (04.12.11 um 10:29 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  6. #6
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Fernanschluss ab V2.5

    PHP-Code:
    <?
    if($_IPS['SENDER'] == "WebFront")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $password    'xxxxx';
        
    $ein         '1';
        
    $aus         '0';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
            
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
           if(isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
        }

        if(
    $_IPS['VALUE'])
        {
            
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&aura:settings/enabled={$ein}");
            
    curl_exec($ch);
        }
        else
        {
           
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&aura:settings/enabled={$aus}");
           
    curl_exec($ch);
        }
        
    curl_close($ch);
        
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    }

    ?>
    Geändert von RWN (04.12.11 um 10:29 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  7. #7
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Anrufen über die Wählhilfe ab V2.5

    PHP-Code:
    <?

    if($_IPS['SENDER'] == "Execute")
    {
        
    $fritzbox_ip 'fritz.box';
        
    $password    'xxxxx';

        
    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    $login curl_exec($ch);
        
    $session_status_simplexml simplexml_load_string($login);

        if (
    $session_status_simplexml->iswriteaccess == 1)
        {
           
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
            
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
           if(isset(
    $matches[1]) && $matches[1] != '0000000000000000')
           {
              
    $SID $matches[1];
           }
           else
           {
              echo 
    "Fehler: Login fehlgeschlagen";
              return;
            }
            
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&telcfg:settings/DialPort=60"); // Nebenstellennummer eintragen!
            
    curl_exec($ch);
            
    curl_setopt($chCURLOPT_POSTFIELDS"sid={$SID}&telcfg:command/Dial=**612"); // Rufnummer eintragen!
            
    curl_exec($ch);
            
    curl_close($ch);
        }
    }

    ?>
    Geändert von RWN (04.12.11 um 10:30 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  8. #8
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard DSL Details

    PHP-Code:
    <?
    $fritzbox_ip 
    'fritz.box';
    $fritzseite  '../html/de/menus/menu2.html';
    $filename    IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\DslDetails.txt";// anpassen
    $password    'xxxxx';

    $ch curl_init('http://' $fritzbox_ip '/cgi-bin/webcm?getpage=../html/login_sid.xml');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    $login curl_exec($ch);
    $session_status_simplexml simplexml_load_string($login);

    if (
    $session_status_simplexml->iswriteaccess == 1)
    {
       
    $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($chCURLOPT_POSTFIELDS"login:command/response={$response}&getpage=../html/de/menus/menu2.html");
        
    preg_match('/name="sid" value="([0-9a-f]*)"/'curl_exec($ch), $matches);
       if (isset(
    $matches[1]) && $matches[1] != '0000000000000000')
       {
          
    $SID $matches[1];
       }
       else
       {
          echo 
    "Fehler: Login fehlgeschlagen";
          return;
        }
    }

    curl_setopt($chCURLOPT_POSTFIELDS"getpage={$fritzseite}&sid={$SID}&var:menu=internet&var:pagename=adsl");
    $getDslDetails curl_exec($ch);
    curl_close($ch);

    $fileHandle = @fopen($filename'wb+');
    fwrite($fileHandle$getDslDetails);
    fclose($fileHandle);

    $lines file("../webfront/user/Fritzbox/DslDetails.txt");
    //print_r($lines);

    SetValue(28656 /*[Fritzbox\DSL Details\Datenrate empfangen]*/strip_tags($lines[3008])." ".strip_tags($lines[3007]));
    SetValue(56839 /*[Fritzbox\DSL Details\Datenrate senden]*/strip_tags($lines[3009])." ".strip_tags($lines[3007]));
    SetValue(46032 /*[Fritzbox\DSL Details\Dämpfung Empfangen]*/strip_tags($lines[3075])." dB");
    SetValue(27847 /*[Fritzbox\DSL Details\Dämpfung Senden]*/strip_tags($lines[3076])." dB");

    ?>
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  9. #9
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Reconnect

    PHP-Code:
    <?
    $address 
    "Fritz.box";

    $contentRecv 'POST /upnp/control/WANIPConn1  HTTP/1.1
    Cache-Control: no-cache
    Connection: Close
    Pragma: no-cache
    Content-Type: text/xml; charset="utf-8"
    User-Agent: Microsoft-Windows/6.1 UPnP/1.0
    SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#ForceTermination"
    Content-Length: '
    .(287+strlen($address)).'
    Host: '
    .$address.':49000

    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:ForceTermination xmlns:m="urn:schemas-upnp-org:service:WANIPConnection:1"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
    '
    ;

    SendPacket($contentRecv);

    function 
    SendPacket($content)
    {
       global 
    $address;
       
    $port 49000 /*[Objekt #49000 existiert nicht]*/;

       
    $fp fsockopen ($address$port$errno$errstr10);
       if (!
    $fp)
       {
           echo 
    "$errstr ($errno)<br />\n";
       }
       else
       {
           
    fputs ($fp$content);
          
    $ret "";
          while (!
    feof($fp))
          {
              
    $ret.= fgets($fp,128);
          }
          
    //echo $ret;
          
    fclose($fp);
       }
       if(!(
    strpos($ret"200 OK") === false))
       {
           return 
    $ret;
       }
       else
       {
           die(
    "Invalid Response: ".$ret);
       }
    }

    function 
    GetTextBetween($string$start$end)
    {
       
    preg_match_all("/$start(.*)$end/i"$string$match);
       return 
    $match[1][0];
    }

    ?>
    Geändert von RWN (01.07.12 um 20:01 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  10. #10
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    Standard Reset

    PHP-Code:
    <?
    $address 
    "Fritz.box";

    $contentRecv 'POST /upnp/control/WANIPConn1  HTTP/1.1
    Cache-Control: no-cache
    Connection: Close
    Pragma: no-cache
    Content-Type: text/xml; charset="utf-8"
    User-Agent: Microsoft-Windows/6.1 UPnP/1.0
    SOAPACTION: "urn:schemas-upnp-org:service:WANIPConnection:1#RequestConnection"
    Content-Length: '
    .(289+strlen($address)).'
    Host: '
    .$address.':49000

    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><m:RequestConnection xmlns:m="urn:schemas-upnp-org:service:WANIPConnection:1"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
    '
    ;

    SendPacket($contentRecv);

    function 
    SendPacket($content)
    {
        global 
    $address;
       
    $port 49000 /*[Objekt #49000 existiert nicht]*/;

       
    $fp fsockopen ($address$port$errno$errstr10);
       if (!
    $fp)
        {
           echo 
    "$errstr ($errno)<br />\n";
       }
        else
        {
            
    fputs ($fp$content);
          
    $ret "";
          while (!
    feof($fp))
            {
             
    $ret.= fgets($fp,128);
          }
          
    //echo $ret;
          
    fclose($fp);
        }
       if(!(
    strpos($ret"200 OK") === false))
        {
            return 
    $ret;
       }
        else
        {
           die(
    "Invalid Response: ".$ret);
       }
    }

    function 
    GetTextBetween($string$start$end)
    {
        
    preg_match_all("/$start(.*)$end/i"$string$match);
       return 
    $match[1][0];
    }

    ?>
    Geändert von RWN (01.07.12 um 20:05 Uhr)
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


Ähnliche Themen

  1. Antworten: 41
    Letzter Beitrag: 03.02.15, 15:28
  2. Zeitverzögertes starten von Scripts einfach managen
    Von BestEx im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 14.04.12, 20:41
  3. Name des aufrufenden Scripts in eine Variable schreiben
    Von martin372 im Forum Skripte, PHP, SQL
    Antworten: 13
    Letzter Beitrag: 26.11.10, 17:52
  4. Event Scripts löschen
    Von Luggi im Forum Ideen & Anregungen
    Antworten: 1
    Letzter Beitrag: 06.05.06, 08:11