move status_noauth loading into separate function since we need it several times
[linksys-wrt3g-tools.git] / Wrt3g.php
index 8d12ca611538f9e58195399a3c279e49c84e78de..150b68c741877df41ccc390d9d119b25c21e43ba 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -88,12 +88,12 @@ class Wrt3g
 
 
     /**
-    * Reboots the router.
-    *
-    * @return HTTP_Request2_Response
-    *
-    * @throws Exception When the router can't be reached, or unauthorized
-    */
+     * Reboots the router.
+     *
+     * @return HTTP_Request2_Response
+     *
+     * @throws Exception When the router can't be reached, or unauthorized
+     */
     public function reboot()
     {
         $url = $this->getAuthBaseUrl() . '/apply.cgi';
@@ -113,14 +113,14 @@ class Wrt3g
 
 
     /**
-    * Retrieves status information about the router
-    *
-    * @return array Array with several key-value pairs
-    *               connection => connecting, disconnected, connected
-    *
-    * @throws Exception When the router can't be reached, or unauthorized
-    */
-    public function getStatus()
+     * Retrieves status information about the router
+     *
+     * @return array Array with several key-value pairs
+     *               connection => connecting, disconnected, connected
+     *
+     * @throws Exception When the router can't be reached, or unauthorized
+     */
+    public function getConnectionStatus()
     {
         $arRetval = array();
 
@@ -128,8 +128,8 @@ class Wrt3g
         $parser = new Wrt3g_HtmlParser();
 
         /**
-        * Connection status
-        */
+         * Connection status
+         */
         $r = new HTTP_Request2();
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
@@ -148,7 +148,78 @@ class Wrt3g
         $arRetval = array_merge($arRetval, $parser->index_wstatus1($body));
 
         return $arRetval;
-    }//public function getStatus()
+    }//public function getConnectionStatus()
+
+
+
+    /**
+     * Loads "Status_NoAuth.asp" page and parses the body.
+     *
+     * @return array Associative array with connection status.
+     *
+     * @throws Exception When something goes wrong, i.e. router not
+     *                   reachable
+     */
+    protected function loadStatus_NoAuth()
+    {
+        $strUrlBase = $this->getAnonBaseUrl();
+
+        $url = $strUrlBase . '/Status_NoAuth.asp';
+        $this->log('Connecting to ' . $url, 1);
+
+        $r = new HTTP_Request2();
+        $r->setMethod(HTTP_Request2::METHOD_GET);
+        $r->setUrl($url);
+        $resp = $r->send();
+        $this->log($resp->getStatus() . ' ' . $resp->getReasonPhrase(), 1);
+        //FIXME: check status
+
+        $parser = new Wrt3g_HtmlParser();
+
+        return $parser->status_noauth(
+            $this->loadStatus_NoAuth()->getBody()
+        );
+    }
+
+
+
+    /**
+     * Retrieves pc card/SIM status information
+     *
+     * @return array Array with several key-value pairs
+     *               connection => connecting, disconnected, connected
+     *
+     * @throws Exception When the router can't be reached
+     */
+    public function getCardStatus()
+    {
+        $arRetval = $this->loadStatus_NoAuth();
+
+        return array_intersect_key(
+            $arRetval,
+            array(
+                'card model'    => 0,
+                'card revision' => 0,
+                'card firmware' => 0,
+                'IMSI'          => 0
+            )
+        );
+    }
+
+
+
+    /**
+     * Retrieves all status information one can get.
+     *
+     * @return array Array with several key-value pairs
+     *               connection => connecting, disconnected, connected
+     *
+     * @throws Exception When the router can't be reached
+     */
+    public function getFullStatus()
+    {
+        return $this->loadStatus_NoAuth();
+    }
 
 
 
@@ -160,7 +231,7 @@ class Wrt3g
      *
      * @return void
      */
-    protected function log($msg, $level = 1)
+    public function log($msg, $level = 1)
     {
         if ($this->verbosity >= $level) {
             echo $msg . "\n";