maniajs
Version:
ManiaPlanet (Dedicated) Server Controller.
96 lines (79 loc) • 2.63 kB
JavaScript
/**
* Configuration
*/
;
// 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;
}