From b4456a88c09b09ae8acc7c071caf7c3cf870b3fb Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 8 May 2021 23:42:42 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E4=BC=98=E5=8C=96=E7=AB=99=E5=86=85?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/remote.ts | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 52af193ea..d7849f08b 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.25.7", + "version": "2.25.8", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/remote.ts b/packages/hydrooj/src/handler/remote.ts index 0fbb1e8a9..50d59993b 100644 --- a/packages/hydrooj/src/handler/remote.ts +++ b/packages/hydrooj/src/handler/remote.ts @@ -1,6 +1,7 @@ /* eslint-disable no-await-in-loop */ import superagent from 'superagent'; import { PassThrough } from 'stream'; +import { argv } from 'yargs'; import { PermissionError, InvalidTokenError, RemoteOnlineJudgeError } from '../error'; import { Logger } from '../logger'; import { logAndReturn } from '../utils'; @@ -42,7 +43,7 @@ export class ProblemSendHandler extends Handler { } } const [url, expire] = system.getMany(['server.url', 'session.saved_expire_seconds']); - const tokenId = await token.createOrUpdate(token.TYPE_EXPORT, expire, { domainId, pids: Array.from(pids) }); + const tokenId = await token.createOrUpdate(token.TYPE_EXPORT, expire, { creator: this.user._id, domainId, pids: Array.from(pids) }); const res = system.get('server.proxy') ? await superagent.post(`${system.get('server.center')}/send`) .send({ @@ -157,15 +158,20 @@ export class ProblemReceiveHandler extends Handler { const files = res.body.links; const source = new URL(data.source); const baseUrl = `${source.protocol}//${source.host}`; + const exportToken = await token.get(data.tokenId, token.TYPE_EXPORT); for (let i = 0; i < pdocs.length; i++) { const pdoc = pdocs[i]; if (pdoc.pid) { const exist = await problem.get(domainId, pdoc.pid); if (exist) pdoc.pid = undefined; } - const pid = await problem.add(domainId, pdoc.pid, pdoc.title, pdoc.content, this.user._id, pdoc.tag); + const pid = await problem.add(domainId, pdoc.pid, pdoc.title, pdoc.content, exportToken?.creator || this.user._id, pdoc.tag); pids.push(pid); - this.syncFiles(domainId, baseUrl, pid, files[i]).catch(logAndReturn(logger)); + this.syncFiles( + domainId, + exportToken ? baseUrl : `http://127.0.0.1:${argv.port || system.get('server.port')}`, + pid, files[i], + ).catch(logAndReturn(logger)); await problem.edit(domainId, pid, { html: pdoc.html }); } this.back();