center: use different field for version downgrade

This commit is contained in:
undefined committed 2023-04-06 23:08:12 +08:00
1 parent 4de95dc8d5
commit be2e2e32af
2 files changed
+44 -25

No files matched your search

+41 -23
View File
@@ -1,5 +1,6 @@
import assert from 'assert'; import assert from 'assert';
import crypto from 'crypto-js'; import crypto from 'crypto-js';
import { lt } from 'semver';
import { import {
db, definePlugin, ForbiddenError, Handler, post, Types, yaml, db, definePlugin, ForbiddenError, Handler, post, Types, yaml,
} from 'hydrooj'; } from 'hydrooj';
@@ -43,30 +44,47 @@ class DataReportHandler extends Handler {
throw new ForbiddenError(); throw new ForbiddenError();
} }
const old = await coll.findOne({ _id: installId }); const old = await coll.findOne({ _id: installId });
await coll.updateOne({ _id: installId }, { const setPayload = {
$set: { version: payload.version,
version: payload.version, name: payload.name,
name: payload.name, url: payload.url,
url: payload.url, addons: payload.addons,
addons: payload.addons, mem: payload.memory,
mem: payload.memory, osinfo: payload.osinfo,
osinfo: payload.osinfo, cpu: payload.cpu,
cpu: payload.cpu, ip: this.request.ip,
ip: this.request.ip, flags: payload.flags,
flags: payload.flags, update: new Date(),
update: new Date(), domainCount: payload.domainCount,
domainCount: payload.domainCount, userCount: payload.userCount,
userCount: payload.userCount, problemCount: payload.problemCount,
problemCount: payload.problemCount, discussionCount: payload.discussionCount,
discussionCount: payload.discussionCount, recordCount: payload.recordCount,
recordCount: payload.recordCount, sandbox: payload.sandbox,
sandbox: payload.sandbox, dbVersion: payload.dbVersion,
dbVersion: payload.dbVersion, };
}, if (old && lt(payload.version, old.version)) {
$setOnInsert: { init: new Date() }, await coll.updateOne(
}, { upsert: true }); { _id: installId },
{
$push: {
ips: this.request.ip,
},
$set: { downgrade: setPayload },
},
);
} else {
await coll.updateOne({ _id: installId }, {
$push: {
ips: this.request.ip,
},
$set: setPayload,
$setOnInsert: { init: new Date() },
}, { upsert: true });
}
this.ctx.emit('center/report', this, installId, old, payload); this.ctx.emit('center/report', this, installId, old, payload);
this.response.body = { code: 0 }; // TODO deliver messages
this.response.body = { code: 0, u: lt(payload.version, old.version) };
} }
} }
+3 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/center", "name": "@hydrooj/center",
"version": "0.2.3", "version": "0.2.4",
"main": "index.ts", "main": "index.ts",
"repository": "https://github.com/hydro-dev/Hydro.git", "repository": "https://github.com/hydro-dev/Hydro.git",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
@@ -10,6 +10,7 @@
"hydrooj": "*" "hydrooj": "*"
}, },
"dependencies": { "dependencies": {
"crypto-js": "^4.1.1" "crypto-js": "^4.1.1",
"semver": "^7.3.8"
} }
} }