mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
暴漏server对象
This commit is contained in:
1 parent
0194ab4eb0
commit
e66d5a0221
7 files changed
+18
-9
No files matched your search
@@ -61,7 +61,7 @@ class DiscussionHandler extends Handler {
|
||||
// TODO(twd2): do more visibility check eg. contest
|
||||
// TODO(twd2): exclude problem/contest discussions?
|
||||
// TODO(iceboy): continuation based pagination.
|
||||
if (ObjectID.isValid(name)) name = new ObjectID(name);
|
||||
if (ObjectID.isValid(name.toString())) name = new ObjectID(name);
|
||||
this.vnode = await discussion.getVnode(domainId, typeMapper[type], name, this);
|
||||
if (this.ddoc) {
|
||||
this.ddoc.parentType = this.ddoc.parentType || this.vnode.type;
|
||||
|
||||
@@ -351,6 +351,9 @@ class ProblemSettingsHandler extends ProblemManageHandler {
|
||||
[this.pdoc.title, 'problem_detail', { pid }, true],
|
||||
['problem_settings', null],
|
||||
];
|
||||
if (this.response.body.config) {
|
||||
this.response.body.config = yaml.safeDump(this.response.body.config);
|
||||
}
|
||||
}
|
||||
|
||||
@param('pid', Types.String, null, parsePid)
|
||||
@@ -386,7 +389,6 @@ class ProblemEditHandler extends ProblemManageHandler {
|
||||
[this.pdoc.title, 'problem_detail', { pid }, true],
|
||||
['problem_edit', null],
|
||||
];
|
||||
this.response.body.page_name = 'problem_edit';
|
||||
}
|
||||
|
||||
@param('title', Types.String, isTitle)
|
||||
@@ -395,7 +397,7 @@ class ProblemEditHandler extends ProblemManageHandler {
|
||||
const pid = checkPid(this.request.body.pid);
|
||||
const pdoc = await problem.get(domainId, this.request.params.pid);
|
||||
await problem.edit(domainId, pdoc.docId, { title, content, pid });
|
||||
this.response.redirect = this.url('problem_detail', this.request.params.pid);
|
||||
this.response.redirect = this.url('problem_detail', { pid: this.request.params.pid });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ class RecordMainConnectionHandler extends RecordConnectionHandler {
|
||||
this.domainId, { _id: { $in: rids } },
|
||||
).toArray();
|
||||
for (const rdoc of rdocs) {
|
||||
this.onRecordChange({ value: rdoc });
|
||||
this.onRecordChange({ value: { rdoc } });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,6 +160,8 @@ export function getNode(domainId: string, _id: string) {
|
||||
|
||||
export async function getVnode(domainId: string, type: number, id: string, handler: any) {
|
||||
if (type === document.TYPE_PROBLEM) {
|
||||
// @ts-ignore
|
||||
if (Number.isSafeInteger(parseInt(id, 10))) id = parseInt(id, 10);
|
||||
const pdoc = await problem.get(domainId, id);
|
||||
if (!pdoc) return null;
|
||||
if (pdoc.hidden && handler) handler.checkPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN);
|
||||
|
||||
@@ -14,6 +14,7 @@ export let db: mongodb.Db = null;
|
||||
mongodb.MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true })
|
||||
.then((Client) => {
|
||||
db = Client.db(opts.name);
|
||||
global.Hydro.service.db.db = db;
|
||||
bus.publish('system_database_connected', null);
|
||||
});
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@ import * as blacklist from '../model/blacklist';
|
||||
import * as token from '../model/token';
|
||||
import * as opcount from '../model/opcount';
|
||||
|
||||
const app = new Koa();
|
||||
const server = http.createServer(app.callback());
|
||||
const router = new Router();
|
||||
export const app = new Koa();
|
||||
export const server = http.createServer(app.callback());
|
||||
export const router = new Router();
|
||||
|
||||
type MethodDecorator = (target: any, name: string, obj: any) => any;
|
||||
type Converter = (value: any) => any;
|
||||
@@ -705,7 +705,8 @@ export function Connection(
|
||||
RouteConnHandler: any,
|
||||
...permPrivChecker: Array<number | bigint | Function>
|
||||
) {
|
||||
const sock = sockjs.createServer({ prefix, log: (a, b) => console.log(a, b) });
|
||||
const log = argv.debug ? console.log : () => { };
|
||||
const sock = sockjs.createServer({ prefix, log });
|
||||
const checker = Checker(permPrivChecker);
|
||||
sock.on('connection', async (conn) => {
|
||||
const h: Dictionary<any> = new RouteConnHandler(conn);
|
||||
@@ -757,6 +758,9 @@ export async function start() {
|
||||
|
||||
global.Hydro.service.server = {
|
||||
Types,
|
||||
app,
|
||||
server,
|
||||
router,
|
||||
param,
|
||||
multipart,
|
||||
requireCsrfToken,
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "hydrooj",
|
||||
"version": "2.11.5",
|
||||
"version": "2.11.7",
|
||||
"main": "dist/loader.js",
|
||||
"bin": "bin/hydrooj.js",
|
||||
"repository": "https://github.com/hydro-dev/Hydro.git",
|
||||
|
||||
Reference in new issue
Block a user