diff --git a/packages/center/handler.ts b/packages/center/handler.ts index d2737e55..8ad14e9f 100644 --- a/packages/center/handler.ts +++ b/packages/center/handler.ts @@ -1,5 +1,6 @@ import crypto from 'crypto'; import yaml from 'js-yaml'; +import * as bus from 'hydrooj/src/service/bus'; import db from 'hydrooj/src/service/db'; import { Handler, post, Route, Types, @@ -28,6 +29,7 @@ class DataReportHandler extends Handler { @post('payload', Types.String) async post(domainId: string, installId: string, _payload: string) { const payload: any = yaml.load(decrypt(_payload)); + const old = await coll.findOne({ _id: installId }); await coll.updateOne({ _id: installId }, { $set: { version: payload.version, @@ -45,9 +47,11 @@ class DataReportHandler extends Handler { problemCount: payload.problemCount, discussionCount: payload.discussionCount, recordCount: payload.recordCount, + sandbox: payload.sandbox, }, }, { upsert: true }); - this.response.body = 'success'; + bus.emit('center/report', this, installId, old, payload); + this.response.body = { code: 0 }; } } diff --git a/packages/center/package.json b/packages/center/package.json index 88be34cc..ec676a34 100644 --- a/packages/center/package.json +++ b/packages/center/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/center", - "version": "0.1.0", + "version": "0.1.1", "main": "package.json", "repository": "https://github.com/hydro-dev/Hydro.git", "author": "undefined ", diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 4dfc920c..28bf1ce5 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.15.8", + "version": "3.15.9", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/model/setting.ts b/packages/hydrooj/src/model/setting.ts index d3438250..0d3db2f0 100644 --- a/packages/hydrooj/src/model/setting.ts +++ b/packages/hydrooj/src/model/setting.ts @@ -198,7 +198,7 @@ SystemSetting( Setting('setting_smtp', 'smtp.from', null, 'text', 'smtp.from', 'Mail From'), Setting('setting_smtp', 'smtp.secure', false, 'boolean', 'smtp.secure', 'SSL'), Setting('setting_smtp', 'smtp.verify', true, 'boolean', 'smtp.verify', 'Verify register email'), - Setting('setting_server', 'server.center', 'https://hydro.undefined.moe:8443/center', 'text', 'server.center', '', FLAG_HIDDEN), + Setting('setting_server', 'server.center', 'https://hydro.ac/center', 'text', 'server.center', '', FLAG_HIDDEN), Setting('setting_server', 'server.name', 'Hydro', 'text', 'server.name', 'Server Name'), Setting('setting_server', 'server.displayName', 'Hydro', 'text', 'server.name', 'Server Name (Global Display)', FLAG_PRO), Setting('setting_server', 'server.url', '/', 'text', 'server.url', 'Server BaseURL'), diff --git a/packages/hydrooj/src/service/monitor.ts b/packages/hydrooj/src/service/monitor.ts index 15ed8b71..5670e5ee 100644 --- a/packages/hydrooj/src/service/monitor.ts +++ b/packages/hydrooj/src/service/monitor.ts @@ -33,6 +33,13 @@ export async function feedback(): Promise<[string, StatusUpdate]> { document.coll.find({ docType: document.TYPE_DISCUSSION }).count(), record.coll.find().count(), ]); + let sandbox = ''; + try { + let host = system.get('hydrojudge.sandbox_host') || 'http://localhost:5050/'; + if (!host.endsWith('/')) host += '/'; + const res = await superagent.get(`${host}version`); + sandbox = res.body; + } catch (e) { } const payload = crypt(dump({ mid: mid.toString(), version, @@ -47,6 +54,7 @@ export async function feedback(): Promise<[string, StatusUpdate]> { memory: inf.memory, osinfo: inf.osinfo, cpu: inf.cpu, + sandbox, }, { replacer: (key, value) => { if (typeof value === 'function') return ''; diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 8c1dfbad..f94bf6e7 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -791,6 +791,10 @@ const scripts: UpgradeScript[] = [ ); return true; }, + async function _64_65() { + await system.set('server.center', 'https://hydro.ac/center'); + return true; + }, ]; export default scripts;