admin: display on interface time synchronization diff
This commit is contained in:
parent
fa33fac003
commit
5dcb13629a
|
@ -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
|
||||
}
|
||||
}))
|
||||
}
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
})
|
||||
|
|
|
@ -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': '{} seconde', 'other': '{} secondes'}"></ng-pluralize><br>
|
||||
Dernière synchronisation du frontend : {{ t.frontend | date:"mediumTime" }}
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue