summaryrefslogtreecommitdiffstats
path: root/management-interface
diff options
context:
space:
mode:
authorNils Schwabe2014-05-20 13:35:07 +0200
committerNils Schwabe2014-05-20 13:35:07 +0200
commitf3364894c1a29431fcb93e7dcd004d50e52e4b47 (patch)
treee3ee7f63bb578728def1f108ec739be9254ec063 /management-interface
parentAdd login functionallity (diff)
downloadmasterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.tar.gz
masterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.tar.xz
masterserver-f3364894c1a29431fcb93e7dcd004d50e52e4b47.zip
Improve login
Add satellite list Add remove items for guests
Diffstat (limited to 'management-interface')
-rw-r--r--management-interface/api/models/Master.php39
-rw-r--r--management-interface/config/global.cfg12
-rw-r--r--management-interface/css/custom.css2
-rw-r--r--management-interface/index.php2
-rw-r--r--management-interface/template/footer.php6
-rw-r--r--management-interface/views/home.htm6
-rw-r--r--management-interface/views/login.htm36
-rw-r--r--management-interface/views/menu.php11
-rw-r--r--management-interface/views/satellites.htm44
-rw-r--r--management-interface/views/users.htm38
10 files changed, 154 insertions, 42 deletions
diff --git a/management-interface/api/models/Master.php b/management-interface/api/models/Master.php
index 4ee2943..0566b0a 100644
--- a/management-interface/api/models/Master.php
+++ b/management-interface/api/models/Master.php
@@ -32,6 +32,15 @@ class Master {
echo $this->view->render('template/message.php');
}
+ // if we want to list the users:
+ if ($f3->get('_module') === 'users') {
+ $this->tabUsers($f3);
+ } else if($f3->get('_module') === 'home') {
+ $this->tabHome($f3);
+ } else if ($f3->get('_module') === 'satellites') {
+ $this->tabSatellite($f3);
+ }
+
echo Template::instance()->render('views/' . $f3->get('_module') . '.htm');
echo $this->view->render('template/footer.php');
@@ -41,23 +50,41 @@ class Master {
public function dologin($f3, $username, $password) {
if (isset($f3->get('user')[$username]) && $f3->get('user')[$username] == sha1($password)) {
$_SESSION['username'] = $username;
- $f3->set('loggedin', (isset($f3->get('SESSION')['username']))?true:false);
- $f3->set('username', (isset($f3->get('SESSION')['username']))?$f3->get('SESSION')['username']:'Guest');
- $this->parse($f3, array('m' => 'home'));
+ $f3->set('loggedin', true);
+ $f3->set('username', $username);
+ $f3->reroute('@module(@m=home)');
} else {
$f3->set('message', 'Login invalid.');
- $this->parse($f3, array('m' => 'login'));
+ $f3->reroute('@module(@m=home)');
}
}
public function dologout($f3) {
$_SESSION = array();
$f3->set('message', 'Logout successful');
- $f3->set('loggedin', (isset($f3->get('SESSION')['username']))?true:false);
- $f3->set('username', (isset($f3->get('SESSION')['username']))?$f3->get('SESSION')['username']:'Guest');
+ $f3->set('loggedin', false);
+ $f3->set('username', 'Guest');
$this->parse($f3, array('m' => 'login'));
}
+ private function tabUsers($f3) {
+ $f3->set('result',$f3->get('DB')->exec('SELECT userid, username, organization, firstname, lastname, email, lastlogin FROM user'));
+ }
+
+ private function tabHome($f3) {
+ // one command is 'sh -c' and the other command is 'grep'
+ // so we need more than two commands to find the server
+ if (shell_exec('ps aux | grep "org.openslx.imagemaster.App" | wc -l') > 2) {
+ $f3->set('serverstatus', true);
+ } else {
+ $f3->set('serverstatus', false);
+ }
+ }
+
+ private function tabSatellite($f3) {
+ $f3->set('result', $f3->get('DB')->exec('SELECT organization, address, name, prefix, publickey FROM satellite'));
+ }
+
}
?>
diff --git a/management-interface/config/global.cfg b/management-interface/config/global.cfg
index eede8c9..172c19e 100644
--- a/management-interface/config/global.cfg
+++ b/management-interface/config/global.cfg
@@ -2,8 +2,14 @@
; the menu items (need to exist like views/[name].htm)
item[0]="home"
item[1]="users"
-item[2]="about"
-;item[3]="test"
+item[2]="satellites"
+item[3]="about"
+
+; specify which item is intern and needs a login
+intern[0]=false
+intern[1]=true
+intern[2]=true
+intern[3]=false
; title
title="Masterserver Management"
@@ -12,4 +18,4 @@ title="Masterserver Management"
user["nils"]="f58cf5e7e10f195e21b553096d092c763ed18b0e"
;hostname
-hostname="http://localhost/if/"
+hostname="http://132.230.4.23/if/"
diff --git a/management-interface/css/custom.css b/management-interface/css/custom.css
index 56b22d2..bd16a7e 100644
--- a/management-interface/css/custom.css
+++ b/management-interface/css/custom.css
@@ -51,7 +51,7 @@ html {
}
/* fixing in danger boxes */
-.bg-danger {
+p.bg-danger {
padding: 15px;
text-align: center;
}
diff --git a/management-interface/index.php b/management-interface/index.php
index d7d0b62..afee942 100644
--- a/management-interface/index.php
+++ b/management-interface/index.php
@@ -14,13 +14,11 @@ $f3->set('message', '');
$f3->config('config/global.cfg');
-/*
$f3->set('DB', new DB\SQL(
'mysql:host=localhost;port=3306;dbname=masterserver',
'root',
'password'
));
-*/
$f3->route('POST /do/@action',
function($f3, $params) {
diff --git a/management-interface/template/footer.php b/management-interface/template/footer.php
index be0cfea..68f8351 100644
--- a/management-interface/template/footer.php
+++ b/management-interface/template/footer.php
@@ -1,5 +1,11 @@
<?php
//var_dump($_SESSION);
?>
+ <!-- Bootstrap core JavaScript
+ ================================================== -->
+ <!-- Placed at the end of the document so the pages load faster -->
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
+ <script src="js/bootstrap.min.js"></script>
+ <script src="js/custom.js"></script>
</body>
</html>
diff --git a/management-interface/views/home.htm b/management-interface/views/home.htm
index 229e427..f2cadd0 100644
--- a/management-interface/views/home.htm
+++ b/management-interface/views/home.htm
@@ -1,8 +1,10 @@
<div class="container">
<div class="jumbotron">
- <h1>{{ strtoupper(@_module) }}</h1>
- <p>Hello {{ @username }}<p>
+ <p>Hello {{ @username }}!<p>
+ <check if="{{ @loggedin }}">
+ <p>Status of server is: <check if="{{ @serverstatus }}"><true><span class="bg-success">online</span></true><false><span class="bg-danger">offline</span></false></check></p>
+ </check>
</div>
</div> <!-- /container -->
diff --git a/management-interface/views/login.htm b/management-interface/views/login.htm
index f447cb8..d283f45 100644
--- a/management-interface/views/login.htm
+++ b/management-interface/views/login.htm
@@ -1,22 +1,20 @@
-<check if="{{ @loggedin }}">
-<true>
<div class="container">
<div class="jumbotron">
- <h1>Already logged in.</h1>
- </div>
+ <check if="{{ @loggedin }}">
+ <true>
+ <h1>Already logged in.</h1>
+ </true>
+ <false>
+ <form class="form-signin" action="{{ @hostname }}do/login" method="post">
+ <h2 class="form-signin-heading">Login</h2>
+ <input type="text" name="user" class="form-control" placeholder="Username" autofocus>
+ <input type="password" name="pass" class="form-control" placeholder="Password">
+ <label class="checkbox">
+ <input type="checkbox" name="remember" value="remember-me">Remember me</input>
+ </label>
+ <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>
+ </form>
+ </false>
+ </check>
+ </div>
</div>
-</true>
-<false>
-<div class="container">
- <form class="form-signin" action="{{ @hostname }}do/login" method="post">
- <h2 class="form-signin-heading">Login</h2>
- <input type="text" name="user" class="form-control" placeholder="Username" autofocus>
- <input type="password" name="pass" class="form-control" placeholder="Password">
- <label class="checkbox">
- <input type="checkbox" name="remember" value="remember-me">Remember me</input>
- </label>
- <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button>
- </form>
-</div>
-</false>
-</check>
diff --git a/management-interface/views/menu.php b/management-interface/views/menu.php
index 9ef4068..d010119 100644
--- a/management-interface/views/menu.php
+++ b/management-interface/views/menu.php
@@ -8,17 +8,18 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
- <a class="navbar-brand" href="#"><?= $_title ?></a>
+ <a class="navbar-brand" href="<?=$hostname ?>"><?= $_title ?></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<?php
- foreach($item as $value) {
+ for ($i = 0; $i < sizeof($item); $i++) {
+ if ($intern[$i]) continue;
echo '<li';
- echo ($value === $_module)? ' class="active"':'';
+ echo ($item[$i] === $_module)? ' class="active"':'';
echo '>';
- echo '<a href="'.$hostname.$value.'">';
- echo Util::firstcap($value);
+ echo '<a href="'.$hostname.$item[$i].'">';
+ echo Util::firstcap($item[$i]);
echo '</a>';
echo '</li>';
}
diff --git a/management-interface/views/satellites.htm b/management-interface/views/satellites.htm
new file mode 100644
index 0000000..24adba1
--- /dev/null
+++ b/management-interface/views/satellites.htm
@@ -0,0 +1,44 @@
+ <div class="container">
+ <div class="jumbotron">
+ <check if="{{ @loggedin }}">
+ <true>
+ <h2>List of all satellite public keys</h2>
+ <table class="table">
+ <thead>
+ <tr>
+ <td>
+ <label>
+ <input type="checkbox">
+ </label>
+ </td>
+ <td>Organization</td>
+ <td>Address</td>
+ <td>Name</td>
+ <td>Prefix</td>
+ <td>Public key</td>
+ </tr>
+ </thead>
+ <tbody>
+ <repeat group="{{ @result }}" value="{{ @item }}">
+ <tr>
+ <td>
+ <label>
+ <input type="checkbox">
+ </label>
+ </td>
+ <td>{{ @item.organization }}</td>
+ <td>{{ @item.address }}</td>
+ <td>{{ @item.name }}</td>
+ <td>{{ @item.prefix}}</td>
+ <td><check if="{{ @item.publickey}} == ''"><true>no</true><false>yes</false></check></td>
+ </tr>
+ </repeat>
+ </tbody>
+ </table>
+ </true>
+ <false>
+ <p class="bg-danger">Please <a href="{{ $hostname }}login">login</a></p>
+ </false>
+ </check>
+ </div>
+ </div> <!-- /container -->
diff --git a/management-interface/views/users.htm b/management-interface/views/users.htm
index ed15306..c461072 100644
--- a/management-interface/views/users.htm
+++ b/management-interface/views/users.htm
@@ -1,8 +1,38 @@
<div class="container">
-
<div class="jumbotron">
- <h1>{{ strtoupper(@_module) }}</h1>
- <p></p>
+ <check if="{{ @loggedin }}">
+ <true>
+ <h2>List of all users</h2>
+ <table class="table">
+ <thead>
+ <tr>
+ <td>ID</td>
+ <td>Username</td>
+ <td>Organization</td>
+ <td>First name</td>
+ <td>Last name</td>
+ <td>Email</td>
+ <td>Last login</td>
+ </tr>
+</thead>
+ <tbody>
+ <repeat group="{{ @result }}" value="{{ @item }}">
+ <tr>
+ <td>{{ @item.userid }}</td>
+ <td>{{ @item.username }}</td>
+ <td>{{ @item.organization }}</td>
+ <td>{{ @item.firstname }}</td>
+ <td>{{ @item.lastname }}</td>
+ <td>{{ @item.email }}</td>
+ <td>{{ @item.lastlogin }}</td>
+ </tr>
+ </repeat>
+ </tbody>
+ </table>
+ </true>
+ <false>
+ <p class="bg-danger">Please <a href="{{ $hostname }}login">login</a></p>
+ </false>
+ </check>
</div>
-
</div> <!-- /container -->