From 57c9a264eadef94d7c3a45992548087ff9037618 Mon Sep 17 00:00:00 2001 From: Sheng Date: Sat, 10 Aug 2019 14:41:15 +0800 Subject: [PATCH] Password via url requires to be encoded in base64 --- webssh/static/js/main.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/webssh/static/js/main.js b/webssh/static/js/main.js index 9549ec9..4d4973e 100644 --- a/webssh/static/js/main.js +++ b/webssh/static/js/main.js @@ -103,6 +103,15 @@ jQuery(function($){ } + function decode_password(encoded) { + try { + return window.atob(encoded); + } catch (e) { + console.error(e); + } + } + + function parse_url_data(string, form_map, opts_map) { var i, pair, key, val, arr = string.split('&'); @@ -112,6 +121,10 @@ jQuery(function($){ key = pair[0].trim().toLowerCase(); val = pair[1] && pair[1].trim(); + if (key === 'password' && val) { + val = decode_password(val); + } + if (form_map[key] === '') { form_map[key] = val; } else if (opts_map[key] === '') { @@ -762,18 +775,24 @@ jQuery(function($){ restore_items(fields); - initialize_map(fields.concat(['password']), url_form_data); + initialize_map(fields.concat(['password', 'totp']), url_form_data); initialize_map(['bgcolor', 'title', 'encoding', 'command'], url_opts_data); parse_url_data( decode_uri(window.location.search.substring(1)) + '&' + decode_uri(window.location.hash.substring(1)), url_form_data, url_opts_data ); - console.log(url_form_data); - console.log(url_opts_data); + // console.log(url_form_data); + // console.log(url_opts_data); - if (url_form_data.hostname && url_form_data.username) { - connect(url_form_data); + if (url_form_data.password === undefined) { + log_status('Password via url must be encoded in base64.'); + } else { + if (url_form_data.hostname && url_form_data.username) { + connect(url_form_data); + } else { + log_status('Values of hostname and username are required.'); + } } });