maid 2012.1.19 → 2013.9.13
raw patch · 5 files changed
+1701/−96 lines, 5 filesdep +textdep −air-extradep −process
Dependencies added: text
Dependencies removed: air-extra, process
Files
- Nemesis +9/−4
- maid.cabal +4/−8
- readme.md +0/−6
- src/Web/Maid/ApacheMimeTypes.hs +1604/−0
- src/maid.hs +84/−78
Nemesis view
@@ -1,11 +1,16 @@-nemesis = do- +import System.Nemesis.Titan+import System.Nemesis.Env+import Air.Env+import Prelude ()++main = run - do+ clean [ "**/*.hi" , "**/*.o" , "manifest" ]- + desc "prepare cabal dist" task "dist" - do sh "cabal clean"@@ -22,7 +27,7 @@ desc "show sloc" task "stat" - do sh "cloc -match-f=hs$ --quiet src --no3"- + desc "run" task "run" - do sh "runghc -isrc src/maid.hs"
maid.cabal view
@@ -1,9 +1,9 @@ Name: maid-Version: 2012.1.19+Version: 2013.9.13 Build-type: Simple Synopsis: A simple static web server Description:- + Serve files from the current path License: BSD3@@ -20,20 +20,16 @@ ghc-options: -threaded build-depends: base >= 4 && < 100 , air >= 2011.6.19- , air-extra , hack2 >= 2012.1.19 , hack2-contrib >= 2012.1.19.1 , data-default- -- , hack2-handler-warp , hack2-handler-snap-server >= 2012.1.19- -- , hack2-handler-mongrel2-http- - , containers , moe >= 2011.6 , unix , bytestring- , process , directory+ , text hs-source-dirs: src/ main-is: maid.hs+ Other-Modules: Web.Maid.ApacheMimeTypes
readme.md view
@@ -69,9 +69,3 @@ hs text/plain; charset=utf-8 lhs text/plain; charset=utf-8 -note-------use the git version--
+ src/Web/Maid/ApacheMimeTypes.hs view
@@ -0,0 +1,1604 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE OverloadedStrings #-}++module Web.Maid.ApacheMimeTypes where+++import qualified Data.Text as T+import Air.TH++++apache_mime_types :: T.Text+apache_mime_types = [here|++# This file maps Internet media types to unique file extension(s).+# Although created for httpd, this file is used by many software systems+# and has been placed in the public domain for unlimited redisribution.+#+# The table below contains both registered and (common) unregistered types.+# A type that has no unique extension can be ignored -- they are listed+# here to guide configurations toward known types and to make it easier to+# identify "new" types. File extensions are also commonly used to indicate+# content languages and encodings, so choose them carefully.+#+# Internet media types should be registered as described in RFC 4288.+# The registry is at <http://www.iana.org/assignments/media-types/>.+#+# MIME type (lowercased) Extensions+# ============================================ ==========+# application/1d-interleaved-parityfec+# application/3gpp-ims+xml+# application/activemessage+application/andrew-inset ez+# application/applefile+application/applixware aw+application/atom+xml atom+application/atomcat+xml atomcat+# application/atomicmail+application/atomsvc+xml atomsvc+# application/auth-policy+xml+# application/batch-smtp+# application/beep+xml+# application/calendar+xml+# application/cals-1840+# application/ccmp+xml+application/ccxml+xml ccxml+application/cdmi-capability cdmia+application/cdmi-container cdmic+application/cdmi-domain cdmid+application/cdmi-object cdmio+application/cdmi-queue cdmiq+# application/cea-2018+xml+# application/cellml+xml+# application/cfw+# application/cnrp+xml+# application/commonground+# application/conference-info+xml+# application/cpl+xml+# application/csta+xml+# application/cstadata+xml+application/cu-seeme cu+# application/cybercash+application/davmount+xml davmount+# application/dca-rft+# application/dec-dx+# application/dialog-info+xml+# application/dicom+# application/dns+application/docbook+xml dbk+# application/dskpp+xml+application/dssc+der dssc+application/dssc+xml xdssc+# application/dvcs+application/ecmascript ecma+# application/edi-consent+# application/edi-x12+# application/edifact+application/emma+xml emma+# application/epp+xml+application/epub+zip epub+# application/eshop+# application/example+application/exi exi+# application/fastinfoset+# application/fastsoap+# application/fits+application/font-tdpfr pfr+# application/framework-attributes+xml+application/gml+xml gml+application/gpx+xml gpx+application/gxf gxf+# application/h224+# application/held+xml+# application/http+application/hyperstudio stk+# application/ibe-key-request+xml+# application/ibe-pkg-reply+xml+# application/ibe-pp-data+# application/iges+# application/im-iscomposing+xml+# application/index+# application/index.cmd+# application/index.obj+# application/index.response+# application/index.vnd+application/inkml+xml ink inkml+# application/iotp+application/ipfix ipfix+# application/ipp+# application/isup+application/java-archive jar+application/java-serialized-object ser+application/java-vm class+application/javascript js+application/json json+application/jsonml+json jsonml+# application/kpml-request+xml+# application/kpml-response+xml+application/lost+xml lostxml+application/mac-binhex40 hqx+application/mac-compactpro cpt+# application/macwriteii+application/mads+xml mads+application/marc mrc+application/marcxml+xml mrcx+application/mathematica ma nb mb+# application/mathml-content+xml+# application/mathml-presentation+xml+application/mathml+xml mathml+# application/mbms-associated-procedure-description+xml+# application/mbms-deregister+xml+# application/mbms-envelope+xml+# application/mbms-msk+xml+# application/mbms-msk-response+xml+# application/mbms-protection-description+xml+# application/mbms-reception-report+xml+# application/mbms-register+xml+# application/mbms-register-response+xml+# application/mbms-user-service-description+xml+application/mbox mbox+# application/media_control+xml+application/mediaservercontrol+xml mscml+application/metalink+xml metalink+application/metalink4+xml meta4+application/mets+xml mets+# application/mikey+application/mods+xml mods+# application/moss-keys+# application/moss-signature+# application/mosskey-data+# application/mosskey-request+application/mp21 m21 mp21+application/mp4 mp4s+# application/mpeg4-generic+# application/mpeg4-iod+# application/mpeg4-iod-xmt+# application/msc-ivr+xml+# application/msc-mixer+xml+application/msword doc dot+application/mxf mxf+# application/nasdata+# application/news-checkgroups+# application/news-groupinfo+# application/news-transmission+# application/nss+# application/ocsp-request+# application/ocsp-response+application/octet-stream bin dms lrf mar so dist distz pkg bpk dump elc deploy+application/oda oda+application/oebps-package+xml opf+application/ogg ogx+application/omdoc+xml omdoc+application/onenote onetoc onetoc2 onetmp onepkg+application/oxps oxps+# application/parityfec+application/patch-ops-error+xml xer+application/pdf pdf+application/pgp-encrypted pgp+# application/pgp-keys+application/pgp-signature asc sig+application/pics-rules prf+# application/pidf+xml+# application/pidf-diff+xml+application/pkcs10 p10+application/pkcs7-mime p7m p7c+application/pkcs7-signature p7s+application/pkcs8 p8+application/pkix-attr-cert ac+application/pkix-cert cer+application/pkix-crl crl+application/pkix-pkipath pkipath+application/pkixcmp pki+application/pls+xml pls+# application/poc-settings+xml+application/postscript ai eps ps+# application/prs.alvestrand.titrax-sheet+application/prs.cww cww+# application/prs.nprend+# application/prs.plucker+# application/prs.rdf-xml-crypt+# application/prs.xsf+xml+application/pskc+xml pskcxml+# application/qsig+application/rdf+xml rdf+application/reginfo+xml rif+application/relax-ng-compact-syntax rnc+# application/remote-printing+application/resource-lists+xml rl+application/resource-lists-diff+xml rld+# application/riscos+# application/rlmi+xml+application/rls-services+xml rs+application/rpki-ghostbusters gbr+application/rpki-manifest mft+application/rpki-roa roa+# application/rpki-updown+application/rsd+xml rsd+application/rss+xml rss+application/rtf rtf+# application/rtx+# application/samlassertion+xml+# application/samlmetadata+xml+application/sbml+xml sbml+application/scvp-cv-request scq+application/scvp-cv-response scs+application/scvp-vp-request spq+application/scvp-vp-response spp+application/sdp sdp+# application/set-payment+application/set-payment-initiation setpay+# application/set-registration+application/set-registration-initiation setreg+# application/sgml+# application/sgml-open-catalog+application/shf+xml shf+# application/sieve+# application/simple-filter+xml+# application/simple-message-summary+# application/simplesymbolcontainer+# application/slate+# application/smil+application/smil+xml smi smil+# application/soap+fastinfoset+# application/soap+xml+application/sparql-query rq+application/sparql-results+xml srx+# application/spirits-event+xml+application/srgs gram+application/srgs+xml grxml+application/sru+xml sru+application/ssdl+xml ssdl+application/ssml+xml ssml+# application/tamp-apex-update+# application/tamp-apex-update-confirm+# application/tamp-community-update+# application/tamp-community-update-confirm+# application/tamp-error+# application/tamp-sequence-adjust+# application/tamp-sequence-adjust-confirm+# application/tamp-status-query+# application/tamp-status-response+# application/tamp-update+# application/tamp-update-confirm+application/tei+xml tei teicorpus+application/thraud+xml tfi+# application/timestamp-query+# application/timestamp-reply+application/timestamped-data tsd+# application/tve-trigger+# application/ulpfec+# application/vcard+xml+# application/vemmi+# application/vividence.scriptfile+# application/vnd.3gpp.bsf+xml+application/vnd.3gpp.pic-bw-large plb+application/vnd.3gpp.pic-bw-small psb+application/vnd.3gpp.pic-bw-var pvb+# application/vnd.3gpp.sms+# application/vnd.3gpp2.bcmcsinfo+xml+# application/vnd.3gpp2.sms+application/vnd.3gpp2.tcap tcap+application/vnd.3m.post-it-notes pwn+application/vnd.accpac.simply.aso aso+application/vnd.accpac.simply.imp imp+application/vnd.acucobol acu+application/vnd.acucorp atc acutc+application/vnd.adobe.air-application-installer-package+zip air+application/vnd.adobe.formscentral.fcdt fcdt+application/vnd.adobe.fxp fxp fxpl+# application/vnd.adobe.partial-upload+application/vnd.adobe.xdp+xml xdp+application/vnd.adobe.xfdf xfdf+# application/vnd.aether.imp+# application/vnd.ah-barcode+application/vnd.ahead.space ahead+application/vnd.airzip.filesecure.azf azf+application/vnd.airzip.filesecure.azs azs+application/vnd.amazon.ebook azw+application/vnd.americandynamics.acc acc+application/vnd.amiga.ami ami+# application/vnd.amundsen.maze+xml+application/vnd.android.package-archive apk+application/vnd.anser-web-certificate-issue-initiation cii+application/vnd.anser-web-funds-transfer-initiation fti+application/vnd.antix.game-component atx+application/vnd.apple.installer+xml mpkg+application/vnd.apple.mpegurl m3u8+# application/vnd.arastra.swi+application/vnd.aristanetworks.swi swi+application/vnd.astraea-software.iota iota+application/vnd.audiograph aep+# application/vnd.autopackage+# application/vnd.avistar+xml+application/vnd.blueice.multipass mpm+# application/vnd.bluetooth.ep.oob+application/vnd.bmi bmi+application/vnd.businessobjects rep+# application/vnd.cab-jscript+# application/vnd.canon-cpdl+# application/vnd.canon-lips+# application/vnd.cendio.thinlinc.clientconf+application/vnd.chemdraw+xml cdxml+application/vnd.chipnuts.karaoke-mmd mmd+application/vnd.cinderella cdy+# application/vnd.cirpack.isdn-ext+application/vnd.claymore cla+application/vnd.cloanto.rp9 rp9+application/vnd.clonk.c4group c4g c4d c4f c4p c4u+application/vnd.cluetrust.cartomobile-config c11amc+application/vnd.cluetrust.cartomobile-config-pkg c11amz+# application/vnd.collection+json+# application/vnd.commerce-battelle+application/vnd.commonspace csp+application/vnd.contact.cmsg cdbcmsg+application/vnd.cosmocaller cmc+application/vnd.crick.clicker clkx+application/vnd.crick.clicker.keyboard clkk+application/vnd.crick.clicker.palette clkp+application/vnd.crick.clicker.template clkt+application/vnd.crick.clicker.wordbank clkw+application/vnd.criticaltools.wbs+xml wbs+application/vnd.ctc-posml pml+# application/vnd.ctct.ws+xml+# application/vnd.cups-pdf+# application/vnd.cups-postscript+application/vnd.cups-ppd ppd+# application/vnd.cups-raster+# application/vnd.cups-raw+# application/vnd.curl+application/vnd.curl.car car+application/vnd.curl.pcurl pcurl+# application/vnd.cybank+application/vnd.dart dart+application/vnd.data-vision.rdz rdz+application/vnd.dece.data uvf uvvf uvd uvvd+application/vnd.dece.ttml+xml uvt uvvt+application/vnd.dece.unspecified uvx uvvx+application/vnd.dece.zip uvz uvvz+application/vnd.denovo.fcselayout-link fe_launch+# application/vnd.dir-bi.plate-dl-nosuffix+application/vnd.dna dna+application/vnd.dolby.mlp mlp+# application/vnd.dolby.mobile.1+# application/vnd.dolby.mobile.2+application/vnd.dpgraph dpg+application/vnd.dreamfactory dfac+application/vnd.ds-keypoint kpxx+application/vnd.dvb.ait ait+# application/vnd.dvb.dvbj+# application/vnd.dvb.esgcontainer+# application/vnd.dvb.ipdcdftnotifaccess+# application/vnd.dvb.ipdcesgaccess+# application/vnd.dvb.ipdcesgaccess2+# application/vnd.dvb.ipdcesgpdd+# application/vnd.dvb.ipdcroaming+# application/vnd.dvb.iptv.alfec-base+# application/vnd.dvb.iptv.alfec-enhancement+# application/vnd.dvb.notif-aggregate-root+xml+# application/vnd.dvb.notif-container+xml+# application/vnd.dvb.notif-generic+xml+# application/vnd.dvb.notif-ia-msglist+xml+# application/vnd.dvb.notif-ia-registration-request+xml+# application/vnd.dvb.notif-ia-registration-response+xml+# application/vnd.dvb.notif-init+xml+# application/vnd.dvb.pfr+application/vnd.dvb.service svc+# application/vnd.dxr+application/vnd.dynageo geo+# application/vnd.easykaraoke.cdgdownload+# application/vnd.ecdis-update+application/vnd.ecowin.chart mag+# application/vnd.ecowin.filerequest+# application/vnd.ecowin.fileupdate+# application/vnd.ecowin.series+# application/vnd.ecowin.seriesrequest+# application/vnd.ecowin.seriesupdate+# application/vnd.emclient.accessrequest+xml+application/vnd.enliven nml+# application/vnd.eprints.data+xml+application/vnd.epson.esf esf+application/vnd.epson.msf msf+application/vnd.epson.quickanime qam+application/vnd.epson.salt slt+application/vnd.epson.ssf ssf+# application/vnd.ericsson.quickcall+application/vnd.eszigno3+xml es3 et3+# application/vnd.etsi.aoc+xml+# application/vnd.etsi.cug+xml+# application/vnd.etsi.iptvcommand+xml+# application/vnd.etsi.iptvdiscovery+xml+# application/vnd.etsi.iptvprofile+xml+# application/vnd.etsi.iptvsad-bc+xml+# application/vnd.etsi.iptvsad-cod+xml+# application/vnd.etsi.iptvsad-npvr+xml+# application/vnd.etsi.iptvservice+xml+# application/vnd.etsi.iptvsync+xml+# application/vnd.etsi.iptvueprofile+xml+# application/vnd.etsi.mcid+xml+# application/vnd.etsi.overload-control-policy-dataset+xml+# application/vnd.etsi.sci+xml+# application/vnd.etsi.simservs+xml+# application/vnd.etsi.tsl+xml+# application/vnd.etsi.tsl.der+# application/vnd.eudora.data+application/vnd.ezpix-album ez2+application/vnd.ezpix-package ez3+# application/vnd.f-secure.mobile+application/vnd.fdf fdf+application/vnd.fdsn.mseed mseed+application/vnd.fdsn.seed seed dataless+# application/vnd.ffsns+# application/vnd.fints+application/vnd.flographit gph+application/vnd.fluxtime.clip ftc+# application/vnd.font-fontforge-sfd+application/vnd.framemaker fm frame maker book+application/vnd.frogans.fnc fnc+application/vnd.frogans.ltf ltf+application/vnd.fsc.weblaunch fsc+application/vnd.fujitsu.oasys oas+application/vnd.fujitsu.oasys2 oa2+application/vnd.fujitsu.oasys3 oa3+application/vnd.fujitsu.oasysgp fg5+application/vnd.fujitsu.oasysprs bh2+# application/vnd.fujixerox.art-ex+# application/vnd.fujixerox.art4+# application/vnd.fujixerox.hbpl+application/vnd.fujixerox.ddd ddd+application/vnd.fujixerox.docuworks xdw+application/vnd.fujixerox.docuworks.binder xbd+# application/vnd.fut-misnet+application/vnd.fuzzysheet fzs+application/vnd.genomatix.tuxedo txd+# application/vnd.geocube+xml+application/vnd.geogebra.file ggb+application/vnd.geogebra.tool ggt+application/vnd.geometry-explorer gex gre+application/vnd.geonext gxt+application/vnd.geoplan g2w+application/vnd.geospace g3w+# application/vnd.globalplatform.card-content-mgt+# application/vnd.globalplatform.card-content-mgt-response+application/vnd.gmx gmx+application/vnd.google-earth.kml+xml kml+application/vnd.google-earth.kmz kmz+application/vnd.grafeq gqf gqs+# application/vnd.gridmp+application/vnd.groove-account gac+application/vnd.groove-help ghf+application/vnd.groove-identity-message gim+application/vnd.groove-injector grv+application/vnd.groove-tool-message gtm+application/vnd.groove-tool-template tpl+application/vnd.groove-vcard vcg+# application/vnd.hal+json+application/vnd.hal+xml hal+application/vnd.handheld-entertainment+xml zmm+application/vnd.hbci hbci+# application/vnd.hcl-bireports+application/vnd.hhe.lesson-player les+application/vnd.hp-hpgl hpgl+application/vnd.hp-hpid hpid+application/vnd.hp-hps hps+application/vnd.hp-jlyt jlt+application/vnd.hp-pcl pcl+application/vnd.hp-pclxl pclxl+# application/vnd.httphone+application/vnd.hydrostatix.sof-data sfd-hdstx+# application/vnd.hzn-3d-crossword+# application/vnd.ibm.afplinedata+# application/vnd.ibm.electronic-media+application/vnd.ibm.minipay mpy+application/vnd.ibm.modcap afp listafp list3820+application/vnd.ibm.rights-management irm+application/vnd.ibm.secure-container sc+application/vnd.iccprofile icc icm+application/vnd.igloader igl+application/vnd.immervision-ivp ivp+application/vnd.immervision-ivu ivu+# application/vnd.informedcontrol.rms+xml+# application/vnd.informix-visionary+# application/vnd.infotech.project+# application/vnd.infotech.project+xml+# application/vnd.innopath.wamp.notification+application/vnd.insors.igm igm+application/vnd.intercon.formnet xpw xpx+application/vnd.intergeo i2g+# application/vnd.intertrust.digibox+# application/vnd.intertrust.nncp+application/vnd.intu.qbo qbo+application/vnd.intu.qfx qfx+# application/vnd.iptc.g2.conceptitem+xml+# application/vnd.iptc.g2.knowledgeitem+xml+# application/vnd.iptc.g2.newsitem+xml+# application/vnd.iptc.g2.newsmessage+xml+# application/vnd.iptc.g2.packageitem+xml+# application/vnd.iptc.g2.planningitem+xml+application/vnd.ipunplugged.rcprofile rcprofile+application/vnd.irepository.package+xml irp+application/vnd.is-xpr xpr+application/vnd.isac.fcs fcs+application/vnd.jam jam+# application/vnd.japannet-directory-service+# application/vnd.japannet-jpnstore-wakeup+# application/vnd.japannet-payment-wakeup+# application/vnd.japannet-registration+# application/vnd.japannet-registration-wakeup+# application/vnd.japannet-setstore-wakeup+# application/vnd.japannet-verification+# application/vnd.japannet-verification-wakeup+application/vnd.jcp.javame.midlet-rms rms+application/vnd.jisp jisp+application/vnd.joost.joda-archive joda+application/vnd.kahootz ktz ktr+application/vnd.kde.karbon karbon+application/vnd.kde.kchart chrt+application/vnd.kde.kformula kfo+application/vnd.kde.kivio flw+application/vnd.kde.kontour kon+application/vnd.kde.kpresenter kpr kpt+application/vnd.kde.kspread ksp+application/vnd.kde.kword kwd kwt+application/vnd.kenameaapp htke+application/vnd.kidspiration kia+application/vnd.kinar kne knp+application/vnd.koan skp skd skt skm+application/vnd.kodak-descriptor sse+application/vnd.las.las+xml lasxml+# application/vnd.liberty-request+xml+application/vnd.llamagraphics.life-balance.desktop lbd+application/vnd.llamagraphics.life-balance.exchange+xml lbe+application/vnd.lotus-1-2-3 123+application/vnd.lotus-approach apr+application/vnd.lotus-freelance pre+application/vnd.lotus-notes nsf+application/vnd.lotus-organizer org+application/vnd.lotus-screencam scm+application/vnd.lotus-wordpro lwp+application/vnd.macports.portpkg portpkg+# application/vnd.marlin.drm.actiontoken+xml+# application/vnd.marlin.drm.conftoken+xml+# application/vnd.marlin.drm.license+xml+# application/vnd.marlin.drm.mdcf+application/vnd.mcd mcd+application/vnd.medcalcdata mc1+application/vnd.mediastation.cdkey cdkey+# application/vnd.meridian-slingshot+application/vnd.mfer mwf+application/vnd.mfmp mfm+application/vnd.micrografx.flo flo+application/vnd.micrografx.igx igx+application/vnd.mif mif+# application/vnd.minisoft-hp3000-save+# application/vnd.mitsubishi.misty-guard.trustweb+application/vnd.mobius.daf daf+application/vnd.mobius.dis dis+application/vnd.mobius.mbk mbk+application/vnd.mobius.mqy mqy+application/vnd.mobius.msl msl+application/vnd.mobius.plc plc+application/vnd.mobius.txf txf+application/vnd.mophun.application mpn+application/vnd.mophun.certificate mpc+# application/vnd.motorola.flexsuite+# application/vnd.motorola.flexsuite.adsi+# application/vnd.motorola.flexsuite.fis+# application/vnd.motorola.flexsuite.gotap+# application/vnd.motorola.flexsuite.kmr+# application/vnd.motorola.flexsuite.ttc+# application/vnd.motorola.flexsuite.wem+# application/vnd.motorola.iprm+application/vnd.mozilla.xul+xml xul+application/vnd.ms-artgalry cil+# application/vnd.ms-asf+application/vnd.ms-cab-compressed cab+# application/vnd.ms-color.iccprofile+application/vnd.ms-excel xls xlm xla xlc xlt xlw+application/vnd.ms-excel.addin.macroenabled.12 xlam+application/vnd.ms-excel.sheet.binary.macroenabled.12 xlsb+application/vnd.ms-excel.sheet.macroenabled.12 xlsm+application/vnd.ms-excel.template.macroenabled.12 xltm+application/vnd.ms-fontobject eot+application/vnd.ms-htmlhelp chm+application/vnd.ms-ims ims+application/vnd.ms-lrm lrm+# application/vnd.ms-office.activex+xml+application/vnd.ms-officetheme thmx+# application/vnd.ms-opentype+# application/vnd.ms-package.obfuscated-opentype+application/vnd.ms-pki.seccat cat+application/vnd.ms-pki.stl stl+# application/vnd.ms-playready.initiator+xml+application/vnd.ms-powerpoint ppt pps pot+application/vnd.ms-powerpoint.addin.macroenabled.12 ppam+application/vnd.ms-powerpoint.presentation.macroenabled.12 pptm+application/vnd.ms-powerpoint.slide.macroenabled.12 sldm+application/vnd.ms-powerpoint.slideshow.macroenabled.12 ppsm+application/vnd.ms-powerpoint.template.macroenabled.12 potm+# application/vnd.ms-printing.printticket+xml+application/vnd.ms-project mpp mpt+# application/vnd.ms-tnef+# application/vnd.ms-wmdrm.lic-chlg-req+# application/vnd.ms-wmdrm.lic-resp+# application/vnd.ms-wmdrm.meter-chlg-req+# application/vnd.ms-wmdrm.meter-resp+application/vnd.ms-word.document.macroenabled.12 docm+application/vnd.ms-word.template.macroenabled.12 dotm+application/vnd.ms-works wps wks wcm wdb+application/vnd.ms-wpl wpl+application/vnd.ms-xpsdocument xps+application/vnd.mseq mseq+# application/vnd.msign+# application/vnd.multiad.creator+# application/vnd.multiad.creator.cif+# application/vnd.music-niff+application/vnd.musician mus+application/vnd.muvee.style msty+application/vnd.mynfc taglet+# application/vnd.ncd.control+# application/vnd.ncd.reference+# application/vnd.nervana+# application/vnd.netfpx+application/vnd.neurolanguage.nlu nlu+application/vnd.nitf ntf nitf+application/vnd.noblenet-directory nnd+application/vnd.noblenet-sealer nns+application/vnd.noblenet-web nnw+# application/vnd.nokia.catalogs+# application/vnd.nokia.conml+wbxml+# application/vnd.nokia.conml+xml+# application/vnd.nokia.isds-radio-presets+# application/vnd.nokia.iptv.config+xml+# application/vnd.nokia.landmark+wbxml+# application/vnd.nokia.landmark+xml+# application/vnd.nokia.landmarkcollection+xml+# application/vnd.nokia.n-gage.ac+xml+application/vnd.nokia.n-gage.data ngdat+application/vnd.nokia.n-gage.symbian.install n-gage+# application/vnd.nokia.ncd+# application/vnd.nokia.pcd+wbxml+# application/vnd.nokia.pcd+xml+application/vnd.nokia.radio-preset rpst+application/vnd.nokia.radio-presets rpss+application/vnd.novadigm.edm edm+application/vnd.novadigm.edx edx+application/vnd.novadigm.ext ext+# application/vnd.ntt-local.file-transfer+# application/vnd.ntt-local.sip-ta_remote+# application/vnd.ntt-local.sip-ta_tcp_stream+application/vnd.oasis.opendocument.chart odc+application/vnd.oasis.opendocument.chart-template otc+application/vnd.oasis.opendocument.database odb+application/vnd.oasis.opendocument.formula odf+application/vnd.oasis.opendocument.formula-template odft+application/vnd.oasis.opendocument.graphics odg+application/vnd.oasis.opendocument.graphics-template otg+application/vnd.oasis.opendocument.image odi+application/vnd.oasis.opendocument.image-template oti+application/vnd.oasis.opendocument.presentation odp+application/vnd.oasis.opendocument.presentation-template otp+application/vnd.oasis.opendocument.spreadsheet ods+application/vnd.oasis.opendocument.spreadsheet-template ots+application/vnd.oasis.opendocument.text odt+application/vnd.oasis.opendocument.text-master odm+application/vnd.oasis.opendocument.text-template ott+application/vnd.oasis.opendocument.text-web oth+# application/vnd.obn+# application/vnd.oftn.l10n+json+# application/vnd.oipf.contentaccessdownload+xml+# application/vnd.oipf.contentaccessstreaming+xml+# application/vnd.oipf.cspg-hexbinary+# application/vnd.oipf.dae.svg+xml+# application/vnd.oipf.dae.xhtml+xml+# application/vnd.oipf.mippvcontrolmessage+xml+# application/vnd.oipf.pae.gem+# application/vnd.oipf.spdiscovery+xml+# application/vnd.oipf.spdlist+xml+# application/vnd.oipf.ueprofile+xml+# application/vnd.oipf.userprofile+xml+application/vnd.olpc-sugar xo+# application/vnd.oma-scws-config+# application/vnd.oma-scws-http-request+# application/vnd.oma-scws-http-response+# application/vnd.oma.bcast.associated-procedure-parameter+xml+# application/vnd.oma.bcast.drm-trigger+xml+# application/vnd.oma.bcast.imd+xml+# application/vnd.oma.bcast.ltkm+# application/vnd.oma.bcast.notification+xml+# application/vnd.oma.bcast.provisioningtrigger+# application/vnd.oma.bcast.sgboot+# application/vnd.oma.bcast.sgdd+xml+# application/vnd.oma.bcast.sgdu+# application/vnd.oma.bcast.simple-symbol-container+# application/vnd.oma.bcast.smartcard-trigger+xml+# application/vnd.oma.bcast.sprov+xml+# application/vnd.oma.bcast.stkm+# application/vnd.oma.cab-address-book+xml+# application/vnd.oma.cab-feature-handler+xml+# application/vnd.oma.cab-pcc+xml+# application/vnd.oma.cab-user-prefs+xml+# application/vnd.oma.dcd+# application/vnd.oma.dcdc+application/vnd.oma.dd2+xml dd2+# application/vnd.oma.drm.risd+xml+# application/vnd.oma.group-usage-list+xml+# application/vnd.oma.pal+xml+# application/vnd.oma.poc.detailed-progress-report+xml+# application/vnd.oma.poc.final-report+xml+# application/vnd.oma.poc.groups+xml+# application/vnd.oma.poc.invocation-descriptor+xml+# application/vnd.oma.poc.optimized-progress-report+xml+# application/vnd.oma.push+# application/vnd.oma.scidm.messages+xml+# application/vnd.oma.xcap-directory+xml+# application/vnd.omads-email+xml+# application/vnd.omads-file+xml+# application/vnd.omads-folder+xml+# application/vnd.omaloc-supl-init+application/vnd.openofficeorg.extension oxt+# application/vnd.openxmlformats-officedocument.custom-properties+xml+# application/vnd.openxmlformats-officedocument.customxmlproperties+xml+# application/vnd.openxmlformats-officedocument.drawing+xml+# application/vnd.openxmlformats-officedocument.drawingml.chart+xml+# application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml+# application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml+# application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml+# application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml+# application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml+# application/vnd.openxmlformats-officedocument.extended-properties+xml+# application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml+# application/vnd.openxmlformats-officedocument.presentationml.comments+xml+# application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml+# application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml+# application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml+application/vnd.openxmlformats-officedocument.presentationml.presentation pptx+# application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml+# application/vnd.openxmlformats-officedocument.presentationml.presprops+xml+application/vnd.openxmlformats-officedocument.presentationml.slide sldx+# application/vnd.openxmlformats-officedocument.presentationml.slide+xml+# application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml+# application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml+application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx+# application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml+# application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml+# application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml+# application/vnd.openxmlformats-officedocument.presentationml.tags+xml+application/vnd.openxmlformats-officedocument.presentationml.template potx+# application/vnd.openxmlformats-officedocument.presentationml.template.main+xml+# application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml+application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx+# application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml+application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx+# application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml+# application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml+# application/vnd.openxmlformats-officedocument.theme+xml+# application/vnd.openxmlformats-officedocument.themeoverride+xml+# application/vnd.openxmlformats-officedocument.vmldrawing+# application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml+application/vnd.openxmlformats-officedocument.wordprocessingml.document docx+# application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml+application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx+# application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml+# application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml+# application/vnd.openxmlformats-package.core-properties+xml+# application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml+# application/vnd.openxmlformats-package.relationships+xml+# application/vnd.quobject-quoxdocument+# application/vnd.osa.netdeploy+application/vnd.osgeo.mapguide.package mgp+# application/vnd.osgi.bundle+application/vnd.osgi.dp dp+application/vnd.osgi.subsystem esa+# application/vnd.otps.ct-kip+xml+application/vnd.palm pdb pqa oprc+# application/vnd.paos.xml+application/vnd.pawaafile paw+application/vnd.pg.format str+application/vnd.pg.osasli ei6+# application/vnd.piaccess.application-licence+application/vnd.picsel efif+application/vnd.pmi.widget wg+# application/vnd.poc.group-advertisement+xml+application/vnd.pocketlearn plf+application/vnd.powerbuilder6 pbd+# application/vnd.powerbuilder6-s+# application/vnd.powerbuilder7+# application/vnd.powerbuilder7-s+# application/vnd.powerbuilder75+# application/vnd.powerbuilder75-s+# application/vnd.preminet+application/vnd.previewsystems.box box+application/vnd.proteus.magazine mgz+application/vnd.publishare-delta-tree qps+application/vnd.pvi.ptid1 ptid+# application/vnd.pwg-multiplexed+# application/vnd.pwg-xhtml-print+xml+# application/vnd.qualcomm.brew-app-res+application/vnd.quark.quarkxpress qxd qxt qwd qwt qxl qxb+# application/vnd.radisys.moml+xml+# application/vnd.radisys.msml+xml+# application/vnd.radisys.msml-audit+xml+# application/vnd.radisys.msml-audit-conf+xml+# application/vnd.radisys.msml-audit-conn+xml+# application/vnd.radisys.msml-audit-dialog+xml+# application/vnd.radisys.msml-audit-stream+xml+# application/vnd.radisys.msml-conf+xml+# application/vnd.radisys.msml-dialog+xml+# application/vnd.radisys.msml-dialog-base+xml+# application/vnd.radisys.msml-dialog-fax-detect+xml+# application/vnd.radisys.msml-dialog-fax-sendrecv+xml+# application/vnd.radisys.msml-dialog-group+xml+# application/vnd.radisys.msml-dialog-speech+xml+# application/vnd.radisys.msml-dialog-transform+xml+# application/vnd.rainstor.data+# application/vnd.rapid+application/vnd.realvnc.bed bed+application/vnd.recordare.musicxml mxl+application/vnd.recordare.musicxml+xml musicxml+# application/vnd.renlearn.rlprint+application/vnd.rig.cryptonote cryptonote+application/vnd.rim.cod cod+application/vnd.rn-realmedia rm+application/vnd.rn-realmedia-vbr rmvb+application/vnd.route66.link66+xml link66+# application/vnd.rs-274x+# application/vnd.ruckus.download+# application/vnd.s3sms+application/vnd.sailingtracker.track st+# application/vnd.sbm.cid+# application/vnd.sbm.mid2+# application/vnd.scribus+# application/vnd.sealed.3df+# application/vnd.sealed.csf+# application/vnd.sealed.doc+# application/vnd.sealed.eml+# application/vnd.sealed.mht+# application/vnd.sealed.net+# application/vnd.sealed.ppt+# application/vnd.sealed.tiff+# application/vnd.sealed.xls+# application/vnd.sealedmedia.softseal.html+# application/vnd.sealedmedia.softseal.pdf+application/vnd.seemail see+application/vnd.sema sema+application/vnd.semd semd+application/vnd.semf semf+application/vnd.shana.informed.formdata ifm+application/vnd.shana.informed.formtemplate itp+application/vnd.shana.informed.interchange iif+application/vnd.shana.informed.package ipk+application/vnd.simtech-mindmapper twd twds+application/vnd.smaf mmf+# application/vnd.smart.notebook+application/vnd.smart.teacher teacher+# application/vnd.software602.filler.form+xml+# application/vnd.software602.filler.form-xml-zip+application/vnd.solent.sdkm+xml sdkm sdkd+application/vnd.spotfire.dxp dxp+application/vnd.spotfire.sfs sfs+# application/vnd.sss-cod+# application/vnd.sss-dtf+# application/vnd.sss-ntf+application/vnd.stardivision.calc sdc+application/vnd.stardivision.draw sda+application/vnd.stardivision.impress sdd+application/vnd.stardivision.math smf+application/vnd.stardivision.writer sdw vor+application/vnd.stardivision.writer-global sgl+application/vnd.stepmania.package smzip+application/vnd.stepmania.stepchart sm+# application/vnd.street-stream+application/vnd.sun.xml.calc sxc+application/vnd.sun.xml.calc.template stc+application/vnd.sun.xml.draw sxd+application/vnd.sun.xml.draw.template std+application/vnd.sun.xml.impress sxi+application/vnd.sun.xml.impress.template sti+application/vnd.sun.xml.math sxm+application/vnd.sun.xml.writer sxw+application/vnd.sun.xml.writer.global sxg+application/vnd.sun.xml.writer.template stw+# application/vnd.sun.wadl+xml+application/vnd.sus-calendar sus susp+application/vnd.svd svd+# application/vnd.swiftview-ics+application/vnd.symbian.install sis sisx+application/vnd.syncml+xml xsm+application/vnd.syncml.dm+wbxml bdm+application/vnd.syncml.dm+xml xdm+# application/vnd.syncml.dm.notification+# application/vnd.syncml.ds.notification+application/vnd.tao.intent-module-archive tao+application/vnd.tcpdump.pcap pcap cap dmp+application/vnd.tmobile-livetv tmo+application/vnd.trid.tpt tpt+application/vnd.triscape.mxs mxs+application/vnd.trueapp tra+# application/vnd.truedoc+# application/vnd.ubisoft.webplayer+application/vnd.ufdl ufd ufdl+application/vnd.uiq.theme utz+application/vnd.umajin umj+application/vnd.unity unityweb+application/vnd.uoml+xml uoml+# application/vnd.uplanet.alert+# application/vnd.uplanet.alert-wbxml+# application/vnd.uplanet.bearer-choice+# application/vnd.uplanet.bearer-choice-wbxml+# application/vnd.uplanet.cacheop+# application/vnd.uplanet.cacheop-wbxml+# application/vnd.uplanet.channel+# application/vnd.uplanet.channel-wbxml+# application/vnd.uplanet.list+# application/vnd.uplanet.list-wbxml+# application/vnd.uplanet.listcmd+# application/vnd.uplanet.listcmd-wbxml+# application/vnd.uplanet.signal+application/vnd.vcx vcx+# application/vnd.vd-study+# application/vnd.vectorworks+# application/vnd.verimatrix.vcas+# application/vnd.vidsoft.vidconference+application/vnd.visio vsd vst vss vsw+application/vnd.visionary vis+# application/vnd.vividence.scriptfile+application/vnd.vsf vsf+# application/vnd.wap.sic+# application/vnd.wap.slc+application/vnd.wap.wbxml wbxml+application/vnd.wap.wmlc wmlc+application/vnd.wap.wmlscriptc wmlsc+application/vnd.webturbo wtb+# application/vnd.wfa.wsc+# application/vnd.wmc+# application/vnd.wmf.bootstrap+# application/vnd.wolfram.mathematica+# application/vnd.wolfram.mathematica.package+application/vnd.wolfram.player nbp+application/vnd.wordperfect wpd+application/vnd.wqd wqd+# application/vnd.wrq-hp3000-labelled+application/vnd.wt.stf stf+# application/vnd.wv.csp+wbxml+# application/vnd.wv.csp+xml+# application/vnd.wv.ssp+xml+application/vnd.xara xar+application/vnd.xfdl xfdl+# application/vnd.xfdl.webform+# application/vnd.xmi+xml+# application/vnd.xmpie.cpkg+# application/vnd.xmpie.dpkg+# application/vnd.xmpie.plan+# application/vnd.xmpie.ppkg+# application/vnd.xmpie.xlim+application/vnd.yamaha.hv-dic hvd+application/vnd.yamaha.hv-script hvs+application/vnd.yamaha.hv-voice hvp+application/vnd.yamaha.openscoreformat osf+application/vnd.yamaha.openscoreformat.osfpvg+xml osfpvg+# application/vnd.yamaha.remote-setup+application/vnd.yamaha.smaf-audio saf+application/vnd.yamaha.smaf-phrase spf+# application/vnd.yamaha.through-ngn+# application/vnd.yamaha.tunnel-udpencap+application/vnd.yellowriver-custom-menu cmp+application/vnd.zul zir zirz+application/vnd.zzazz.deck+xml zaz+application/voicexml+xml vxml+# application/vq-rtcpxr+# application/watcherinfo+xml+# application/whoispp-query+# application/whoispp-response+application/widget wgt+application/winhlp hlp+# application/wita+# application/wordperfect5.1+application/wsdl+xml wsdl+application/wspolicy+xml wspolicy+application/x-7z-compressed 7z+application/x-abiword abw+application/x-ace-compressed ace+# application/x-amf+application/x-apple-diskimage dmg+application/x-authorware-bin aab x32 u32 vox+application/x-authorware-map aam+application/x-authorware-seg aas+application/x-bcpio bcpio+application/x-bittorrent torrent+application/x-blorb blb blorb+application/x-bzip bz+application/x-bzip2 bz2 boz+application/x-cbr cbr cba cbt cbz cb7+application/x-cdlink vcd+application/x-cfs-compressed cfs+application/x-chat chat+application/x-chess-pgn pgn+application/x-conference nsc+# application/x-compress+application/x-cpio cpio+application/x-csh csh+application/x-debian-package deb udeb+application/x-dgc-compressed dgc+application/x-director dir dcr dxr cst cct cxt w3d fgd swa+application/x-doom wad+application/x-dtbncx+xml ncx+application/x-dtbook+xml dtb+application/x-dtbresource+xml res+application/x-dvi dvi+application/x-envoy evy+application/x-eva eva+application/x-font-bdf bdf+# application/x-font-dos+# application/x-font-framemaker+application/x-font-ghostscript gsf+# application/x-font-libgrx+application/x-font-linux-psf psf+application/x-font-otf otf+application/x-font-pcf pcf+application/x-font-snf snf+# application/x-font-speedo+# application/x-font-sunos-news+application/x-font-ttf ttf ttc+application/x-font-type1 pfa pfb pfm afm+application/x-font-woff woff+# application/x-font-vfont+application/x-freearc arc+application/x-futuresplash spl+application/x-gca-compressed gca+application/x-glulx ulx+application/x-gnumeric gnumeric+application/x-gramps-xml gramps+application/x-gtar gtar+# application/x-gzip+application/x-hdf hdf+application/x-install-instructions install+application/x-iso9660-image iso+application/x-java-jnlp-file jnlp+application/x-latex latex+application/x-lzh-compressed lzh lha+application/x-mie mie+application/x-mobipocket-ebook prc mobi+application/x-ms-application application+application/x-ms-shortcut lnk+application/x-ms-wmd wmd+application/x-ms-wmz wmz+application/x-ms-xbap xbap+application/x-msaccess mdb+application/x-msbinder obd+application/x-mscardfile crd+application/x-msclip clp+application/x-msdownload exe dll com bat msi+application/x-msmediaview mvb m13 m14+application/x-msmetafile wmf wmz emf emz+application/x-msmoney mny+application/x-mspublisher pub+application/x-msschedule scd+application/x-msterminal trm+application/x-mswrite wri+application/x-netcdf nc cdf+application/x-nzb nzb+application/x-pkcs12 p12 pfx+application/x-pkcs7-certificates p7b spc+application/x-pkcs7-certreqresp p7r+application/x-rar-compressed rar+application/x-research-info-systems ris+application/x-sh sh+application/x-shar shar+application/x-shockwave-flash swf+application/x-silverlight-app xap+application/x-sql sql+application/x-stuffit sit+application/x-stuffitx sitx+application/x-subrip srt+application/x-sv4cpio sv4cpio+application/x-sv4crc sv4crc+application/x-t3vm-image t3+application/x-tads gam+application/x-tar tar+application/x-tcl tcl+application/x-tex tex+application/x-tex-tfm tfm+application/x-texinfo texinfo texi+application/x-tgif obj+application/x-ustar ustar+application/x-wais-source src+application/x-x509-ca-cert der crt+application/x-xfig fig+application/x-xliff+xml xlf+application/x-xpinstall xpi+application/x-xz xz+application/x-zmachine z1 z2 z3 z4 z5 z6 z7 z8+# application/x400-bp+application/xaml+xml xaml+# application/xcap-att+xml+# application/xcap-caps+xml+application/xcap-diff+xml xdf+# application/xcap-el+xml+# application/xcap-error+xml+# application/xcap-ns+xml+# application/xcon-conference-info-diff+xml+# application/xcon-conference-info+xml+application/xenc+xml xenc+application/xhtml+xml xhtml xht+# application/xhtml-voice+xml+application/xml xml xsl+application/xml-dtd dtd+# application/xml-external-parsed-entity+# application/xmpp+xml+application/xop+xml xop+application/xproc+xml xpl+application/xslt+xml xslt+application/xspf+xml xspf+application/xv+xml mxml xhvml xvml xvm+application/yang yang+application/yin+xml yin+application/zip zip+# audio/1d-interleaved-parityfec+# audio/32kadpcm+# audio/3gpp+# audio/3gpp2+# audio/ac3+audio/adpcm adp+# audio/amr+# audio/amr-wb+# audio/amr-wb++# audio/asc+# audio/atrac-advanced-lossless+# audio/atrac-x+# audio/atrac3+audio/basic au snd+# audio/bv16+# audio/bv32+# audio/clearmode+# audio/cn+# audio/dat12+# audio/dls+# audio/dsr-es201108+# audio/dsr-es202050+# audio/dsr-es202211+# audio/dsr-es202212+# audio/dv+# audio/dvi4+# audio/eac3+# audio/evrc+# audio/evrc-qcp+# audio/evrc0+# audio/evrc1+# audio/evrcb+# audio/evrcb0+# audio/evrcb1+# audio/evrcwb+# audio/evrcwb0+# audio/evrcwb1+# audio/example+# audio/fwdred+# audio/g719+# audio/g722+# audio/g7221+# audio/g723+# audio/g726-16+# audio/g726-24+# audio/g726-32+# audio/g726-40+# audio/g728+# audio/g729+# audio/g7291+# audio/g729d+# audio/g729e+# audio/gsm+# audio/gsm-efr+# audio/gsm-hr-08+# audio/ilbc+# audio/ip-mr_v2.5+# audio/isac+# audio/l16+# audio/l20+# audio/l24+# audio/l8+# audio/lpc+audio/midi mid midi kar rmi+# audio/mobile-xmf+audio/mp4 mp4a+# audio/mp4a-latm+# audio/mpa+# audio/mpa-robust+audio/mpeg mpga mp2 mp2a mp3 m2a m3a+# audio/mpeg4-generic+# audio/musepack+audio/ogg oga ogg spx+# audio/opus+# audio/parityfec+# audio/pcma+# audio/pcma-wb+# audio/pcmu-wb+# audio/pcmu+# audio/prs.sid+# audio/qcelp+# audio/red+# audio/rtp-enc-aescm128+# audio/rtp-midi+# audio/rtx+audio/s3m s3m+audio/silk sil+# audio/smv+# audio/smv0+# audio/smv-qcp+# audio/sp-midi+# audio/speex+# audio/t140c+# audio/t38+# audio/telephone-event+# audio/tone+# audio/uemclip+# audio/ulpfec+# audio/vdvi+# audio/vmr-wb+# audio/vnd.3gpp.iufp+# audio/vnd.4sb+# audio/vnd.audiokoz+# audio/vnd.celp+# audio/vnd.cisco.nse+# audio/vnd.cmles.radio-events+# audio/vnd.cns.anp1+# audio/vnd.cns.inf1+audio/vnd.dece.audio uva uvva+audio/vnd.digital-winds eol+# audio/vnd.dlna.adts+# audio/vnd.dolby.heaac.1+# audio/vnd.dolby.heaac.2+# audio/vnd.dolby.mlp+# audio/vnd.dolby.mps+# audio/vnd.dolby.pl2+# audio/vnd.dolby.pl2x+# audio/vnd.dolby.pl2z+# audio/vnd.dolby.pulse.1+audio/vnd.dra dra+audio/vnd.dts dts+audio/vnd.dts.hd dtshd+# audio/vnd.dvb.file+# audio/vnd.everad.plj+# audio/vnd.hns.audio+audio/vnd.lucent.voice lvp+audio/vnd.ms-playready.media.pya pya+# audio/vnd.nokia.mobile-xmf+# audio/vnd.nortel.vbk+audio/vnd.nuera.ecelp4800 ecelp4800+audio/vnd.nuera.ecelp7470 ecelp7470+audio/vnd.nuera.ecelp9600 ecelp9600+# audio/vnd.octel.sbc+# audio/vnd.qcelp+# audio/vnd.rhetorex.32kadpcm+audio/vnd.rip rip+# audio/vnd.sealedmedia.softseal.mpeg+# audio/vnd.vmx.cvsd+# audio/vorbis+# audio/vorbis-config+audio/webm weba+audio/x-aac aac+audio/x-aiff aif aiff aifc+audio/x-caf caf+audio/x-flac flac+audio/x-matroska mka+audio/x-mpegurl m3u+audio/x-ms-wax wax+audio/x-ms-wma wma+audio/x-pn-realaudio ram ra+audio/x-pn-realaudio-plugin rmp+# audio/x-tta+audio/x-wav wav+audio/xm xm+chemical/x-cdx cdx+chemical/x-cif cif+chemical/x-cmdf cmdf+chemical/x-cml cml+chemical/x-csml csml+# chemical/x-pdb+chemical/x-xyz xyz+image/bmp bmp+image/cgm cgm+# image/example+# image/fits+image/g3fax g3+image/gif gif+image/ief ief+# image/jp2+image/jpeg jpeg jpg jpe+# image/jpm+# image/jpx+image/ktx ktx+# image/naplps+image/png png+image/prs.btif btif+# image/prs.pti+image/sgi sgi+image/svg+xml svg svgz+# image/t38+image/tiff tiff tif+# image/tiff-fx+image/vnd.adobe.photoshop psd+# image/vnd.cns.inf2+image/vnd.dece.graphic uvi uvvi uvg uvvg+image/vnd.dvb.subtitle sub+image/vnd.djvu djvu djv+image/vnd.dwg dwg+image/vnd.dxf dxf+image/vnd.fastbidsheet fbs+image/vnd.fpx fpx+image/vnd.fst fst+image/vnd.fujixerox.edmics-mmr mmr+image/vnd.fujixerox.edmics-rlc rlc+# image/vnd.globalgraphics.pgb+# image/vnd.microsoft.icon+# image/vnd.mix+image/vnd.ms-modi mdi+image/vnd.ms-photo wdp+image/vnd.net-fpx npx+# image/vnd.radiance+# image/vnd.sealed.png+# image/vnd.sealedmedia.softseal.gif+# image/vnd.sealedmedia.softseal.jpg+# image/vnd.svf+image/vnd.wap.wbmp wbmp+image/vnd.xiff xif+image/webp webp+image/x-3ds 3ds+image/x-cmu-raster ras+image/x-cmx cmx+image/x-freehand fh fhc fh4 fh5 fh7+image/x-icon ico+image/x-mrsid-image sid+image/x-pcx pcx+image/x-pict pic pct+image/x-portable-anymap pnm+image/x-portable-bitmap pbm+image/x-portable-graymap pgm+image/x-portable-pixmap ppm+image/x-rgb rgb+image/x-tga tga+image/x-xbitmap xbm+image/x-xpixmap xpm+image/x-xwindowdump xwd+# message/cpim+# message/delivery-status+# message/disposition-notification+# message/example+# message/external-body+# message/feedback-report+# message/global+# message/global-delivery-status+# message/global-disposition-notification+# message/global-headers+# message/http+# message/imdn+xml+# message/news+# message/partial+message/rfc822 eml mime+# message/s-http+# message/sip+# message/sipfrag+# message/tracking-status+# message/vnd.si.simp+# model/example+model/iges igs iges+model/mesh msh mesh silo+model/vnd.collada+xml dae+model/vnd.dwf dwf+# model/vnd.flatland.3dml+model/vnd.gdl gdl+# model/vnd.gs-gdl+# model/vnd.gs.gdl+model/vnd.gtw gtw+# model/vnd.moml+xml+model/vnd.mts mts+# model/vnd.parasolid.transmit.binary+# model/vnd.parasolid.transmit.text+model/vnd.vtu vtu+model/vrml wrl vrml+model/x3d+binary x3db x3dbz+model/x3d+vrml x3dv x3dvz+model/x3d+xml x3d x3dz+# multipart/alternative+# multipart/appledouble+# multipart/byteranges+# multipart/digest+# multipart/encrypted+# multipart/example+# multipart/form-data+# multipart/header-set+# multipart/mixed+# multipart/parallel+# multipart/related+# multipart/report+# multipart/signed+# multipart/voice-message+# text/1d-interleaved-parityfec+text/cache-manifest appcache+text/calendar ics ifb+text/css css+text/csv csv+# text/directory+# text/dns+# text/ecmascript+# text/enriched+# text/example+# text/fwdred+text/html html htm+# text/javascript+text/n3 n3+# text/parityfec+text/plain txt text conf def list log in+# text/prs.fallenstein.rst+text/prs.lines.tag dsc+# text/vnd.radisys.msml-basic-layout+# text/red+# text/rfc822-headers+text/richtext rtx+# text/rtf+# text/rtp-enc-aescm128+# text/rtx+text/sgml sgml sgm+# text/t140+text/tab-separated-values tsv+text/troff t tr roff man me ms+text/turtle ttl+# text/ulpfec+text/uri-list uri uris urls+text/vcard vcard+# text/vnd.abc+text/vnd.curl curl+text/vnd.curl.dcurl dcurl+text/vnd.curl.scurl scurl+text/vnd.curl.mcurl mcurl+# text/vnd.dmclientscript+text/vnd.dvb.subtitle sub+# text/vnd.esmertec.theme-descriptor+text/vnd.fly fly+text/vnd.fmi.flexstor flx+text/vnd.graphviz gv+text/vnd.in3d.3dml 3dml+text/vnd.in3d.spot spot+# text/vnd.iptc.newsml+# text/vnd.iptc.nitf+# text/vnd.latex-z+# text/vnd.motorola.reflex+# text/vnd.ms-mediapackage+# text/vnd.net2phone.commcenter.command+# text/vnd.si.uricatalogue+text/vnd.sun.j2me.app-descriptor jad+# text/vnd.trolltech.linguist+# text/vnd.wap.si+# text/vnd.wap.sl+text/vnd.wap.wml wml+text/vnd.wap.wmlscript wmls+text/x-asm s asm+text/x-c c cc cxx cpp h hh dic+text/x-fortran f for f77 f90+text/x-java-source java+text/x-opml opml+text/x-pascal p pas+text/x-nfo nfo+text/x-setext etx+text/x-sfv sfv+text/x-uuencode uu+text/x-vcalendar vcs+text/x-vcard vcf+# text/xml+# text/xml-external-parsed-entity+# video/1d-interleaved-parityfec+video/3gpp 3gp+# video/3gpp-tt+video/3gpp2 3g2+# video/bmpeg+# video/bt656+# video/celb+# video/dv+# video/example+video/h261 h261+video/h263 h263+# video/h263-1998+# video/h263-2000+video/h264 h264+# video/h264-rcdo+# video/h264-svc+video/jpeg jpgv+# video/jpeg2000+video/jpm jpm jpgm+video/mj2 mj2 mjp2+# video/mp1s+# video/mp2p+# video/mp2t+video/mp4 mp4 mp4v mpg4+# video/mp4v-es+video/mpeg mpeg mpg mpe m1v m2v+# video/mpeg4-generic+# video/mpv+# video/nv+video/ogg ogv+# video/parityfec+# video/pointer+video/quicktime qt mov+# video/raw+# video/rtp-enc-aescm128+# video/rtx+# video/smpte292m+# video/ulpfec+# video/vc1+# video/vnd.cctv+video/vnd.dece.hd uvh uvvh+video/vnd.dece.mobile uvm uvvm+# video/vnd.dece.mp4+video/vnd.dece.pd uvp uvvp+video/vnd.dece.sd uvs uvvs+video/vnd.dece.video uvv uvvv+# video/vnd.directv.mpeg+# video/vnd.directv.mpeg-tts+# video/vnd.dlna.mpeg-tts+video/vnd.dvb.file dvb+video/vnd.fvt fvt+# video/vnd.hns.video+# video/vnd.iptvforum.1dparityfec-1010+# video/vnd.iptvforum.1dparityfec-2005+# video/vnd.iptvforum.2dparityfec-1010+# video/vnd.iptvforum.2dparityfec-2005+# video/vnd.iptvforum.ttsavc+# video/vnd.iptvforum.ttsmpeg2+# video/vnd.motorola.video+# video/vnd.motorola.videop+video/vnd.mpegurl mxu m4u+video/vnd.ms-playready.media.pyv pyv+# video/vnd.nokia.interleaved-multimedia+# video/vnd.nokia.videovoip+# video/vnd.objectvideo+# video/vnd.sealed.mpeg1+# video/vnd.sealed.mpeg4+# video/vnd.sealed.swf+# video/vnd.sealedmedia.softseal.mov+video/vnd.uvvu.mp4 uvu uvvu+video/vnd.vivo viv+video/webm webm+video/x-f4v f4v+video/x-fli fli+video/x-flv flv+video/x-m4v m4v+video/x-matroska mkv mk3d mks+video/x-mng mng+video/x-ms-asf asf asx+video/x-ms-vob vob+video/x-ms-wm wm+video/x-ms-wmv wmv+video/x-ms-wmx wmx+video/x-ms-wvx wvx+video/x-msvideo avi+video/x-sgi-movie movie+video/x-smv smv+x-conference/x-cooltalk ice++|]
src/maid.hs view
@@ -1,12 +1,11 @@-{-# LANGUAGE NamedFieldPuns, QuasiQuotes, OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TupleSections #-} import System.Environment (getArgs) import Air.Env hiding (div, log, head, def)-- import Air.TH-import Air.Extra (b2u, strip) import Prelude () import Data.Default (def)@@ -17,89 +16,80 @@ import Hack2.Contrib.Middleware.UserMime import Hack2.Contrib.Middleware.Cascade import Hack2.Contrib.Middleware.XForwardedForToRemoteHost-import qualified Hack2 as Hack2---- import Hack.Contrib.Mime--- import Data.Map (toAscList) import Hack2.Contrib.Utils (use, unescape_uri) import Hack2.Contrib.Response (set_content_type, set_body_bytestring) import Hack2.Contrib.Request (path) import Hack2 hiding (body)-import System.Posix.Files+import System.Posix.Files (getFileStatus, isDirectory) import Data.List (isInfixOf, sort, (\\)) import Text.HTML.Moe2 hiding ((/), select, br) import Control.Monad ((>=>))-import System.Process import System.Directory (doesFileExist, getDirectoryContents, doesDirectoryExist)-import Control.Arrow ((&&&)) import qualified Data.ByteString.Char8 as B+import Data.Maybe (fromMaybe, catMaybes) --- import qualified Hack2.Handler.Mongrel2HTTP as Mongrel2--- import Hack2.Handler.Warp import Hack2.Handler.SnapServer----- test_handler = Mongrel2.Handler--- {--- Mongrel2.handlerPullFrom = "tcp://127.0.0.1:6666"--- , Mongrel2.handlerPublishTo = "tcp://127.0.0.1:6667"--- , Mongrel2.handlerId = Just "bcc1453e-9cc0-11e0-af11-6cf049b16ec3"--- }-+import qualified Data.Text as T+import qualified Data.Text.Encoding as E+import qualified Data.Text.IO as TextIO+import Web.Maid.ApacheMimeTypes (apache_mime_types) +b2u :: String -> String+b2u = B.pack > E.decodeUtf8 > T.unpack +strip :: String -> String+strip = T.pack > T.strip > T.unpack main :: IO () main = do args <- getArgs- let { port = + let { _port = if length args == (0 :: Int) then 3000- else read - first args+ else read - first args .fromMaybe "" }- + let { app = dir_serve - \env -> do let static_app = static (Just ".") [""] (const - return not_found)- + r <- static_app env- if r.status == 200- then do- _content_type <- readProcess "file" ["-b", "--mime", "." + env.pathInfo.B.unpack.unescape_uri] ""- -- putStrLn _content_type- return - r.set_content_type (_content_type.strip.B.pack)- else- return r ++ --if r.status == 200+ -- then do+ -- _content_type <- readProcess "file" ["-b", "--mime", "." + env.pathInfo.B.unpack.unescape_uri] ""+ -- -- putStrLn _content_type+ -- return - r.set_content_type (_content_type.strip.B.pack)+ -- else+ -- return r++ return r } maid_mime_exist <- doesFileExist "mime.types"- - mime_types <- if maid_mime_exist then B.readFile "mime.types" else return default_mime_types- - let version = "2011.10.12"- -- moe = "Moe MAX"- + mime_types <- if maid_mime_exist then TextIO.readFile "mime.types" else return default_mime_types+++ let version = "2013.9.13" br = puts ""- + br- + puts - " ❂ Maid Version: " + version br- + puts - " Usage: maid port" puts - " Example: maid 3000" br- - puts - " Serving on port: " ++ show port++ puts - " Serving on port: " ++ show _port br- - let maid_app = use (middleware_stack - B.unpack mime_types) app- -- Mongrel2.runWithConfig def { Mongrel2.handler = test_handler } maid_app- - runWithConfig def {port} - maid_app- ++ let maid_app = use (middleware_stack mime_types) app+ runWithConfig def {port = _port} - maid_app+ where dir_serve app = cascade [@@ -110,26 +100,46 @@ ] -middleware_stack :: String -> [Middleware]+middleware_stack :: T.Text -> [Middleware] middleware_stack mime_types = [ no_favicon , content_length , x_forwarded_for_to_remote_host , simple_access_logger - Nothing- , user_mime - map (\(x,y) -> (B.pack x, B.pack y)) - parse_user_mimes - mime_types+ , user_mime - mime_type_list -- , user_mime - mime_types.toAscList.map_fst (drop 1) -- , \app env -> do -- r <- app env -- print - r.headers -- return r ]- where- parse_user_mimes :: String -> [(String, String)]- parse_user_mimes = lines > reject null > map (words > first &&& words > tail > unwords)+ mime_type_list = map (\(x,y) -> (E.encodeUtf8 x, E.encodeUtf8 y)) - parse_user_mimes - mime_types +parse_user_mimes :: T.Text -> [(T.Text, T.Text)]+parse_user_mimes =+ T.unpack+ > lines+ > map strip+ > reject null+ > reject (starts_with "#")+ > map parse_line+ > catMaybes+ > map expand_line+ > concat+ > map (\(x,y) -> (x.T.pack, y.T.pack)) + where+ parse_line :: String -> Maybe (String, [String])+ parse_line line =+ case line.words of+ (x:y:ys) -> Just (x, y:ys)+ _ -> Nothing++ expand_line :: (String, [String]) -> [(String, String)]+ expand_line (mime, extensions) = extensions.map (\extension -> (extension,mime))+ no_favicon :: Middleware no_favicon app = \env -> do -- putStrLn - "pathInfo is: " + env.pathInfo@@ -148,10 +158,7 @@ list_dir :: Application list_dir env = do let _path = "." + env.pathInfo .B.unpack.unescape_uri.b2u- - -- print _path- - -- no hack please+ if ".." `isInfixOf` _path then return not_found@@ -161,36 +168,36 @@ then return not_found else do is_dir <- is_directory _path- + if not is_dir then return not_found else do let ls :: String -> IO [String] ls s = getDirectoryContents s ^ (\\ [".", ".."])- + _paths <- ls _path -- print _paths- + let _full_paths = _paths.map (_path.drop (2 :: Int) /)- + is_path_dir_flag <- _full_paths.mapM is_directory let flagged = zip _paths is_path_dir_flag- + dirs = flagged.select snd.sort .map_fst (+ "/")- files = flagged.reject snd.sort + files = flagged.reject snd.sort sorted = dirs + files- + maid_css_exist <- doesFileExist "maid.css"- + _css <- if maid_css_exist then B.readFile "maid.css" else return default_css_style- - ++ let _html = B.pack - dir_template sorted (B.unpack _css) (env.path.B.unpack.unescape_uri)- + return - def { status = 200@@ -205,15 +212,15 @@ head - do meta ! [http_equiv "Content-Type", content "text/html; charset=utf-8"] - return () style - str _css- + body - do div ! [_class "container"] - do ul - do xs.mapM_ (\(_path, dir_tag) -> li - do- + let path_dom = a ! [href - "/" / current_path.b2u / _path] - str - _path- + if dir_tag then div ! [_class "directory"] -@@ -221,9 +228,9 @@ else path_dom )- + default_css_style :: B.ByteString default_css_style = [here| @@ -262,10 +269,9 @@ |] -default_mime_types :: B.ByteString+default_mime_types :: T.Text default_mime_types = [here| -hs text/plain; charset=utf-8-lhs text/plain; charset=utf-8+text/plain hs lhs -|] .B.pack+|] + apache_mime_types