-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhttp.js
114 lines (107 loc) · 3.26 KB
/
http.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
var http = require('http')
var fs = require('fs')
function IndexFileExists(){
var index = ['index.html', 'index.htm', 'default.html', 'default.htm']
for (var j in index) {
if(fs.existsSync(index[j])){
return index[j]
}
}
}
http.createServer(function (request, response) {
console.log(request.url)
if (request.url === '/' || request.url === '') {
request.url = IndexFileExists()
}else{
request.url = request.url.substring(1, request.url.length)
}
var ext = request.url.substring(request.url.lastIndexOf(".") + 1, request.url.length)
var contentTypes = {
'text/html': 'html,htm,shtm',
'text/css': 'css',
'text/xml': 'xml',
'image/gif': 'gif',
'image/jpeg': 'jpeg,jpg',
'application/x-javascript': 'js',
'application/atom+xml': 'atom',
'application/rss+xml': 'rss',
'text/mathml': 'mml',
'text/plain': 'txt',
'text/vnd.sun.j2me.app-descriptor': 'jad',
'text/vnd.wap.wml': 'wml',
'text/x-component': 'htc',
'image/png': 'png',
'image/tiff': 'tif,tiff',
'image/vnd.wap.wbmp': 'wbmp',
'image/x-icon': 'ico',
'image/x-jng': 'jng',
'image/x-ms-bmp': 'bmp',
'image/svg+xml': 'svg,svgz',
'image/webp': 'webp',
'application/java-archive': 'jar,war,ear',
'application/mac-binhex40': 'hqx',
'application/msword': 'doc',
'application/pdf': 'pdf',
'application/postscript': 'ps,eps,ai',
'application/rtf': 'rtf',
'application/vnd.ms-excel': 'xls',
'application/vnd.ms-powerpoint': 'ppt',
'application/vnd.wap.wmlc': 'wmlc',
'application/vnd.google-earth.kml+xml': 'kml',
'application/vnd.google-earth.kmz': 'kmz',
'application/x-7z-compressed': '7z',
'application/x-cocoa': 'cco',
'application/x-java-archive-diff': 'jardiff',
'application/x-java-jnlp-file': 'jnlp',
'application/x-makeself': 'run',
'application/x-perl': 'pl,pm',
'application/x-pilot': 'prc,pdb',
'application/x-rar-compressed': 'rar',
'application/x-redhat-package-manager': 'rpm',
'application/x-sea': 'sea',
'application/x-shockwave-flash': 'swf',
'application/x-stuffit': 'sit',
'application/x-tcl': 'tcl,tk',
'application/x-x509-ca-cert': 'der,pem,crt',
'application/x-xpinstall': 'xpi',
'application/xhtml+xml': 'xhtml',
'application/zip': 'zip',
'application/octet-stream': 'bin,exe,dll,deb,dmg,eot,iso,img,msi,msp,msm',
'audio/midi': 'mid,midi,kar',
'audio/mpeg': 'mp3',
'audio/ogg': 'ogg',
'audio/x-m4a': 'm4a',
'audio/x-realaudio': 'ra',
'video/3gpp': '3gpp,3gp',
'video/mp4': 'mp4',
'video/mpeg': 'mpeg,mpg',
'video/quicktime': 'mov',
'video/webm': 'webm',
'video/x-flv': 'flv',
'video/x-m4v': 'm4v',
'video/x-mng': 'mng',
'video/x-ms-asf': 'asx,asf',
'video/x-ms-wmv': 'wmv',
'video/x-msideo': 'avi'
}
try {
(function () {
for (var n in contentTypes) {
var type = contentTypes[n].split(',')
for (var i in type) {
if (type[i] === ext) {
contentType = n
return
}
}
}
})()
response.writeHead(200, {
'Content-Type': contentType
})
response.end(fs.readFileSync(request.url))
} catch (e) {
response.writeHead(404)
response.end('404')
}
}).listen(80)