handle webtvism:

allow get/post variables to be the same name multiple times
rather than overwrite, the server will now change the variable from a string to an array.
This commit is contained in:
zefie
2022-09-08 00:28:43 -04:00
parent cebbc07948
commit e2e33f931d

View File

@@ -348,10 +348,18 @@ async function processURL(socket, request_headers) {
var qraw_split = qraw[i].split("="); var qraw_split = qraw[i].split("=");
if (qraw_split.length == 2) { if (qraw_split.length == 2) {
var k = qraw_split[0]; var k = qraw_split[0];
if (request_headers.query[k]) {
if (typeof request_headers.query[k] === 'string') {
var keyarray = [request_headers.query[k]];
request_headers.query[k] = keyarray;
}
request_headers.query[k].push(unescape(qraw[i].split("=")[1].replace(/\+/g, "%20")));
} else {
request_headers.query[k] = unescape(qraw[i].split("=")[1].replace(/\+/g, "%20")); request_headers.query[k] = unescape(qraw[i].split("=")[1].replace(/\+/g, "%20"));
} }
} }
} }
}
} else { } else {
shortURL = unescape(request_headers.request_url); shortURL = unescape(request_headers.request_url);
} }
@@ -372,22 +380,40 @@ async function processURL(socket, request_headers) {
if (qraw_split.length == 2) { if (qraw_split.length == 2) {
var k = qraw_split[0]; var k = qraw_split[0];
var data = unescape(qraw[i].split("=")[1].replace(/\+/g, "%20")); var data = unescape(qraw[i].split("=")[1].replace(/\+/g, "%20"));
if (request_headers.query[k]) {
if (typeof request_headers.query[k] === 'string') {
var keyarray = [request_headers.query[k]];
request_headers.query[k] = keyarray;
}
if (wtvshared.isASCII(data)) request_headers.query[k].push(data);
else request_headers.query[k].push(wtvshared.urlDecodeBytes(qraw[i].split("=")[1].replace(/\+/g, "%20")));
} else {
if (wtvshared.isASCII(data)) request_headers.query[k] = data; if (wtvshared.isASCII(data)) request_headers.query[k] = data;
else request_headers.query[k] = wtvshared.urlDecodeBytes(qraw[i].split("=")[1].replace(/\+/g, "%20")); else request_headers.query[k] = wtvshared.urlDecodeBytes(qraw[i].split("=")[1].replace(/\+/g, "%20"));
} }
} }
} }
}
} else { } else {
var qraw_split = post_data_string.split("="); var qraw_split = post_data_string.split("=");
if (qraw_split.length == 2) { if (qraw_split.length == 2) {
var k = qraw_split[0]; var k = qraw_split[0];
var data = unescape(qraw_split[1].replace(/\+/g, "%20")); var data = unescape(qraw_split[1].replace(/\+/g, "%20"));
if (request_headers.query[k]) {
if (typeof request_headers.query[k] === 'string') {
var keyarray = [request_headers.query[k]];
request_headers.query[k] = keyarray;
}
if (wtvshared.isASCII(data)) request_headers.query[k].push(data);
else request_headers.query[k].push(wtvshared.urlDecodeBytes(qraw_split[1].replace(/\+/g, "%20")));
} else {
if (wtvshared.isASCII(data)) request_headers.query[k] = data; if (wtvshared.isASCII(data)) request_headers.query[k] = data;
else request_headers.query[k] = wtvshared.urlDecodeBytes(qraw_split[1].replace(/\+/g, "%20")); else request_headers.query[k] = wtvshared.urlDecodeBytes(qraw_split[1].replace(/\+/g, "%20"));
} }
} }
} }
} }
}
} catch (e) { } catch (e) {
console.log("error:",e) console.log("error:",e)
} }