aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--client/src/app/+admin/friends/friend-list/friend-list.component.ts4
-rw-r--r--client/src/app/+admin/friends/shared/friend.model.ts1
-rw-r--r--config/default.yaml3
-rw-r--r--config/production.yaml.example3
-rw-r--r--config/test-1.yaml3
-rw-r--r--config/test-2.yaml3
-rw-r--r--config/test-3.yaml3
-rw-r--r--config/test-4.yaml3
-rw-r--r--config/test-5.yaml3
-rw-r--r--config/test-6.yaml3
-rw-r--r--server/controllers/api/pods.js3
-rw-r--r--server/initializers/checker.js3
-rw-r--r--server/initializers/constants.js5
-rw-r--r--server/initializers/migrations/0005-email-pod.js20
-rw-r--r--server/initializers/migrations/0005-example.js14
-rw-r--r--server/initializers/migrator.js9
-rw-r--r--server/lib/friends.js3
-rw-r--r--server/middlewares/validators/pods.js3
-rw-r--r--server/models/pod.js5
-rw-r--r--server/tests/api/friends-basic.js2
20 files changed, 75 insertions, 21 deletions
diff --git a/client/src/app/+admin/friends/friend-list/friend-list.component.ts b/client/src/app/+admin/friends/friend-list/friend-list.component.ts
index 9783adf16..525a9fbc3 100644
--- a/client/src/app/+admin/friends/friend-list/friend-list.component.ts
+++ b/client/src/app/+admin/friends/friend-list/friend-list.component.ts
@@ -35,6 +35,10 @@ export class FriendListComponent {
35 title: 'Host', 35 title: 'Host',
36 sort: false 36 sort: false
37 }, 37 },
38 email: {
39 title: 'Email',
40 sort: false
41 },
38 score: { 42 score: {
39 title: 'Score', 43 title: 'Score',
40 sort: false 44 sort: false
diff --git a/client/src/app/+admin/friends/shared/friend.model.ts b/client/src/app/+admin/friends/shared/friend.model.ts
index 462cc82ed..f72156d05 100644
--- a/client/src/app/+admin/friends/shared/friend.model.ts
+++ b/client/src/app/+admin/friends/shared/friend.model.ts
@@ -2,5 +2,6 @@ export interface Friend {
2 id: string; 2 id: string;
3 host: string; 3 host: string;
4 score: number; 4 score: number;
5 email: string;
5 createdAt: Date; 6 createdAt: Date;
6} 7}
diff --git a/config/default.yaml b/config/default.yaml
index ad87191fd..172bbef1e 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -22,3 +22,6 @@ storage:
22 previews: 'previews/' 22 previews: 'previews/'
23 thumbnails: 'thumbnails/' 23 thumbnails: 'thumbnails/'
24 torrents: 'torrents/' 24 torrents: 'torrents/'
25
26admin:
27 email: 'admin@example.com'
diff --git a/config/production.yaml.example b/config/production.yaml.example
index ba7ff8f2e..cbfb0f46c 100644
--- a/config/production.yaml.example
+++ b/config/production.yaml.example
@@ -23,3 +23,6 @@ storage:
23 previews: 'previews/' 23 previews: 'previews/'
24 thumbnails: 'thumbnails/' 24 thumbnails: 'thumbnails/'
25 torrents: 'torrents/' 25 torrents: 'torrents/'
26
27admin:
28 email: 'admin@example.com'
diff --git a/config/test-1.yaml b/config/test-1.yaml
index b2a0a5422..dbe408a8c 100644
--- a/config/test-1.yaml
+++ b/config/test-1.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test1/logs/' 15 logs: 'test1/logs/'
16 thumbnails: 'test1/thumbnails/' 16 thumbnails: 'test1/thumbnails/'
17 torrents: 'test1/torrents/' 17 torrents: 'test1/torrents/'
18
19admin:
20 email: 'admin1@example.com'
diff --git a/config/test-2.yaml b/config/test-2.yaml
index 7285f3394..13e09ff4c 100644
--- a/config/test-2.yaml
+++ b/config/test-2.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test2/logs/' 15 logs: 'test2/logs/'
16 thumbnails: 'test2/thumbnails/' 16 thumbnails: 'test2/thumbnails/'
17 torrents: 'test2/torrents/' 17 torrents: 'test2/torrents/'
18
19admin:
20 email: 'admin2@example.com'
diff --git a/config/test-3.yaml b/config/test-3.yaml
index 138a2cd53..2eb984692 100644
--- a/config/test-3.yaml
+++ b/config/test-3.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test3/logs/' 15 logs: 'test3/logs/'
16 thumbnails: 'test3/thumbnails/' 16 thumbnails: 'test3/thumbnails/'
17 torrents: 'test3/torrents/' 17 torrents: 'test3/torrents/'
18
19admin:
20 email: 'admin3@example.com'
diff --git a/config/test-4.yaml b/config/test-4.yaml
index 7425f4af7..a0a9bde21 100644
--- a/config/test-4.yaml
+++ b/config/test-4.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test4/logs/' 15 logs: 'test4/logs/'
16 thumbnails: 'test4/thumbnails/' 16 thumbnails: 'test4/thumbnails/'
17 torrents: 'test4/torrents/' 17 torrents: 'test4/torrents/'
18
19admin:
20 email: 'admin4@example.com'
diff --git a/config/test-5.yaml b/config/test-5.yaml
index 1bf0de658..af8654e14 100644
--- a/config/test-5.yaml
+++ b/config/test-5.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test5/logs/' 15 logs: 'test5/logs/'
16 thumbnails: 'test5/thumbnails/' 16 thumbnails: 'test5/thumbnails/'
17 torrents: 'test5/torrents/' 17 torrents: 'test5/torrents/'
18
19admin:
20 email: 'admin5@example.com'
diff --git a/config/test-6.yaml b/config/test-6.yaml
index 7303a08fc..d74d3b052 100644
--- a/config/test-6.yaml
+++ b/config/test-6.yaml
@@ -15,3 +15,6 @@ storage:
15 logs: 'test6/logs/' 15 logs: 'test6/logs/'
16 thumbnails: 'test6/thumbnails/' 16 thumbnails: 'test6/thumbnails/'
17 torrents: 'test6/torrents/' 17 torrents: 'test6/torrents/'
18
19admin:
20 email: 'admin6@example.com'
diff --git a/server/controllers/api/pods.js b/server/controllers/api/pods.js
index da991f8d9..1c3eefcc1 100644
--- a/server/controllers/api/pods.js
+++ b/server/controllers/api/pods.js
@@ -4,6 +4,7 @@ const express = require('express')
4const waterfall = require('async/waterfall') 4const waterfall = require('async/waterfall')
5 5
6const db = require('../../initializers/database') 6const db = require('../../initializers/database')
7const constants = require('../../initializers/constants')
7const logger = require('../../helpers/logger') 8const logger = require('../../helpers/logger')
8const peertubeCrypto = require('../../helpers/peertube-crypto') 9const peertubeCrypto = require('../../helpers/peertube-crypto')
9const utils = require('../../helpers/utils') 10const utils = require('../../helpers/utils')
@@ -80,7 +81,7 @@ function addPods (req, res, next) {
80 ], function (err, cert) { 81 ], function (err, cert) {
81 if (err) return next(err) 82 if (err) return next(err)
82 83
83 return res.json({ cert: cert }) 84 return res.json({ cert: cert, email: constants.CONFIG.ADMIN.EMAIL })
84 }) 85 })
85} 86}
86 87
diff --git a/server/initializers/checker.js b/server/initializers/checker.js
index 6471bb4f1..7adbbb37a 100644
--- a/server/initializers/checker.js
+++ b/server/initializers/checker.js
@@ -28,7 +28,8 @@ function checkMissedConfig () {
28 const required = [ 'listen.port', 28 const required = [ 'listen.port',
29 'webserver.https', 'webserver.hostname', 'webserver.port', 29 'webserver.https', 'webserver.hostname', 'webserver.port',
30 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password', 30 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password',
31 'storage.certs', 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews' 31 'storage.certs', 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews',
32 'admin.email'
32 ] 33 ]
33 const miss = [] 34 const miss = []
34 35
diff --git a/server/initializers/constants.js b/server/initializers/constants.js
index ad7cf4f4d..eb0509efe 100644
--- a/server/initializers/constants.js
+++ b/server/initializers/constants.js
@@ -54,6 +54,9 @@ const CONFIG = {
54 WS: config.get('webserver.https') === true ? 'wss' : 'ws', 54 WS: config.get('webserver.https') === true ? 'wss' : 'ws',
55 HOSTNAME: config.get('webserver.hostname'), 55 HOSTNAME: config.get('webserver.hostname'),
56 PORT: config.get('webserver.port') 56 PORT: config.get('webserver.port')
57 },
58 ADMIN: {
59 EMAIL: config.get('admin.email')
57 } 60 }
58} 61}
59CONFIG.WEBSERVER.URL = CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT 62CONFIG.WEBSERVER.URL = CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT
@@ -92,7 +95,7 @@ const FRIEND_SCORE = {
92 95
93// --------------------------------------------------------------------------- 96// ---------------------------------------------------------------------------
94 97
95const LAST_MIGRATION_VERSION = 0 98const LAST_MIGRATION_VERSION = 5
96 99
97// --------------------------------------------------------------------------- 100// ---------------------------------------------------------------------------
98 101
diff --git a/server/initializers/migrations/0005-email-pod.js b/server/initializers/migrations/0005-email-pod.js
new file mode 100644
index 000000000..d90b674a1
--- /dev/null
+++ b/server/initializers/migrations/0005-email-pod.js
@@ -0,0 +1,20 @@
1/*
2 This is just an example.
3*/
4
5// utils = { transaction, queryInterface }
6exports.up = function (utils, callback) {
7 const q = utils.queryInterface
8 const Sequelize = utils.Sequelize
9
10 const data = {
11 type: Sequelize.STRING(400),
12 allowNull: false
13 }
14
15 q.addColumn('Pods', 'email', data, { transaction: utils.transaction }).asCallback(callback)
16}
17
18exports.down = function (options, callback) {
19 throw new Error('Not implemented.')
20}
diff --git a/server/initializers/migrations/0005-example.js b/server/initializers/migrations/0005-example.js
deleted file mode 100644
index cedc42919..000000000
--- a/server/initializers/migrations/0005-example.js
+++ /dev/null
@@ -1,14 +0,0 @@
1// /*
2// This is just an example.
3// */
4
5// const db = require('../database')
6
7// // options contains the transaction
8// exports.up = function (options, callback) {
9// db.Application.create({ migrationVersion: 42 }, { transaction: options.transaction }).asCallback(callback)
10// }
11
12// exports.down = function (options, callback) {
13// throw new Error('Not implemented.')
14// }
diff --git a/server/initializers/migrator.js b/server/initializers/migrator.js
index e5288b615..233ee2bdd 100644
--- a/server/initializers/migrator.js
+++ b/server/initializers/migrator.js
@@ -64,7 +64,7 @@ function getMigrationScripts (callback) {
64} 64}
65 65
66function executeMigration (actualVersion, entity, callback) { 66function executeMigration (actualVersion, entity, callback) {
67 const versionScript = entity.version 67 const versionScript = parseInt(entity.version)
68 68
69 // Do not execute old migration scripts 69 // Do not execute old migration scripts
70 if (versionScript <= actualVersion) return callback(null) 70 if (versionScript <= actualVersion) return callback(null)
@@ -78,7 +78,12 @@ function executeMigration (actualVersion, entity, callback) {
78 db.sequelize.transaction().asCallback(function (err, t) { 78 db.sequelize.transaction().asCallback(function (err, t) {
79 if (err) return callback(err) 79 if (err) return callback(err)
80 80
81 migrationScript.up({ transaction: t }, function (err) { 81 const options = {
82 transaction: t,
83 queryInterface: db.sequelize.getQueryInterface(),
84 Sequelize: db.Sequelize
85 }
86 migrationScript.up(options, function (err) {
82 if (err) { 87 if (err) {
83 t.rollback() 88 t.rollback()
84 return callback(err) 89 return callback(err)
diff --git a/server/lib/friends.js b/server/lib/friends.js
index 2ea837c99..9b38693c7 100644
--- a/server/lib/friends.js
+++ b/server/lib/friends.js
@@ -245,6 +245,7 @@ function makeRequestsToWinningPods (cert, podsList, callback) {
245 method: 'POST', 245 method: 'POST',
246 json: { 246 json: {
247 host: constants.CONFIG.WEBSERVER.HOST, 247 host: constants.CONFIG.WEBSERVER.HOST,
248 email: constants.CONFIG.ADMIN.EMAIL,
248 publicKey: cert 249 publicKey: cert
249 } 250 }
250 } 251 }
@@ -257,7 +258,7 @@ function makeRequestsToWinningPods (cert, podsList, callback) {
257 } 258 }
258 259
259 if (res.statusCode === 200) { 260 if (res.statusCode === 200) {
260 const podObj = db.Pod.build({ host: pod.host, publicKey: body.cert }) 261 const podObj = db.Pod.build({ host: pod.host, publicKey: body.cert, email: body.email })
261 podObj.save().asCallback(function (err, podCreated) { 262 podObj.save().asCallback(function (err, podCreated) {
262 if (err) { 263 if (err) {
263 logger.error('Cannot add friend %s pod.', pod.host, { error: err }) 264 logger.error('Cannot add friend %s pod.', pod.host, { error: err })
diff --git a/server/middlewares/validators/pods.js b/server/middlewares/validators/pods.js
index b9b30e7a1..0bf4b1844 100644
--- a/server/middlewares/validators/pods.js
+++ b/server/middlewares/validators/pods.js
@@ -40,7 +40,8 @@ function makeFriends (req, res, next) {
40} 40}
41 41
42function podsAdd (req, res, next) { 42function podsAdd (req, res, next) {
43 req.checkBody('host', 'Should have an host').isHostValid() 43 req.checkBody('host', 'Should have a host').isHostValid()
44 req.checkBody('email', 'Should have an email').isEmail()
44 req.checkBody('publicKey', 'Should have a public key').notEmpty() 45 req.checkBody('publicKey', 'Should have a public key').notEmpty()
45 logger.debug('Checking podsAdd parameters', { parameters: req.body }) 46 logger.debug('Checking podsAdd parameters', { parameters: req.body })
46 47
diff --git a/server/models/pod.js b/server/models/pod.js
index b3c6db8e8..6ae4b0999 100644
--- a/server/models/pod.js
+++ b/server/models/pod.js
@@ -32,6 +32,10 @@ module.exports = function (sequelize, DataTypes) {
32 isInt: true, 32 isInt: true,
33 max: constants.FRIEND_SCORE.MAX 33 max: constants.FRIEND_SCORE.MAX
34 } 34 }
35 },
36 email: {
37 type: DataTypes.STRING(400),
38 allowNull: false
35 } 39 }
36 }, 40 },
37 { 41 {
@@ -71,6 +75,7 @@ function toFormatedJSON () {
71 const json = { 75 const json = {
72 id: this.id, 76 id: this.id,
73 host: this.host, 77 host: this.host,
78 email: this.email,
74 score: this.score, 79 score: this.score,
75 createdAt: this.createdAt 80 createdAt: this.createdAt
76 } 81 }
diff --git a/server/tests/api/friends-basic.js b/server/tests/api/friends-basic.js
index 6f37ff291..62c40df7b 100644
--- a/server/tests/api/friends-basic.js
+++ b/server/tests/api/friends-basic.js
@@ -96,6 +96,7 @@ describe('Test basic friends', function () {
96 96
97 const pod = result[0] 97 const pod = result[0]
98 expect(pod.host).to.equal(servers[2].host) 98 expect(pod.host).to.equal(servers[2].host)
99 expect(pod.email).to.equal('admin3@example.com')
99 expect(pod.score).to.equal(20) 100 expect(pod.score).to.equal(20)
100 expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true 101 expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true
101 102
@@ -113,6 +114,7 @@ describe('Test basic friends', function () {
113 114
114 const pod = result[0] 115 const pod = result[0]
115 expect(pod.host).to.equal(servers[1].host) 116 expect(pod.host).to.equal(servers[1].host)
117 expect(pod.email).to.equal('admin2@example.com')
116 expect(pod.score).to.equal(20) 118 expect(pod.score).to.equal(20)
117 expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true 119 expect(miscsUtils.dateIsValid(pod.createdAt)).to.be.true
118 120