36 lines
1006 B
JavaScript
36 lines
1006 B
JavaScript
'use strict';
|
|
const crypto = require('crypto');
|
|
|
|
function getCredentials(name, secret) {
|
|
// this credential would be valid for the next 24 hours
|
|
const timestamp = parseInt(Date.now() / 1000, 10) + 24 * 3600;
|
|
const username = [timestamp, name].join(':');
|
|
const hmac = crypto.createHmac('sha1', secret);
|
|
hmac.setEncoding('base64');
|
|
hmac.write(username);
|
|
hmac.end();
|
|
const credential = hmac.read();
|
|
return { username, credential };
|
|
}
|
|
|
|
function processServers(iceServers) {
|
|
return iceServers.map(server => {
|
|
switch (server.auth) {
|
|
case undefined:
|
|
return server;
|
|
case 'secret':
|
|
const cred = getCredentials(server.username, server.secret);
|
|
return {
|
|
url: server.url,
|
|
urls: server.urls,
|
|
username: cred.username,
|
|
credential: cred.credential
|
|
};
|
|
default:
|
|
throw new Error('Authentication type not implemented: ' + server.auth);
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = { getCredentials, processServers };
|