admin/monitor: show version

Massimo Melina committed Feb 12, 2022 at 17:09 UTC a5f1680b8f629e10f28381fa66b495fca9230949
8 files changed +27 -18
admin/src/MonitorPage.ts
+2
@@ -34,6 +34,8 @@ function MoreInfo() {
34 isValidElement(res) ? res :
35 h('ul', {},
36 pair('started'),
37 + pair('version'),
38 + pair('build'),
39 pair('http', 'HTTP', v => v.listening ? 'port '+v.port : ('off' + prefix(': configured port is used by ',v.busy))),
40 pair('https', 'HTTPS', v => v.listening ? 'port '+v.port : ('off' + prefix(': configured port is used by ',v.busy))),
41 )
afterbuild.js
+8 -4
@@ -2,11 +2,15 @@ const fs = require('fs')
2 const glob = require('fast-glob')
3 const { execSync } = require('child_process')
4 const dist = 'dist/'
5 -console.log('updating timestamp', process.cwd())
6 -const FN = dist+'src/index.js'
5 +
6 +console.log('updating build timestamp and version')
7 +const pkg = JSON.parse(fs.readFileSync('package.json','utf8'))
8 +const FN = dist+'src/const.js'
9 fs.writeFileSync(FN,
10 fs.readFileSync(FN,'utf8')
9 - .replace(/(BUILD_TIMESTAMP = ")(.*)"/, '$1'+new Date().toISOString()+'"'))
11 + .replace(/(BUILD_TIMESTAMP *= *')(.*)'/, '$1'+new Date().toISOString()+"'")
12 + .replace(/(VERSION *= *')(.*)'/, '$1'+(pkg.version||'$2')+"'")
13 +)
14 for (const fn of glob.sync(dist+'node_modules/**/*.map'))
15 fs.unlinkSync(fn)
16
@@ -34,4 +38,4 @@ fs.unlinkSync(dist+'package-lock.json')
38 fs.chmodSync(fn, 0o755)
39 }
40
37 -console.log('afterbuild done')
41 +console.log('afterbuild done, version', pkg.version)
src/adminApis.ts
+4 -1
@@ -1,7 +1,8 @@
1 import { ApiHandlers } from './apis'
2 import { getConfig, getWholeConfig, setConfig } from './config'
3 import { getStatus } from './listen'
4 -import { app, HFS_STARTED } from './index'
4 +import { app } from './index'
5 +import { BUILD_TIMESTAMP, HFS_STARTED, VERSION } from './const'
6 import vfsApis from './api.vfs'
7 import accountsApis from './api.accounts'
8 import { Connection, getConnections } from './connections'
@@ -27,6 +28,8 @@ export const adminApis: ApiHandlers = {
28 const st = getStatus()
29 return {
30 started: HFS_STARTED,
31 + build: BUILD_TIMESTAMP,
32 + version: VERSION,
33 http: serverStatus(st.httpSrv, getConfig('port')),
34 https: serverStatus(st.httpsSrv, getConfig('https_port')),
35 }
src/api.auth.ts
+1 -1
@@ -2,7 +2,7 @@ import { getAccount, getCurrentUsername } from './perm'
2 import { verifyPassword } from './crypt'
3 import { ApiError, ApiHandler } from './apis'
4 import { SRPParameters, SRPRoutines, SRPServerSession, SRPServerSessionStep1 } from 'tssrp6a'
5 -import { SESSION_DURATION } from './index'
5 +import { SESSION_DURATION } from './const'
6 import { randomId } from './misc'
7 import Koa from 'koa'
8 import { changeSrpHelper, changePasswordHelper } from './api.helpers'
src/const.ts
+8 -3
@@ -1,9 +1,14 @@
1 import minimist from 'minimist'
2 +import * as fs from 'fs'
3 +import _ from 'lodash'
4
5 export const DEV = process.env.DEV ? 'DEV' : ''
4 -
5 -if (DEV)
6 - console.clear()
6 +console.debug(process.cwd())
7 +export const HFS_STARTED = new Date()
8 +export const BUILD_TIMESTAMP = ''
9 +export const VERSION = ''
10 + || DEV && String(_.attempt(() => JSON.parse(fs.readFileSync('package.json','utf8')).version)) // this should happen only in dev, build fills this value
11 +export const SESSION_DURATION = 30*60_000
12
13 export const SPECIAL_URI = '/~/'
14 export const FRONTEND_URI = SPECIAL_URI + 'frontend/'
src/index.ts
+3 -6
@@ -1,7 +1,7 @@
1 import Koa from 'koa'
2 import mount from 'koa-mount'
3 import { apiMiddleware } from './apis'
4 -import { API_URI, DEV} from './const'
4 +import { API_URI, BUILD_TIMESTAMP, DEV, HFS_STARTED, VERSION} from './const'
5 import { frontEndApis } from './frontEndApis'
6 import { log } from './log'
7 import { pluginsMiddleware } from './plugins'
@@ -12,11 +12,8 @@ import './listen'
12 import { serveAdminFiles } from './serveFrontend'
13 import { adminApis } from './adminApis'
14
15 -export const BUILD_TIMESTAMP = "-"
16 -export const SESSION_DURATION = 30*60_000
17 -export const HFS_STARTED = new Date()
18 -
19 -console.log('started', HFS_STARTED.toLocaleString(), 'build', BUILD_TIMESTAMP, DEV)
15 +if (DEV) console.clear()
16 +console.log('started', HFS_STARTED.toLocaleString(), 'version', VERSION||'-', 'build', BUILD_TIMESTAMP||'-', DEV)
17 console.debug('cwd', process.cwd())
18
19 export const adminApp = new Koa()
src/middlewares.ts
+1 -1
@@ -1,7 +1,7 @@
1 import compress from 'koa-compress'
2 import Koa from 'koa'
3 import session from 'koa-session'
4 -import { BUILD_TIMESTAMP, SESSION_DURATION } from './index'
4 +import { BUILD_TIMESTAMP, SESSION_DURATION } from './const'
5 import Application from 'koa'
6 import { FORBIDDEN, FRONTEND_URI } from './const'
7 import { vfs } from './vfs'
todo.md
-2
@@ -1,6 +1,4 @@
1 # To do
2 -- admin/home: report HFS version
3 -- admin/home: report busy port(s) with process name
2 - admin: warn in case of items with same name
3 - password protect admin
4 - explain fields in admin