UNPKG

maniajs

Version:

ManiaPlanet (Dedicated) Server Controller.

96 lines (79 loc) 2.63 kB
/** * Configuration */ 'use strict'; // Imports Object.defineProperty(exports, "__esModule", { value: true }); exports.location = exports.config = exports.raw = undefined; exports.load = load; exports.validate = validate; var _fs = require('fs'); var fs = _interopRequireWildcard(_fs); var _jsYaml = require('js-yaml'); var yaml = _interopRequireWildcard(_jsYaml); var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); var _directory = require('./directory'); var directory = _interopRequireWildcard(_directory); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } /** * Config Schema. */ var configSchema = { config: { debug: _joi2.default.boolean(), server: { address: _joi2.default.string().required(), port: _joi2.default.number().required(), authentication: { username: _joi2.default.string().required(), password: _joi2.default.string().required() } }, masteradmins: _joi2.default.array().items(_joi2.default.string()), db: { dialect: _joi2.default.array().items(_joi2.default.string().valid('mysql', 'mariadb', 'sqlite')), database: _joi2.default.string(), authentication: { username: _joi2.default.string(), password: _joi2.default.string() }, pool: { max: _joi2.default.number().required(), min: _joi2.default.number().required(), idle: _joi2.default.number().required() }, mysql: { host: _joi2.default.string().required(), port: _joi2.default.number().required() }, mariadb: { host: _joi2.default.string().required(), port: _joi2.default.number().required() }, sqlite: { storage: _joi2.default.string().required() } } }, plugins: _joi2.default.array() }; var raw = exports.raw = undefined; var config = exports.config = undefined; var location = exports.location = undefined; function load(file) { file = file || directory.rootPath() + 'config.yaml'; exports.raw = raw = yaml.safeLoad(fs.readFileSync(file, 'utf8')); exports.config = config = raw.config; exports.location = location = file; } function validate() { var res = _joi2.default.validate(this._config, configSchema); if (res.error) { throw res.error; } return true; }