core: use with hydro center

This commit is contained in:
undefined committed 2021-05-08 23:23:59 +08:00
1 parent 866aa56f78
commit 76744e0584
6 files changed
+117 -12

No files matched your search

+14 -4
View File
@@ -43,10 +43,20 @@ 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) });
await superagent.post(`${target[1]}/d/${target[0]}/problem/receive`)
.send({
operation: 'request', url: `${url}d/${domainId}/problem/send`, tokenId, expire,
}).catch(logAndReturn(logger));
const res = system.get('server.proxy')
? await superagent.post(`${system.get('server.center')}/send`)
.send({
endpoint: `${target[1]}/d/${target[0]}`,
domainId,
url,
tokenId,
expire,
}).catch(logAndReturn(logger))
: await superagent.post(`${target[1]}/d/${target[0]}/problem/receive`)
.send({
operation: 'request', url: `${url}d/${domainId}/problem/send`, tokenId, expire,
}).catch(logAndReturn(logger));
if (res instanceof Error) throw new RemoteOnlineJudgeError(res.message);
this.back();
}
+2
View File
@@ -164,6 +164,8 @@ SystemSetting(
Setting('setting_smtp', 'smtp.port', 465, 'number', 'smtp.port', 'SMTP Server Port'),
Setting('setting_smtp', 'smtp.from', null, 'text', 'smtp.from', 'Mail From'),
Setting('setting_smtp', 'smtp.secure', false, 'boolean', 'smtp.secure', 'SSL'),
Setting('setting_server', 'server.center', 'https://hydro.undefined.moe:8443/center', 'text', 'server.center', '', FLAG_HIDDEN),
Setting('setting_server', 'server.proxy', false, 'boolean', 'server.proxy', 'Use hydro center proxy to send problems'),
Setting('setting_server', 'server.name', 'Hydro', 'text', 'server.name', 'Server Name'),
Setting('setting_server', 'server.worker', 1, 'number', 'server.worker', 'Server Workers Number'),
Setting('setting_server', 'server.hostname', 'oj.undefined.moe', 'text', 'server.hostname', 'Server Hostname'),
+8 -7
View File
@@ -24,7 +24,7 @@ export async function feedback(): Promise<[string, StatusUpdate]> {
} = global.Hydro.model;
const version = require('hydrooj/package.json').version;
const [mid, $update, inf] = await sysinfo.update();
const [installid, name, url] = system.getMany(['installid', 'server.name', 'server.url']);
const [installId, name, url] = system.getMany(['installid', 'server.name', 'server.url']);
const [domainCount, userCount, problemCount, discussionCount, recordCount] = await Promise.all([
domain.getMulti().count(),
user.getMulti().count(),
@@ -33,7 +33,7 @@ export async function feedback(): Promise<[string, StatusUpdate]> {
record.coll.find().count(),
]);
const payload = crypt(dump({
_id: installid + mid.toString(),
mid: mid.toString(),
version,
name,
url,
@@ -47,11 +47,12 @@ export async function feedback(): Promise<[string, StatusUpdate]> {
osinfo: inf.osinfo,
cpu: inf.cpu,
}));
superagent.post('https://feedback.undefined.moe/')
.send({ payload })
.catch(() => {
logger.warn('Cannot connect to hydro center.');
});
superagent.post(`${system.get('server.center')}/report`)
.send({ installId, payload })
.then((res) => {
if (res.body.updateUrl) system.set('server.center', res.body.updateUrl);
})
.catch(() => logger.warn('Cannot connect to hydro center.'));
return [mid, $update];
}