diff --git a/packages/center/handler.ts b/packages/center/handler.ts index 5da14967..eb256bb2 100644 --- a/packages/center/handler.ts +++ b/packages/center/handler.ts @@ -1,3 +1,4 @@ +import assert from 'assert'; import crypto from 'crypto'; import yaml from 'js-yaml'; import * as bus from 'hydrooj/src/service/bus'; @@ -28,7 +29,13 @@ class DataReportHandler extends Handler { @post('installId', Types.String) @post('payload', Types.String) async post(domainId: string, installId: string, _payload: string) { - const payload: any = yaml.load(decrypt(_payload)); + let payload: any; + try { + payload = yaml.load(decrypt(_payload)); + } catch (e) { + payload = yaml.load(_payload); + } + assert(payload.url); const old = await coll.findOne({ _id: installId }); await coll.updateOne({ _id: installId }, { $set: { diff --git a/packages/center/package.json b/packages/center/package.json index 317e0b0d..f1827bee 100644 --- a/packages/center/package.json +++ b/packages/center/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/center", - "version": "0.1.2", + "version": "0.1.3", "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 996b4756..578f6f97 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.17.8", + "version": "3.17.9", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/service/monitor.ts b/packages/hydrooj/src/service/monitor.ts index b737e4bb..fe5e617d 100644 --- a/packages/hydrooj/src/service/monitor.ts +++ b/packages/hydrooj/src/service/monitor.ts @@ -1,4 +1,3 @@ -import crypto from 'crypto'; import { dump } from 'js-yaml'; import superagent from 'superagent'; import type { StatusUpdate } from '@hydrooj/utils/lib/sysinfo'; @@ -10,13 +9,6 @@ import db from './db'; const coll = db.collection('status'); const logger = new Logger('monitor'); -function crypt(str: string) { - const cipher = crypto.createCipheriv('des-ecb', 'hydro-oj', ''); // lgtm [js/hardcoded-credentials] - let encrypted = cipher.update(str, 'utf8', 'hex'); - encrypted += cipher.final('hex'); - return encrypted; -} - export async function feedback(): Promise<[string, StatusUpdate]> { const { system, domain, document, user, record, @@ -56,12 +48,12 @@ export async function feedback(): Promise<[string, StatusUpdate]> { const status = await db.db.admin().serverStatus(); info.dbVersion = status.version; } catch (e) { } - const payload = crypt(dump(info, { + const payload = dump(info, { replacer: (key, value) => { if (typeof value === 'function') return ''; return value; }, - })); + }); if (process.env.CI) return [mid, $update]; superagent.post(`${system.get('server.center')}/report`) .send({ installId, payload })