From 9b3ea0182b327d6c1db3c150a5ce61c42f98734f Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 21 Apr 2021 13:07:42 +0800 Subject: [PATCH] core: blacklist tools --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/lib/validator.ts | 28 ++++++------------- packages/hydrooj/src/script/blacklist.ts | 14 +++++----- packages/hydrooj/src/script/rating.ts | 6 +--- packages/hydrooj/src/script/updateFilelist.ts | 5 +--- 5 files changed, 18 insertions(+), 37 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index d514060fc..14c6add92 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.23.10", + "version": "2.23.11", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/lib/validator.ts b/packages/hydrooj/src/lib/validator.ts index fb073e294..5c66ce5ac 100644 --- a/packages/hydrooj/src/lib/validator.ts +++ b/packages/hydrooj/src/lib/validator.ts @@ -16,26 +16,14 @@ function _validate(scheme: any, arg: any, base: string): void { } if (scheme.$group) _validate(scheme.$group, arg, base); if (scheme.$or) { - if (scheme.$or instanceof Array) { - for (const s of scheme.$or) { - let success = false; - try { - _validate(s, arg, base); - success = true; - } catch { } - // TODO beautify output - if (!success) throw new ValidationError(scheme.$or); - } - } else { - for (const skey in scheme.$or) { - let success = false; - try { - _validate(scheme.$or[skey], arg[skey], `${base}.${skey}`); - success = true; - } catch { } - // TODO beautify output - if (!success) throw new ValidationError(base, scheme.$or); - } + for (const s of scheme.$or) { + let success = false; + try { + _validate(s, arg, base); + success = true; + } catch { } + // TODO beautify output + if (!success) throw new ValidationError(scheme.$or); } } if (scheme.$and) for (const s of scheme.$and) _validate(s, arg, base); diff --git a/packages/hydrooj/src/script/blacklist.ts b/packages/hydrooj/src/script/blacklist.ts index a9dc0305a..f38dcf798 100644 --- a/packages/hydrooj/src/script/blacklist.ts +++ b/packages/hydrooj/src/script/blacklist.ts @@ -51,7 +51,7 @@ async function _user( if (!udoc) return; report({ message: `user ${udoc._id} ${udoc.uname}` }); await _address(udoc.loginip(), bset, uset, dset, dryrun, report); - const ddocs = await db.collection('document').find({ docType: document.TYPE_DISCUSSION }) + const ddocs = await db.collection('document').find({ docType: document.TYPE_DISCUSSION, owner: uid }) .sort({ domainId: 1, docId: 1 }).toArray(); const tasks = []; for (const ddoc of ddocs) { @@ -76,12 +76,12 @@ export async function run({ } export const validate = { - $or: { - address: 'string', - discuss: ObjectID, - user: 'number', - }, - dryrun: 'boolean', + $or: [ + { address: 'string' }, + { discuss: ObjectID }, + { user: 'number' }, + ], + dryrun: 'boolean?', }; global.Hydro.script.blacklist = { run, description, validate }; diff --git a/packages/hydrooj/src/script/rating.ts b/packages/hydrooj/src/script/rating.ts index 6b122d162..26d7653fd 100644 --- a/packages/hydrooj/src/script/rating.ts +++ b/packages/hydrooj/src/script/rating.ts @@ -106,7 +106,6 @@ export async function calcLevel(domainId: string, report: Function) { const levels = global.Hydro.model.builtin.LEVELS; bulk = coll.initializeUnorderedBulkOp(); for (let i = 0; i < levels.length; i++) { - report({ message: 'Updating users levelled {0}'.format(i) }); const query: FilterQuery = { domainId, $and: [{ rank: { $lte: (levels[i] * count) / 100 } }], @@ -184,10 +183,7 @@ export async function run({ domainId }, report: Function) { } export const validate = { - $or: [ - { domainId: 'string' }, - { domainId: 'undefined' }, - ], + domainId: 'string?', }; global.Hydro.script.rp = { run, description, validate }; diff --git a/packages/hydrooj/src/script/updateFilelist.ts b/packages/hydrooj/src/script/updateFilelist.ts index f2cafd051..fa3ced8c4 100644 --- a/packages/hydrooj/src/script/updateFilelist.ts +++ b/packages/hydrooj/src/script/updateFilelist.ts @@ -24,10 +24,7 @@ export async function run({ domainId }, report: Function) { } export const validate = { - $or: [ - { domainId: 'string' }, - { domainId: 'undefined' }, - ], + domainId: 'string?', }; global.Hydro.script.updateFilelist = { run, description, validate };