--- /dev/null
+<?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
--- /dev/null
+#!/usr/bin/env php
+<?php
+/**
+* munin node output for the router status
+*
+* 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 dirname(__FILE__) . '/config.php';
+require_once dirname(__FILE__) . '/functions.php';
+
+if (isset($argv[1]) && $argv[1] == 'autoconf') {
+ echo "yes\n";
+ exit();
+} else if (isset($argv[1]) && $argv[1] == 'config') {
+ echo <<<TXT
+graph_title WRT3G router status
+graph_args --base 1000 -l 0 --upper-limit 7
+graph_vlabel Status values
+graph_category network
+graph_info This graph shows the status of WRT3G router
+conn_connected.label Connected
+conn_connected.info Router is connected
+conn_connected.draw LINE2
+conn_connecting.label Connecting
+conn_connecting.info Router is connecting
+conn_connecting.draw LINE2
+conn_disconnected.label Disconnected
+conn_disconnected.info Router is disconnected
+conn_disconnected.draw LINE2
+notavailable.label Not available
+notavailable.info Router cannot be reached
+notavailable.draw LINE2
+type_gprs.label GPRS
+type_gprs.info Connection via GPRS
+type_gprs.draw LINE2
+type_umts.label UMTS
+type_umts.info Connection via UMTS
+type_umts.draw LINE2
+
+TXT;
+ exit();
+}
+
+
+$arStatus = wrt3g_getStatus();
+try {
+ $conn = $arStatus['connection'];
+ if ($conn == 'disconnected') {
+ echo "conn_disconnected.value 1\n";
+ } else if ($conn == 'connecting') {
+ echo "conn_connecting.value 2\n";
+ } else if ($conn == 'connected') {
+ echo "conn_connected.value 3\n";
+ }
+
+ $type = strtolower($arStatus['type']);
+ if ($type == 'gprs') {
+ echo "type_gprs.value 4.5\n";
+ } else if ($type == 'umts') {
+ echo "type_umts.value 5\n";
+ }
+} catch (Exception $e) {
+ echo "notavailable 0.5\n";
+}
+?>
\ No newline at end of file
--- /dev/null
+<?php
+/**
+* Shows router UMTS status
+*
+* 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 dirname(__FILE__) . '/config.php';
+require_once dirname(__FILE__) . '/functions.php';
+try {
+ $w = new Wrt3g();
+ $arStatus = $w->getStatus();
+ foreach ($arStatus as $key => $value) {
+ echo $key . ': ' . $value . "\n";
+ }
+} catch (Exception $e) {
+ echo 'Error: ' . $e->getMessage() . "\n";
+}
+?>
\ No newline at end of file