From c3453db5639acb191f24528842c364d8ef8d3924 Mon Sep 17 00:00:00 2001 From: Sami Spets <savasp@utu.fi> Date: Thu, 5 Dec 2019 10:06:47 +0200 Subject: [PATCH] Fixed the convertUUID function. Added comments. --- web-service/server/package-lock.json | 5 + web-service/server/package.json | 1 + web-service/server/src/index.js | 13 +- web-service/server/src/peer.js | 50 +---- web-service/server/src/public/js/bundle.js | 234 ++++++++++----------- web-service/server/src/public/js/index.js | 18 +- 6 files changed, 147 insertions(+), 174 deletions(-) diff --git a/web-service/server/package-lock.json b/web-service/server/package-lock.json index 9ae07c2c8..88a977e6f 100644 --- a/web-service/server/package-lock.json +++ b/web-service/server/package-lock.json @@ -3247,6 +3247,11 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/web-service/server/package.json b/web-service/server/package.json index 6114443c5..3cc858fcd 100644 --- a/web-service/server/package.json +++ b/web-service/server/package.json @@ -22,6 +22,7 @@ "msgpack5": "^4.2.1", "passport": "^0.4.0", "passport-google-oauth20": "^2.0.0", + "uuid": "^3.3.3", "watchify": "^3.11.1" } } diff --git a/web-service/server/src/index.js b/web-service/server/src/index.js index 8f8b1c9d8..29c842b6a 100644 --- a/web-service/server/src/index.js +++ b/web-service/server/src/index.js @@ -158,6 +158,9 @@ app.get('/', (req, res) => { res.end(); }); +/** + * This is the route that actually validates the users JWT token. + */ app.post('/auth/validation', async (req, res) => { const token = req.headers.authorization.split(" ") const decoded = jwt.verify(token[1], keys.jwt.secret) @@ -177,12 +180,11 @@ app.post('/auth/validation', async (req, res) => { }) - - app.get('/streams', (req, res) => { res.json(Object.keys(uri_data)); }); + /** * A list that has Object.keys(uri_data) values and also the image that is * binded to that @@ -197,6 +199,7 @@ app.get('/stream/rgb', (req, res) => { res.end(); }); + app.get('/stream/depth', (req, res) => { let uri = req.query.uri; if (uri_data.hasOwnProperty(uri)) { @@ -271,6 +274,7 @@ app.get('/stream', (req, res) => { res.end(); }) + /* * Route for Google authentication API page */ @@ -278,6 +282,7 @@ app.get('/google', passport.authenticate('google', { scope: ['profile'] })) + /** * Google authentication API callback route. * Sets the JWT to clients browser and redirects the user back to front page. @@ -310,7 +315,6 @@ app.get('/auth/google/redirect', passport.authenticate('google'), async (req, re } } - await user.save() const token = jwt.sign(req.user.id, keys.jwt.secret); const htmlWithEmbeddedJWT = ` @@ -354,11 +358,10 @@ function broadcastExcept(exc, name, ...args) { app.ws('/', (ws, req) => { console.log("New web socket request"); - //console.log('WEBSOCKET',ws) + //console.log('WEBSOCKET', ws) let p = new Peer(ws); peer_data.push(p); - // console.log(peer_data) p.on("connect", (peer) => { console.log("Node connected...", peer.string_id); diff --git a/web-service/server/src/peer.js b/web-service/server/src/peer.js index 957bdd352..161ae6533 100644 --- a/web-service/server/src/peer.js +++ b/web-service/server/src/peer.js @@ -236,8 +236,9 @@ Peer.prototype.send = function(name, ...args) { } } -//This was a problem and needed to change it so that -//this.sock.close() can only be called by server (this.sock.on !== undefined) +/** + * Closes the socket + */ Peer.prototype.close = function() { if(this.sock.on !== undefined){ this.sock.close(); @@ -275,45 +276,14 @@ Peer.prototype.on = function(evt, f) { * Returns a string of the UUID */ Peer.prototype.convertUUID = function() { - const uuid = cpp_my_uuid - console.log("MY_UUID", uuid) - const digits = "0123456789abcdef"; - let rc = ""; - let j=0; - for (let i=0; i<4; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - console.log(digits[digits.indexOf(uuid[i])]); - rc[j] = digits[digits.indexOf(uuid[i+1])]; - console.log(digits[digits.indexOf(uuid[i+1])]); - j+=2; - } - rc[j++] = '-'; - for (let i=4 ; i<6; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=6 ; i<8; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=8 ; i<10; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=10 ; i<16; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - console.log("RC", rc) - return rc; + let returnVal = ""; + + //If the char is "-" add it, else add the letter/digit represented in the variable digits + for(let i=0; i<cpp_my_uuid.length; i++){ + returnVal += (cpp_my_uuid[i] == "-") ? "-" : digits[digits.indexOf(cpp_my_uuid[i])] + } + return returnVal; } module.exports = Peer; diff --git a/web-service/server/src/public/js/bundle.js b/web-service/server/src/public/js/bundle.js index 1bc7a6dde..901db4035 100644 --- a/web-service/server/src/public/js/bundle.js +++ b/web-service/server/src/public/js/bundle.js @@ -383,7 +383,7 @@ BufferList.prototype._match = function(offset, search) { module.exports = BufferList -},{"readable-stream":19,"safe-buffer":20,"util":44}],2:[function(require,module,exports){ +},{"readable-stream":18,"safe-buffer":19,"util":44}],2:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -493,8 +493,8 @@ function objectToString(o) { return Object.prototype.toString.call(o); } -}).call(this,{"isBuffer":require("../../../../../../../../../usr/local/lib/node_modules/browserify/node_modules/is-buffer/index.js")}) -},{"../../../../../../../../../usr/local/lib/node_modules/browserify/node_modules/is-buffer/index.js":38}],3:[function(require,module,exports){ +}).call(this,{"isBuffer":require("../../../../../../../../../../../usr/lib/node_modules/watchify/node_modules/is-buffer/index.js")}) +},{"../../../../../../../../../../../usr/lib/node_modules/watchify/node_modules/is-buffer/index.js":38}],3:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -613,7 +613,7 @@ function msgpack (options) { module.exports = msgpack -},{"./lib/decoder":6,"./lib/encoder":7,"./lib/streams":8,"assert":29,"bl":1,"safe-buffer":20}],6:[function(require,module,exports){ +},{"./lib/decoder":6,"./lib/encoder":7,"./lib/streams":8,"assert":29,"bl":1,"safe-buffer":19}],6:[function(require,module,exports){ 'use strict' var bl = require('bl') @@ -1396,7 +1396,7 @@ function encodeFloat (obj, forceFloat64) { return buf } -},{"bl":1,"safe-buffer":20}],8:[function(require,module,exports){ +},{"bl":1,"safe-buffer":19}],8:[function(require,module,exports){ 'use strict' var Transform = require('readable-stream').Transform @@ -1488,7 +1488,7 @@ Decoder.prototype._transform = function (buf, enc, done) { module.exports.decoder = Decoder module.exports.encoder = Encoder -},{"bl":1,"inherits":3,"readable-stream":19}],9:[function(require,module,exports){ +},{"bl":1,"inherits":3,"readable-stream":18}],9:[function(require,module,exports){ (function (process){ 'use strict'; @@ -2739,7 +2739,7 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./_stream_duplex":10,"./internal/streams/BufferList":15,"./internal/streams/destroy":16,"./internal/streams/stream":17,"_process":40,"core-util-is":2,"events":36,"inherits":3,"isarray":4,"process-nextick-args":9,"safe-buffer":20,"string_decoder/":18,"util":34}],13:[function(require,module,exports){ +},{"./_stream_duplex":10,"./internal/streams/BufferList":15,"./internal/streams/destroy":16,"./internal/streams/stream":17,"_process":40,"core-util-is":2,"events":36,"inherits":3,"isarray":4,"process-nextick-args":9,"safe-buffer":19,"string_decoder/":20,"util":34}],13:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -3644,7 +3644,7 @@ Writable.prototype._destroy = function (err, cb) { cb(err); }; }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) -},{"./_stream_duplex":10,"./internal/streams/destroy":16,"./internal/streams/stream":17,"_process":40,"core-util-is":2,"inherits":3,"process-nextick-args":9,"safe-buffer":20,"timers":41,"util-deprecate":21}],15:[function(require,module,exports){ +},{"./_stream_duplex":10,"./internal/streams/destroy":16,"./internal/streams/stream":17,"_process":40,"core-util-is":2,"inherits":3,"process-nextick-args":9,"safe-buffer":19,"timers":41,"util-deprecate":21}],15:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -3724,7 +3724,7 @@ if (util && util.inspect && util.inspect.custom) { return this.constructor.name + ' ' + obj; }; } -},{"safe-buffer":20,"util":34}],16:[function(require,module,exports){ +},{"safe-buffer":19,"util":34}],16:[function(require,module,exports){ 'use strict'; /*<replacement>*/ @@ -3803,6 +3803,79 @@ module.exports = { module.exports = require('events').EventEmitter; },{"events":36}],18:[function(require,module,exports){ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); + +},{"./lib/_stream_duplex.js":10,"./lib/_stream_passthrough.js":11,"./lib/_stream_readable.js":12,"./lib/_stream_transform.js":13,"./lib/_stream_writable.js":14}],19:[function(require,module,exports){ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + +},{"buffer":35}],20:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -4099,80 +4172,7 @@ function simpleWrite(buf) { function simpleEnd(buf) { return buf && buf.length ? this.write(buf) : ''; } -},{"safe-buffer":20}],19:[function(require,module,exports){ -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -},{"./lib/_stream_duplex.js":10,"./lib/_stream_passthrough.js":11,"./lib/_stream_readable.js":12,"./lib/_stream_transform.js":13,"./lib/_stream_writable.js":14}],20:[function(require,module,exports){ -/* eslint-disable node/no-deprecated-api */ -var buffer = require('buffer') -var Buffer = buffer.Buffer - -// alternative to using Object.keys for old browsers -function copyProps (src, dst) { - for (var key in src) { - dst[key] = src[key] - } -} -if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { - module.exports = buffer -} else { - // Copy properties from require('buffer') - copyProps(buffer, exports) - exports.Buffer = SafeBuffer -} - -function SafeBuffer (arg, encodingOrOffset, length) { - return Buffer(arg, encodingOrOffset, length) -} - -// Copy static methods from Buffer -copyProps(Buffer, SafeBuffer) - -SafeBuffer.from = function (arg, encodingOrOffset, length) { - if (typeof arg === 'number') { - throw new TypeError('Argument must not be a number') - } - return Buffer(arg, encodingOrOffset, length) -} - -SafeBuffer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - var buf = Buffer(size) - if (fill !== undefined) { - if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - } else { - buf.fill(0) - } - return buf -} - -SafeBuffer.allocUnsafe = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return Buffer(size) -} - -SafeBuffer.allocUnsafeSlow = function (size) { - if (typeof size !== 'number') { - throw new TypeError('Argument must be a number') - } - return buffer.SlowBuffer(size) -} - -},{"buffer":35}],21:[function(require,module,exports){ +},{"safe-buffer":19}],21:[function(require,module,exports){ (function (global){ /** @@ -4576,8 +4576,9 @@ Peer.prototype.send = function(name, ...args) { } } -//This was a problem and needed to change it so that -//this.sock.close() can only be called by server (this.sock.on !== undefined) +/** + * Closes the socket + */ Peer.prototype.close = function() { if(this.sock.on !== undefined){ this.sock.close(); @@ -4615,45 +4616,14 @@ Peer.prototype.on = function(evt, f) { * Returns a string of the UUID */ Peer.prototype.convertUUID = function() { - const uuid = cpp_my_uuid - console.log("MY_UUID", uuid) - const digits = "0123456789abcdef"; - let rc = ""; - let j=0; - for (let i=0; i<4; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - console.log(digits[digits.indexOf(uuid[i])]); - rc[j] = digits[digits.indexOf(uuid[i+1])]; - console.log(digits[digits.indexOf(uuid[i+1])]); - j+=2; - } - rc[j++] = '-'; - for (let i=4 ; i<6; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=6 ; i<8; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=8 ; i<10; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - rc[j++] = '-'; - for (let i=10 ; i<16; ++i) { - rc[j+1] = digits[digits.indexOf(uuid[i])]; - rc[j] = digits[digits.indexOf(uuid[i])]; - j+=2; - } - console.log("RC", rc) - return rc; + let returnVal = ""; + + //If the char is "-" add it, else add the letter/digit represented in the variable digits + for(let i=0; i<cpp_my_uuid.length; i++){ + returnVal += (cpp_my_uuid[i] == "-") ? "-" : digits[digits.indexOf(cpp_my_uuid[i])] + } + return returnVal; } module.exports = Peer; @@ -4668,6 +4638,9 @@ let peer; let decoder; let player; +/** + * Validates that the user is logged in + */ checkIfLoggedIn = async () => { // const token = window.localStorage.getItem('token') // console.log(token) @@ -4711,6 +4684,7 @@ getAvailableStreams = async () => { } } + createVideoPlayer = () => { const containerDiv = document.getElementById('container') containerDiv.innerHTML = `<h1>Stream ${current_data.uri} is live right here!</h1><br><button onclick="renderThumbnails(); closeStream()">Go back</button><br> @@ -4786,7 +4760,9 @@ renderLogin = () => { } - +/** + * Method to create a single thumbnail + */ createCard = (url, viewers) => { return `<div class='ftlab-card-component' > <img src='${url}' class="thumbnail-img" alt="Hups" width="250px"></img> @@ -4829,13 +4805,16 @@ configs = () => { renderConfigOptions(); } + renderConfigOptions = () => { const input = `<p>input1</p><br>ftl://utu.fi#<input type="text">` const doc = document.getElementsByClassName('ftlab-configurations')[0]; doc.innerHTML = input; } - +/** + * + */ loadConfigs = async (str) => { const configURI = encodeURIComponent(`ftl://utu.fi#reconstruction_snap8${str}`); const uri = encodeURIComponent(current_data.uri) @@ -4846,8 +4825,11 @@ loadConfigs = async (str) => { console.log(content) } -current_data.configData = '{"peers": 1}'; +// current_data.configData = '{"peers": 1}'; +/** + * Method to send configurations to backend + */ saveConfigs = async () => { let {uri, configURI, configData} = current_data const rawResp = await fetch('http://localhost:8080/stream/config', { diff --git a/web-service/server/src/public/js/index.js b/web-service/server/src/public/js/index.js index 5392d6ea5..e99d5d412 100644 --- a/web-service/server/src/public/js/index.js +++ b/web-service/server/src/public/js/index.js @@ -6,6 +6,9 @@ let peer; let decoder; let player; +/** + * Validates that the user is logged in + */ checkIfLoggedIn = async () => { // const token = window.localStorage.getItem('token') // console.log(token) @@ -49,6 +52,7 @@ getAvailableStreams = async () => { } } + createVideoPlayer = () => { const containerDiv = document.getElementById('container') containerDiv.innerHTML = `<h1>Stream ${current_data.uri} is live right here!</h1><br><button onclick="renderThumbnails(); closeStream()">Go back</button><br> @@ -124,7 +128,9 @@ renderLogin = () => { } - +/** + * Method to create a single thumbnail + */ createCard = (url, viewers) => { return `<div class='ftlab-card-component' > <img src='${url}' class="thumbnail-img" alt="Hups" width="250px"></img> @@ -167,13 +173,16 @@ configs = () => { renderConfigOptions(); } + renderConfigOptions = () => { const input = `<p>input1</p><br>ftl://utu.fi#<input type="text">` const doc = document.getElementsByClassName('ftlab-configurations')[0]; doc.innerHTML = input; } - +/** + * + */ loadConfigs = async (str) => { const configURI = encodeURIComponent(`ftl://utu.fi#reconstruction_snap8${str}`); const uri = encodeURIComponent(current_data.uri) @@ -184,8 +193,11 @@ loadConfigs = async (str) => { console.log(content) } -current_data.configData = '{"peers": 1}'; +// current_data.configData = '{"peers": 1}'; +/** + * Method to send configurations to backend + */ saveConfigs = async () => { let {uri, configURI, configData} = current_data const rawResp = await fetch('http://localhost:8080/stream/config', { -- GitLab