* @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.
*/
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
*/
*/
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)
+ {
+ $this->config = new Wrt3g_Config($this);
+ $this->config->load($options);
+ }
+
/**
protected function getAuthBaseUrl()
{
return 'http://'
- . $this->user
- . ':' . $this->password
- . '@' . $this->host;
+ . $this->config->user
+ . ':' . $this->config->password
+ . '@' . $this->config->host;
}
*/
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;
}
$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');
/**
* 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);
$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();
/**
* 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
*/