diff options
Diffstat (limited to 'server/initializers/installer.js')
-rw-r--r-- | server/initializers/installer.js | 94 |
1 files changed, 94 insertions, 0 deletions
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 @@ | |||
1 | 'use strict' | ||
2 | |||
3 | const async = require('async') | ||
4 | const config = require('config') | ||
5 | const mkdirp = require('mkdirp') | ||
6 | const path = require('path') | ||
7 | |||
8 | const checker = require('./checker') | ||
9 | const logger = require('../helpers/logger') | ||
10 | const peertubeCrypto = require('../helpers/peertubeCrypto') | ||
11 | const Users = require('../models/users') | ||
12 | |||
13 | const installer = { | ||
14 | installApplication: installApplication | ||
15 | } | ||
16 | |||
17 | function installApplication (callback) { | ||
18 | // Creates directories | ||
19 | createDirectoriesIfNotExist(function (err) { | ||
20 | if (err) return callback(err) | ||
21 | |||
22 | // ----------- Create the certificates if they don't already exist ----------- | ||
23 | peertubeCrypto.createCertsIfNotExist(function (err) { | ||
24 | if (err) return callback(err) | ||
25 | |||
26 | createOAuthClientIfNotExist(function (err) { | ||
27 | if (err) return callback(err) | ||
28 | |||
29 | createOAuthUserIfNotExist(callback) | ||
30 | }) | ||
31 | }) | ||
32 | }) | ||
33 | } | ||
34 | |||
35 | // --------------------------------------------------------------------------- | ||
36 | |||
37 | module.exports = installer | ||
38 | |||
39 | // --------------------------------------------------------------------------- | ||
40 | |||
41 | function createDirectoriesIfNotExist (callback) { | ||
42 | const storages = config.get('storage') | ||
43 | |||
44 | async.each(Object.keys(storages), function (key, callbackEach) { | ||
45 | const dir = storages[key] | ||
46 | mkdirp(path.join(__dirname, '..', '..', dir), callbackEach) | ||
47 | }, callback) | ||
48 | } | ||
49 | |||
50 | function createOAuthClientIfNotExist (callback) { | ||
51 | checker.clientsExist(function (err, exist) { | ||
52 | if (err) return callback(err) | ||
53 | |||
54 | // Nothing to do, clients already exist | ||
55 | if (exist === true) return callback(null) | ||
56 | |||
57 | logger.info('Creating a default OAuth Client.') | ||
58 | |||
59 | // TODO: generate password | ||
60 | const password = 'megustalabanana' | ||
61 | Users.createClient(password, [ 'password' ], function (err, id) { | ||
62 | if (err) return callback(err) | ||
63 | |||
64 | logger.info('Client id: ' + id) | ||
65 | logger.info('Client password: ' + password) | ||
66 | |||
67 | return callback(null) | ||
68 | }) | ||
69 | }) | ||
70 | } | ||
71 | |||
72 | function createOAuthUserIfNotExist (callback) { | ||
73 | checker.usersExist(function (err, exist) { | ||
74 | if (err) return callback(err) | ||
75 | |||
76 | // Nothing to do, users already exist | ||
77 | if (exist === true) return callback(null) | ||
78 | |||
79 | logger.info('Creating the administrator.') | ||
80 | |||
81 | // TODO: generate password | ||
82 | const username = 'admin' | ||
83 | const password = 'nomegustalabanana' | ||
84 | |||
85 | Users.createUser(username, password, function (err) { | ||
86 | if (err) return callback(err) | ||
87 | |||
88 | logger.info('Username: ' + username) | ||
89 | logger.info('User password: ' + password) | ||
90 | |||
91 | return callback(null) | ||
92 | }) | ||
93 | }) | ||
94 | } | ||