mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
bug fix
This commit is contained in:
1 parent
81868cafbb
commit
2e4c818c37
4 files changed
+38
-20
No files matched your search
+14
-1
@@ -2,7 +2,8 @@ import { RoleAlreadyExistError, ValidationError } from '../error';
|
|||||||
import * as user from '../model/user';
|
import * as user from '../model/user';
|
||||||
import * as domain from '../model/domain';
|
import * as domain from '../model/domain';
|
||||||
import { DOMAIN_SETTINGS, DOMAIN_SETTINGS_BY_KEY } from '../model/setting';
|
import { DOMAIN_SETTINGS, DOMAIN_SETTINGS_BY_KEY } from '../model/setting';
|
||||||
import { PERM, PERMS_BY_FAMILY } from '../model/builtin';
|
import { PERM, PERMS_BY_FAMILY, PRIV } from '../model/builtin';
|
||||||
|
import { gravatar } from '../lib/misc';
|
||||||
import paginate from '../lib/paginate';
|
import paginate from '../lib/paginate';
|
||||||
import {
|
import {
|
||||||
Route, Handler, Types, param,
|
Route, Handler, Types, param,
|
||||||
@@ -180,6 +181,17 @@ class DomainRoleHandler extends ManageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DomainSearchHandler extends Handler {
|
||||||
|
@param('q', Types.String)
|
||||||
|
async get(q: string) {
|
||||||
|
const ddocs = await domain.getPrefixSearch(q, 20);
|
||||||
|
for (let i = 0; i < ddocs.length; i++) {
|
||||||
|
ddocs[i].gravatar = ddocs[i].gravatar ? gravatar(ddocs[i].gravatar) : '/img/team_avatar.png';
|
||||||
|
}
|
||||||
|
this.response.body = ddocs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export async function apply() {
|
export async function apply() {
|
||||||
Route('ranking', '/ranking', DomainRankHandler);
|
Route('ranking', '/ranking', DomainRankHandler);
|
||||||
Route('domain_dashboard', '/domain/dashboard', DomainDashboardHandler);
|
Route('domain_dashboard', '/domain/dashboard', DomainDashboardHandler);
|
||||||
@@ -187,6 +199,7 @@ export async function apply() {
|
|||||||
Route('domain_user', '/domain/user', DomainUserHandler);
|
Route('domain_user', '/domain/user', DomainUserHandler);
|
||||||
Route('domain_permission', '/domain/permission', DomainPermissionHandler);
|
Route('domain_permission', '/domain/permission', DomainPermissionHandler);
|
||||||
Route('domain_role', '/domain/role', DomainRoleHandler);
|
Route('domain_role', '/domain/role', DomainRoleHandler);
|
||||||
|
Route('domain_search', '/domain/search', DomainSearchHandler, PRIV.PRIV_USER_PROFILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
global.Hydro.handler.domain = apply;
|
global.Hydro.handler.domain = apply;
|
||||||
+14
-18
@@ -96,9 +96,7 @@ async function executeCommand(input: string) {
|
|||||||
async function messageHandler(worker: cluster.Worker, msg: any) {
|
async function messageHandler(worker: cluster.Worker, msg: any) {
|
||||||
if (!msg) msg = worker;
|
if (!msg) msg = worker;
|
||||||
if (msg.event) {
|
if (msg.event) {
|
||||||
if (msg.event === 'setAddon') {
|
if (msg.event === 'bus') {
|
||||||
global.addons = msg.addons;
|
|
||||||
} else if (msg.event === 'bus') {
|
|
||||||
if (cluster.isMaster) {
|
if (cluster.isMaster) {
|
||||||
for (const i in cluster.workers) {
|
for (const i in cluster.workers) {
|
||||||
cluster.workers[i].send(msg);
|
cluster.workers[i].send(msg);
|
||||||
@@ -165,11 +163,6 @@ process.on('unhandledRejection', (e) => console.error(e));
|
|||||||
process.on('SIGINT', terminate);
|
process.on('SIGINT', terminate);
|
||||||
|
|
||||||
export async function load() {
|
export async function load() {
|
||||||
while (!global.addons) {
|
|
||||||
await new Promise((resolve) => {
|
|
||||||
setTimeout(resolve, 100);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
addon(path.resolve(__dirname, '..'));
|
addon(path.resolve(__dirname, '..'));
|
||||||
Error.stackTraceLimit = 50;
|
Error.stackTraceLimit = 50;
|
||||||
process.on('message', messageHandler);
|
process.on('message', messageHandler);
|
||||||
@@ -201,19 +194,22 @@ export async function load() {
|
|||||||
});
|
});
|
||||||
cluster.on('online', (worker) => {
|
cluster.on('online', (worker) => {
|
||||||
console.log(`Worker ${worker.process.pid} ${worker.id} is online`);
|
console.log(`Worker ${worker.process.pid} ${worker.id} is online`);
|
||||||
worker.send({ event: 'setAddon', addons: global.addons });
|
|
||||||
});
|
});
|
||||||
await startWorker(cnt);
|
await startWorker(cnt);
|
||||||
} else if (argv.entry) {
|
|
||||||
console.log(`Worker ${process.pid} Starting as ${argv.entry}`);
|
|
||||||
await entry({ entry: argv.entry });
|
|
||||||
console.log(`Worker ${process.pid} Started as ${argv.entry}`);
|
|
||||||
} else {
|
} else {
|
||||||
if (argv.firstWorker) cluster.isFirstWorker = true;
|
global.addons = JSON.parse(Buffer.from(argv.addons as string, 'base64').toString());
|
||||||
else cluster.isFirstWorker = false;
|
console.log(global.addons);
|
||||||
console.log(`Worker ${process.pid} Starting`);
|
if (argv.entry) {
|
||||||
await entry({ entry: 'worker' });
|
console.log(`Worker ${process.pid} Starting as ${argv.entry}`);
|
||||||
console.log(`Worker ${process.pid} Started`);
|
await entry({ entry: argv.entry });
|
||||||
|
console.log(`Worker ${process.pid} Started as ${argv.entry}`);
|
||||||
|
} else {
|
||||||
|
if (argv.firstWorker) cluster.isFirstWorker = true;
|
||||||
|
else cluster.isFirstWorker = false;
|
||||||
|
console.log(`Worker ${process.pid} Starting`);
|
||||||
|
await entry({ entry: 'worker' });
|
||||||
|
console.log(`Worker ${process.pid} Started`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (global.gc) global.gc();
|
if (global.gc) global.gc();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,6 +142,14 @@ export async function getDictUserByDomainId(uid: number) {
|
|||||||
return dudict;
|
return dudict;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getPrefixSearch(prefix: string, limit = 50) {
|
||||||
|
const $regex = new RegExp(prefix, 'mi');
|
||||||
|
const ddocs = await coll.find({
|
||||||
|
$or: [{ _id: { $regex } }, { name: { $regex } }],
|
||||||
|
}).limit(limit).toArray();
|
||||||
|
return ddocs;
|
||||||
|
}
|
||||||
|
|
||||||
global.Hydro.model.domain = {
|
global.Hydro.model.domain = {
|
||||||
getRoles,
|
getRoles,
|
||||||
add,
|
add,
|
||||||
@@ -161,4 +169,5 @@ global.Hydro.model.domain = {
|
|||||||
incUserInDomain,
|
incUserInDomain,
|
||||||
getMultiInDomain,
|
getMultiInDomain,
|
||||||
getDictUserByDomainId,
|
getDictUserByDomainId,
|
||||||
|
getPrefixSearch,
|
||||||
};
|
};
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "hydrooj",
|
"name": "hydrooj",
|
||||||
"version": "2.9.11",
|
"version": "2.9.12",
|
||||||
"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