// // // "use strict"; const http = require('http'); const hmacsha1 = require('hmacsha1'); const port = Number(process.env.NODE_PORT); const listenip = process.env.NODE_LISTEN_IP; const secret = process.env.SECRET; const ttl = Number(process.env.TTL); function onRequest(request, response) { if (!request.headers['x-forwarded-user'] || request.headers['x-forwarded-user'].indexOf('Basic ') === -1) { // return response.status(401).json({ message: 'Missing Authorization Header' }); console.log('Missing Authorization Header'); } else { const base64Credentials = request.headers['x-forwarded-user'].split(' ')[1]; const credentials = Buffer.from(base64Credentials, 'base64').toString('ascii'); var [httpusername, httppassword] = credentials.split(':'); } var timestamp = Date.now() / 1000 | 0; var expiry = (timestamp + ttl).toString(10); var turnusername = expiry + ':' + httpusername; var username_sha1 = hmacsha1(secret, turnusername); var turnpassword = username_sha1; const data = JSON.stringify({ username: turnusername, password: turnpassword, ttl: ttl, uris: [ // "turn:turn.blorand.org:3478?transport=udp", // "turn:turn.blorand.org:3479?transport=tcp", "turns:turn.blorand.org:5349?transport=udp", "turns:turn.blorand.org:5350?transport=tcp" ], }) if (request.headers['x-forwarded-for'] == undefined) { var IP = request.connection.remoteAddress; } else { var IP = request.headers['x-forwarded-for']; } console.log('turnauthserver : Requête reçue de : ' + IP); response.statusCode = 200; response.setHeader('Content-Type', 'application/json'); response.write(data); response.end(); } http.createServer(onRequest).listen(port, listenip); console.log(`turnauthserver running at http://${listenip}:${port}/`);