-
Notifications
You must be signed in to change notification settings - Fork 4
/
index.js
120 lines (67 loc) · 1.82 KB
/
index.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
115
116
117
118
119
120
var koa = require("koa");
var http = require("http");
var koastatic = require("koa-static");
var fs = require('fs');
var path = require('path');
var Router = require('koa-router');
var index = new Router();
var mount = require('koa-mount');
var co = require("co");
var app = koa();
index.get("/dirlist", function*(){
var files = yield readDir(this.query.dir);
this.body = files;
});
app.use(koastatic("public/"));
app.use(mount("/", index.middleware()));
var tail = require("./lib/tail");
var dirs = require("./config.json");
var server = require('http').createServer();
var io = require('socket.io').listen(server);
// io.set('transports', ['websocket','flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);
io.on('connection', function(socket){
socket.on("requestdirs", function(data){
socket.emit("dirs", dirs);
});
socket.on("requestfiles", function(data){
co(function*(){
var files = yield readDir(data.path);
socket.emit("files", {files: files, path: data.path});
}).catch(function(e){
console.log(e)
})
});
socket.on("request", function(data){
tail(data.path, socket);
console.log(data);
});
})
server.listen(9999);
app.listen(9998);
// [
// "/Users/aki/Desktop/Lockets",
// "/Users/aki/Desktop/lolitaserver"
// ];
// app.listen(9000);
function readDir(logDir){
return function(done){
// look up the dir for logs
fs.readdir(logDir, function(err, files){
if(err) {
return done(err);
}
var logFiles = [];
// Fix the Array
files = Array.prototype.sort.apply(files,[]);
files.forEach(function(file) {
var filePath = path.join(logDir, file);
var isFile = fs.statSync(filePath).isFile();
if(file.indexOf(".") === 0) return;
if(isFile) {
logFiles.push(file);
}
});
done(null, logFiles);
});
};
}