summaryrefslogtreecommitdiff
path: root/src/boot/master.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-04-24 23:04:59 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-04-24 23:04:59 +0900
commit8043409d386d5e08c85d27c720ecca2b3f8030ab (patch)
tree584bc43b126dbdc9ba592758aa9c17f8e122f344 /src/boot/master.ts
parentMerge branch 'develop' (diff)
parent12.79.0 (diff)
downloadmisskey-8043409d386d5e08c85d27c720ecca2b3f8030ab.tar.gz
misskey-8043409d386d5e08c85d27c720ecca2b3f8030ab.tar.bz2
misskey-8043409d386d5e08c85d27c720ecca2b3f8030ab.zip
Merge branch 'develop'
Diffstat (limited to 'src/boot/master.ts')
-rw-r--r--src/boot/master.ts71
1 files changed, 36 insertions, 35 deletions
diff --git a/src/boot/master.ts b/src/boot/master.ts
index ef8692b308..473e215bac 100644
--- a/src/boot/master.ts
+++ b/src/boot/master.ts
@@ -45,26 +45,15 @@ function greet() {
export async function masterMain() {
let config!: Config;
+ // initialize app
try {
greet();
-
- // initialize app
- config = await init();
-
- if (config.port == null || Number.isNaN(config.port)) {
- bootLogger.error('The port is not configured. Please configure port.', null, true);
- process.exit(1);
- }
-
- if (process.platform === 'linux' && isWellKnownPort(config.port) && !isRoot()) {
- bootLogger.error('You need root privileges to listen on well-known port on Linux', null, true);
- process.exit(1);
- }
-
- if (!await isPortAvailable(config.port)) {
- bootLogger.error(`Port ${config.port} is already in use`, null, true);
- process.exit(1);
- }
+ showEnvironment();
+ await showMachineInfo(bootLogger);
+ showNodejsVersion();
+ config = loadConfigBoot();
+ await connectDb();
+ await validatePort(config);
} catch (e) {
bootLogger.error('Fatal error occurred during initialization', null, true);
process.exit(1);
@@ -89,14 +78,6 @@ const runningNodejsVersion = process.version.slice(1).split('.').map(x => parseI
const requiredNodejsVersion = [11, 7, 0];
const satisfyNodejsVersion = !lessThan(runningNodejsVersion, requiredNodejsVersion);
-function isWellKnownPort(port: number): boolean {
- return port < 1024;
-}
-
-async function isPortAvailable(port: number): Promise<boolean> {
- return await portscanner.checkPortStatus(port, '127.0.0.1') === 'closed';
-}
-
function showEnvironment(): void {
const env = process.env.NODE_ENV;
const logger = bootLogger.createSubLogger('env');
@@ -110,14 +91,7 @@ function showEnvironment(): void {
logger.info(`You ${isRoot() ? '' : 'do not '}have root privileges`);
}
-/**
- * Init app
- */
-async function init(): Promise<Config> {
- showEnvironment();
-
- await showMachineInfo(bootLogger);
-
+function showNodejsVersion(): void {
const nodejsLogger = bootLogger.createSubLogger('nodejs');
nodejsLogger.info(`Version ${runningNodejsVersion.join('.')}`);
@@ -126,7 +100,9 @@ async function init(): Promise<Config> {
nodejsLogger.error(`Node.js version is less than ${requiredNodejsVersion.join('.')}. Please upgrade it.`, null, true);
process.exit(1);
}
+}
+function loadConfigBoot(): Config {
const configLogger = bootLogger.createSubLogger('config');
let config;
@@ -146,6 +122,10 @@ async function init(): Promise<Config> {
configLogger.succ('Loaded');
+ return config;
+}
+
+async function connectDb(): Promise<void> {
const dbLogger = bootLogger.createSubLogger('db');
// Try to connect to DB
@@ -159,8 +139,29 @@ async function init(): Promise<Config> {
dbLogger.error(e);
process.exit(1);
}
+}
- return config;
+async function validatePort(config: Config): Promise<void> {
+ const isWellKnownPort = (port: number) => port < 1024;
+
+ async function isPortAvailable(port: number): Promise<boolean> {
+ return await portscanner.checkPortStatus(port, '127.0.0.1') === 'closed';
+ }
+
+ if (config.port == null || Number.isNaN(config.port)) {
+ bootLogger.error('The port is not configured. Please configure port.', null, true);
+ process.exit(1);
+ }
+
+ if (process.platform === 'linux' && isWellKnownPort(config.port) && !isRoot()) {
+ bootLogger.error('You need root privileges to listen on well-known port on Linux', null, true);
+ process.exit(1);
+ }
+
+ if (!await isPortAvailable(config.port)) {
+ bootLogger.error(`Port ${config.port} is already in use`, null, true);
+ process.exit(1);
+ }
}
async function spawnWorkers(limit: number = 1) {