mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
文件结构更改
This commit is contained in:
1 parent
b3af28dc43
commit
1f1d12ad73
109 files changed
+544
-3296
No files matched your search
@@ -0,0 +1,73 @@
|
||||
// TODO check more
|
||||
|
||||
import os from 'os';
|
||||
import superagent from 'superagent';
|
||||
import { Dictionary } from 'lodash';
|
||||
import * as system from './model/system';
|
||||
import * as db from './service/db';
|
||||
|
||||
const c = {};
|
||||
|
||||
type CheckItem = (context: any, log: Function, warn: Function, error: Function) => Promise<void>;
|
||||
|
||||
const checks: Dictionary<CheckItem> = {
|
||||
async checkDb(ctx, log, warn, error) {
|
||||
try {
|
||||
const coll = db.collection('check');
|
||||
const d = await coll.findOne({ _id: 'check' });
|
||||
if (!d) await coll.insertOne({ _id: 'check', value: 'check' });
|
||||
await coll.createIndex('check');
|
||||
await coll.deleteOne({ _id: 'check' });
|
||||
await coll.drop();
|
||||
} catch (e) {
|
||||
error(`Mongo Error: Database read-write failed.\n${e.message}`);
|
||||
}
|
||||
},
|
||||
async checkPerm(ctx, log, warn) {
|
||||
const { username } = os.userInfo();
|
||||
if (username === 'root') warn('Hydro should not be run as root.');
|
||||
// TODO check cwd read-write
|
||||
},
|
||||
async checkSystem(ctx, log, warn) {
|
||||
const platform = os.platform();
|
||||
if (platform !== 'linux') {
|
||||
warn(`Hydro is running on ${platform}, suggest to use linux4.4+.`);
|
||||
}
|
||||
},
|
||||
async checkMail(ctx, log, warn) {
|
||||
const from = await system.get('smtp.from');
|
||||
if (!from) warn('SMTP account was not provided, email verification disabled.');
|
||||
},
|
||||
async checkProxy(ctx, log, warn) {
|
||||
const [github, google, proxy] = await system.getMany([
|
||||
'oauth.githubappid', 'oauth.googleappid', 'proxy',
|
||||
]);
|
||||
if (proxy) {
|
||||
superagent.get('https://www.google.com/').timeout(10000).proxy(proxy)
|
||||
.catch(() => warn('The proxy configured seem to be invalid.'));
|
||||
} else if (github || google) {
|
||||
warn('OAuth enabled. But for well-known reasons, a proxy is required.');
|
||||
}
|
||||
},
|
||||
async checkIpHeader(ctx, log, warn) {
|
||||
const header = await system.get('server.xff');
|
||||
if (header && !ctx.request.ip) warn('IP header seems incorrect.\nCheck dashboard>settings>server.');
|
||||
},
|
||||
};
|
||||
|
||||
export async function start(ctx, log, warn, error, cb) {
|
||||
const id = String.random(6);
|
||||
cb(id);
|
||||
for (const name in checks) {
|
||||
if (c[id]) {
|
||||
delete c[id];
|
||||
return;
|
||||
}
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await checks[name](ctx, log, warn, error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function cancel(id: string) {
|
||||
c[id] = true;
|
||||
}
|
||||
Reference in new issue
Block a user