create combined script, do not use global config variables anymore
[linksys-wrt3g-tools.git] / scripts / linksys-wrt3g.php
diff --git a/scripts/linksys-wrt3g.php b/scripts/linksys-wrt3g.php
new file mode 100644 (file)
index 0000000..1d1b9d2
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+/**
+* Control script for Linksys WRT3g routers.
+*
+* 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 'Wrt3g.php';
+require_once 'Console/CommandLine.php';
+
+//default config options
+$GLOBALS['linksys-wrt3g-tools'] = array(
+    'host' => null,
+    'user' => 'admin',
+    'password' => null,
+);
+
+$configFile = dirname(__FILE__) . '/../config.php';
+if (file_exists($configFile)) {
+    require_once $configFile;
+}
+
+$parser = new Console_CommandLine();
+$parser->description = 'Tool to control Linksys WRT3g routers';
+$parser->version = '0.0.1';//FIXME: dynamic
+$parser->addOption(
+    'host',
+    array(
+        'short_name'  => '-h',
+        'long_name'   => '--host',
+        'description' => 'IP/Hostname to connect to',
+        'help_name'   => 'HOST',
+        'action'      => 'StoreString',
+        'default'     => $GLOBALS['linksys-wrt3g-tools']['host']
+    )
+);
+$parser->addOption(
+    'user',
+    array(
+        'short_name'  => '-u',
+        'long_name'   => '--user',
+        'description' => 'Admin user name',
+        'help_name'   => 'USER',
+        'action'      => 'StoreString',
+        'default'     => $GLOBALS['linksys-wrt3g-tools']['user']
+    )
+);
+$parser->addOption(
+    'password',
+    array(
+        'short_name'  => '-p',
+        'long_name'   => '--password',
+        'description' => 'Password for admin user',
+        'help_name'   => 'PASS',
+        'action'      => 'StoreString',
+        'default'     => $GLOBALS['linksys-wrt3g-tools']['password']
+    )
+);
+
+$parser->addCommand(
+    'status',
+    array(
+        'description' => 'Show the router status'
+    )
+);
+$parser->addCommand(
+    'reboot',
+    array(
+        'description' => 'Reboot the router'
+    )
+);
+
+try {
+    $result = $parser->parse();
+} catch (Exception $exc) {
+    $parser->displayError($exc->getMessage());
+    exit(1);
+}
+
+try {
+    $router = new Wrt3g();
+    $router->host     = $result->options['host'];
+    $router->user     = $result->options['user'];
+    $router->password = $result->options['password'];
+
+    switch ($result->command_name) {
+    case 'reboot':
+        $router->reboot();
+        break;
+
+    case 'status':
+    default:
+        $arStatus = $router->getStatus();
+        foreach ($arStatus as $key => $value) {
+            echo $key . ': ' . $value . "\n";
+        }
+    }
+} catch (Exception $e) {
+    echo 'Error: ' . $e->getMessage() . "\n";
+    exit(2);
+}
+?>
\ No newline at end of file