Updated parse_url_data function

pull/83/head
Sheng 2019-08-22 18:39:19 +08:00
parent e00701720a
commit 3a27cedf9d
1 changed files with 17 additions and 20 deletions

View File

@ -52,6 +52,8 @@ jQuery(function($){
messages = {1: 'This client is connecting ...', 2: 'This client is already connnected.'}, messages = {1: 'This client is connecting ...', 2: 'This client is already connnected.'},
key_max_size = 16384, key_max_size = 16384,
fields = ['hostname', 'port', 'username'], fields = ['hostname', 'port', 'username'],
form_keys = fields.concat(['password', 'totp']),
opts_keys = ['bgcolor', 'title', 'encoding', 'command'],
url_form_data = {}, url_form_data = {},
url_opts_data = {}, url_opts_data = {},
event_origin, event_origin,
@ -88,12 +90,8 @@ jQuery(function($){
} }
function initialize_map(keys, map) { function get_object_length(object) {
var i; return Object.keys(object).length;
for (i = 0; i < keys.length; i++) {
map[keys[i]] = '';
}
} }
@ -113,10 +111,11 @@ jQuery(function($){
} catch (e) { } catch (e) {
console.error(e); console.error(e);
} }
return null;
} }
function parse_url_data(string, form_map, opts_map) { function parse_url_data(string, form_keys, opts_keys, form_map, opts_map) {
var i, pair, key, val, var i, pair, key, val,
arr = string.split('&'); arr = string.split('&');
@ -125,16 +124,16 @@ jQuery(function($){
key = pair[0].trim().toLowerCase(); key = pair[0].trim().toLowerCase();
val = pair[1] && pair[1].trim(); val = pair[1] && pair[1].trim();
if (key === 'password' && val) { if (form_keys.indexOf(key) >= 0) {
val = decode_password(val);
}
if (form_map[key] === '') {
form_map[key] = val; form_map[key] = val;
} else if (opts_map[key] === '') { } else if (opts_keys.indexOf(key) >=0) {
opts_map[key] = val; opts_map[key] = val;
} }
} }
if (form_map.password) {
form_map.password = decode_password(form_map.password);
}
} }
@ -788,23 +787,21 @@ jQuery(function($){
); );
} }
restore_items(fields);
initialize_map(fields.concat(['password', 'totp']), url_form_data);
initialize_map(['bgcolor', 'title', 'encoding', 'command'], url_opts_data);
parse_url_data( parse_url_data(
decode_uri(window.location.search.substring(1)) + '&' + decode_uri(window.location.hash.substring(1)), decode_uri(window.location.search.substring(1)) + '&' + decode_uri(window.location.hash.substring(1)),
url_form_data, url_opts_data form_keys, opts_keys, url_form_data, url_opts_data
); );
// console.log(url_form_data); // console.log(url_form_data);
// console.log(url_opts_data); // console.log(url_opts_data);
if (url_form_data.password === undefined) { if (url_form_data.password === null) {
log_status('Password via url must be encoded in base64.'); log_status('Password via url must be encoded in base64.');
} else { } else {
if (url_form_data.hostname || url_form_data.port || url_form_data.username || url_form_data.password || url_form_data.totp) { if (get_object_length(url_form_data)) {
connect(url_form_data); connect(url_form_data);
} else {
restore_items(fields);
} }
} }