forked from coolaj86/telebit.js
		
	handle files, sites, and directories
This commit is contained in:
		
							parent
							
								
									e5076a3917
								
							
						
					
					
						commit
						d3d488c1d3
					
				| @ -1,6 +1,8 @@ | |||||||
| 'use strict'; | 'use strict'; | ||||||
|  | 
 | ||||||
| var os = require('os'); | var os = require('os'); | ||||||
| var path = require('path'); | var path = require('path'); | ||||||
|  | var fs = require('fs'); | ||||||
| 
 | 
 | ||||||
| module.exports.print = function (config) { | module.exports.print = function (config) { | ||||||
|   var services = { https: {}, http: {}, tcp: {} }; |   var services = { https: {}, http: {}, tcp: {} }; | ||||||
| @ -95,6 +97,7 @@ module.exports.assign = function (state, tun, cb) { | |||||||
|       state._serveStatic = require('serve-static'); |       state._serveStatic = require('serve-static'); | ||||||
|       state._defaultServe = state._serveStatic(path.join(__dirname, 'html')); |       state._defaultServe = state._serveStatic(path.join(__dirname, 'html')); | ||||||
|       state.defaultHttpServer = require('http').createServer(function (req, res) { |       state.defaultHttpServer = require('http').createServer(function (req, res) { | ||||||
|  |         // TODO serve api
 | ||||||
|         state._defaultServe(req, res, state._finalHandler(req, res)); |         state._defaultServe(req, res, state._finalHandler(req, res)); | ||||||
|       }); |       }); | ||||||
|     } |     } | ||||||
| @ -224,8 +227,9 @@ module.exports.assign = function (state, tun, cb) { | |||||||
|       } catch(e2) { |       } catch(e2) { | ||||||
|         console.error("Failed to require('" + handlerpath + "'):", e1.message); |         console.error("Failed to require('" + handlerpath + "'):", e1.message); | ||||||
|         console.error("Failed to require('" + path.join(localshare, handlerpath) + "'):", e2.message); |         console.error("Failed to require('" + path.join(localshare, handlerpath) + "'):", e2.message); | ||||||
|         console.warn("Using default handler for '" + handle + ":" + id + "'"); |         console.warn("Trying static and index handlers for '" + handle + ":" + id + "'"); | ||||||
|         echoTcp(cb); |         echoTcp(cb); | ||||||
|  |         return; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     var socketPair = require('socket-pair'); |     var socketPair = require('socket-pair'); | ||||||
| @ -298,7 +302,40 @@ module.exports.assign = function (state, tun, cb) { | |||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     fs.access(conf.handler, fs.constants.R_OK, function (err1) { | ||||||
|  |       fs.stat(conf.handler, function (err2, stat) { | ||||||
|  |         if (err1 || err2) { | ||||||
|  |           // TODO handle errors
 | ||||||
|           handlers.https(tlsSocket, tun, id); |           handlers.https(tlsSocket, tun, id); | ||||||
|  |           return; | ||||||
|  |         } | ||||||
|  |         var isFile = stat.isFile(); | ||||||
|  |         state._finalHandler = require('finalhandler'); | ||||||
|  |         state._serveStatic = require('serve-static'); | ||||||
|  |         state._serveIndex = require('serve-index'); | ||||||
|  |         var serveIndex; | ||||||
|  |         var serveStatic; | ||||||
|  |         if (isFile) { | ||||||
|  |           serveStatic = state._serveStatic(path.dirname(conf.handler), { dotfiles: 'allow', index: [ 'index.html' ] }); | ||||||
|  |           serveIndex = function (req, res, next) { next(); }; | ||||||
|  |           isFile = path.basename(conf.handler); | ||||||
|  |         } else { | ||||||
|  |           serveStatic = state._serveStatic(conf.handler, { dotfiles: 'allow', index: [ 'index.html' ] }); | ||||||
|  |           serveIndex = state._serveIndex(conf.handler, { hidden: true, icons: true, view: 'tiles' }); | ||||||
|  |         } | ||||||
|  |         handler = function (req, res) { | ||||||
|  |           if (isFile) { | ||||||
|  |             req.url = '/' + isFile; | ||||||
|  |           } | ||||||
|  |           serveStatic(req, res, function () { | ||||||
|  |             serveIndex(req, res, state._finalHandler(req, res)); | ||||||
|  |           }); | ||||||
|  |         }; | ||||||
|  |         handlerservers[conf.handler] = http.createServer(handler); | ||||||
|  |         handlerservers[conf.handler].emit('connection', tlsSocket); | ||||||
|  |         process.nextTick(function () { tlsSocket.resume(); }); | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function terminateTls(tun, cb) { |   function terminateTls(tun, cb) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user