Skip to content

Commit

Permalink
#1815 Display platform errors
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Mar 5, 2021
1 parent b36f8e8 commit e7cb588
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 101 deletions.
1 change: 1 addition & 0 deletions frontend/app/scripts/controllers/AuthenticationCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
'use strict';
angular.module('theHiveControllers')
.controller('AuthenticationCtrl', function($rootScope, $scope, $state, $location, $uibModalStack, $stateParams, AuthenticationSrv, NotificationSrv, UtilsSrv, UrlParser, appConfig) {
$scope.appConfig = appConfig;
$scope.version = appConfig.versions.TheHive;

$scope.params = {
Expand Down
2 changes: 1 addition & 1 deletion frontend/app/styles/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ body {
}

.container-main {
padding-top: 100px;
padding-top: 60px;
}

.marked>table, .markdown>table {
Expand Down
14 changes: 12 additions & 2 deletions frontend/app/views/components/app-container.component.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,17 @@
<header class="main-header"></header>
<!--<main-sidebar class="main-sidebar"></main-sidebar>-->
<div class="content-wrapper" fixed-height>
<div class="container-fluid container-main" ng-if="currentUser.login" ui-view>
<div class="container-fluid container-main" ng-if="currentUser.login">

<div class="text-danger" ng-repeat="schema in appConfig.schemaStatus" ng-if="schema.error">
<div class="callout callout-danger">
<h4>Error in {{schema.name}} schema: expected version {{schema.expectedVersion}}, got {{schema.currentVersion}}</h4>
<p>Please contact the administrator</p>
</div>
</div>

<ui-view />

</div>
</div>
<footer class="main-footer">
Expand All @@ -26,7 +36,7 @@
</span>
</div>
<div>
<strong><a href="http://www.thehive-project.org" target="_blank">TheHive Project</a> 2016-2020, <a href="https://www.gnu.org/licenses/agpl-3.0.en.html" target="_blank">AGPL-V3</a></strong>
<strong><a href="http://www.thehive-project.org" target="_blank">TheHive Project</a> 2016-2021, <a href="https://www.gnu.org/licenses/agpl-3.0.en.html" target="_blank">AGPL-V3</a></strong>
</div>
</div>
</footer>
Expand Down
9 changes: 9 additions & 0 deletions frontend/app/views/login.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
<div class="container-fluid mt-xs">
<div class="text-danger" ng-repeat="schema in appConfig.schemaStatus" ng-if="schema.error">
<div class="callout callout-danger">
<h4>Error in {{schema.name}} schema: expected version {{schema.expectedVersion}}, got {{schema.currentVersion}}</h4>
<p>Please contact the administrator</p>
</div>
</div>
</div>

<div class="login-box">
<div class="login-logo">
<img src="images/logo.svg" height="70"/>
Expand Down
133 changes: 35 additions & 98 deletions frontend/app/views/partials/admin/platform/status.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,117 +19,87 @@ <h3 class="box-title">Platform Status</h3>
</div>
</div>

<h4 class="text-primary mt-m">Database Schema status</h4>
<div class="flex-table">
<div class="flex-header mt-xs">
<div class="flex-col flex-w-120 text-center">Status</div>
<div class="flex-col flex-2">Schema name</div>
<div class="flex-col flex-1">Schema version</div>
</div>
<div ng-repeat="schema in $vm.appConfig.schemaStatus" class="flex-table">
<div class="flex-row mt-xs">
<div class="flex-col flex-w-120 vertical centered">
<span class="label label-lg label-default" ng-class="{
true: 'label-success',
false: 'label-danger'}[schema.error === null]">{{schema.error === null ? 'OK' : 'ERROR'}}</span>
</div>
<div class="flex-col flex-2">
<h4 class="media-heading text-primary">
{{schema.name}}
</h4>
<div ng-if="schema.error" class="text-danger">
<p>{{schema.error}}</p>
</div>
</div>

<div class="flex-col flex-1 vertical">
{{schema.currentVersion}}
</div>
</div>
</div>
</div>

<h4 class="text-primary mt-m">Data index status <small class="ml-m clickable" ng-click="$vm.loadIndexStatus()"><i class="fa fa-refresh"></i> Reload</small></h4>
<div class="empty-message" ng-if="$vm.loading.index">Loading index status...</div>
<div class="flex-table" ng-show="!$vm.loading.index">
<div class="flex-header mt-xs">
<div class="flex-col flex-w-120 text-center">Status</div>
<div class="flex-col flex-2">Index name</div>
<div class="flex-col flex-1">Database Objects</div>
<div class="flex-col flex-1">Index Objects</div>
<div class="flex-col flex-1"># Entities</div>
<div class="flex-col flex-w-100"></div>
</div>
<div ng-repeat="(indexName, data) in $vm.indexStatus" class="flex-table">
<div class="flex-row mt-xs">
<div class="flex-col flex-w-120 vertical centered">
<span class="label label-lg label-default" ng-class="{
'OK': 'label-success',
'Error': 'label-danger'}[data.status]">{{data.status}}</span>
'Error': 'label-danger'}[data.status]">{{data.status | uppercase}}</span>
</div>
<div class="flex-col flex-2 vertical">
<h4 class="media-heading text-primary">
{{indexName}}
</h4>
<div class="mt-xs">
<div>{{(data.mixedCount / data.compositeCount) * 100}}%</div>
<div class="progress progress-xs">
<div class="progress-bar" ng-class="{
'OK': 'progress-bar-success',
'Error': 'progress-bar-danger'}[data.status]" style="width: {{(data.mixedCount / data.compositeCount) * 100}}%"></div>
</div>
</div>
</div>

<div class="flex-col flex-1 vertical">
<span class="label label-lg label-default">
{{data.mixedCount}}
</span>
</div>
<div class="flex-col flex-1 vertical">
<span class="label label-lg label-default">
{{data.compositeCount}}
</span>
</div>

<div class="flex-col flex-w-100">
<a href class="text-primary" ng-click="$vm.reindex(indexName)"><i
class="fa fa-edit mr-xxxs"></i> Reindex</a>
<a href class="text-primary" ng-click="$vm.reindex(indexName)"><i class="fa fa-edit mr-xxxs"></i> Reindex</a>
</div>
</div>
</div>
</div>


<h4 class="text-primary mt-m">Data health status <small class="ml-m clickable" ng-click="$vm.loadCheckStats()"><i class="fa fa-refresh"></i> Reload</small></h4>
<h4 class="text-primary mt-m">Database integrity check</h4>
<div class="empty-message" ng-if="$vm.loading.check">Loading data health stats...</div>
<div class="flex-table" ng-show="!$vm.loading.check">
<div class="flex-header mt-xs">
<div class="flex-col flex-w-120 text-center">Status</div>
<div class="flex-col flex-1">Control name</div>
<div class="flex-col flex-2">Global Stats</div>
<div class="flex-col flex-2">Duplicate Stats</div>
<div class="flex-col flex-w-100"></div>
</div>
<div ng-repeat="(checkName, data) in $vm.checkStats" class="flex-table">
<div class="flex-row mt-xs">
<div class="flex-col flex-w-120 vertical centered">
<span class="label label-lg label-default" ng-class="{
true: 'label-warning',
false: 'label-success'}[data.needCheck]">{{data.needCheck ? 'Pending': 'OK'}}</span>
</div>
<div class="flex-col flex-1 vertical">
<h4 class="media-heading text-primary">
{{checkName}}
</h4>
</div>

<div class="flex-col flex-2">
<div class="row">
<div class="col-sm-12">
<span class="label label-lg label-default mr-xxxs">Iterations:
{{data.globalStats.global.iteration}}</span>
<span class="label label-lg label-default mr-xxxs" ng-class="{
true: 'label-warning'}[data.globalStats.global.duplicate > 0]">Duplicate:
{{data.globalStats.global.duplicate}}</span>
<span class="label label-lg label-default">Duration:
{{data.globalStats.global.duration}}</span>
</div>
</div>
<div class="row mt-xxs">
<div class="col-sm-12">
<strong>Last execution: </strong>{{data.globalStats.lastDate | shortDate}}
</div>
</div>
</div>

<div class="flex-col flex-2">
<div class="row">
<div class="col-sm-12">
<span class="label label-lg label-default mr-xxxs">Iterations:
{{data.duplicateStats.global.iteration}}</span>
<span class="label label-lg label-default mr-xxxs" ng-class="{
true: 'label-warning'}[data.duplicateStats.global.duplicate > 0]">Duplicate:
{{data.duplicateStats.global.duplicate}}</span>
<span class="label label-lg label-default">Duration:
{{data.duplicateStats.global.duration}}</span>
</div>
</div>
<div class="row mt-xxs">
<div class="col-sm-12">
<strong>Last execution: </strong>{{data.duplicateStats.lastDate | shortDate}}
</div>
</div>
</div>

<div class="flex-col flex-w-100">
<a href class="text-primary" ng-click="$vm.checkControl(checkName)"><i
class="fa fa-edit mr-xxxs"></i> Trigger</a>
Expand All @@ -138,40 +108,7 @@ <h4 class="media-heading text-primary">
</div>
</div>

<h4 class="text-primary mt-m">Database Schema status</h4>
<div class="flex-table">
<div class="flex-header mt-xs">
<div class="flex-col flex-w-120 text-center">Status</div>
<div class="flex-col flex-2">Schema name</div>
<div class="flex-col flex-1">Current Version</div>
<div class="flex-col flex-1">Expected Version</div>
</div>
<div ng-repeat="schema in $vm.appConfig.schemaStatus" class="flex-table">
<div class="flex-row mt-xs">
<div class="flex-col flex-w-120 vertical centered">
<span class="label label-lg label-default" ng-class="{
true: 'label-success',
false: 'label-danger'}[schema.error === null]">{{schema.error === null ? 'OK' :
'Error'}}</span>
</div>
<div class="flex-col flex-2">
<h4 class="media-heading text-primary">
{{schema.name}}
</h4>
<div ng-if="schema.error" class="mt-xs text-danger">
{{schema.error}}
</div>
</div>

<div class="flex-col flex-1 vertical">
{{schema.currentVersion}}
</div>
<div class="flex-col flex-1 vertical">
{{schema.expectedVersion}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Expand Down

0 comments on commit e7cb588

Please sign in to comment.