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