package main

import (
	"github.com/0xrawsec/golang-utils/datastructs"
)

var (
	whitelistedExts = datastructs.NewInitSyncedSet(
		".acl",
		".acm",
		".adml",
		".admx",
		".am",
		".amd64",
		".amx",
		".ani",
		".apl",
		".ascx",
		".asp",
		".aspx",
		".aux",
		".avi",
		".ax",
		".bat",
		".bcf",
		".bcm",
		".bin",
		".blf",
		".bmp",
		".btr",
		".bud",
		".cab",
		".cache",
		".camp",
		".cap",
		".cat",
		".cdmp",
		".cfg",
		".chk",
		".chm",
		".chr",
		".chs",
		".cht",
		".clb",
		".cmb",
		".cmd",
		".cmf",
		".com",
		".cov",
		".cpa",
		".cpl",
		".cpx",
		".crt",
		".cs",
		".csd",
		".css",
		".csv",
		".cty",
		".cur",
		".cw",
		".dat",
		".data",
		".db",
		".dcf",
		".dic",
		".dir",
		".dll",
		".dlm",
		".dls",
		".dnl",
		".drv",
		".ds",
		".dtd",
		".dub",
		".dun",
		".dvd",
		".dxt",
		".ebd",
		".ecf",
		".edb",
		".efi",
		".emf",
		".etl",
		".ev1",
		".ev2",
		".ev3",
		".evm",
		".evtx",
		".exe",
		".exp",
		".fe",
		".fon",
		".frm",
		".fx",
		".fxh",
		".gdl",
		".gif",
		".gmmp",
		".gpd",
		".grl",
		".grm",
		".gz",
		".h1c",
		".h1k",
		".h1s",
		".h1t",
		".hex",
		".hit",
		".hkf",
		".hlp",
		".hpi",
		".htm",
		".html",
		".hxx",
		".icc",
		".icm",
		".ico",
		".idx",
		".iec",
		".iem",
		".imd",
		".ime",
		".inc",
		".inf",
		".ini",
		".ins",
		".ird",
		".isp",
		".jnt",
		".jpg",
		".jpn",
		".jrs",
		".js",
		".json",
		".jtp",
		".kor",
		".lex",
		".lng",
		".lnk",
		".log",
		".log1",
		".log2",
		".lts",
		".lxa",
		".man",
		".map",
		".mfl",
		".mib",
		".mid",
		".mllr",
		".mni",
		".mof",
		".mp3",
		".mp4",
		".mpg",
		".msc",
		".msi",
		".msp",
		".msu",
		".mui",
		".mum",
		".mzz",
		".ngr",
		".nlp",
		".nls",
		".nlt",
		".ntf",
		".obe",
		".ocx",
		".olb",
		".old",
		".phn",
		".pnf",
		".png",
		".ppd",
		".prm",
		".props",
		".prx",
		".ps1",
		".psc1",
		".psd",
		".psd1",
		".psm1",
		".ptxml",
		".que",
		".rat",
		".reg",
		".resx",
		".rll",
		".rom",
		".rpo",
		".rs",
		".rsp",
		".rtf",
		".s3",
		".sam",
		".scp",
		".scr",
		".sdb",
		".sdi",
		".sep",
		".ses",
		".sh",
		".shp",
		".smp",
		".sql",
		".stl",
		".stp",
		".sys",
		".t4",
		".tasks",
		".tbl",
		".tha",
		".theme",
		".tif",
		".tlb",
		".tme",
		".tmp",
		".toc",
		".tsp",
		".ttc",
		".ttf",
		".tts",
		".txt",
		".uce",
		".udt",
		".uni",
		".unt",
		".url",
		".vbs",
		".vdf",
		".vp",
		".vrg",
		".wav",
		".wdf",
		".wih",
		".wim",
		".wma",
		".wmf",
		".wmv",
		".wmz",
		".wsc",
		".wsf",
		".wtv",
		".wwd",
		".x86",
		".xbap",
		".xex",
		".xml",
		".xsd",
		".xsl",
		".xst")
)

func isWhitelistedExt(ext string) bool {
	return whitelistedExts.Contains(ext)
}
