feat: parse barracuda & sophos link protection
This commit is contained in:
		
							parent
							
								
									78ad0c74c2
								
							
						
					
					
						commit
						8f95fd3182
					
				| 
						 | 
				
			
			@ -22,6 +22,37 @@ const caretPath = (pathname) => {
 | 
			
		|||
  return `${path}?${search}`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const safeLinks = [
 | 
			
		||||
  'safelinks\\.protection\\.outlook\\.com',
 | 
			
		||||
  '\\.protection\\.sophos\\.com',
 | 
			
		||||
  'linkprotect\\.cudasvc\\.com'
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const deSafelink = (urlStr) => {
 | 
			
		||||
  let url = new URL(urlStr)
 | 
			
		||||
 | 
			
		||||
  // O365 Safelinks
 | 
			
		||||
  if (url.hostname.endsWith('safelinks.protection.outlook.com')) {
 | 
			
		||||
    url = new URL(url.searchParams.get('url'))
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Sophos
 | 
			
		||||
  if (url.hostname.endsWith('.protection.sophos.com')) {
 | 
			
		||||
    url = new URL(`http://${url.searchParams.get('d')}`)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Barracuda
 | 
			
		||||
  if (url.hostname.endsWith('linkprotect.cudasvc.com')) {
 | 
			
		||||
    url = new URL(url.searchParams.get('a'))
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (url.hostname.match(new RegExp(safeLinks.join('|')))) {
 | 
			
		||||
    return deSafelink(url.href)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return url.href
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
for await (const line of createInterface({ input: process.stdin, terminal: false })) {
 | 
			
		||||
  // parse hostname from url
 | 
			
		||||
  if (process.argv[2] === 'hostname') {
 | 
			
		||||
| 
						 | 
				
			
			@ -47,13 +78,7 @@ for await (const line of createInterface({ input: process.stdin, terminal: false
 | 
			
		|||
    if (line.split('/')[2].includes('??')) continue
 | 
			
		||||
 | 
			
		||||
    if (URL.canParse(line)) {
 | 
			
		||||
      let url = new URL(cleanHost(line))
 | 
			
		||||
 | 
			
		||||
      // Decode O365 Safelinks
 | 
			
		||||
      // https://support.microsoft.com/en-us/office/advanced-outlook-com-security-for-microsoft-365-subscribers-882d2243-eab9-4545-a58a-b36fee4a46e2
 | 
			
		||||
      if (url.hostname.endsWith('safelinks.protection.outlook.com')) {
 | 
			
		||||
        url = new URL(url.searchParams.get('url'))
 | 
			
		||||
      }
 | 
			
		||||
      const url = new URL(deSafelink(cleanHost(line)))
 | 
			
		||||
 | 
			
		||||
      url.host = cleanHost(url.host)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue