From 74f4e44f0fd714d16284c499028c377b651551b9 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 11 May 2022 21:01:58 +0800 Subject: [PATCH] w: merge migration packages --- packages/migrate-hustoj/README.md | 12 ----------- packages/migrate-hustoj/locale/zh.yaml | 1 - packages/migrate-vijos/lib.ts | 17 ---------------- packages/migrate-vijos/locale/zh.yaml | 1 - packages/migrate-vijos/package.json | 15 -------------- packages/{migrate-vijos => migrate}/README.md | 20 +++++++++++-------- packages/{migrate-hustoj => migrate}/lib.ts | 11 +++++++--- packages/migrate/locale/zh.yaml | 2 ++ .../{migrate-hustoj => migrate}/package.json | 11 ++++------ packages/migrate/script.ts | 2 ++ .../script.ts => migrate/scripts/hustoj.ts} | 0 .../script.ts => migrate/scripts/vijos.ts} | 0 12 files changed, 28 insertions(+), 64 deletions(-) delete mode 100644 packages/migrate-hustoj/README.md delete mode 100644 packages/migrate-hustoj/locale/zh.yaml delete mode 100644 packages/migrate-vijos/lib.ts delete mode 100644 packages/migrate-vijos/locale/zh.yaml delete mode 100644 packages/migrate-vijos/package.json rename packages/{migrate-vijos => migrate}/README.md (57%) rename packages/{migrate-hustoj => migrate}/lib.ts (55%) create mode 100644 packages/migrate/locale/zh.yaml rename packages/{migrate-hustoj => migrate}/package.json (63%) create mode 100644 packages/migrate/script.ts rename packages/{migrate-hustoj/script.ts => migrate/scripts/hustoj.ts} (100%) rename packages/{migrate-vijos/script.ts => migrate/scripts/vijos.ts} (100%) diff --git a/packages/migrate-hustoj/README.md b/packages/migrate-hustoj/README.md deleted file mode 100644 index 7fea8681..00000000 --- a/packages/migrate-hustoj/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# migrate-hustoj - -这个模块用于从HustOJ的数据库导入数据。 - -## 迁移须知 - -迁移前,您需要指定数据来源。 -迁移过程中,Hydro 的内容会被**清空**,以下内容将被迁移: - -题目与测试数据,用户列表。 - -迁移过程中请保持网络畅通。 diff --git a/packages/migrate-hustoj/locale/zh.yaml b/packages/migrate-hustoj/locale/zh.yaml deleted file mode 100644 index 989f2653..00000000 --- a/packages/migrate-hustoj/locale/zh.yaml +++ /dev/null @@ -1 +0,0 @@ -migrate from hustoj: 从 HustOJ 导入 \ No newline at end of file diff --git a/packages/migrate-vijos/lib.ts b/packages/migrate-vijos/lib.ts deleted file mode 100644 index b0eac450..00000000 --- a/packages/migrate-vijos/lib.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { } from 'hydrooj'; - -const { md5, sha1 } = global.Hydro.lib; - -interface Udoc { - uname: string, - unameLower: string, -} - -function hash(password: string, salt: string, udoc: Udoc) { - const { uname, unameLower } = udoc; - const pmd5 = md5(password); - const mixedSha1 = sha1(md5(unameLower + pmd5) + salt + sha1(pmd5 + salt)); - return `${Buffer.from(uname).toString('base64')}|${mixedSha1}`; -} - -global.Hydro.lib['hash.vj2'] = hash; diff --git a/packages/migrate-vijos/locale/zh.yaml b/packages/migrate-vijos/locale/zh.yaml deleted file mode 100644 index e66715a6..00000000 --- a/packages/migrate-vijos/locale/zh.yaml +++ /dev/null @@ -1 +0,0 @@ -migrate from vijos: 从 Vijos 导入 \ No newline at end of file diff --git a/packages/migrate-vijos/package.json b/packages/migrate-vijos/package.json deleted file mode 100644 index dce316e1..00000000 --- a/packages/migrate-vijos/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@hydrooj/migrate-vijos", - "version": "1.5.1", - "main": "package.json", - "repository": "git@github.com:hydro-dev/Hydro.git", - "author": "undefined ", - "preferUnplugged": true, - "license": "AGPL-3.0-or-later", - "devDependencies": { - "@types/mongodb": "^3.6.20" - }, - "dependencies": { - "mongodb": "^3.7.3" - } -} diff --git a/packages/migrate-vijos/README.md b/packages/migrate/README.md similarity index 57% rename from packages/migrate-vijos/README.md rename to packages/migrate/README.md index 146a7729..cf08632f 100644 --- a/packages/migrate-vijos/README.md +++ b/packages/migrate/README.md @@ -1,17 +1,21 @@ -# migrate-vijos +# migrate -这个模块用于从Vijos4.0的数据库导入数据。 -## 迁移须知 +这个模块用于从其他系统批量导入数据。 +迁移过程中请保持网络畅通。 + +## migrate-vijos +从Vijos4.0的数据库导入数据。 迁移前,您需要指定数据来源。 **请不要**将 Hydro 正在使用的数据库设置为数据来源的数据库。 -迁移过程中,Hydro 的以下内容会被**清空**: - +迁移过程中,Hydro 的以下内容会被**清空**: 题目列表,提交记录,用户列表,比赛列表,比赛成绩表,训练列表,训练进度,站内消息,题解,讨论 - 以下内容将被迁移: - 题目与测试数据、题解,讨论与回复,比赛、训练、作业相关数据,提交记录,用户列表,站内消息。 -迁移过程中请保持网络畅通。 +## migrate-hustoj + +从HustOJ的数据库导入数据。 +迁移过程中,Hydro 的内容会被**清空**,以下内容将被迁移: +题目与测试数据,用户列表。 diff --git a/packages/migrate-hustoj/lib.ts b/packages/migrate/lib.ts similarity index 55% rename from packages/migrate-hustoj/lib.ts rename to packages/migrate/lib.ts index ce21fa5f..b4266f25 100644 --- a/packages/migrate-hustoj/lib.ts +++ b/packages/migrate/lib.ts @@ -2,7 +2,7 @@ import { md5, sha1 } from 'hydrooj/src/lib/crypto'; const RE_MD5 = /^[\da-f]{32}$/; -function hash($password: string, $saved: string) { +global.Hydro.lib['hash.hust'] = ($password: string, $saved: string) => { $password = md5($password); if (RE_MD5.test($saved)) return $password === $saved; const $svd = Buffer.from($saved, 'base64').toString('hex'); @@ -13,6 +13,11 @@ function hash($password: string, $saved: string) { ]).toString('base64'); if ($hash.trim() === $saved.trim()) return true; return false; -} +}; -global.Hydro.lib['hash.hust'] = hash; +global.Hydro.lib['hash.vj2'] = (password: string, salt: string, udoc: { uname: string; unameLower: string }) => { + const { uname, unameLower } = udoc; + const pmd5 = md5(password); + const mixedSha1 = sha1(md5(unameLower + pmd5) + salt + sha1(pmd5 + salt)); + return `${Buffer.from(uname).toString('base64')}|${mixedSha1}`; +}; diff --git a/packages/migrate/locale/zh.yaml b/packages/migrate/locale/zh.yaml new file mode 100644 index 00000000..915ee05a --- /dev/null +++ b/packages/migrate/locale/zh.yaml @@ -0,0 +1,2 @@ +migrate from hustoj: 从 HustOJ 导入 +migrate from vijos: 从 Vijos 导入 \ No newline at end of file diff --git a/packages/migrate-hustoj/package.json b/packages/migrate/package.json similarity index 63% rename from packages/migrate-hustoj/package.json rename to packages/migrate/package.json index dead68f3..9da63c31 100644 --- a/packages/migrate-hustoj/package.json +++ b/packages/migrate/package.json @@ -1,20 +1,17 @@ { - "name": "@hydrooj/migrate-hustoj", - "version": "0.1.4", + "name": "@hydrooj/migrate", + "version": "0.1.0", "main": "package.json", "repository": "git@github.com:hydro-dev/Hydro.git", "author": "undefined ", "license": "AGPL-3.0-or-later", - "preferUnplugged": true, - "scripts": { - "lint": "eslint lib.ts script.ts --fix", - "build": "tsc" - }, "devDependencies": { + "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21" }, "dependencies": { "@hydrooj/utils": "workspace:*", + "mongodb": "^3.7.3", "mysql": "^2.18.1" } } diff --git a/packages/migrate/script.ts b/packages/migrate/script.ts new file mode 100644 index 00000000..adb212de --- /dev/null +++ b/packages/migrate/script.ts @@ -0,0 +1,2 @@ +import './scripts/hustoj'; +import './scripts/vijos'; diff --git a/packages/migrate-hustoj/script.ts b/packages/migrate/scripts/hustoj.ts similarity index 100% rename from packages/migrate-hustoj/script.ts rename to packages/migrate/scripts/hustoj.ts diff --git a/packages/migrate-vijos/script.ts b/packages/migrate/scripts/vijos.ts similarity index 100% rename from packages/migrate-vijos/script.ts rename to packages/migrate/scripts/vijos.ts