Create an "installer" module that create defaults clients/users...
This commit is contained in:
parent
9457bf8807
commit
37dc07b292
14
server.js
14
server.js
|
@ -21,15 +21,13 @@ if (miss.length !== 0) {
|
||||||
throw new Error('Miss some configurations keys : ' + miss)
|
throw new Error('Miss some configurations keys : ' + miss)
|
||||||
}
|
}
|
||||||
|
|
||||||
checker.createDirectoriesIfNotExist()
|
|
||||||
|
|
||||||
// ----------- PeerTube modules -----------
|
// ----------- PeerTube modules -----------
|
||||||
var config = require('config')
|
var config = require('config')
|
||||||
var constants = require('./server/initializers/constants')
|
var constants = require('./server/initializers/constants')
|
||||||
var customValidators = require('./server/helpers/customValidators')
|
var customValidators = require('./server/helpers/customValidators')
|
||||||
var database = require('./server/initializers/database')
|
var database = require('./server/initializers/database')
|
||||||
|
var installer = require('./server/initializers/installer')
|
||||||
var logger = require('./server/helpers/logger')
|
var logger = require('./server/helpers/logger')
|
||||||
var peertubeCrypto = require('./server/helpers/peertubeCrypto')
|
|
||||||
var poolRequests = require('./server/lib/poolRequests')
|
var poolRequests = require('./server/lib/poolRequests')
|
||||||
var routes = require('./server/controllers')
|
var routes = require('./server/controllers')
|
||||||
var utils = require('./server/helpers/utils')
|
var utils = require('./server/helpers/utils')
|
||||||
|
@ -119,17 +117,9 @@ app.use(function (err, req, res, next) {
|
||||||
res.sendStatus(err.status || 500)
|
res.sendStatus(err.status || 500)
|
||||||
})
|
})
|
||||||
|
|
||||||
// TODO: move into initializer
|
installer.installApplication(function (err) {
|
||||||
require('./server/models/users').createClient('coucou', [ 'password' ], function (err, id) {
|
|
||||||
if (err) throw err
|
if (err) throw err
|
||||||
logger.info('Client id: ' + id)
|
|
||||||
|
|
||||||
require('./server/models/users').createUser('floflo', 'coucou', function () {})
|
|
||||||
})
|
|
||||||
|
|
||||||
// ----------- Create the certificates if they don't already exist -----------
|
|
||||||
peertubeCrypto.createCertsIfNotExist(function (err) {
|
|
||||||
if (err) throw err
|
|
||||||
// Create/activate the webtorrent module
|
// Create/activate the webtorrent module
|
||||||
webtorrent.create(function () {
|
webtorrent.create(function () {
|
||||||
function cleanForExit () {
|
function cleanForExit () {
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
const config = require('config')
|
const config = require('config')
|
||||||
const mkdirp = require('mkdirp')
|
|
||||||
const path = require('path')
|
const Users = require('../models/users')
|
||||||
|
|
||||||
const checker = {
|
const checker = {
|
||||||
checkConfig: checkConfig,
|
checkConfig: checkConfig,
|
||||||
createDirectoriesIfNotExist: createDirectoriesIfNotExist
|
clientsExist: clientsExist,
|
||||||
|
usersExist: usersExist
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check the config files
|
// Check the config files
|
||||||
|
@ -27,18 +28,20 @@ function checkConfig () {
|
||||||
return miss
|
return miss
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create directories for the storage if it doesn't exist
|
function clientsExist (callback) {
|
||||||
function createDirectoriesIfNotExist () {
|
Users.getClients(function (err, clients) {
|
||||||
const storages = config.get('storage')
|
if (err) return callback(err)
|
||||||
|
|
||||||
for (const key of Object.keys(storages)) {
|
return callback(null, clients.length !== 0)
|
||||||
const dir = storages[key]
|
})
|
||||||
try {
|
}
|
||||||
mkdirp.sync(path.join(__dirname, '..', '..', dir))
|
|
||||||
} catch (error) {
|
function usersExist (callback) {
|
||||||
throw new Error('Cannot create ' + path + ':' + error)
|
Users.getUsers(function (err, users) {
|
||||||
}
|
if (err) return callback(err)
|
||||||
}
|
|
||||||
|
return callback(null, users.length !== 0)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
|
@ -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)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
|
@ -34,8 +34,10 @@ const Users = {
|
||||||
createUser: createUser,
|
createUser: createUser,
|
||||||
getAccessToken: getAccessToken,
|
getAccessToken: getAccessToken,
|
||||||
getClient: getClient,
|
getClient: getClient,
|
||||||
|
getClients: getClients,
|
||||||
getRefreshToken: getRefreshToken,
|
getRefreshToken: getRefreshToken,
|
||||||
getUser: getUser,
|
getUser: getUser,
|
||||||
|
getUsers: getUsers,
|
||||||
saveToken: saveToken
|
saveToken: saveToken
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,6 +72,10 @@ function getClient (clientId, clientSecret) {
|
||||||
return OAuthClientsDB.findOne({ _id: mongo_id, clientSecret: clientSecret })
|
return OAuthClientsDB.findOne({ _id: mongo_id, clientSecret: clientSecret })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getClients (callback) {
|
||||||
|
return OAuthClientsDB.find(callback)
|
||||||
|
}
|
||||||
|
|
||||||
function getRefreshToken (refreshToken) {
|
function getRefreshToken (refreshToken) {
|
||||||
logger.debug('Getting RefreshToken (refreshToken: ' + refreshToken + ').')
|
logger.debug('Getting RefreshToken (refreshToken: ' + refreshToken + ').')
|
||||||
|
|
||||||
|
@ -81,6 +87,10 @@ function getUser (username, password) {
|
||||||
return UsersDB.findOne({ username: username, password: password })
|
return UsersDB.findOne({ username: username, password: password })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getUsers (callback) {
|
||||||
|
return UsersDB.find(callback)
|
||||||
|
}
|
||||||
|
|
||||||
function saveToken (token, client, user) {
|
function saveToken (token, client, user) {
|
||||||
logger.debug('Saving token for client ' + client.id + ' and user ' + user.id + '.')
|
logger.debug('Saving token for client ' + client.id + ' and user ' + user.id + '.')
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue