diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2010-12-08 20:12:57 +0100 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2010-12-08 20:12:57 +0100 |
| commit | ceb9f52f0765af2f0eebca575d6107bf984b8cdb (patch) | |
| tree | e7403381cc78a600ebbd8b5fa816b1c848ecfbce /Wrt3g.php | |
| parent | d5dcda396569fa0f2bed65b7fb13d443ff8d0d1a (diff) | |
| download | linksys-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.php | 132 |
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 |
