Skip to content

Commit 7a25c2b

Browse files
committed
core: add version for machine-setup
1 parent e22ca6b commit 7a25c2b

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

packages/machine-setup/frontend/src/components/HeartbeatInfo.vue

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ const saveHeartbeat = async () => {
4545
4646
const runHeartbeat = async () => {
4747
try {
48+
const version = await fetch(heartbeaturl.value.replace('/report', '/version')).then(res => res.json());
49+
if (!version) throw new Error('无法获取上报中心版本');
50+
window.$notification.success({ title: '连接上报中心成功', content: `上报中心版本:${version.version}` });
4851
const res = await os.execCommand(`HEARTBEATURL=${heartbeaturl.value} /usr/sbin/icpc-heartbeat`);
4952
if (res.stdErr || res.exitCode) throw new Error(res.stdErr);
5053
console.log('run heartbeat on test', res);

packages/server/config.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import path from 'path';
22
import Schema from 'schemastery';
3-
import { version } from './package.json';
3+
import { version as packageVersion } from './package.json';
44
import {
55
checkReceiptPrinter,
66
fs, getPrinters, Logger, yaml,
@@ -99,7 +99,8 @@ export const config = (isClient ? clientSchema : serverSchema)(yaml.load(fs.read
9999
export const saveConfig = () => {
100100
fs.writeFileSync(configPath, yaml.dump(config));
101101
};
102+
export const version = packageVersion;
102103

103104
logger.info(`Config loaded from ${configPath}`);
104-
logger.info(`xcpc-tools version: ${version}`);
105+
logger.info(`xcpc-tools version: ${packageVersion}`);
105106
if (!isClient && !exit) logger.info(`Server View User Info: admin / ${config.viewPass}`);

packages/server/handler/misc.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { Context } from 'cordis';
44
import { Registry } from 'prom-client';
55
import { Handler } from '@hydrooj/framework';
6-
import { config } from '../config';
6+
import { config, version } from '../config';
77
import StaticFrontend from '../data/static.frontend';
88
import { createMetricsRegistry, decodeBinary, StaticHTML } from '../utils';
99

@@ -67,9 +67,22 @@ class MetricsHandler extends AuthHandler {
6767
}
6868
}
6969

70+
class VersionHandler extends Handler {
71+
noCheckPermView = true;
72+
notUsage = true;
73+
74+
async get() {
75+
this.response.body = {
76+
program: '@hydro/xcpc-tools',
77+
version,
78+
};
79+
}
80+
}
81+
7082
export async function apply(ctx: Context) {
7183
registry = createMetricsRegistry(ctx);
7284
ctx.Route('home', '/', HomeHandler);
7385
ctx.Route('static', '/main.js', StaticHandler);
7486
ctx.Route('metrics', '/metrics', MetricsHandler);
87+
ctx.Route('version', '/version', VersionHandler);
7588
}

0 commit comments

Comments
 (0)