nody is a little CDN like script designed for low memory capable devices and read-only intranets
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
/** | |
* ___ ___ ___ ___ | |
* /\__\ /\ \ /\ \ |\__\ | |
* /::| | /::\ \ /::\ \ |:| | | |
* /:|:| | /:/\:\ \ /:/\:\ \ |:| | | |
* /:/|:| |__ /:/ \:\ \ /:/ \:\__\ |:|__|__ | |
* /:/ |:| /\__\ /:/__/ \:\__\ /:/__/ \:|__| /::::\__\ | |
* \/__|:|/:/ / \:\ \ /:/ / \:\ \ /:/ / /:/~~/~ | |
* |:/:/ / \:\ /:/ / \:\ /:/ / /:/ / | |
* |::/ / \:\/:/ / \:\/:/ / \/__/ | |
* /:/ / \::/ / \::/__/ | |
* \/__/ \/__/ ~~ | |
* | |
* | |
* essential Web by Andrea Giammarchi | |
* | |
* ________________________________________________________ | |
* | |
* nody is a little CDN like script designed for low memory | |
* capable devices and read-only intranets | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* https://gist.github.com/WebReflection/127f39afd25d9755f7a2 | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* nody | |
* nody ./foler | |
* IP=127.0.0.1 nody | |
* PORT=80 nody | |
* IP=192.168.1.252 PORT=80 nody ./folder | |
* | |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
* | |
* above ASCII based nody logo from: | |
* http://patorjk.com/software/taag/ | |
*/ | |
var | |
fs = require('fs'), // used to .readFile | |
path = require('path'), // used to .resolve paths | |
headers = {'Content-Type':''}, // recycled object, never GC | |
readCache = Object.create(null), // recycled object, never GC | |
IP = process.env.IP || '0.0.0.0', // main IP, use 127.0.0.1 for local only | |
PORT = process.env.PORT || 1337, // main PORT, use 80 if possible | |
BASE = path.resolve('' + path.normalize( // base folder used as web root | |
process.argv[2] || process.cwd() | |
)) | |
; | |
// if required | |
if (module.parent) { | |
// export main method | |
this.handleRequest = handleRequest; | |
// and a way to set a different BASE foler | |
this.withBase = function (newBase) { | |
BASE = path.resolve('' + newBase); | |
return this; | |
}; | |
} | |
// if directly launched | |
else { | |
// log info | |
console.log('[nody] http://' + IP + ':' + PORT + ' -> ' + BASE); | |
// and start the nody server | |
require('http').createServer(handleRequest).listen(PORT, IP); | |
} | |
// the logicless file serving handler | |
function handleRequest(req, res) { | |
var | |
url = req.url, | |
i = url.indexOf('?'), | |
// ignore any query string | |
pathname = i < 0 ? url : url.slice(0, i), | |
// will send content only if it's a GET | |
sendContent = req.method === 'GET' | |
; | |
if (pathname[pathname.length - 1] === '/') { | |
pathname += 'index.html'; | |
} | |
// TODO: if the request method is HEAD instead of GET | |
// it's a waste of time to retrieve the content | |
// fs.exists() should be used instead | |
// TODO: verify that file exists and instead of | |
// reading it, create a pipe that will notify | |
// a collection of clients instead of just one | |
readFile( | |
pathname = path.resolve(BASE + pathname), | |
function (err, data) { | |
if (err) { | |
headers['Content-Type'] = 'text/plain'; | |
res.writeHead(404, headers); | |
if (sendContent) { | |
res.end('Not Found\n'); | |
} | |
} else { | |
headers['Content-Type'] = EXTENSION2MIME[path.extname(pathname)]; | |
res.writeHead(200, headers); | |
if (sendContent) { | |
res.end(data); | |
} | |
} | |
} | |
); | |
} | |
// borrowed from http://webreflection.blogspot.com/2014/05/serving-static-files-twice-as-fast-in.html | |
function readFile(name, then) { | |
if (name in readCache) { | |
readCache[name].push(then); | |
} else { | |
readCache[name] = [then]; | |
fs.readFile(name, function readFile(err, data) { | |
var | |
list = readCache[name], | |
i = 0, | |
length = list.length | |
; | |
delete readCache[name]; | |
while (i < length) { | |
list[i++](err, data); | |
} | |
}); | |
} | |
} | |
// borrowed from http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types | |
const EXTENSION2MIME = { | |
".ez":"application/andrew-inset", | |
".aw":"application/applixware", | |
".atom":"application/atom+xml", | |
".atomcat":"application/atomcat+xml", | |
".atomsvc":"application/atomsvc+xml", | |
".ccxml":"application/ccxml+xml", | |
".cdmia":"application/cdmi-capability", | |
".cdmic":"application/cdmi-container", | |
".cdmid":"application/cdmi-domain", | |
".cdmio":"application/cdmi-object", | |
".cdmiq":"application/cdmi-queue", | |
".cu":"application/cu-seeme", | |
".davmount":"application/davmount+xml", | |
".dbk":"application/docbook+xml", | |
".dssc":"application/dssc+der", | |
".xdssc":"application/dssc+xml", | |
".ecma":"application/ecmascript", | |
".emma":"application/emma+xml", | |
".epub":"application/epub+zip", | |
".exi":"application/exi", | |
".pfr":"application/font-tdpfr", | |
".gml":"application/gml+xml", | |
".gpx":"application/gpx+xml", | |
".gxf":"application/gxf", | |
".stk":"application/hyperstudio", | |
".ink":"application/inkml+xml", | |
".inkml":"application/inkml+xml", | |
".ipfix":"application/ipfix", | |
".jar":"application/java-archive", | |
".ser":"application/java-serialized-object", | |
".class":"application/java-vm", | |
".js":"application/javascript", | |
".json":"application/json", | |
".jsonml":"application/jsonml+json", | |
".lostxml":"application/lost+xml", | |
".hqx":"application/mac-binhex40", | |
".cpt":"application/mac-compactpro", | |
".mads":"application/mads+xml", | |
".mrc":"application/marc", | |
".mrcx":"application/marcxml+xml", | |
".ma":"application/mathematica", | |
".nb":"application/mathematica", | |
".mb":"application/mathematica", | |
".mathml":"application/mathml+xml", | |
".mbox":"application/mbox", | |
".mscml":"application/mediaservercontrol+xml", | |
".metalink":"application/metalink+xml", | |
".meta4":"application/metalink4+xml", | |
".mets":"application/mets+xml", | |
".mods":"application/mods+xml", | |
".m21":"application/mp21", | |
".mp21":"application/mp21", | |
".mp4s":"application/mp4", | |
".doc":"application/msword", | |
".dot":"application/msword", | |
".mxf":"application/mxf", | |
".bin":"application/octet-stream", | |
".dms":"application/octet-stream", | |
".lrf":"application/octet-stream", | |
".mar":"application/octet-stream", | |
".so":"application/octet-stream", | |
".dist":"application/octet-stream", | |
".distz":"application/octet-stream", | |
".pkg":"application/octet-stream", | |
".bpk":"application/octet-stream", | |
".dump":"application/octet-stream", | |
".elc":"application/octet-stream", | |
".deploy":"application/octet-stream", | |
".oda":"application/oda", | |
".opf":"application/oebps-package+xml", | |
".ogx":"application/ogg", | |
".omdoc":"application/omdoc+xml", | |
".onetoc":"application/onenote", | |
".onetoc2":"application/onenote", | |
".onetmp":"application/onenote", | |
".onepkg":"application/onenote", | |
".oxps":"application/oxps", | |
".xer":"application/patch-ops-error+xml", | |
".pdf":"application/pdf", | |
".pgp":"application/pgp-encrypted", | |
".asc":"application/pgp-signature", | |
".sig":"application/pgp-signature", | |
".prf":"application/pics-rules", | |
".p10":"application/pkcs10", | |
".p7m":"application/pkcs7-mime", | |
".p7c":"application/pkcs7-mime", | |
".p7s":"application/pkcs7-signature", | |
".p8":"application/pkcs8", | |
".ac":"application/pkix-attr-cert", | |
".cer":"application/pkix-cert", | |
".crl":"application/pkix-crl", | |
".pkipath":"application/pkix-pkipath", | |
".pki":"application/pkixcmp", | |
".pls":"application/pls+xml", | |
".ai":"application/postscript", | |
".eps":"application/postscript", | |
".ps":"application/postscript", | |
".cww":"application/prs.cww", | |
".pskcxml":"application/pskc+xml", | |
".rdf":"application/rdf+xml", | |
".rif":"application/reginfo+xml", | |
".rnc":"application/relax-ng-compact-syntax", | |
".rl":"application/resource-lists+xml", | |
".rld":"application/resource-lists-diff+xml", | |
".rs":"application/rls-services+xml", | |
".gbr":"application/rpki-ghostbusters", | |
".mft":"application/rpki-manifest", | |
".roa":"application/rpki-roa", | |
".rsd":"application/rsd+xml", | |
".rss":"application/rss+xml", | |
".rtf":"application/rtf", | |
".sbml":"application/sbml+xml", | |
".scq":"application/scvp-cv-request", | |
".scs":"application/scvp-cv-response", | |
".spq":"application/scvp-vp-request", | |
".spp":"application/scvp-vp-response", | |
".sdp":"application/sdp", | |
".setpay":"application/set-payment-initiation", | |
".setreg":"application/set-registration-initiation", | |
".shf":"application/shf+xml", | |
".smi":"application/smil+xml", | |
".smil":"application/smil+xml", | |
".rq":"application/sparql-query", | |
".srx":"application/sparql-results+xml", | |
".gram":"application/srgs", | |
".grxml":"application/srgs+xml", | |
".sru":"application/sru+xml", | |
".ssdl":"application/ssdl+xml", | |
".ssml":"application/ssml+xml", | |
".tei":"application/tei+xml", | |
".teicorpus":"application/tei+xml", | |
".tfi":"application/thraud+xml", | |
".tsd":"application/timestamped-data", | |
".plb":"application/vnd.3gpp.pic-bw-large", | |
".psb":"application/vnd.3gpp.pic-bw-small", | |
".pvb":"application/vnd.3gpp.pic-bw-var", | |
".tcap":"application/vnd.3gpp2.tcap", | |
".pwn":"application/vnd.3m.post-it-notes", | |
".aso":"application/vnd.accpac.simply.aso", | |
".imp":"application/vnd.accpac.simply.imp", | |
".acu":"application/vnd.acucobol", | |
".atc":"application/vnd.acucorp", | |
".acutc":"application/vnd.acucorp", | |
".air":"application/vnd.adobe.air-application-installer-package+zip", | |
".fcdt":"application/vnd.adobe.formscentral.fcdt", | |
".fxp":"application/vnd.adobe.fxp", | |
".fxpl":"application/vnd.adobe.fxp", | |
".xdp":"application/vnd.adobe.xdp+xml", | |
".xfdf":"application/vnd.adobe.xfdf", | |
".ahead":"application/vnd.ahead.space", | |
".azf":"application/vnd.airzip.filesecure.azf", | |
".azs":"application/vnd.airzip.filesecure.azs", | |
".azw":"application/vnd.amazon.ebook", | |
".acc":"application/vnd.americandynamics.acc", | |
".ami":"application/vnd.amiga.ami", | |
".apk":"application/vnd.android.package-archive", | |
".cii":"application/vnd.anser-web-certificate-issue-initiation", | |
".fti":"application/vnd.anser-web-funds-transfer-initiation", | |
".atx":"application/vnd.antix.game-component", | |
".mpkg":"application/vnd.apple.installer+xml", | |
".m3u8":"application/vnd.apple.mpegurl", | |
".swi":"application/vnd.aristanetworks.swi", | |
".iota":"application/vnd.astraea-software.iota", | |
".aep":"application/vnd.audiograph", | |
".mpm":"application/vnd.blueice.multipass", | |
".bmi":"application/vnd.bmi", | |
".rep":"application/vnd.businessobjects", | |
".cdxml":"application/vnd.chemdraw+xml", | |
".mmd":"application/vnd.chipnuts.karaoke-mmd", | |
".cdy":"application/vnd.cinderella", | |
".cla":"application/vnd.claymore", | |
".rp9":"application/vnd.cloanto.rp9", | |
".c4g":"application/vnd.clonk.c4group", | |
".c4d":"application/vnd.clonk.c4group", | |
".c4f":"application/vnd.clonk.c4group", | |
".c4p":"application/vnd.clonk.c4group", | |
".c4u":"application/vnd.clonk.c4group", | |
".c11amc":"application/vnd.cluetrust.cartomobile-config", | |
".c11amz":"application/vnd.cluetrust.cartomobile-config-pkg", | |
".csp":"application/vnd.commonspace", | |
".cdbcmsg":"application/vnd.contact.cmsg", | |
".cmc":"application/vnd.cosmocaller", | |
".clkx":"application/vnd.crick.clicker", | |
".clkk":"application/vnd.crick.clicker.keyboard", | |
".clkp":"application/vnd.crick.clicker.palette", | |
".clkt":"application/vnd.crick.clicker.template", | |
".clkw":"application/vnd.crick.clicker.wordbank", | |
".wbs":"application/vnd.criticaltools.wbs+xml", | |
".pml":"application/vnd.ctc-posml", | |
".ppd":"application/vnd.cups-ppd", | |
".car":"application/vnd.curl.car", | |
".pcurl":"application/vnd.curl.pcurl", | |
".dart":"application/vnd.dart", | |
".rdz":"application/vnd.data-vision.rdz", | |
".uvf":"application/vnd.dece.data", | |
".uvvf":"application/vnd.dece.data", | |
".uvd":"application/vnd.dece.data", | |
".uvvd":"application/vnd.dece.data", | |
".uvt":"application/vnd.dece.ttml+xml", | |
".uvvt":"application/vnd.dece.ttml+xml", | |
".uvx":"application/vnd.dece.unspecified", | |
".uvvx":"application/vnd.dece.unspecified", | |
".uvz":"application/vnd.dece.zip", | |
".uvvz":"application/vnd.dece.zip", | |
".fe_launch":"application/vnd.denovo.fcselayout-link", | |
".dna":"application/vnd.dna", | |
".mlp":"application/vnd.dolby.mlp", | |
".dpg":"application/vnd.dpgraph", | |
".dfac":"application/vnd.dreamfactory", | |
".kpxx":"application/vnd.ds-keypoint", | |
".ait":"application/vnd.dvb.ait", | |
".svc":"application/vnd.dvb.service", | |
".geo":"application/vnd.dynageo", | |
".mag":"application/vnd.ecowin.chart", | |
".nml":"application/vnd.enliven", | |
".esf":"application/vnd.epson.esf", | |
".msf":"application/vnd.epson.msf", | |
".qam":"application/vnd.epson.quickanime", | |
".slt":"application/vnd.epson.salt", | |
".ssf":"application/vnd.epson.ssf", | |
".es3":"application/vnd.eszigno3+xml", | |
".et3":"application/vnd.eszigno3+xml", | |
".ez2":"application/vnd.ezpix-album", | |
".ez3":"application/vnd.ezpix-package", | |
".fdf":"application/vnd.fdf", | |
".mseed":"application/vnd.fdsn.mseed", | |
".seed":"application/vnd.fdsn.seed", | |
".dataless":"application/vnd.fdsn.seed", | |
".gph":"application/vnd.flographit", | |
".ftc":"application/vnd.fluxtime.clip", | |
".fm":"application/vnd.framemaker", | |
".frame":"application/vnd.framemaker", | |
".maker":"application/vnd.framemaker", | |
".book":"application/vnd.framemaker", | |
".fnc":"application/vnd.frogans.fnc", | |
".ltf":"application/vnd.frogans.ltf", | |
".fsc":"application/vnd.fsc.weblaunch", | |
".oas":"application/vnd.fujitsu.oasys", | |
".oa2":"application/vnd.fujitsu.oasys2", | |
".oa3":"application/vnd.fujitsu.oasys3", | |
".fg5":"application/vnd.fujitsu.oasysgp", | |
".bh2":"application/vnd.fujitsu.oasysprs", | |
".ddd":"application/vnd.fujixerox.ddd", | |
".xdw":"application/vnd.fujixerox.docuworks", | |
".xbd":"application/vnd.fujixerox.docuworks.binder", | |
".fzs":"application/vnd.fuzzysheet", | |
".txd":"application/vnd.genomatix.tuxedo", | |
".ggb":"application/vnd.geogebra.file", | |
".ggt":"application/vnd.geogebra.tool", | |
".gex":"application/vnd.geometry-explorer", | |
".gre":"application/vnd.geometry-explorer", | |
".gxt":"application/vnd.geonext", | |
".g2w":"application/vnd.geoplan", | |
".g3w":"application/vnd.geospace", | |
".gmx":"application/vnd.gmx", | |
".kml":"application/vnd.google-earth.kml+xml", | |
".kmz":"application/vnd.google-earth.kmz", | |
".gqf":"application/vnd.grafeq", | |
".gqs":"application/vnd.grafeq", | |
".gac":"application/vnd.groove-account", | |
".ghf":"application/vnd.groove-help", | |
".gim":"application/vnd.groove-identity-message", | |
".grv":"application/vnd.groove-injector", | |
".gtm":"application/vnd.groove-tool-message", | |
".tpl":"application/vnd.groove-tool-template", | |
".vcg":"application/vnd.groove-vcard", | |
".hal":"application/vnd.hal+xml", | |
".zmm":"application/vnd.handheld-entertainment+xml", | |
".hbci":"application/vnd.hbci", | |
".les":"application/vnd.hhe.lesson-player", | |
".hpgl":"application/vnd.hp-hpgl", | |
".hpid":"application/vnd.hp-hpid", | |
".hps":"application/vnd.hp-hps", | |
".jlt":"application/vnd.hp-jlyt", | |
".pcl":"application/vnd.hp-pcl", | |
".pclxl":"application/vnd.hp-pclxl", | |
".sfd-hdstx":"application/vnd.hydrostatix.sof-data", | |
".mpy":"application/vnd.ibm.minipay", | |
".afp":"application/vnd.ibm.modcap", | |
".listafp":"application/vnd.ibm.modcap", | |
".list3820":"application/vnd.ibm.modcap", | |
".irm":"application/vnd.ibm.rights-management", | |
".sc":"application/vnd.ibm.secure-container", | |
".icc":"application/vnd.iccprofile", | |
".icm":"application/vnd.iccprofile", | |
".igl":"application/vnd.igloader", | |
".ivp":"application/vnd.immervision-ivp", | |
".ivu":"application/vnd.immervision-ivu", | |
".igm":"application/vnd.insors.igm", | |
".xpw":"application/vnd.intercon.formnet", | |
".xpx":"application/vnd.intercon.formnet", | |
".i2g":"application/vnd.intergeo", | |
".qbo":"application/vnd.intu.qbo", | |
".qfx":"application/vnd.intu.qfx", | |
".rcprofile":"application/vnd.ipunplugged.rcprofile", | |
".irp":"application/vnd.irepository.package+xml", | |
".xpr":"application/vnd.is-xpr", | |
".fcs":"application/vnd.isac.fcs", | |
".jam":"application/vnd.jam", | |
".rms":"application/vnd.jcp.javame.midlet-rms", | |
".jisp":"application/vnd.jisp", | |
".joda":"application/vnd.joost.joda-archive", | |
".ktz":"application/vnd.kahootz", | |
".ktr":"application/vnd.kahootz", | |
".karbon":"application/vnd.kde.karbon", | |
".chrt":"application/vnd.kde.kchart", | |
".kfo":"application/vnd.kde.kformula", | |
".flw":"application/vnd.kde.kivio", | |
".kon":"application/vnd.kde.kontour", | |
".kpr":"application/vnd.kde.kpresenter", | |
".kpt":"application/vnd.kde.kpresenter", | |
".ksp":"application/vnd.kde.kspread", | |
".kwd":"application/vnd.kde.kword", | |
".kwt":"application/vnd.kde.kword", | |
".htke":"application/vnd.kenameaapp", | |
".kia":"application/vnd.kidspiration", | |
".kne":"application/vnd.kinar", | |
".knp":"application/vnd.kinar", | |
".skp":"application/vnd.koan", | |
".skd":"application/vnd.koan", | |
".skt":"application/vnd.koan", | |
".skm":"application/vnd.koan", | |
".sse":"application/vnd.kodak-descriptor", | |
".lasxml":"application/vnd.las.las+xml", | |
".lbd":"application/vnd.llamagraphics.life-balance.desktop", | |
".lbe":"application/vnd.llamagraphics.life-balance.exchange+xml", | |
".123":"application/vnd.lotus-1-2-3", | |
".apr":"application/vnd.lotus-approach", | |
".pre":"application/vnd.lotus-freelance", | |
".nsf":"application/vnd.lotus-notes", | |
".org":"application/vnd.lotus-organizer", | |
".scm":"application/vnd.lotus-screencam", | |
".lwp":"application/vnd.lotus-wordpro", | |
".portpkg":"application/vnd.macports.portpkg", | |
".mcd":"application/vnd.mcd", | |
".mc1":"application/vnd.medcalcdata", | |
".cdkey":"application/vnd.mediastation.cdkey", | |
".mwf":"application/vnd.mfer", | |
".mfm":"application/vnd.mfmp", | |
".flo":"application/vnd.micrografx.flo", | |
".igx":"application/vnd.micrografx.igx", | |
".mif":"application/vnd.mif", | |
".daf":"application/vnd.mobius.daf", | |
".dis":"application/vnd.mobius.dis", | |
".mbk":"application/vnd.mobius.mbk", | |
".mqy":"application/vnd.mobius.mqy", | |
".msl":"application/vnd.mobius.msl", | |
".plc":"application/vnd.mobius.plc", | |
".txf":"application/vnd.mobius.txf", | |
".mpn":"application/vnd.mophun.application", | |
".mpc":"application/vnd.mophun.certificate", | |
".xul":"application/vnd.mozilla.xul+xml", | |
".cil":"application/vnd.ms-artgalry", | |
".cab":"application/vnd.ms-cab-compressed", | |
".xls":"application/vnd.ms-excel", | |
".xlm":"application/vnd.ms-excel", | |
".xla":"application/vnd.ms-excel", | |
".xlc":"application/vnd.ms-excel", | |
".xlt":"application/vnd.ms-excel", | |
".xlw":"application/vnd.ms-excel", | |
".xlam":"application/vnd.ms-excel.addin.macroenabled.12", | |
".xlsb":"application/vnd.ms-excel.sheet.binary.macroenabled.12", | |
".xlsm":"application/vnd.ms-excel.sheet.macroenabled.12", | |
".xltm":"application/vnd.ms-excel.template.macroenabled.12", | |
".eot":"application/vnd.ms-fontobject", | |
".chm":"application/vnd.ms-htmlhelp", | |
".ims":"application/vnd.ms-ims", | |
".lrm":"application/vnd.ms-lrm", | |
".thmx":"application/vnd.ms-officetheme", | |
".cat":"application/vnd.ms-pki.seccat", | |
".stl":"application/vnd.ms-pki.stl", | |
".ppt":"application/vnd.ms-powerpoint", | |
".pps":"application/vnd.ms-powerpoint", | |
".pot":"application/vnd.ms-powerpoint", | |
".ppam":"application/vnd.ms-powerpoint.addin.macroenabled.12", | |
".pptm":"application/vnd.ms-powerpoint.presentation.macroenabled.12", | |
".sldm":"application/vnd.ms-powerpoint.slide.macroenabled.12", | |
".ppsm":"application/vnd.ms-powerpoint.slideshow.macroenabled.12", | |
".potm":"application/vnd.ms-powerpoint.template.macroenabled.12", | |
".mpp":"application/vnd.ms-project", | |
".mpt":"application/vnd.ms-project", | |
".docm":"application/vnd.ms-word.document.macroenabled.12", | |
".dotm":"application/vnd.ms-word.template.macroenabled.12", | |
".wps":"application/vnd.ms-works", | |
".wks":"application/vnd.ms-works", | |
".wcm":"application/vnd.ms-works", | |
".wdb":"application/vnd.ms-works", | |
".wpl":"application/vnd.ms-wpl", | |
".xps":"application/vnd.ms-xpsdocument", | |
".mseq":"application/vnd.mseq", | |
".mus":"application/vnd.musician", | |
".msty":"application/vnd.muvee.style", | |
".taglet":"application/vnd.mynfc", | |
".nlu":"application/vnd.neurolanguage.nlu", | |
".ntf":"application/vnd.nitf", | |
".nitf":"application/vnd.nitf", | |
".nnd":"application/vnd.noblenet-directory", | |
".nns":"application/vnd.noblenet-sealer", | |
".nnw":"application/vnd.noblenet-web", | |
".ngdat":"application/vnd.nokia.n-gage.data", | |
".n-gage":"application/vnd.nokia.n-gage.symbian.install", | |
".rpst":"application/vnd.nokia.radio-preset", | |
".rpss":"application/vnd.nokia.radio-presets", | |
".edm":"application/vnd.novadigm.edm", | |
".edx":"application/vnd.novadigm.edx", | |
".ext":"application/vnd.novadigm.ext", | |
".odc":"application/vnd.oasis.opendocument.chart", | |
".otc":"application/vnd.oasis.opendocument.chart-template", | |
".odb":"application/vnd.oasis.opendocument.database", | |
".odf":"application/vnd.oasis.opendocument.formula", | |
".odft":"application/vnd.oasis.opendocument.formula-template", | |
".odg":"application/vnd.oasis.opendocument.graphics", | |
".otg":"application/vnd.oasis.opendocument.graphics-template", | |
".odi":"application/vnd.oasis.opendocument.image", | |
".oti":"application/vnd.oasis.opendocument.image-template", | |
".odp":"application/vnd.oasis.opendocument.presentation", | |
".otp":"application/vnd.oasis.opendocument.presentation-template", | |
".ods":"application/vnd.oasis.opendocument.spreadsheet", | |
".ots":"application/vnd.oasis.opendocument.spreadsheet-template", | |
".odt":"application/vnd.oasis.opendocument.text", | |
".odm":"application/vnd.oasis.opendocument.text-master", | |
".ott":"application/vnd.oasis.opendocument.text-template", | |
".oth":"application/vnd.oasis.opendocument.text-web", | |
".xo":"application/vnd.olpc-sugar", | |
".dd2":"application/vnd.oma.dd2+xml", | |
".oxt":"application/vnd.openofficeorg.extension", | |
".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation", | |
".sldx":"application/vnd.openxmlformats-officedocument.presentationml.slide", | |
".ppsx":"application/vnd.openxmlformats-officedocument.presentationml.slideshow", | |
".potx":"application/vnd.openxmlformats-officedocument.presentationml.template", | |
".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", | |
".xltx":"application/vnd.openxmlformats-officedocument.spreadsheetml.template", | |
".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document", | |
".dotx":"application/vnd.openxmlformats-officedocument.wordprocessingml.template", | |
".mgp":"application/vnd.osgeo.mapguide.package", | |
".dp":"application/vnd.osgi.dp", | |
".esa":"application/vnd.osgi.subsystem", | |
".pdb":"application/vnd.palm", | |
".pqa":"application/vnd.palm", | |
".oprc":"application/vnd.palm", | |
".paw":"application/vnd.pawaafile", | |
".str":"application/vnd.pg.format", | |
".ei6":"application/vnd.pg.osasli", | |
".efif":"application/vnd.picsel", | |
".wg":"application/vnd.pmi.widget", | |
".plf":"application/vnd.pocketlearn", | |
".pbd":"application/vnd.powerbuilder6", | |
".box":"application/vnd.previewsystems.box", | |
".mgz":"application/vnd.proteus.magazine", | |
".qps":"application/vnd.publishare-delta-tree", | |
".ptid":"application/vnd.pvi.ptid1", | |
".qxd":"application/vnd.quark.quarkxpress", | |
".qxt":"application/vnd.quark.quarkxpress", | |
".qwd":"application/vnd.quark.quarkxpress", | |
".qwt":"application/vnd.quark.quarkxpress", | |
".qxl":"application/vnd.quark.quarkxpress", | |
".qxb":"application/vnd.quark.quarkxpress", | |
".bed":"application/vnd.realvnc.bed", | |
".mxl":"application/vnd.recordare.musicxml", | |
".musicxml":"application/vnd.recordare.musicxml+xml", | |
".cryptonote":"application/vnd.rig.cryptonote", | |
".cod":"application/vnd.rim.cod", | |
".rm":"application/vnd.rn-realmedia", | |
".rmvb":"application/vnd.rn-realmedia-vbr", | |
".link66":"application/vnd.route66.link66+xml", | |
".st":"application/vnd.sailingtracker.track", | |
".see":"application/vnd.seemail", | |
".sema":"application/vnd.sema", | |
".semd":"application/vnd.semd", | |
".semf":"application/vnd.semf", | |
".ifm":"application/vnd.shana.informed.formdata", | |
".itp":"application/vnd.shana.informed.formtemplate", | |
".iif":"application/vnd.shana.informed.interchange", | |
".ipk":"application/vnd.shana.informed.package", | |
".twd":"application/vnd.simtech-mindmapper", | |
".twds":"application/vnd.simtech-mindmapper", | |
".mmf":"application/vnd.smaf", | |
".teacher":"application/vnd.smart.teacher", | |
".sdkm":"application/vnd.solent.sdkm+xml", | |
".sdkd":"application/vnd.solent.sdkm+xml", | |
".dxp":"application/vnd.spotfire.dxp", | |
".sfs":"application/vnd.spotfire.sfs", | |
".sdc":"application/vnd.stardivision.calc", | |
".sda":"application/vnd.stardivision.draw", | |
".sdd":"application/vnd.stardivision.impress", | |
".smf":"application/vnd.stardivision.math", | |
".sdw":"application/vnd.stardivision.writer", | |
".vor":"application/vnd.stardivision.writer", | |
".sgl":"application/vnd.stardivision.writer-global", | |
".smzip":"application/vnd.stepmania.package", | |
".sm":"application/vnd.stepmania.stepchart", | |
".sxc":"application/vnd.sun.xml.calc", | |
".stc":"application/vnd.sun.xml.calc.template", | |
".sxd":"application/vnd.sun.xml.draw", | |
".std":"application/vnd.sun.xml.draw.template", | |
".sxi":"application/vnd.sun.xml.impress", | |
".sti":"application/vnd.sun.xml.impress.template", | |
".sxm":"application/vnd.sun.xml.math", | |
".sxw":"application/vnd.sun.xml.writer", | |
".sxg":"application/vnd.sun.xml.writer.global", | |
".stw":"application/vnd.sun.xml.writer.template", | |
".sus":"application/vnd.sus-calendar", | |
".susp":"application/vnd.sus-calendar", | |
".svd":"application/vnd.svd", | |
".sis":"application/vnd.symbian.install", | |
".sisx":"application/vnd.symbian.install", | |
".xsm":"application/vnd.syncml+xml", | |
".bdm":"application/vnd.syncml.dm+wbxml", | |
".xdm":"application/vnd.syncml.dm+xml", | |
".tao":"application/vnd.tao.intent-module-archive", | |
".pcap":"application/vnd.tcpdump.pcap", | |
".cap":"application/vnd.tcpdump.pcap", | |
".dmp":"application/vnd.tcpdump.pcap", | |
".tmo":"application/vnd.tmobile-livetv", | |
".tpt":"application/vnd.trid.tpt", | |
".mxs":"application/vnd.triscape.mxs", | |
".tra":"application/vnd.trueapp", | |
".ufd":"application/vnd.ufdl", | |
".ufdl":"application/vnd.ufdl", | |
".utz":"application/vnd.uiq.theme", | |
".umj":"application/vnd.umajin", | |
".unityweb":"application/vnd.unity", | |
".uoml":"application/vnd.uoml+xml", | |
".vcx":"application/vnd.vcx", | |
".vsd":"application/vnd.visio", | |
".vst":"application/vnd.visio", | |
".vss":"application/vnd.visio", | |
".vsw":"application/vnd.visio", | |
".vis":"application/vnd.visionary", | |
".vsf":"application/vnd.vsf", | |
".wbxml":"application/vnd.wap.wbxml", | |
".wmlc":"application/vnd.wap.wmlc", | |
".wmlsc":"application/vnd.wap.wmlscriptc", | |
".wtb":"application/vnd.webturbo", | |
".nbp":"application/vnd.wolfram.player", | |
".wpd":"application/vnd.wordperfect", | |
".wqd":"application/vnd.wqd", | |
".stf":"application/vnd.wt.stf", | |
".xar":"application/vnd.xara", | |
".xfdl":"application/vnd.xfdl", | |
".hvd":"application/vnd.yamaha.hv-dic", | |
".hvs":"application/vnd.yamaha.hv-script", | |
".hvp":"application/vnd.yamaha.hv-voice", | |
".osf":"application/vnd.yamaha.openscoreformat", | |
".osfpvg":"application/vnd.yamaha.openscoreformat.osfpvg+xml", | |
".saf":"application/vnd.yamaha.smaf-audio", | |
".spf":"application/vnd.yamaha.smaf-phrase", | |
".cmp":"application/vnd.yellowriver-custom-menu", | |
".zir":"application/vnd.zul", | |
".zirz":"application/vnd.zul", | |
".zaz":"application/vnd.zzazz.deck+xml", | |
".vxml":"application/voicexml+xml", | |
".wgt":"application/widget", | |
".hlp":"application/winhlp", | |
".wsdl":"application/wsdl+xml", | |
".wspolicy":"application/wspolicy+xml", | |
".7z":"application/x-7z-compressed", | |
".abw":"application/x-abiword", | |
".ace":"application/x-ace-compressed", | |
".dmg":"application/x-apple-diskimage", | |
".aab":"application/x-authorware-bin", | |
".x32":"application/x-authorware-bin", | |
".u32":"application/x-authorware-bin", | |
".vox":"application/x-authorware-bin", | |
".aam":"application/x-authorware-map", | |
".aas":"application/x-authorware-seg", | |
".bcpio":"application/x-bcpio", | |
".torrent":"application/x-bittorrent", | |
".blb":"application/x-blorb", | |
".blorb":"application/x-blorb", | |
".bz":"application/x-bzip", | |
".bz2":"application/x-bzip2", | |
".boz":"application/x-bzip2", | |
".cbr":"application/x-cbr", | |
".cba":"application/x-cbr", | |
".cbt":"application/x-cbr", | |
".cbz":"application/x-cbr", | |
".cb7":"application/x-cbr", | |
".vcd":"application/x-cdlink", | |
".cfs":"application/x-cfs-compressed", | |
".chat":"application/x-chat", | |
".pgn":"application/x-chess-pgn", | |
".nsc":"application/x-conference", | |
".cpio":"application/x-cpio", | |
".csh":"application/x-csh", | |
".deb":"application/x-debian-package", | |
".udeb":"application/x-debian-package", | |
".dgc":"application/x-dgc-compressed", | |
".dir":"application/x-director", | |
".dcr":"application/x-director", | |
".dxr":"application/x-director", | |
".cst":"application/x-director", | |
".cct":"application/x-director", | |
".cxt":"application/x-director", | |
".w3d":"application/x-director", | |
".fgd":"application/x-director", | |
".swa":"application/x-director", | |
".wad":"application/x-doom", | |
".ncx":"application/x-dtbncx+xml", | |
".dtb":"application/x-dtbook+xml", | |
".res":"application/x-dtbresource+xml", | |
".dvi":"application/x-dvi", | |
".evy":"application/x-envoy", | |
".eva":"application/x-eva", | |
".bdf":"application/x-font-bdf", | |
".gsf":"application/x-font-ghostscript", | |
".psf":"application/x-font-linux-psf", | |
".otf":"application/x-font-otf", | |
".pcf":"application/x-font-pcf", | |
".snf":"application/x-font-snf", | |
".ttf":"application/x-font-ttf", | |
".ttc":"application/x-font-ttf", | |
".pfa":"application/x-font-type1", | |
".pfb":"application/x-font-type1", | |
".pfm":"application/x-font-type1", | |
".afm":"application/x-font-type1", | |
".woff":"application/x-font-woff", | |
".arc":"application/x-freearc", | |
".spl":"application/x-futuresplash", | |
".gca":"application/x-gca-compressed", | |
".ulx":"application/x-glulx", | |
".gnumeric":"application/x-gnumeric", | |
".gramps":"application/x-gramps-xml", | |
".gtar":"application/x-gtar", | |
".hdf":"application/x-hdf", | |
".install":"application/x-install-instructions", | |
".iso":"application/x-iso9660-image", | |
".jnlp":"application/x-java-jnlp-file", | |
".latex":"application/x-latex", | |
".lzh":"application/x-lzh-compressed", | |
".lha":"application/x-lzh-compressed", | |
".mie":"application/x-mie", | |
".prc":"application/x-mobipocket-ebook", | |
".mobi":"application/x-mobipocket-ebook", | |
".application":"application/x-ms-application", | |
".lnk":"application/x-ms-shortcut", | |
".wmd":"application/x-ms-wmd", | |
".wmz":"application/x-msmetafile", | |
".xbap":"application/x-ms-xbap", | |
".mdb":"application/x-msaccess", | |
".obd":"application/x-msbinder", | |
".crd":"application/x-mscardfile", | |
".clp":"application/x-msclip", | |
".exe":"application/x-msdownload", | |
".dll":"application/x-msdownload", | |
".com":"application/x-msdownload", | |
".bat":"application/x-msdownload", | |
".msi":"application/x-msdownload", | |
".mvb":"application/x-msmediaview", | |
".m13":"application/x-msmediaview", | |
".m14":"application/x-msmediaview", | |
".wmf":"application/x-msmetafile", | |
".emf":"application/x-msmetafile", | |
".emz":"application/x-msmetafile", | |
".mny":"application/x-msmoney", | |
".pub":"application/x-mspublisher", | |
".scd":"application/x-msschedule", | |
".trm":"application/x-msterminal", | |
".wri":"application/x-mswrite", | |
".nc":"application/x-netcdf", | |
".cdf":"application/x-netcdf", | |
".nzb":"application/x-nzb", | |
".p12":"application/x-pkcs12", | |
".pfx":"application/x-pkcs12", | |
".p7b":"application/x-pkcs7-certificates", | |
".spc":"application/x-pkcs7-certificates", | |
".p7r":"application/x-pkcs7-certreqresp", | |
".rar":"application/x-rar-compressed", | |
".ris":"application/x-research-info-systems", | |
".sh":"application/x-sh", | |
".shar":"application/x-shar", | |
".swf":"application/x-shockwave-flash", | |
".xap":"application/x-silverlight-app", | |
".sql":"application/x-sql", | |
".sit":"application/x-stuffit", | |
".sitx":"application/x-stuffitx", | |
".srt":"application/x-subrip", | |
".sv4cpio":"application/x-sv4cpio", | |
".sv4crc":"application/x-sv4crc", | |
".t3":"application/x-t3vm-image", | |
".gam":"application/x-tads", | |
".tar":"application/x-tar", | |
".tcl":"application/x-tcl", | |
".tex":"application/x-tex", | |
".tfm":"application/x-tex-tfm", | |
".texinfo":"application/x-texinfo", | |
".texi":"application/x-texinfo", | |
".obj":"application/x-tgif", | |
".ustar":"application/x-ustar", | |
".src":"application/x-wais-source", | |
".der":"application/x-x509-ca-cert", | |
".crt":"application/x-x509-ca-cert", | |
".fig":"application/x-xfig", | |
".xlf":"application/x-xliff+xml", | |
".xpi":"application/x-xpinstall", | |
".xz":"application/x-xz", | |
".z1":"application/x-zmachine", | |
".z2":"application/x-zmachine", | |
".z3":"application/x-zmachine", | |
".z4":"application/x-zmachine", | |
".z5":"application/x-zmachine", | |
".z6":"application/x-zmachine", | |
".z7":"application/x-zmachine", | |
".z8":"application/x-zmachine", | |
".xaml":"application/xaml+xml", | |
".xdf":"application/xcap-diff+xml", | |
".xenc":"application/xenc+xml", | |
".xhtml":"application/xhtml+xml", | |
".xht":"application/xhtml+xml", | |
".xml":"application/xml", | |
".xsl":"application/xml", | |
".dtd":"application/xml-dtd", | |
".xop":"application/xop+xml", | |
".xpl":"application/xproc+xml", | |
".xslt":"application/xslt+xml", | |
".xspf":"application/xspf+xml", | |
".mxml":"application/xv+xml", | |
".xhvml":"application/xv+xml", | |
".xvml":"application/xv+xml", | |
".xvm":"application/xv+xml", | |
".yang":"application/yang", | |
".yin":"application/yin+xml", | |
".zip":"application/zip", | |
".adp":"audio/adpcm", | |
".au":"audio/basic", | |
".snd":"audio/basic", | |
".mid":"audio/midi", | |
".midi":"audio/midi", | |
".kar":"audio/midi", | |
".rmi":"audio/midi", | |
".mp4a":"audio/mp4", | |
".mpga":"audio/mpeg", | |
".mp2":"audio/mpeg", | |
".mp2a":"audio/mpeg", | |
".mp3":"audio/mpeg", | |
".m2a":"audio/mpeg", | |
".m3a":"audio/mpeg", | |
".oga":"audio/ogg", | |
".ogg":"audio/ogg", | |
".spx":"audio/ogg", | |
".s3m":"audio/s3m", | |
".sil":"audio/silk", | |
".uva":"audio/vnd.dece.audio", | |
".uvva":"audio/vnd.dece.audio", | |
".eol":"audio/vnd.digital-winds", | |
".dra":"audio/vnd.dra", | |
".dts":"audio/vnd.dts", | |
".dtshd":"audio/vnd.dts.hd", | |
".lvp":"audio/vnd.lucent.voice", | |
".pya":"audio/vnd.ms-playready.media.pya", | |
".ecelp4800":"audio/vnd.nuera.ecelp4800", | |
".ecelp7470":"audio/vnd.nuera.ecelp7470", | |
".ecelp9600":"audio/vnd.nuera.ecelp9600", | |
".rip":"audio/vnd.rip", | |
".weba":"audio/webm", | |
".aac":"audio/x-aac", | |
".aif":"audio/x-aiff", | |
".aiff":"audio/x-aiff", | |
".aifc":"audio/x-aiff", | |
".caf":"audio/x-caf", | |
".flac":"audio/x-flac", | |
".mka":"audio/x-matroska", | |
".m3u":"audio/x-mpegurl", | |
".wax":"audio/x-ms-wax", | |
".wma":"audio/x-ms-wma", | |
".ram":"audio/x-pn-realaudio", | |
".ra":"audio/x-pn-realaudio", | |
".rmp":"audio/x-pn-realaudio-plugin", | |
".wav":"audio/x-wav", | |
".xm":"audio/xm", | |
".cdx":"chemical/x-cdx", | |
".cif":"chemical/x-cif", | |
".cmdf":"chemical/x-cmdf", | |
".cml":"chemical/x-cml", | |
".csml":"chemical/x-csml", | |
".xyz":"chemical/x-xyz", | |
".bmp":"image/bmp", | |
".cgm":"image/cgm", | |
".g3":"image/g3fax", | |
".gif":"image/gif", | |
".ief":"image/ief", | |
".jpeg":"image/jpeg", | |
".jpg":"image/jpeg", | |
".jpe":"image/jpeg", | |
".ktx":"image/ktx", | |
".png":"image/png", | |
".btif":"image/prs.btif", | |
".sgi":"image/sgi", | |
".svg":"image/svg+xml", | |
".svgz":"image/svg+xml", | |
".tiff":"image/tiff", | |
".tif":"image/tiff", | |
".psd":"image/vnd.adobe.photoshop", | |
".uvi":"image/vnd.dece.graphic", | |
".uvvi":"image/vnd.dece.graphic", | |
".uvg":"image/vnd.dece.graphic", | |
".uvvg":"image/vnd.dece.graphic", | |
".sub":"text/vnd.dvb.subtitle", | |
".djvu":"image/vnd.djvu", | |
".djv":"image/vnd.djvu", | |
".dwg":"image/vnd.dwg", | |
".dxf":"image/vnd.dxf", | |
".fbs":"image/vnd.fastbidsheet", | |
".fpx":"image/vnd.fpx", | |
".fst":"image/vnd.fst", | |
".mmr":"image/vnd.fujixerox.edmics-mmr", | |
".rlc":"image/vnd.fujixerox.edmics-rlc", | |
".mdi":"image/vnd.ms-modi", | |
".wdp":"image/vnd.ms-photo", | |
".npx":"image/vnd.net-fpx", | |
".wbmp":"image/vnd.wap.wbmp", | |
".xif":"image/vnd.xiff", | |
".webp":"image/webp", | |
".3ds":"image/x-3ds", | |
".ras":"image/x-cmu-raster", | |
".cmx":"image/x-cmx", | |
".fh":"image/x-freehand", | |
".fhc":"image/x-freehand", | |
".fh4":"image/x-freehand", | |
".fh5":"image/x-freehand", | |
".fh7":"image/x-freehand", | |
".ico":"image/x-icon", | |
".sid":"image/x-mrsid-image", | |
".pcx":"image/x-pcx", | |
".pic":"image/x-pict", | |
".pct":"image/x-pict", | |
".pnm":"image/x-portable-anymap", | |
".pbm":"image/x-portable-bitmap", | |
".pgm":"image/x-portable-graymap", | |
".ppm":"image/x-portable-pixmap", | |
".rgb":"image/x-rgb", | |
".tga":"image/x-tga", | |
".xbm":"image/x-xbitmap", | |
".xpm":"image/x-xpixmap", | |
".xwd":"image/x-xwindowdump", | |
".eml":"message/rfc822", | |
".mime":"message/rfc822", | |
".igs":"model/iges", | |
".iges":"model/iges", | |
".msh":"model/mesh", | |
".mesh":"model/mesh", | |
".silo":"model/mesh", | |
".dae":"model/vnd.collada+xml", | |
".dwf":"model/vnd.dwf", | |
".gdl":"model/vnd.gdl", | |
".gtw":"model/vnd.gtw", | |
".mts":"model/vnd.mts", | |
".vtu":"model/vnd.vtu", | |
".wrl":"model/vrml", | |
".vrml":"model/vrml", | |
".x3db":"model/x3d+binary", | |
".x3dbz":"model/x3d+binary", | |
".x3dv":"model/x3d+vrml", | |
".x3dvz":"model/x3d+vrml", | |
".x3d":"model/x3d+xml", | |
".x3dz":"model/x3d+xml", | |
".appcache":"text/cache-manifest", | |
".ics":"text/calendar", | |
".ifb":"text/calendar", | |
".css":"text/css", | |
".csv":"text/csv", | |
".html":"text/html", | |
".htm":"text/html", | |
".n3":"text/n3", | |
".txt":"text/plain", | |
".text":"text/plain", | |
".conf":"text/plain", | |
".def":"text/plain", | |
".list":"text/plain", | |
".log":"text/plain", | |
".in":"text/plain", | |
".dsc":"text/prs.lines.tag", | |
".rtx":"text/richtext", | |
".sgml":"text/sgml", | |
".sgm":"text/sgml", | |
".tsv":"text/tab-separated-values", | |
".t":"text/troff", | |
".tr":"text/troff", | |
".roff":"text/troff", | |
".man":"text/troff", | |
".me":"text/troff", | |
".ms":"text/troff", | |
".ttl":"text/turtle", | |
".uri":"text/uri-list", | |
".uris":"text/uri-list", | |
".urls":"text/uri-list", | |
".vcard":"text/vcard", | |
".curl":"text/vnd.curl", | |
".dcurl":"text/vnd.curl.dcurl", | |
".scurl":"text/vnd.curl.scurl", | |
".mcurl":"text/vnd.curl.mcurl", | |
".fly":"text/vnd.fly", | |
".flx":"text/vnd.fmi.flexstor", | |
".gv":"text/vnd.graphviz", | |
".3dml":"text/vnd.in3d.3dml", | |
".spot":"text/vnd.in3d.spot", | |
".jad":"text/vnd.sun.j2me.app-descriptor", | |
".wml":"text/vnd.wap.wml", | |
".wmls":"text/vnd.wap.wmlscript", | |
".s":"text/x-asm", | |
".asm":"text/x-asm", | |
".c":"text/x-c", | |
".cc":"text/x-c", | |
".cxx":"text/x-c", | |
".cpp":"text/x-c", | |
".h":"text/x-c", | |
".hh":"text/x-c", | |
".dic":"text/x-c", | |
".f":"text/x-fortran", | |
".for":"text/x-fortran", | |
".f77":"text/x-fortran", | |
".f90":"text/x-fortran", | |
".java":"text/x-java-source", | |
".opml":"text/x-opml", | |
".p":"text/x-pascal", | |
".pas":"text/x-pascal", | |
".nfo":"text/x-nfo", | |
".etx":"text/x-setext", | |
".sfv":"text/x-sfv", | |
".uu":"text/x-uuencode", | |
".vcs":"text/x-vcalendar", | |
".vcf":"text/x-vcard", | |
".3gp":"video/3gpp", | |
".3g2":"video/3gpp2", | |
".h261":"video/h261", | |
".h263":"video/h263", | |
".h264":"video/h264", | |
".jpgv":"video/jpeg", | |
".jpm":"video/jpm", | |
".jpgm":"video/jpm", | |
".mj2":"video/mj2", | |
".mjp2":"video/mj2", | |
".mp4":"video/mp4", | |
".mp4v":"video/mp4", | |
".mpg4":"video/mp4", | |
".mpeg":"video/mpeg", | |
".mpg":"video/mpeg", | |
".mpe":"video/mpeg", | |
".m1v":"video/mpeg", | |
".m2v":"video/mpeg", | |
".ogv":"video/ogg", | |
".qt":"video/quicktime", | |
".mov":"video/quicktime", | |
".uvh":"video/vnd.dece.hd", | |
".uvvh":"video/vnd.dece.hd", | |
".uvm":"video/vnd.dece.mobile", | |
".uvvm":"video/vnd.dece.mobile", | |
".uvp":"video/vnd.dece.pd", | |
".uvvp":"video/vnd.dece.pd", | |
".uvs":"video/vnd.dece.sd", | |
".uvvs":"video/vnd.dece.sd", | |
".uvv":"video/vnd.dece.video", | |
".uvvv":"video/vnd.dece.video", | |
".dvb":"video/vnd.dvb.file", | |
".fvt":"video/vnd.fvt", | |
".mxu":"video/vnd.mpegurl", | |
".m4u":"video/vnd.mpegurl", | |
".pyv":"video/vnd.ms-playready.media.pyv", | |
".uvu":"video/vnd.uvvu.mp4", | |
".uvvu":"video/vnd.uvvu.mp4", | |
".viv":"video/vnd.vivo", | |
".webm":"video/webm", | |
".f4v":"video/x-f4v", | |
".fli":"video/x-fli", | |
".flv":"video/x-flv", | |
".m4v":"video/x-m4v", | |
".mkv":"video/x-matroska", | |
".mk3d":"video/x-matroska", | |
".mks":"video/x-matroska", | |
".mng":"video/x-mng", | |
".asf":"video/x-ms-asf", | |
".asx":"video/x-ms-asf", | |
".vob":"video/x-ms-vob", | |
".wm":"video/x-ms-wm", | |
".wmv":"video/x-ms-wmv", | |
".wmx":"video/x-ms-wmx", | |
".wvx":"video/x-ms-wvx", | |
".avi":"video/x-msvideo", | |
".movie":"video/x-sgi-movie", | |
".smv":"video/x-smv", | |
".ice":"x-conference/x-cooltalk" | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment