X-Git-Url: https://git.cweiske.de/linksys-wrt3g-tools.git/blobdiff_plain/3127f7c70315c3a5db3f4442fbf0d2da05ab8a40..b148da6e40e33dcffd322a299b2e30170af12869:/Wrt3g.php diff --git a/Wrt3g.php b/Wrt3g.php index 3b4d43d..2fe0db8 100644 --- a/Wrt3g.php +++ b/Wrt3g.php @@ -11,8 +11,9 @@ * @link http://cweiske.de/linksys-wrt3g-tools.htm */ require_once 'HTTP/Request2.php'; +require_once 'Wrt3g/Config.php'; require_once 'Wrt3g/HtmlParser.php'; - +require_once 'Wrt3g/RequestObserver.php'; /** * Main class to interact with the router. @@ -25,32 +26,12 @@ require_once 'Wrt3g/HtmlParser.php'; */ class Wrt3g { - /** - * Router hostname/IP - * - * @var string - */ - public $host; - - /** - * Name of user with administration privileges - * - * @var string - */ - public $user; - - /** - * Password for $user - * - * @var string - */ - public $password; - /** * Logging verbosity * 0 - no debug logging * 1 - show important details (connected URLs) * 2 - show internal details + * 3 - show HTTP requests and responses * * @var integer */ @@ -64,6 +45,30 @@ class Wrt3g */ public $requestClass = 'HTTP_Request2'; + /** + * Configuration object + * + * @var Wrt3g_Config + */ + public $config; + + + + /** + * Loads the configuration from file and cmdline options + * + * @param array $options Command line options array + * + * @return void + * + * @see Wrt3g_Config + */ + public function loadConfig($options = array()) + { + $this->config = new Wrt3g_Config($this); + $this->config->load($options); + } + /** @@ -75,9 +80,9 @@ class Wrt3g protected function getAuthBaseUrl() { return 'http://' - . $this->user - . ':' . $this->password - . '@' . $this->host; + . $this->config->user + . ':' . $this->config->password + . '@' . $this->config->host; } @@ -90,7 +95,25 @@ class Wrt3g */ protected function getAnonBaseUrl() { - return 'http://' . $this->host; + return 'http://' . $this->config->host; + } + + + + /** + * Creates a new HTTP_Request2 object, attaches an observer + * if necessary and returns it. + * + * @return HTTP_Request2 + */ + protected function createRequest() + { + $r = new $this->requestClass(); + if ($this->verbosity >= 3) { + //register observer + $r->attach(new Wrt3g_RequestObserver($this)); + } + return $r; } @@ -107,7 +130,7 @@ class Wrt3g $url = $this->getAuthBaseUrl() . '/apply.cgi'; $this->log('Connecting to ' . $url); - $r = new $this->requestClass(); + $r = $this->createRequest(); $r->setMethod(HTTP_Request2::METHOD_POST); $r->setUrl($url); $r->addPostParameter('action', 'Reboot'); @@ -139,7 +162,7 @@ class Wrt3g /** * Connection status */ - $r = new $this->requestClass(); + $r = $this->createRequest(); $r->setMethod(HTTP_Request2::METHOD_GET); $r->setUrl($strUrlBase . '/index_wstatus2.asp'); $this->log('Connecting to ' . $strUrlBase . '/index_wstatus2.asp', 1); @@ -177,7 +200,7 @@ class Wrt3g $url = $strUrlBase . '/Status_NoAuth.asp'; $this->log('Connecting to ' . $url, 1); - $r = new $this->requestClass(); + $r = $this->createRequest(); $r->setMethod(HTTP_Request2::METHOD_GET); $r->setUrl($url); $resp = $r->send(); @@ -261,8 +284,9 @@ class Wrt3g /** * Log a message to stdout. * - * @param string $msg Message to display - * @param integer $level Log level, see $verbosity + * @param string|object $msg Message to display. May even be a response + * object + * @param integer $level Log level, see $verbosity * * @return void */