pull/10/head
undefined 4 years ago
parent 81868cafbb
commit 2e4c818c37

@ -2,7 +2,8 @@ import { RoleAlreadyExistError, ValidationError } from '../error';
import * as user from '../model/user';
import * as domain from '../model/domain';
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 {
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() {
Route('ranking', '/ranking', DomainRankHandler);
Route('domain_dashboard', '/domain/dashboard', DomainDashboardHandler);
@ -187,6 +199,7 @@ export async function apply() {
Route('domain_user', '/domain/user', DomainUserHandler);
Route('domain_permission', '/domain/permission', DomainPermissionHandler);
Route('domain_role', '/domain/role', DomainRoleHandler);
Route('domain_search', '/domain/search', DomainSearchHandler, PRIV.PRIV_USER_PROFILE);
}
global.Hydro.handler.domain = apply;

@ -96,9 +96,7 @@ async function executeCommand(input: string) {
async function messageHandler(worker: cluster.Worker, msg: any) {
if (!msg) msg = worker;
if (msg.event) {
if (msg.event === 'setAddon') {
global.addons = msg.addons;
} else if (msg.event === 'bus') {
if (msg.event === 'bus') {
if (cluster.isMaster) {
for (const i in cluster.workers) {
cluster.workers[i].send(msg);
@ -165,11 +163,6 @@ process.on('unhandledRejection', (e) => console.error(e));
process.on('SIGINT', terminate);
export async function load() {
while (!global.addons) {
await new Promise((resolve) => {
setTimeout(resolve, 100);
});
}
addon(path.resolve(__dirname, '..'));
Error.stackTraceLimit = 50;
process.on('message', messageHandler);
@ -201,19 +194,22 @@ export async function load() {
});
cluster.on('online', (worker) => {
console.log(`Worker ${worker.process.pid} ${worker.id} is online`);
worker.send({ event: 'setAddon', addons: global.addons });
});
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 {
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`);
global.addons = JSON.parse(Buffer.from(argv.addons as string, 'base64').toString());
console.log(global.addons);
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 {
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();
}

@ -142,6 +142,14 @@ export async function getDictUserByDomainId(uid: number) {
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 = {
getRoles,
add,
@ -161,4 +169,5 @@ global.Hydro.model.domain = {
incUserInDomain,
getMultiInDomain,
getDictUserByDomainId,
getPrefixSearch,
};

@ -1,6 +1,6 @@
{
"name": "hydrooj",
"version": "2.9.11",
"version": "2.9.12",
"main": "dist/loader.js",
"bin": "bin/hydrooj.js",
"repository": "https://github.com/hydro-dev/Hydro.git",

Loading…
Cancel
Save