1+
2+
3+
4+ /*
5+
6+ //https-server.js:d
7+
8+ 20-07-25
9+
10+
11+ */
12+
13+
14+ var fs = require ( 'fs' ) ;
15+
16+ var keys = require ( 'keys.js' ) ;
17+ keys . keypressed = keypressed ;
18+ var { key, cert} = require ( 'server-cert.js' ) ;
19+ var getmime = require ( 'getmime.js' ) ;
20+ var argv = require ( 'argv.js' ) ;
21+
22+ var root = __dirname + '/' ;
23+
24+ var host = argv ( 'h' , 'host' , '127.0.0.1' ) ;
25+ var port = argv ( 'p' , 'port' , 3002 ) ;
26+ var url = argv ( 'url' , '' ) ;
27+ var dir = argv ( 'd' , 'dir' , root ) ;
28+ var list = [ { url, dir} ] ;
29+
30+ require ( 'https' ) . createServer ( { key, cert} , request ) . listen ( { host, port} ) ;
31+ console . log ( `listening https://localhost:${ port } ` ) ;
32+
33+
34+ function request ( req , res ) {
35+ console . log ( req . method , req . url ) ;
36+ var url = req . url . slice ( 1 ) ;
37+ if ( url == '' ) {
38+ var result = cmd ( req , res ) ;
39+ if ( result === false ) {
40+ return ;
41+ }
42+ }
43+
44+ var abs = root + url ;
45+
46+ var n = list . length ;
47+ for ( var j = 0 ; j < n ; j ++ ) {
48+
49+ var o = list [ j ] ;
50+ if ( url . startsWith ( o . url ) ) {
51+ abs = o . dir + url . slice ( o . url . length ) ;
52+ break ;
53+ }
54+
55+ } //for
56+ console . log ( abs ) ;
57+ if ( ! fs . existsSync ( abs ) ) {
58+ notfound ( req , res ) ;
59+ return ;
60+ }
61+
62+ var mime = getmime ( abs ) ;
63+
64+ var buf = fs . readFileSync ( abs ) ;
65+ res . writeHead ( 200 , { 'content-type' :mime } ) ;
66+ res . end ( buf ) ;
67+
68+ } //request
69+
70+
71+ function notfound ( req , res ) {
72+
73+ res . writeHead ( 404 ) ;
74+ res . end ( `${ req . url } not found` ) ;
75+
76+ } //notfound
77+
78+
79+ function cmd ( req , res ) {
80+
81+ if ( req . headers . mode === 'add' ) {
82+ var url = req . headers . url ;
83+ var dir = req . headers . dir ;
84+ list . push ( { url, dir} ) ;
85+ }
86+
87+ } //cmd
88+
89+
90+ function keypressed ( key ) {
91+
92+ console . log ( 'keypressed' , key ) ;
93+
94+ } //keypressed
95+
96+
97+
98+
99+
0 commit comments