From 49a61654721266466f4f3d35b042ba32580486b1 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 13 Sep 2021 21:08:31 +0800 Subject: [PATCH] core: change regip to ip --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/interface.ts | 26 ++++++++++++------------ packages/hydrooj/src/model/user.ts | 7 ++++--- packages/hydrooj/src/script/blacklist.ts | 2 +- packages/hydrooj/src/upgrade.ts | 5 +++++ 5 files changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 8173ac82..1eed813f 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.34.6", + "version": "2.34.7", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index ae24b3c8..3ce1c726 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -58,19 +58,19 @@ export interface Setting { } export interface Udoc extends Dictionary { - _id: number, - mail: string, - mailLower: string, - uname: string, - unameLower: string, - salt: string, - hash: string, - hashType: string, - priv: number, - regat: Date, - loginat: Date, - regip: string, - loginip: string, + _id: number; + mail: string; + mailLower: string; + uname: string; + unameLower: string; + salt: string; + hash: string; + hashType: string; + priv: number; + regat: Date; + loginat: Date; + ip: string[]; + loginip: string; } export type ownerInfo = { owner: number, maintainer?: number[] }; diff --git a/packages/hydrooj/src/model/user.ts b/packages/hydrooj/src/model/user.ts index c2c07221..dacdc916 100644 --- a/packages/hydrooj/src/model/user.ts +++ b/packages/hydrooj/src/model/user.ts @@ -71,7 +71,7 @@ class User implements _User { this._dudoc = dudoc; this._salt = udoc.salt; this._hash = udoc.hash; - this._regip = udoc.regip; + this._regip = udoc.ip[0]; this._loginip = udoc.loginip; this._files = udoc._files || []; @@ -147,7 +147,7 @@ class UserModel { priv: 0, regat: new Date('2000-01-01'), loginat: new Date('2000-01-01'), - regip: '127.0.0.1', + ip: ['127.0.0.1'], loginip: '127.0.0.1', }; @@ -206,6 +206,7 @@ class UserModel { const op: any = {}; if ($set && Object.keys($set).length) op.$set = $set; if ($unset && Object.keys($unset).length) op.$unset = $unset; + if (op.$set?.loginIp) op.$addToSet = { ip: op.$set.loginIp }; const res = await coll.findOneAndUpdate({ _id: uid }, op, { returnDocument: 'after' }); deleteUserCache(res.value); return res; @@ -264,7 +265,7 @@ class UserModel { salt, hashType: 'hydro', regat: new Date(), - regip, + ip: [regip], loginat: new Date(), loginip: regip, priv, diff --git a/packages/hydrooj/src/script/blacklist.ts b/packages/hydrooj/src/script/blacklist.ts index 5abf1e24..2e0b0fb4 100644 --- a/packages/hydrooj/src/script/blacklist.ts +++ b/packages/hydrooj/src/script/blacklist.ts @@ -16,7 +16,7 @@ async function _address( if (bset.has(ip)) return; bset.add(ip); report({ message: `ip ${ip}` }); - const users = await db.collection('user').find({ $or: [{ loginip: ip }, { regip: ip }] }).toArray(); + const users = await db.collection('user').find({ ip }).toArray(); const tasks = []; for (const udoc of users) { tasks.push(_user(udoc._id, bset, uset, dset, dryrun, report)); diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 8dec487e..beebe6df 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -515,6 +515,11 @@ const scripts: UpgradeScript[] = [ }); return true; }, + async function _44_45() { + const _FRESH_INSTALL_IGNORE = 1; + await iterateAllUser((udoc) => user.setById(udoc._id, { ip: [udoc.regip] }, { regip: '' })); + return true; + }, ]; export default scripts;