admin: display on interface time synchronization diff

This commit is contained in:
nemunaire 2019-10-31 16:05:58 +01:00
parent fa33fac003
commit 5dcb13629a
5 changed files with 48 additions and 1 deletions

26
admin/api/timestamp.go Normal file
View File

@ -0,0 +1,26 @@
package api
import (
"os"
"time"
"github.com/julienschmidt/httprouter"
)
var TimestampCheck = "submissions"
func init() {
router.GET("/api/timestamps.json", apiHandler(
func(httprouter.Params, []byte) (interface{}, error) {
if stat, err := os.Stat(TimestampCheck); err != nil {
return nil, err
} else {
now := time.Now().UTC()
return map[string]interface{}{
"frontend": stat.ModTime().UTC(),
"backend": now,
"diffFB": now.Sub(stat.ModTime()),
}, nil
}
}))
}

View File

@ -92,6 +92,7 @@ func main() {
var bind = flag.String("bind", "127.0.0.1:8081", "Bind port/socket")
var dsn = flag.String("dsn", fic.DSNGenerator(), "DSN to connect to the MySQL server")
var baseURL = flag.String("baseurl", "/", "URL prepended to each URL")
flag.StringVar(&api.TimestampCheck, "timestampCheck", api.TimestampCheck, "Path regularly touched by frontend to check time synchronisation")
flag.StringVar(&pki.PKIDir, "pki", "./PKI", "Base directory where found PKI scripts")
flag.StringVar(&StaticDir, "static", "./htdocs-admin/", "Directory containing static files")
flag.StringVar(&api.TeamsDir, "teams", "./TEAMS", "Base directory where save teams JSON files")
@ -144,6 +145,9 @@ func main() {
if api.TeamsDir, err = filepath.Abs(api.TeamsDir); err != nil {
log.Fatal(err)
}
if api.TimestampCheck, err = filepath.Abs(api.TimestampCheck); err != nil {
log.Fatal(err)
}
if settings.SettingsDir, err = filepath.Abs(settings.SettingsDir); err != nil {
log.Fatal(err)
}

View File

@ -129,6 +129,9 @@ angular.module("FICApp")
.factory("Version", function($resource) {
return $resource("/api/version")
})
.factory("Timestamp", function($resource) {
return $resource("/api/timestamps.json")
})
.factory("Monitor", function($resource) {
return $resource("/api/monitor/:machineId", { machineId: '@id' })
})
@ -365,6 +368,15 @@ angular.module("FICApp")
$scope.v = Version.get();
})
.controller("TimestampController", function($scope, $interval, Timestamp) {
$scope.t = Timestamp.get();
var refresh = function() {
$scope.t = Timestamp.get();
}
var myinterval = $interval(refresh, 2500);
$scope.$on('$destroy', function () { $interval.cancel(myinterval); });
})
.controller("MonitorController", function($scope, Monitor) {
$scope.monitor = Monitor.get();
})

View File

@ -7,4 +7,8 @@
<p ng-controller="VersionController">
Version de l'API : {{ v.version }}
</p>
<p ng-controller="TimestampController">
Latence frontend-backend : <ng-pluralize count="t.diffFB / 1000000000" when="{'one': '{}&nbsp;seconde', 'other': '{}&nbsp;secondes'}"></ng-pluralize><br>
Dernière synchronisation du frontend : {{ t.frontend | date:"mediumTime" }}
</p>
</div>

View File

@ -152,7 +152,7 @@ services:
- /var/lib/fic/backups
- name: fic-admin
image: nemunaire/fic-admin:latest
command: ["/srv/admin", "-bind=:8081", "-baseurl=/admin/", "-localimport=/mnt/fic"]
command: ["/srv/admin", "-bind=:8081", "-baseurl=/admin/", "-localimport=/mnt/fic", "-timestampCheck=/srv/submissions"]
env:
- MYSQL_HOST=db
- FICCA_PASS=jee8AhloAith1aesCeQu5ahgIegaeM4K
@ -164,6 +164,7 @@ services:
- /var/lib/fic/pki:/srv/PKI
- /var/lib/fic/teams:/srv/TEAMS
- /var/lib/fic/settings:/srv/SETTINGS
- /var/lib/fic/submissions:/srv/submissions:ro
net: /run/netns/fic-admin
pid: new
ipc: new