From 37dc07b292ae4b24011a99146150869bb9c17c65 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 21 Mar 2016 21:11:26 +0100 Subject: Create an "installer" module that create defaults clients/users... --- server/initializers/installer.js | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 server/initializers/installer.js (limited to 'server/initializers/installer.js') diff --git a/server/initializers/installer.js b/server/initializers/installer.js new file mode 100644 index 000000000..750eb2c59 --- /dev/null +++ b/server/initializers/installer.js @@ -0,0 +1,94 @@ +'use strict' + +const async = require('async') +const config = require('config') +const mkdirp = require('mkdirp') +const path = require('path') + +const checker = require('./checker') +const logger = require('../helpers/logger') +const peertubeCrypto = require('../helpers/peertubeCrypto') +const Users = require('../models/users') + +const installer = { + installApplication: installApplication +} + +function installApplication (callback) { + // Creates directories + createDirectoriesIfNotExist(function (err) { + if (err) return callback(err) + + // ----------- Create the certificates if they don't already exist ----------- + peertubeCrypto.createCertsIfNotExist(function (err) { + if (err) return callback(err) + + createOAuthClientIfNotExist(function (err) { + if (err) return callback(err) + + createOAuthUserIfNotExist(callback) + }) + }) + }) +} + +// --------------------------------------------------------------------------- + +module.exports = installer + +// --------------------------------------------------------------------------- + +function createDirectoriesIfNotExist (callback) { + const storages = config.get('storage') + + async.each(Object.keys(storages), function (key, callbackEach) { + const dir = storages[key] + mkdirp(path.join(__dirname, '..', '..', dir), callbackEach) + }, callback) +} + +function createOAuthClientIfNotExist (callback) { + checker.clientsExist(function (err, exist) { + if (err) return callback(err) + + // Nothing to do, clients already exist + if (exist === true) return callback(null) + + logger.info('Creating a default OAuth Client.') + + // TODO: generate password + const password = 'megustalabanana' + Users.createClient(password, [ 'password' ], function (err, id) { + if (err) return callback(err) + + logger.info('Client id: ' + id) + logger.info('Client password: ' + password) + + return callback(null) + }) + }) +} + +function createOAuthUserIfNotExist (callback) { + checker.usersExist(function (err, exist) { + if (err) return callback(err) + + // Nothing to do, users already exist + if (exist === true) return callback(null) + + logger.info('Creating the administrator.') + + // TODO: generate password + const username = 'admin' + const password = 'nomegustalabanana' + + Users.createUser(username, password, function (err) { + if (err) return callback(err) + + logger.info('Username: ' + username) + logger.info('User password: ' + password) + + return callback(null) + }) + }) +} -- cgit v1.2.3