aboutsummaryrefslogtreecommitdiff
path: root/Wrt3g.php
diff options
context:
space:
mode:
authorChristian Weiske <cweiske@cweiske.de>2010-12-08 20:12:57 +0100
committerChristian Weiske <cweiske@cweiske.de>2010-12-08 20:12:57 +0100
commitceb9f52f0765af2f0eebca575d6107bf984b8cdb (patch)
treee7403381cc78a600ebbd8b5fa816b1c848ecfbce /Wrt3g.php
parentd5dcda396569fa0f2bed65b7fb13d443ff8d0d1a (diff)
downloadlinksys-wrt3g-tools-ceb9f52f0765af2f0eebca575d6107bf984b8cdb.tar.gz
linksys-wrt3g-tools-ceb9f52f0765af2f0eebca575d6107bf984b8cdb.zip
begin pearification by renaming functions.php
Diffstat (limited to 'Wrt3g.php')
-rw-r--r--Wrt3g.php132
1 files changed, 132 insertions, 0 deletions
diff --git a/Wrt3g.php b/Wrt3g.php
new file mode 100644
index 0000000..fa4693f
--- /dev/null
+++ b/Wrt3g.php
@@ -0,0 +1,132 @@
+<?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
+*/
+require_once 'HTTP/Request2.php';
+
+
+class Wrt3g
+{
+ 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',
+ );
+
+ /**
+ * Reboots the router.
+ *
+ * @return HTTP_Request2_Response
+ *
+ * @throws Exception When the router can't be reached, or unauthorized
+ */
+ function reboot()
+ {
+ $r = new HTTP_Request2();
+ $r->setMethod(HTTP_Request2::METHOD_POST);
+ $r->setUrl(
+ 'http://'
+ . $GLOBALS['linksys-wrt3g-tools']['user']
+ . ':' . $GLOBALS['linksys-wrt3g-tools']['password']
+ . '@' . $GLOBALS['linksys-wrt3g-tools']['ip']
+ . '/apply.cgi'
+ );
+ $r->addPostParameter('action', 'Reboot');
+ $r->addPostParameter('submit_button', 'Diagnostics');
+ $r->addPostParameter('wait_time', 1);
+
+ $resp = $r->send();
+ return $resp;
+ }//function reboot()
+
+
+
+ /**
+ * 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
+ */
+ function getStatus()
+ {
+ $arRetval = array();
+
+ $strUrlBase = 'http://'
+ . $GLOBALS['linksys-wrt3g-tools']['user']
+ . ':' . $GLOBALS['linksys-wrt3g-tools']['password']
+ . '@' . $GLOBALS['linksys-wrt3g-tools']['ip'];
+
+ /**
+ * Connection status
+ */
+ $r = new HTTP_Request2();
+ $r->setMethod(HTTP_Request2::METHOD_GET);
+ $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);
+
+ /**
+ * GPRS/UMTS Status
+ */
+ $r->setUrl($strUrlBase . '/index_wstatus1.asp');
+ $resp = $r->send();
+ $body = $resp->getBody();
+ $arRetval = array_merge($arRetval, $this->parseStatus($body));
+
+ return $arRetval;
+ }//function getStatus()
+
+
+
+ /**
+ * Parses the body and returns extracted values
+ *
+ * @param string $body HTML document to parse
+ *
+ * @return array Array of key-value pairs
+ */
+ 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