This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository mum. See http://git.chorem.org/mum.git commit 7193aecf2291dfeda0104db64df797f6aa062d99 Author: Alexis Guilbaud <guilbaud@codelutin.com> Date: Fri Jul 3 11:47:00 2015 +0200 removed test if root for nmap + changed group view on dashboard --- app/websocket_func.py | 6 +--- static/js/controllers/dashboardCtrl.js | 39 ++++++++++------------ views/dashboard.html | 61 +++++++++++++++++++++++++--------- views/hostpage.html | 33 ++++++++++++++++++ views/index.html | 22 +++++++++--- 5 files changed, 116 insertions(+), 45 deletions(-) diff --git a/app/websocket_func.py b/app/websocket_func.py index 39c8f4f..4baa086 100644 --- a/app/websocket_func.py +++ b/app/websocket_func.py @@ -50,11 +50,7 @@ def NMAP_SCAN_DEMAND(msg, ws, ml): ml.create_empty_host(msg["NMAP_SCAN_DEMAND"]["ip_range"], ws) ws.send(json.dumps({"SUCCESS_MODULE": "New host successfully created"})) else: - if os.getegid() != 0: - logger.error("Cannot run nmap without root privileges.") - ws.send(json.dumps({"ERROR": "Cannot run nmap without root privileges."})) - else: - start_first_detection(msg["NMAP_SCAN_DEMAND"], ml, ws) + start_first_detection(msg["NMAP_SCAN_DEMAND"], ml, ws) # asked from hostpage diff --git a/static/js/controllers/dashboardCtrl.js b/static/js/controllers/dashboardCtrl.js index 6f1dc8d..94577cc 100644 --- a/static/js/controllers/dashboardCtrl.js +++ b/static/js/controllers/dashboardCtrl.js @@ -206,37 +206,34 @@ mumApp.controller('dashboardCtrl', function ($scope, $routeParams, $location, $r for (var i=0, l=allGroups.length ; i<l ; i++){ var current_group_name = allGroups[i]; $scope.group_obj[current_group_name] = {}; - $scope.group_obj[current_group_name].hosts = {}; //{addr: color} + $scope.group_obj[current_group_name].total = 0; + $scope.group_obj[current_group_name].success = 0; + $scope.group_obj[current_group_name].warning = 0; + $scope.group_obj[current_group_name].danger = 0; + $scope.group_obj[current_group_name].idling = 0; $scope.group_obj[current_group_name].status = 'success'; } for (var pos_host=0, l=$scope.items.length ; pos_host < l ; pos_host++){ - var current_host_name = $scope.items[pos_host].addr; for (var pos_grp=0, l_grp=$scope.items[pos_host].group.length ; pos_grp<l_grp ; pos_grp++){ var current_group_name = $scope.items[pos_host].group[pos_grp]; - $scope.group_obj[current_group_name].hosts[current_host_name] = get_color($scope.items[pos_host].status); + $scope.group_obj[current_group_name].total ++; if ($scope.items[pos_host].status == 'danger'){ + $scope.group_obj[current_group_name].danger ++; $scope.group_obj[current_group_name].status = 'danger'; } - else if ($scope.items[pos_host].status == 'warning' && $scope.group_obj[current_group_name].status != 'danger'){ - $scope.group_obj[current_group_name].status = 'warning'; + else if ($scope.items[pos_host].status == 'warning'){ + $scope.group_obj[current_group_name].warning ++; + if($scope.group_obj[current_group_name].status != 'danger'){ + $scope.group_obj[current_group_name].status = 'warning'; + } + } + else if ($scope.items[pos_host].status == 'success'){ + $scope.group_obj[current_group_name].success ++; + } + else{ + $scope.group_obj[current_group_name].idling ++; } } } }; - - var get_color = function(status){ - var color = ""; - switch (status){ - case "success": - color = 'green'; - break; - case "warning": - color = 'orange'; - break; - case "danger": - color = 'red'; - break; - } - return color; - } }); \ No newline at end of file diff --git a/views/dashboard.html b/views/dashboard.html index 9996add..bccba57 100644 --- a/views/dashboard.html +++ b/views/dashboard.html @@ -119,8 +119,13 @@ <span popover-placement="bottom" popover="warning: {{host.warning}} ; danger: {{host.danger}}" popover-trigger="mouseenter" - style="text-decoration:underline">{{host.status}} + ng-show="host.status=='success'" + style="text-decoration:underline"> + {{host.status}} </span> + <span ng-show="host.status!='success'"> + warning: {{host.warning}} ; danger: {{host.danger}} + </span>({{host.nb_mod}}) </td> <td> <ui-select multiple @@ -176,37 +181,63 @@ <!-- Group view --> - <div ng-show="view == 'group_view' && items.length > 0"> + <div ng-show="view == 'group_view' && items.length > 0">{{group_obj}} <h2 class="sub-header">Hosts currently on monitoring (by group)</h2> <div class="row"> + <div class="col-xs-2"> + <label for="status_f_grp">Status filter</label> + <select multiple class="form-control input-sm" + id="status_f_grp" + ng-model="status_filter" + ng-change="update_url()"> + <option>success</option> + <option>warning</option> + <option>danger</option> + <option>idling</option> + </select> + </div> - <!-- - <div class="col-xs-3"> - <label for="name_f_grp_view">Name filter</label> - <input class="form-control" type="text" id="name_f_grp_view" ng-model="name_filter"> - </div>--> + <div class="col-xs-2"> + <label for="group_f_grp">Group filter</label> + <select class="form-control input-sm" + id="group_f_grp" + ng-model="group_filter" + ng-options="group for group in allGroups() | unique:'group'" + ng-change="update_url()"> + </select> + </div> <table class="table table-condensed table-hover"> <thead> <tr> <th><a ng-click="order_val='group'">Group</a></th> - <th><a ng-click="order_val='host'">Hosts</a></th> - <th><a ng-click="order_val='status'">Status</a></th> + <th><a ng-click="order_val='host'">Machines</a></th> </tr> </thead> <tbody> <tr ng-repeat="(groupname, group) in group_obj | - orderBy:order_val" + orderBy:order_val + filter:{groupname:group_filter}" class="{{group.status}}"> <!-- group:{name:grp} --> <td>{{groupname}}</td> <td> - <div ng-repeat="(host, color) in group.hosts"> - <a href="#/hostpage/{{host}}" - style="color: {{color}}">{{host}}</a> - </div> + <p class="navbar-text navbar-left"><a href="#dashboard" style="color:grey"> + Total: {{group.total}} + </a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?group_filter={{groupname}}&status_filter={{group.status}}" style="color:green"> + OK: {{group.success}} + </a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?group_filter={{groupname}}&status_filter={{group.status}}" style="color:orange"> + Warning: {{group.warning}} + </a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?group_filter={{groupname}}&status_filter={{group.status}}" style="color:red"> + KO: {{group.danger}} + </a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?group_filter={{groupname}}&status_filter={{group.status}}" style="color:grey"> + Idling: {{group.idling}} + </a></p> </td> - <td>{{group.status}}</td> <td> <button type="button" class="btn btn-{{get_group_sub_num(groupname).btn_type}} btn-xs" diff --git a/views/hostpage.html b/views/hostpage.html index 63b3143..b67b034 100644 --- a/views/hostpage.html +++ b/views/hostpage.html @@ -477,6 +477,32 @@ </li> </ul>--> + <div class="row"> + <input type="radio" value="login"> Login/Password + <input type="radio" value="key"> Key couple + </div> + + <div class="row"> + <div class="col-xs-3"> + <label for="usrname">Login</label> + <input type="text" id="usrname" ng-model="username"/> + </div> + <div class="col-xs-3"> + <label for="password">Password</label> + <input type="password" id="password" ng-model="password"/> + </div> + </div> + + <div class="row"> + <div class="col-xs-3"> + <label for="private_key">Select a private key</label> + <select class="form-control input-sm" id="private_key" + ng-model="private_key" + ng-options="key as key for key in keys_list"></select> + </div> + </div> + + <!-- <div class="row" ng-show="show_form('private_key')"> <div class="col-xs-3"> <label for="private_key">Select a private key</label> @@ -516,6 +542,13 @@ <input type="password" id="password" ng-model="password"/> </div> </div> + + <div class="row" ng-show="show_form('domain')"> + <div class="col-xs-3"> + <label for="domain">Domain</label> + <input type="text" id="domain" ng-model="username"/> + </div> + </div>--> </div> <div class="modal-footer"> diff --git a/views/index.html b/views/index.html index 58fca9d..a44f81e 100644 --- a/views/index.html +++ b/views/index.html @@ -58,10 +58,10 @@ </button> <a class="navbar-brand" href="#dashboard.html">Mum</a> <p class="navbar-text navbar-left"><a href="#dashboard" style="color:grey">Total : {{stateNumber()[0]}}</a></p> - <p class="navbar-text navbar-left"><a href="#dashboard/success" style="color:green">OK : {{stateNumber()[1]}}</a></p> - <p class="navbar-text navbar-left"><a href="#dashboard/warning" style="color:orange">Warning : {{stateNumber()[2]}}</a></p> - <p class="navbar-text navbar-left"><a href="#dashboard/danger" style="color:red">KO : {{stateNumber()[3]}}</a></p> - <p class="navbar-text navbar-left"><a href="#dashboard/idling" style="color:grey">Idling : {{stateNumber()[4]}}</a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?status_filter=success" style="color:green">OK : {{stateNumber()[1]}}</a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?status_filter=warning" style="color:orange">Warning : {{stateNumber()[2]}}</a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?status_filter=danger" style="color:red">KO : {{stateNumber()[3]}}</a></p> + <p class="navbar-text navbar-left"><a href="#dashboard/?status_filter=idling" style="color:grey">Idling : {{stateNumber()[4]}}</a></p> <p class="navbar-text navbar-left"> <a href="#scan"> <button type="button" class="btn btn-success btn-xs" aria-label="Add host" @@ -209,6 +209,20 @@ </div> </script> + <script type="text/ng-template" id="modal_notes_label.html"> + <div class="modal-header"> + <h3 class="modal-title">Add a note</h3> + </div> + + <div class="modal-body"> + <textarea class="form-control" rows="20" ng-model="log_content"></textarea> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal" ng-click="close()">Close</button> + <!--<button type="button" class="btn btn-primary" ng-click="save()">Save changes</button>--> + </div> + </script> + </body> </html> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.