// JavaScript source code
//July 2018 Update
// Consolidated FQDNs of URLS which are reachable via Microsoft peering over ExpressRoute. All other traffic sent to a proxy in this example.
//Every Effort is made to ensure 100% accuracy but this PAC should be used as an example and cross-checked with your traffic flow needs and the Office 365 URL & IP page.
//Intended only for Worldwide Office 365 instances, which the vast majority of customers will be using
//PAC presumes all Office 365 BGP communities/route filters are allowed.
function FindProxyForURL(url, host)
{
// Define proxy server
var proxyserver = "PROXY 10.10.10.10:8080";
// Make host lowercase
var lhost = host.toLowerCase();
host = lhost;
//SUB-FQDNs of ExpressRoutable wildcards which need to be explicitly sent to the proxy at the top of the PAC because they arent ER routable
if ((shExpMatch(host, "xsi.outlook.com"))
|| (shExpMatch(host, "r3.res.outlook.com"))
|| (shExpMatch(host, "quicktips.skypeforbusiness.com"))
|| (shExpMatch(host, "*.um.outlook.com")))
{
return proxyserver;
}
//EXPRESS ROUTE DIRECT
else if ((isPlainHostName(host))
|| (shExpMatch(host, "*.aria.microsoft.com"))
|| (shExpMatch(host, "*.dc.trouter.io"))
|| (shExpMatch(host, "*.lync.com"))
|| (shExpMatch(host, "*.manage.office.com"))
|| (shExpMatch(host, "*.outlook.com"))
|| (shExpMatch(host, "*.outlook.office.com"))
|| (shExpMatch(host, "*.portal.cloudappsecurity.com"))
|| (shExpMatch(host, "*.protection.office.com"))
|| (shExpMatch(host, "*.protection.outlook.com"))
|| (shExpMatch(host, "*.sharepoint.com"))
|| (shExpMatch(host, "*.skype.com"))
|| (shExpMatch(host, "*.skypeforbusiness.com"))
|| (shExpMatch(host, "*.svc.ms"))
|| (shExpMatch(host, "*.teams.microsoft.com"))
|| (shExpMatch(host, "*broadcast.officeapps.live.com"))
|| (shExpMatch(host, "*excel.officeapps.live.com"))
|| (shExpMatch(host, "*onenote.officeapps.live.com"))
|| (shExpMatch(host, "*powerpoint.officeapps.live.com"))
|| (shExpMatch(host, "*view.officeapps.live.com"))
|| (shExpMatch(host, "*visio.officeapps.live.com"))
|| (shExpMatch(host, "*word-edit.officeapps.live.com"))
|| (shExpMatch(host, "*word-view.officeapps.live.com"))
|| (shExpMatch(host, "account.office.net"))
|| (shExpMatch(host, "adminwebservice.microsoftonline.com"))
|| (shExpMatch(host, "agent.office.net"))
|| (shExpMatch(host, "apc.delve.office.com"))
|| (shExpMatch(host, "api.login.microsoftonline.com"))
|| (shExpMatch(host, "api.passwordreset.microsoftonline.com"))
|| (shExpMatch(host, "aus.delve.office.com"))
|| (shExpMatch(host, "autologon.microsoftazuread-sso.com"))
|| (shExpMatch(host, "becws.microsoftonline.com"))
|| (shExpMatch(host, "browser.pipe.aria.microsoft.com"))
|| (shExpMatch(host, "can.delve.office.com"))
|| (shExpMatch(host, "ccs.login.microsoftonline.com"))
|| (shExpMatch(host, "ccs-sdf.login.microsoftonline.com"))
|| (shExpMatch(host, "clientconfig.microsoftonline-p.net"))
|| (shExpMatch(host, "companymanager.microsoftonline.com"))
|| (shExpMatch(host, "delve.office.com"))
|| (shExpMatch(host, "device.login.microsoftonline.com"))
|| (shExpMatch(host, "domains.live.com"))
|| (shExpMatch(host, "eur.delve.office.com"))
|| (shExpMatch(host, "gbr.delve.office.com"))
|| (shExpMatch(host, "hip.microsoftonline-p.net"))
|| (shExpMatch(host, "hipservice.microsoftonline.com"))
|| (shExpMatch(host, "home.office.com"))
|| (shExpMatch(host, "ind.delve.office.com"))
|| (shExpMatch(host, "jpn.delve.office.com"))
|| (shExpMatch(host, "kor.delve.office.com"))
|| (shExpMatch(host, "lam.delve.office.com"))
|| (shExpMatch(host, "login.microsoft.com"))
|| (shExpMatch(host, "login.microsoftonline.com"))
|| (shExpMatch(host, "login.microsoftonline-p.net"))
|| (shExpMatch(host, "login.windows.net"))
|| (shExpMatch(host, "logincert.microsoftonline.com"))
|| (shExpMatch(host, "loginex.microsoftonline.com"))
|| (shExpMatch(host, "login-us.microsoftonline.com"))
|| (shExpMatch(host, "manage.office.com"))
|| (shExpMatch(host, "mobile.pipe.aria.microsoft.com"))
|| (shExpMatch(host, "nam.delve.office.com"))
|| (shExpMatch(host, "nexus.microsoftonline-p.net"))
|| (shExpMatch(host, "office.live.com"))
|| (shExpMatch(host, "officeapps.live.com"))
|| (shExpMatch(host, "outlook.office365.com"))
|| (shExpMatch(host, "passwordreset.microsoftonline.com"))
|| (shExpMatch(host, "portal.office.com"))
|| (shExpMatch(host, "protection.office.com"))
|| (shExpMatch(host, "provisioningapi.microsoftonline.com"))
|| (shExpMatch(host, "scsinstrument-ss-us.trafficmanager.net"))
|| (shExpMatch(host, "scsquery-ss-asia.trafficmanager.net"))
|| (shExpMatch(host, "scsquery-ss-eu.trafficmanager.net"))
|| (shExpMatch(host, "scsquery-ss-us.trafficmanager.net"))
|| (shExpMatch(host, "signup.microsoft.com"))
|| (shExpMatch(host, "smtp.office365.com"))
|| (shExpMatch(host, "stamp2.login.microsoftonline.com"))
|| (shExpMatch(host, "suite.office.net"))
|| (shExpMatch(host, "teams.microsoft.com"))
|| (shExpMatch(host, "webshell.suite.office.com"))
|| (shExpMatch(host, "www.office.com")))
{
return "DIRECT";
}
//Catchall for all other traffic to proxy
else
{
return proxyserver;
}
}