* @link http://cweiske.de/linksys-wrt3g-tools.htm
*/
require_once 'HTTP/Request2.php';
+require_once 'Wrt3g/HtmlParser.php';
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.
+ * Includes username, password and host.
+ *
+ * @return string URL without trailing slash after the host
+ */
+ protected function getBaseUrl()
+ {
+ return 'http://'
+ . $this->user
+ . ':' . $this->password
+ . '@' . $this->host;
+ }
+
/**
* Reboots the router.
*
* @throws Exception When the router can't be reached, or unauthorized
*/
- function reboot()
+ public function reboot()
{
$r = new HTTP_Request2();
$r->setMethod(HTTP_Request2::METHOD_POST);
$r->setUrl(
- 'http://'
- . $this->user
- . ':' . $this->password
- . '@' . $this->host
- . '/apply.cgi'
+ $this->getBaseUrl() . '/apply.cgi'
);
$r->addPostParameter('action', 'Reboot');
$r->addPostParameter('submit_button', 'Diagnostics');
$resp = $r->send();
return $resp;
- }//function reboot()
+ }//public function reboot()
*
* @throws Exception When the router can't be reached, or unauthorized
*/
- function getStatus()
+ public function getStatus()
{
$arRetval = array();
- $strUrlBase = 'http://'
- . $this->user
- . ':' . $this->password
- . '@' . $this->host;
+ $strUrlBase = $this->getBaseUrl();
+ $parser = new Wrt3g_HtmlParser();
/**
* Connection status
$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
$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;
- }//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;
- }
+ }//public function getStatus()
}
?>
\ No newline at end of file