mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +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): do more visibility check eg. contest
|
||||||
// TODO(twd2): exclude problem/contest discussions?
|
// TODO(twd2): exclude problem/contest discussions?
|
||||||
// TODO(iceboy): continuation based pagination.
|
// 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);
|
this.vnode = await discussion.getVnode(domainId, typeMapper[type], name, this);
|
||||||
if (this.ddoc) {
|
if (this.ddoc) {
|
||||||
this.ddoc.parentType = this.ddoc.parentType || this.vnode.type;
|
this.ddoc.parentType = this.ddoc.parentType || this.vnode.type;
|
||||||
|
|||||||
@@ -351,6 +351,9 @@ class ProblemSettingsHandler extends ProblemManageHandler {
|
|||||||
[this.pdoc.title, 'problem_detail', { pid }, true],
|
[this.pdoc.title, 'problem_detail', { pid }, true],
|
||||||
['problem_settings', null],
|
['problem_settings', null],
|
||||||
];
|
];
|
||||||
|
if (this.response.body.config) {
|
||||||
|
this.response.body.config = yaml.safeDump(this.response.body.config);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@param('pid', Types.String, null, parsePid)
|
@param('pid', Types.String, null, parsePid)
|
||||||
@@ -386,7 +389,6 @@ class ProblemEditHandler extends ProblemManageHandler {
|
|||||||
[this.pdoc.title, 'problem_detail', { pid }, true],
|
[this.pdoc.title, 'problem_detail', { pid }, true],
|
||||||
['problem_edit', null],
|
['problem_edit', null],
|
||||||
];
|
];
|
||||||
this.response.body.page_name = 'problem_edit';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@param('title', Types.String, isTitle)
|
@param('title', Types.String, isTitle)
|
||||||
@@ -395,7 +397,7 @@ class ProblemEditHandler extends ProblemManageHandler {
|
|||||||
const pid = checkPid(this.request.body.pid);
|
const pid = checkPid(this.request.body.pid);
|
||||||
const pdoc = await problem.get(domainId, this.request.params.pid);
|
const pdoc = await problem.get(domainId, this.request.params.pid);
|
||||||
await problem.edit(domainId, pdoc.docId, { title, content, 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 } },
|
this.domainId, { _id: { $in: rids } },
|
||||||
).toArray();
|
).toArray();
|
||||||
for (const rdoc of rdocs) {
|
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) {
|
export async function getVnode(domainId: string, type: number, id: string, handler: any) {
|
||||||
if (type === document.TYPE_PROBLEM) {
|
if (type === document.TYPE_PROBLEM) {
|
||||||
|
// @ts-ignore
|
||||||
|
if (Number.isSafeInteger(parseInt(id, 10))) id = parseInt(id, 10);
|
||||||
const pdoc = await problem.get(domainId, id);
|
const pdoc = await problem.get(domainId, id);
|
||||||
if (!pdoc) return null;
|
if (!pdoc) return null;
|
||||||
if (pdoc.hidden && handler) handler.checkPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN);
|
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 })
|
mongodb.MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true })
|
||||||
.then((Client) => {
|
.then((Client) => {
|
||||||
db = Client.db(opts.name);
|
db = Client.db(opts.name);
|
||||||
|
global.Hydro.service.db.db = db;
|
||||||
bus.publish('system_database_connected', null);
|
bus.publish('system_database_connected', null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ import * as blacklist from '../model/blacklist';
|
|||||||
import * as token from '../model/token';
|
import * as token from '../model/token';
|
||||||
import * as opcount from '../model/opcount';
|
import * as opcount from '../model/opcount';
|
||||||
|
|
||||||
const app = new Koa();
|
export const app = new Koa();
|
||||||
const server = http.createServer(app.callback());
|
export const server = http.createServer(app.callback());
|
||||||
const router = new Router();
|
export const router = new Router();
|
||||||
|
|
||||||
type MethodDecorator = (target: any, name: string, obj: any) => any;
|
type MethodDecorator = (target: any, name: string, obj: any) => any;
|
||||||
type Converter = (value: any) => any;
|
type Converter = (value: any) => any;
|
||||||
@@ -705,7 +705,8 @@ export function Connection(
|
|||||||
RouteConnHandler: any,
|
RouteConnHandler: any,
|
||||||
...permPrivChecker: Array<number | bigint | Function>
|
...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);
|
const checker = Checker(permPrivChecker);
|
||||||
sock.on('connection', async (conn) => {
|
sock.on('connection', async (conn) => {
|
||||||
const h: Dictionary<any> = new RouteConnHandler(conn);
|
const h: Dictionary<any> = new RouteConnHandler(conn);
|
||||||
@@ -757,6 +758,9 @@ export async function start() {
|
|||||||
|
|
||||||
global.Hydro.service.server = {
|
global.Hydro.service.server = {
|
||||||
Types,
|
Types,
|
||||||
|
app,
|
||||||
|
server,
|
||||||
|
router,
|
||||||
param,
|
param,
|
||||||
multipart,
|
multipart,
|
||||||
requireCsrfToken,
|
requireCsrfToken,
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hydrooj",
|
"name": "hydrooj",
|
||||||
"version": "2.11.5",
|
"version": "2.11.7",
|
||||||
"main": "dist/loader.js",
|
"main": "dist/loader.js",
|
||||||
"bin": "bin/hydrooj.js",
|
"bin": "bin/hydrooj.js",
|
||||||
"repository": "https://github.com/hydro-dev/Hydro.git",
|
"repository": "https://github.com/hydro-dev/Hydro.git",
|
||||||
|
|||||||
Reference in new issue
Block a user