mirror of
https://github.com/benbusby/whoogle-search
synced 2024-11-16 12:13:14 +00:00
dcb80ac250
Introduces a new content security policy header for responses to all requests to reduce the possibility of ip leaks to outside connections. By default blocks all inline scripts, and only allows content loaded from Whoogle. Refactors a few small inline scripting cases in the project to their own individual scripts.
61 lines
2.0 KiB
JavaScript
61 lines
2.0 KiB
JavaScript
const checkForTracking = () => {
|
|
const mainDiv = document.getElementById("main");
|
|
const query = document.getElementById("search-bar").value.replace(/\s+/g, '');
|
|
|
|
// Note: regex functions for checking for tracking queries were derived
|
|
// from here -- https://stackoverflow.com/questions/619977
|
|
const matchTracking = {
|
|
"ups": {
|
|
"link": `https://www.ups.com/track?tracknum=${query}`,
|
|
"expr": [
|
|
/\b(1Z ?[0-9A-Z]{3} ?[0-9A-Z]{3} ?[0-9A-Z]{2} ?[0-9A-Z]{4} ?[0-9A-Z]{3} ?[0-9A-Z]|[\dT]\d\d\d ?\d\d\d\d ?\d\d\d)\b/
|
|
]
|
|
},
|
|
"usps": {
|
|
"link": `https://tools.usps.com/go/TrackConfirmAction?tLabels=${query}`,
|
|
"expr": [
|
|
/(\b\d{30}\b)|(\b91\d+\b)|(\b\d{20}\b)/,
|
|
/^E\D{1}\d{9}\D{2}$|^9\d{15,21}$/,
|
|
/^91[0-9]+$/,
|
|
/^[A-Za-z]{2}[0-9]+US$/
|
|
]
|
|
},
|
|
"fedex": {
|
|
"link": `https://www.fedex.com/apps/fedextrack/?tracknumbers=${query}`,
|
|
"expr": [
|
|
/(\b96\d{20}\b)|(\b\d{15}\b)|(\b\d{12}\b)/,
|
|
/\b((98\d\d\d\d\d?\d\d\d\d|98\d\d) ?\d\d\d\d ?\d\d\d\d( ?\d\d\d)?)\b/,
|
|
/^[0-9]{15}$/
|
|
]
|
|
}
|
|
};
|
|
|
|
// Creates a link to a UPS/USPS/FedEx tracking page
|
|
const createTrackingLink = href => {
|
|
let link = document.createElement("a");
|
|
link.className = "tracking-link";
|
|
link.innerHTML = "View Tracking Info";
|
|
link.href = href;
|
|
mainDiv.prepend(link);
|
|
};
|
|
|
|
// Compares the query against a set of regex patterns
|
|
// for tracking numbers
|
|
const compareQuery = provider => {
|
|
provider.expr.some(regex => {
|
|
if (query.match(regex)) {
|
|
createTrackingLink(provider.link);
|
|
return true;
|
|
}
|
|
});
|
|
};
|
|
|
|
for (const key of Object.keys(matchTracking)) {
|
|
compareQuery(matchTracking[key]);
|
|
}
|
|
};
|
|
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
checkForTracking();
|
|
});
|