]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/initializers/installer.js
014efbcb7b7daf14b6420c63d18250947d557d43
3 const async
= require('async')
4 const config
= require('config')
5 const mkdirp
= require('mkdirp')
6 const mongoose
= require('mongoose')
7 const passwordGenerator
= require('password-generator')
8 const path
= require('path')
10 const checker
= require('./checker')
11 const logger
= require('../helpers/logger')
12 const peertubeCrypto
= require('../helpers/peertube-crypto')
14 const Client
= mongoose
.model('OAuthClient')
15 const User
= mongoose
.model('User')
18 installApplication: installApplication
21 function installApplication (callback
) {
23 function createDirectories (callbackAsync
) {
24 createDirectoriesIfNotExist(callbackAsync
)
27 function createCertificates (callbackAsync
) {
28 peertubeCrypto
.createCertsIfNotExist(callbackAsync
)
31 function createOAuthClient (callbackAsync
) {
32 createOAuthClientIfNotExist(callbackAsync
)
35 function createOAuthUser (callbackAsync
) {
36 createOAuthUserIfNotExist(callbackAsync
)
41 // ---------------------------------------------------------------------------
43 module
.exports
= installer
45 // ---------------------------------------------------------------------------
47 function createDirectoriesIfNotExist (callback
) {
48 const storages
= config
.get('storage')
50 async
.each(Object
.keys(storages
), function (key
, callbackEach
) {
51 const dir
= storages
[key
]
52 mkdirp(path
.join(__dirname
, '..', '..', dir
), callbackEach
)
56 function createOAuthClientIfNotExist (callback
) {
57 checker
.clientsExist(function (err
, exist
) {
58 if (err
) return callback(err
)
60 // Nothing to do, clients already exist
61 if (exist
=== true) return callback(null)
63 logger
.info('Creating a default OAuth Client.')
65 const secret
= passwordGenerator(32, false)
66 const client
= new Client({
68 grants: [ 'password' ]
71 client
.save(function (err
, createdClient
) {
72 if (err
) return callback(err
)
74 logger
.info('Client id: ' + createdClient
._id
)
75 logger
.info('Client secret: ' + createdClient
.clientSecret
)
82 function createOAuthUserIfNotExist (callback
) {
83 checker
.usersExist(function (err
, exist
) {
84 if (err
) return callback(err
)
86 // Nothing to do, users already exist
87 if (exist
=== true) return callback(null)
89 logger
.info('Creating the administrator.')
91 const username
= 'root'
94 // Do not generate a random password for tests
95 if (process
.env
.NODE_ENV
=== 'test') {
98 if (process
.env
.NODE_APP_INSTANCE
) {
99 password
+= process
.env
.NODE_APP_INSTANCE
102 password
= passwordGenerator(8, true)
105 const user
= new User({
110 user
.save(function (err
, createdUser
) {
111 if (err
) return callback(err
)
113 logger
.info('Username: ' + createdUser
.username
)
114 logger
.info('User password: ' + createdUser
.password
)
116 return callback(null)