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 crypto from 'crypto-js';
import { lt } from 'semver';
import {
db, definePlugin, ForbiddenError, Handler, post, Types, yaml,
} from 'hydrooj';
@@ -43,30 +44,47 @@ class DataReportHandler extends Handler {
throw new ForbiddenError();
}
const old = await coll.findOne({ _id: installId });
await coll.updateOne({ _id: installId }, {
$set: {
version: payload.version,
name: payload.name,
url: payload.url,
addons: payload.addons,
mem: payload.memory,
osinfo: payload.osinfo,
cpu: payload.cpu,
ip: this.request.ip,
flags: payload.flags,
update: new Date(),
domainCount: payload.domainCount,
userCount: payload.userCount,
problemCount: payload.problemCount,
discussionCount: payload.discussionCount,
recordCount: payload.recordCount,
sandbox: payload.sandbox,
dbVersion: payload.dbVersion,
},
$setOnInsert: { init: new Date() },
}, { upsert: true });
const setPayload = {
version: payload.version,
name: payload.name,
url: payload.url,
addons: payload.addons,
mem: payload.memory,
osinfo: payload.osinfo,
cpu: payload.cpu,
ip: this.request.ip,
flags: payload.flags,
update: new Date(),
domainCount: payload.domainCount,
userCount: payload.userCount,
problemCount: payload.problemCount,
discussionCount: payload.discussionCount,
recordCount: payload.recordCount,
sandbox: payload.sandbox,
dbVersion: payload.dbVersion,
};
if (old && lt(payload.version, old.version)) {
await coll.updateOne(
{ _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.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",
"version": "0.2.3",
"version": "0.2.4",
"main": "index.ts",
"repository": "https://github.com/hydro-dev/Hydro.git",
"author": "undefined <i@undefined.moe>",
@@ -10,6 +10,7 @@
"hydrooj": "*"
},
"dependencies": {
"crypto-js": "^4.1.1"
"crypto-js": "^4.1.1",
"semver": "^7.3.8"
}
}