From 90579a81ed642e45bf393c406614e75304017d04 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 2 May 2021 14:30:53 +0800 Subject: [PATCH] core: use domain.host for default --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 2 +- packages/hydrooj/src/handler/home.ts | 2 +- packages/hydrooj/src/handler/user.ts | 4 ++-- packages/hydrooj/src/interface.ts | 2 +- packages/hydrooj/src/pipelineUtils.ts | 2 +- packages/hydrooj/src/upgrade.ts | 6 ++++++ 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 39f86a6ee..3d1916b83 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.23.30", + "version": "2.23.31", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index ee65f4e8d..298592968 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -219,7 +219,7 @@ class DomainJoinApplicationsHandler extends ManageHandler { if (!this.response.body.joinSettings) { delete this.response.body.expirations[domain.JOIN_EXPIRATION_KEEP_CURRENT]; } - this.response.body.url_prefix = system.get('server.url'); + this.response.body.url_prefix = (this.domain.host || [])[0] || system.get('server.url'); this.response.body.path = [ ['Hydro', 'homepage'], ['domain', null], diff --git a/packages/hydrooj/src/handler/home.ts b/packages/hydrooj/src/handler/home.ts index 27d821136..0ceb6aa6b 100644 --- a/packages/hydrooj/src/handler/home.ts +++ b/packages/hydrooj/src/handler/home.ts @@ -168,7 +168,7 @@ class HomeSecurityHandler extends Handler { const m = await this.renderHTML('user_changemail_mail.html', { path: `home/changeMail/${code}`, uname: this.user.uname, - url_prefix: system.get('server.url'), + url_prefix: (this.domain.host || [])[0] || system.get('server.url'), }); await mail.sendMail(email, 'Change Email', 'user_changemail_mail', m); this.response.template = 'user_changemail_mail_sent.html'; diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index 429f97544..be59efe11 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -79,7 +79,7 @@ export class UserRegisterHandler extends Handler { if (system.get('smtp.user')) { const m = await this.renderHTML('user_register_mail.html', { path: `register/${t[0]}`, - url_prefix: system.get('server.url'), + url_prefix: (this.domain.host || [])[0] || system.get('server.url'), }); await sendMail(mail, 'Sign Up', 'user_register_mail', m); this.response.template = 'user_register_mail_sent.html'; @@ -146,7 +146,7 @@ class UserLostPassHandler extends Handler { ); const m = await this.renderHTML('user_lostpass_mail.html', { url: `lostpass/${tid}`, - url_prefix: system.get('server.url'), + url_prefix: this.domain.host || system.get('server.url'), uname: udoc.uname, }); await sendMail(mail, 'Lost Password', 'user_lostpass_mail', m); diff --git a/packages/hydrooj/src/interface.ts b/packages/hydrooj/src/interface.ts index 3105ac2bb..9cd3d205e 100644 --- a/packages/hydrooj/src/interface.ts +++ b/packages/hydrooj/src/interface.ts @@ -305,7 +305,7 @@ export interface DomainDoc extends Record { avatar: string, bulletin: string, _join?: any, - host?: string, + host?: string[], } // Message diff --git a/packages/hydrooj/src/pipelineUtils.ts b/packages/hydrooj/src/pipelineUtils.ts index 989eb0574..ab73029c6 100644 --- a/packages/hydrooj/src/pipelineUtils.ts +++ b/packages/hydrooj/src/pipelineUtils.ts @@ -5,7 +5,7 @@ import user from './model/user'; import problem, { Field, Pdoc } from './model/problem'; export async function iterateAllDomain(cb: (ddoc: DomainDoc, current?: number, total?: number) => Promise) { - const ddocs = await domain.getMulti().project({ _id: 1, owner: 1 }).toArray(); + const ddocs = await domain.getMulti().toArray(); for (const i in ddocs) await cb(ddocs[i], +i, ddocs.length); } diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 3f944074a..5af15f988 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -311,6 +311,12 @@ const scripts: UpgradeScript[] = [ await db.collection('oplog').updateMany({}, { $set: { type: 'delete', operateIp: '127.0.0.1' } }); return true; }, + async function _24_25() { + await iterateAllDomain(async (ddoc) => { + if (typeof ddoc.host === 'string') await domain.edit(ddoc._id, { host: [ddoc.host] }); + }); + return true; + }, ]; export default scripts;