command aliases
[linksys-wrt3g-tools.git] / Wrt3g.php
index 78cb10ddddeacc8bf43c9e58d23f3b1588a690e5..131f626951a745ad74c116694bdc7333e808d380 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -1,18 +1,28 @@
 <?php
 /**
-* Functions to access the router
-*
-* PHP version 5
-*
-* @category Tools
-* @package  linksys-wrt3g-tools
-* @author   Christian Weiske <cweiske@cweiske.de>
-* @license  AGPL v3
-* @link     http://cweiske.de/linksys-wrt3g-tools.htm
-*/
+ * Part of Linksys WRT3G tools
+ *
+ * PHP version 5
+ *
+ * @category Tools
+ * @package  linksys-wrt3g-tools
+ * @author   Christian Weiske <cweiske@cweiske.de>
+ * @license  AGPL v3
+ * @link     http://cweiske.de/linksys-wrt3g-tools.htm
+ */
 require_once 'HTTP/Request2.php';
+require_once 'Wrt3g/HtmlParser.php';
 
 
+/**
+ * Main class to interact with the router.
+ *
+ * @category Tools
+ * @package  linksys-wrt3g-tools
+ * @author   Christian Weiske <cweiske@cweiske.de>
+ * @license  AGPL v3
+ * @link     http://cweiske.de/linksys-wrt3g-tools.htm
+ */
 class Wrt3g
 {
     /**
@@ -36,24 +46,15 @@ class Wrt3g
      */
     public $password;
 
-    protected static $arTranslations = array(
-        'GPRS_MSG.WWBEAR'      => 'type',
-        'GPRS_MSG.NNAME'       => 'network',
-        'GPRS_MSG.STRENGTH'    => 'signal strength',
-        'GPRS_MSG.ACQUIRING'   => 'aquiring',
-        'GPRS_MSG.WWBEAR_GPRS' => 'GPRS',
-        'GPRS_MSG.WWBEAR_UMTS' => 'UMTS',
-    );
-
 
 
     /**
-     * Returns the base URL to use for requests.
+     * Returns the base URL to use for requests that require authentification.
      * Includes username, password and host.
      *
      * @return string URL without trailing slash after the host
      */
-    protected function getBaseUrl()
+    protected function getAuthBaseUrl()
     {
         return 'http://'
             . $this->user
@@ -62,6 +63,20 @@ class Wrt3g
     }
 
 
+
+    /**
+     * Returns the base URL to use for requests that do
+     * not require authentification.
+     *
+     * @return string URL without trailing slash after the host
+     */
+    protected function getAnonBaseUrl()
+    {
+        return 'http://' . $this->host;
+    }
+
+
+
     /**
     * Reboots the router.
     *
@@ -74,7 +89,7 @@ class Wrt3g
         $r = new HTTP_Request2();
         $r->setMethod(HTTP_Request2::METHOD_POST);
         $r->setUrl(
-            $this->getBaseUrl() . '/apply.cgi'
+            $this->getAuthBaseUrl() . '/apply.cgi'
         );
         $r->addPostParameter('action', 'Reboot');
         $r->addPostParameter('submit_button', 'Diagnostics');
@@ -98,7 +113,8 @@ class Wrt3g
     {
         $arRetval = array();
 
-        $strUrlBase = $this->getBaseUrl();
+        $strUrlBase = $this->getAuthBaseUrl();
+        $parser = new Wrt3g_HtmlParser();
 
         /**
         * Connection status
@@ -108,14 +124,7 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
         $resp = $r->send();
         echo $resp->getStatus() . ' ' . $resp->getReasonPhrase() . "\n";
-        $body = $resp->getBody();
-        preg_match('/var status2 = "(.+)"/', $body, $arMatches);
-
-        $strStatus = $arMatches[1];
-        //Connecting
-        //Disconnected
-        //Connected
-        $arRetval['connection'] = strtolower($strStatus);
+        $arRetval = $parser->index_wstatus2($resp->getBody());
 
         /**
         * GPRS/UMTS Status
@@ -123,41 +132,9 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus1.asp');
         $resp = $r->send();
         $body = $resp->getBody();
-        $arRetval = array_merge($arRetval, $this->parseStatus($body));
+        $arRetval = array_merge($arRetval, $parser->index_wstatus1($body));
 
         return $arRetval;
     }//public function getStatus()
-
-
-
-    /**
-    * Parses the body and returns extracted values
-    *
-    * @param string $body HTML document to parse
-    *
-    * @return array Array of key-value pairs
-    */
-    protected function parseStatus($body)
-    {
-        $arRetval = array();
-        $arMatches = array();
-        preg_match_all('#>Capture\(([^)]+)\)</#', $body, $arMatches);
-        $arData = array();
-        reset($arMatches[1]);
-        while (current($arMatches[1])) {
-            $key   = current($arMatches[1]);
-            $value = next($arMatches[1]);
-            if (isset(self::$arTranslations[$key])) {
-                $key = self::$arTranslations[$key];
-            }
-            if (isset(self::$arTranslations[$value])) {
-                $value = self::$arTranslations[$value];
-            }
-            $arRetval[$key] = $value;
-            next($arMatches[1]);
-        }
-
-        return $arRetval;
-    }
 }
 ?>
\ No newline at end of file