diff options
author | Guillaume Mazoyer <respawneral@gmail.com> | 2014-05-29 22:08:00 +0200 |
---|---|---|
committer | Guillaume Mazoyer <respawneral@gmail.com> | 2014-05-29 22:08:00 +0200 |
commit | 2c4d55aafd5210b72feadf51496596fc024920ed (patch) | |
tree | 369e93e432a1d550942deadbfb5a80e7a5b5b493 | |
parent | 75d04f9a5fb6152e84d5ad60227156cfea5923bd (diff) |
Rewrite index.php in object style.
Add a way to define an order in the frontpage between routers/commands/parameters/buttons.
-rw-r--r-- | config.php.example | 2 | ||||
-rw-r--r-- | index.php | 280 |
2 files changed, 172 insertions, 110 deletions
diff --git a/config.php.example b/config.php.example index 7355e92..be03e54 100644 --- a/config.php.example +++ b/config.php.example @@ -14,6 +14,8 @@ $config['frontpage']['title'] = 'Looking Glass'; $config['frontpage']['image'] = 'logo.png'; // Disclaimer to inform people using the looking glass $config['frontpage']['disclaimer'] = 'This is a disclaimer!'; +// Frontpage order you can use: routers, commands, parameters, buttons +$config['frontpage']['order'] = array('routers', 'commands', 'parameters', 'buttons'); // Logs file when commands will be written $config['misc']['logs'] = '/var/log/looking-glass.log'; @@ -19,116 +19,176 @@ */ require_once 'config.php'; -?> -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8" /> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <meta name="keywords" content="Looking Glass, LG, BGP, prefix-list, AS-path, ASN, traceroute, ping, IPv4, IPv6, Cisco, Juniper, Internet" /> - <meta name="description" content="<?php echo $config['frontpage']['title']; ?>" /> - <title><?php echo $config['frontpage']['title']; ?></title> - <link href="bootstrap-3.1.1/css/bootstrap.min.css" rel="stylesheet" /> - <link href="bootstrap-3.1.1/css/bootstrap-theme.min.css" rel="stylesheet" /> - <link href="<?php echo $config['frontpage']['css']; ?>" rel="stylesheet" /> -</head> - -<body> - <div class="header_bar"> - <h1><?php echo $config['frontpage']['title']; ?></h1><br /> - <?php - if (isset($config['frontpage']['image'])) { - echo '<img src="'.$config['frontpage']['image'].'" alt="logo" />'; - } - ?> - </div> - - <div class="content" id="command_options"> - <form role="form" action="execute.php" method="post"> - <div class="form-group"> - <label for="routers">Router to use</label> - <select size="5" class="form-control" name="routers" id="routers"> - <?php - $first = true; - foreach (array_keys($config['routers']) as $router) { - if ($first) { - $first = false; - echo '<option value="'.$router.'" selected="selected">'. - $config['routers'][$router]['desc'].'</option>'; - } else { - echo '<option value="'.$router.'">'. - $config['routers'][$router]['desc'].'</option>'; - } - } - ?> - </select> - </div> - - <div class="form-group"> - <label for="query">Command to issue</label> - <select size="5" class="form-control" name="query" id="query"> - <option value="bgp" selected="selected">show route IP_ADDRESS</option> - <option value="as-path-regex">show route as-path-regex AS_PATH_REGEX</option> - <option value="as">show route AS</option> - <option value="ping">ping IP_ADDRESS</option> - <option value="traceroute">traceroute IP_ADDRESS</option> - </select> - </div> - - <div class="form-group"> - <label for="input-params">Parameters</label> - <input class="form-control" name="parameters" id="input-params" /> - </div> - - <div class="confirm btn-group btn-group-justified"> - <div class="btn-group"> - <button class="btn btn-primary" id="send" type="submit">Enter</button> - </div> - <div class="btn-group"> - <button class="btn btn-danger" id="clear" type="reset">Reset</button> - </div> - </div> - </form> - </div> - - <div class="loading"> - <div class="progress progress-striped active"> - <div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%"> - </div> - </div> - </div> - - <div class="result"> - <pre class="pre-scrollable" id="output"></pre> - <div class="reset"> - <button class="btn btn-danger btn-block" id="backhome">Reset</button> - </div> - </div> - - <div class="footer_bar"> - <p class="text-center"> - <?php - if (isset($config['frontpage']['disclaimer']) && - !empty($config['frontpage']['disclaimer'])) { - echo 'Your IP address: '.$_SERVER['REMOTE_ADDR'].'<br />'; - echo $config['frontpage']['disclaimer']; - echo '<br /><br />'; + +final class LookingGlass { + private $frontpage; + private $contact; + private $misc; + private $filters; + private $routers; + + function __construct() { + global $config; + + $this->frontpage = $config['frontpage']; + $this->contact = $config['contact']; + $this->misc = $config['misc']; + $this->filters = $config['filters']; + $this->routers = $config['routers']; + } + + private function render_routers() { + print '<div class="form-group">'; + print '<label for="routers">Router to use</label>'; + print '<select size="5" class="form-control" name="routers" id="routers">'; + + $first = true; + foreach (array_keys($this->routers) as $router) { + if ($first) { + $first = false; + print '<option value="'.$router.'" selected="selected">'. + $this->routers[$router]['desc'].'</option>'; + } else { + print '<option value="'.$router.'">'.$this->routers[$router]['desc']. + '</option>'; } + } + + print '</select>'; + print '</div>'; + } + + private function render_commands() { + print '<div class="form-group">'; + print '<label for="query">Command to issue</label>'; + print '<select size="5" class="form-control" name="query" id="query">'; + print '<option value="bgp" selected="selected">show route IP_ADDRESS</option>'; + print '<option value="as-path-regex">show route as-path-regex AS_PATH_REGEX</option>'; + print '<option value="as">show route AS</option>'; + print '<option value="ping">ping IP_ADDRESS</option>'; + print '<option value="traceroute">traceroute IP_ADDRESS</option>'; + print '</select>'; + print '</div>'; + } + + private function render_parameters() { + print '<div class="form-group">'; + print '<label for="input-params">Parameters</label>'; + print '<input class="form-control" name="parameters" id="input-params" />'; + print '</div>'; + } + + private function render_buttons() { + print '<div class="confirm btn-group btn-group-justified">'; + print '<div class="btn-group">'; + print '<button class="btn btn-primary" id="send" type="submit">Enter</button>'; + print '</div>'; + print '<div class="btn-group">'; + print '<button class="btn btn-danger" id="clear" type="reset">Reset</button>'; + print '</div>'; + print '</div>'; + } + + private function render_header() { + print '<div class="header_bar">'; + print '<h1>'.htmlentities($this->frontpage['title']).'</h1><br />'; + if (isset($this->frontpage['image'])) { + print '<img src="'.$this->frontpage['image'].'" alt="logo" />'; + } + print '</div>'; + } + + private function render_content() { + print '<div class="content" id="command_options">'; + print '<form role="form" action="execute.php" method="post">'; + + foreach ($this->frontpage['order'] as $element) { + switch ($element) { + case 'routers': + $this->render_routers(); + break; - if (isset($config['contact']) && !empty($config['contact'])) { - echo 'Contact: '; - echo '<a href="mail:'.$config['contact']['mail'].'">'. - $config['contact']['name'].'</a>'; + case 'commands': + $this->render_commands(); + break; + + case 'parameters': + $this->render_parameters(); + break; + + case 'buttons': + $this->render_buttons(); + break; + + default: + break; } - ?> - </p> - </div> - - <!-- jquery / bootstrap / custom functions --> - <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> - <script src="bootstrap-3.1.1/js/bootstrap.min.js"></script> - <script src="includes/utils.js"></script> - </script> -</body> -</html> + } + + print '</form>'; + print '</div>'; + print '<div class="loading">'; + print '<div class="progress progress-striped active">'; + print '<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%">'; + print '</div>'; + print '</div>'; + print '</div>'; + print '<div class="result">'; + print '<pre class="pre-scrollable" id="output"></pre>'; + print '<div class="reset">'; + print '<button class="btn btn-danger btn-block" id="backhome">Reset</button>'; + print '</div>'; + print '</div>'; + } + + private function render_footer() { + print '<div class="footer_bar">'; + print '<p class="text-center">'; + + if (isset($this->frontpage['disclaimer']) && + !empty($this->frontpage['disclaimer'])) { + print 'Your IP address: '.htmlentities($_SERVER['REMOTE_ADDR']).'<br />'; + print htmlentities($this->frontpage['disclaimer']); + print '<br /><br />'; + } + + if (isset($this->contact) && !empty($this->contact)) { + print 'Contact: '; + print '<a href="mail:'.$this->contact['mail'].'">'. + htmlentities($this->contact['name']).'</a>'; + } + + print '</p>'; + print '</div>'; + } + + public function render() { + print '<!DOCTYPE html>'; + print '<html lang="en">'; + print '<head>'; + print '<meta charset="utf-8" />'; + print '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; + print '<meta name="viewport" content="width=device-width, initial-scale=1" />'; + print '<meta name="keywords" content="Looking Glass, LG, BGP, prefix-list, AS-path, ASN, traceroute, ping, IPv4, IPv6, Cisco, Juniper, Internet" />'; + print '<meta name="description" content="'.htmlentities($this->frontpage['title']).'" />'; + print '<link href="bootstrap-3.1.1/css/bootstrap.min.css" rel="stylesheet" />'; + print '<link href="bootstrap-3.1.1/css/bootstrap-theme.min.css" rel="stylesheet" />'; + print '<link href="'.$this->frontpage['css'].'" rel="stylesheet" />'; + print '</head>'; + print '<body>'; + $this->render_header(); + $this->render_content(); + $this->render_footer(); + print '</body>'; + print '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>'; + print '<script src="bootstrap-3.1.1/js/bootstrap.min.js"></script>'; + print '<script src="includes/utils.js"></script>'; + print '</body>'; + print '</html>'; + } +} + +$looking_glass = new LookingGlass(); +$looking_glass->render(); + +// End of index.php |