mirror of
https://github.com/IrosTheBeggar/mStream.git
synced 2025-10-27 07:31:02 +00:00
fix bug in wizard caused by new boot process
This commit is contained in:
parent
eceb3d018f
commit
14f3bbb089
@ -7,10 +7,7 @@ const auth = require('../../src/util/auth');
|
||||
const br = require('os').EOL;
|
||||
const Joi = require('joi');
|
||||
|
||||
let defaults;
|
||||
(async () => {
|
||||
defaults = await require('../defaults').setup({});
|
||||
})();
|
||||
const defaults = require('../defaults').getDefaults();
|
||||
|
||||
exports.addKey = function(current, filepath, callback) {
|
||||
if (!filepath) {
|
||||
|
||||
@ -3,85 +3,85 @@ const path = require('path');
|
||||
const Joi = require('joi');
|
||||
const globals = require('../src/global');
|
||||
|
||||
const storageJoi = Joi.object({
|
||||
albumArtDirectory: Joi.string().default(path.join(__dirname, '../image-cache')),
|
||||
dbDirectory: Joi.string().default(path.join(__dirname, '../save/db')),
|
||||
logsDirectory: Joi.string().default(path.join(__dirname, '../save/logs')),
|
||||
syncConfigDirectory: Joi.string().default(path.join(__dirname, '../save/sync')),
|
||||
});
|
||||
|
||||
const scanOptions = Joi.object({
|
||||
skipImg: Joi.boolean().default(false),
|
||||
scanInterval: Joi.number().default(24),
|
||||
saveInterval: Joi.number().default(250),
|
||||
pause: Joi.number().default(0),
|
||||
bootScanDelay: Joi.number().default(3),
|
||||
maxConcurrentTasks: Joi.number().integer().min(1).default(1)
|
||||
});
|
||||
|
||||
const schema = Joi.object({
|
||||
autoboot: Joi.boolean().optional(),
|
||||
address: Joi.string().ip({ cidr: 'forbidden' }).default('0.0.0.0'),
|
||||
port: Joi.number().default(3000),
|
||||
newWebApp: Joi.boolean().default(false),
|
||||
supportedAudioFiles: Joi.object().pattern(
|
||||
Joi.string(), Joi.boolean()
|
||||
).default({
|
||||
"mp3": true, "flac": true, "wav": true,
|
||||
"ogg": true, "aac": true, "m4a": true,
|
||||
"opus": true, "m3u": false
|
||||
}),
|
||||
scanOptions: scanOptions.default(scanOptions.validate({}).value),
|
||||
noUpload: Joi.boolean().default(false),
|
||||
writeLogs: Joi.boolean().default(false),
|
||||
storage: storageJoi.default(storageJoi.validate({}).value),
|
||||
webAppDirectory: Joi.string().default(path.join(__dirname, '../public')),
|
||||
ddns: Joi.object({
|
||||
iniFile: Joi.string().default(path.join(__dirname, `../frp/frps.ini`)),
|
||||
email: Joi.string().allow('').optional(),
|
||||
password: Joi.string().allow('').optional(),
|
||||
tested: Joi.boolean().optional(),
|
||||
token: Joi.string().optional(),
|
||||
url: Joi.string().optional(),
|
||||
}),
|
||||
transcode: Joi.object({
|
||||
enabled: Joi.boolean().default(false),
|
||||
ffmpegDirectory: Joi.string().default(path.join(__dirname, '../bin/ffmpeg')),
|
||||
defaultCodec: Joi.string().valid('mp3', 'opus', 'aac').default('opus'),
|
||||
defaultBitrate: Joi.string().valid('64k', '128k', '192k', '96k').default('96k')
|
||||
}).optional(),
|
||||
secret: Joi.string().optional(),
|
||||
folders: Joi.object().pattern(
|
||||
Joi.string(),
|
||||
Joi.object({
|
||||
root: Joi.string().required()
|
||||
})
|
||||
).default({}),
|
||||
users: Joi.object().pattern(
|
||||
Joi.string(),
|
||||
Joi.object({
|
||||
password: Joi.string().required(),
|
||||
guest: Joi.boolean().default(false),
|
||||
admin: Joi.boolean().default(false),
|
||||
salt: Joi.string().required(),
|
||||
vpaths: Joi.array().items(Joi.string()),
|
||||
'lastfm-user': Joi.string().optional(),
|
||||
'lastfm-password': Joi.string().optional(),
|
||||
})
|
||||
).default({}),
|
||||
ssl: Joi.object({
|
||||
key: Joi.string().allow('').optional(),
|
||||
cert: Joi.string().allow('').optional()
|
||||
}).optional(),
|
||||
federation: Joi.object({
|
||||
folder: Joi.string().allow('').optional()
|
||||
}).optional()
|
||||
});
|
||||
|
||||
|
||||
exports.setup = async configFile => {
|
||||
globals.setConfigFile(configFile);
|
||||
const config = JSON.parse(await fs.readFile(configFile, 'utf8'))
|
||||
|
||||
const storageJoi = Joi.object({
|
||||
albumArtDirectory: Joi.string().default(path.join(__dirname, '../image-cache')),
|
||||
dbDirectory: Joi.string().default(path.join(__dirname, '../save/db')),
|
||||
logsDirectory: Joi.string().default(path.join(__dirname, '../save/logs')),
|
||||
syncConfigDirectory: Joi.string().default(path.join(__dirname, '../save/sync')),
|
||||
});
|
||||
|
||||
const scanOptions = Joi.object({
|
||||
skipImg: Joi.boolean().default(false),
|
||||
scanInterval: Joi.number().default(24),
|
||||
saveInterval: Joi.number().default(250),
|
||||
pause: Joi.number().default(0),
|
||||
bootScanDelay: Joi.number().default(3),
|
||||
maxConcurrentTasks: Joi.number().integer().min(1).default(1)
|
||||
});
|
||||
|
||||
const schema = Joi.object({
|
||||
autoboot: Joi.boolean().optional(),
|
||||
address: Joi.string().ip({ cidr: 'forbidden' }).default('0.0.0.0'),
|
||||
port: Joi.number().default(3000),
|
||||
newWebApp: Joi.boolean().default(false),
|
||||
supportedAudioFiles: Joi.object().pattern(
|
||||
Joi.string(), Joi.boolean()
|
||||
).default({
|
||||
"mp3": true, "flac": true, "wav": true,
|
||||
"ogg": true, "aac": true, "m4a": true,
|
||||
"opus": true, "m3u": false
|
||||
}),
|
||||
scanOptions: scanOptions.default(scanOptions.validate({}).value),
|
||||
noUpload: Joi.boolean().default(false),
|
||||
writeLogs: Joi.boolean().default(false),
|
||||
storage: storageJoi.default(storageJoi.validate({}).value),
|
||||
webAppDirectory: Joi.string().default(path.join(__dirname, '../public')),
|
||||
ddns: Joi.object({
|
||||
iniFile: Joi.string().default(path.join(__dirname, `../frp/frps.ini`)),
|
||||
email: Joi.string().allow('').optional(),
|
||||
password: Joi.string().allow('').optional(),
|
||||
tested: Joi.boolean().optional(),
|
||||
token: Joi.string().optional(),
|
||||
url: Joi.string().optional(),
|
||||
}),
|
||||
transcode: Joi.object({
|
||||
enabled: Joi.boolean().default(false),
|
||||
ffmpegDirectory: Joi.string().default(path.join(__dirname, '../bin/ffmpeg')),
|
||||
defaultCodec: Joi.string().valid('mp3', 'opus', 'aac').default('opus'),
|
||||
defaultBitrate: Joi.string().valid('64k', '128k', '192k', '96k').default('96k')
|
||||
}).optional(),
|
||||
secret: Joi.string().optional(),
|
||||
folders: Joi.object().pattern(
|
||||
Joi.string(),
|
||||
Joi.object({
|
||||
root: Joi.string().required()
|
||||
})
|
||||
).default({}),
|
||||
users: Joi.object().pattern(
|
||||
Joi.string(),
|
||||
Joi.object({
|
||||
password: Joi.string().required(),
|
||||
guest: Joi.boolean().default(false),
|
||||
admin: Joi.boolean().default(false),
|
||||
salt: Joi.string().required(),
|
||||
vpaths: Joi.array().items(Joi.string()),
|
||||
'lastfm-user': Joi.string().optional(),
|
||||
'lastfm-password': Joi.string().optional(),
|
||||
})
|
||||
).default({}),
|
||||
ssl: Joi.object({
|
||||
key: Joi.string().allow('').optional(),
|
||||
cert: Joi.string().allow('').optional()
|
||||
}).optional(),
|
||||
federation: Joi.object({
|
||||
folder: Joi.string().allow('').optional()
|
||||
}).optional()
|
||||
});
|
||||
|
||||
const program = await schema.validateAsync(config, { allowUnknown: true });
|
||||
|
||||
// Verify paths are real
|
||||
@ -101,3 +101,8 @@ exports.setup = async configFile => {
|
||||
|
||||
return program;
|
||||
}
|
||||
|
||||
exports.getDefaults = async () => {
|
||||
const { value, error } = schema.validate({});
|
||||
return value;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user