*/
public $verbosity = 0;
+ /**
+ * Class to send HTTP Requests with.
+ * Needs to be compatible with HTTP_Request2
+ *
+ * @var string
+ */
+ public $requestClass = 'HTTP_Request2';
+
/**
/**
- * 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';
$this->log('Connecting to ' . $url);
- $r = new HTTP_Request2();
+ $r = new $this->requestClass();
$r->setMethod(HTTP_Request2::METHOD_POST);
$r->setUrl($url);
$r->addPostParameter('action', '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
- */
- 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();
$parser = new Wrt3g_HtmlParser();
/**
- * Connection status
- */
- $r = new HTTP_Request2();
+ * Connection status
+ */
+ $r = new $this->requestClass();
$r->setMethod(HTTP_Request2::METHOD_GET);
$r->setUrl($strUrlBase . '/index_wstatus2.asp');
$this->log('Connecting to ' . $strUrlBase . '/index_wstatus2.asp', 1);
$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 $this->requestClass();
+ $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(
+ $resp->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();
+ }
*
* @return void
*/
- protected function log($msg, $level = 1)
+ public function log($msg, $level = 1)
{
if ($this->verbosity >= $level) {
echo $msg . "\n";