-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.coffee
More file actions
55 lines (47 loc) · 1.61 KB
/
app.coffee
File metadata and controls
55 lines (47 loc) · 1.61 KB
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
express = require 'express'
io = require 'socket.io'
http = require 'http'
fs = require 'fs'
path = require 'path'
logger = require 'winston'
sha1 = require 'sha1'
hashValidator = require './lib/hash-validator'
routes = require './routes'
testRoutes = require './routes/test'
fs.mkdir './log' unless fs.existsSync './log'
logger.add logger.transports.File,
filename: './log/flumen.log'
handleExceptions: true
secret = process.env.FLUMEN_SECRET || ''
unless secret
logger.error 'No secret found, stopping...'
process.exit 1
socketIoPort = 3005
socketIoApp = io.listen socketIoPort
socketIoApp.configure ->
socketIoApp.set 'browser client minification', true
socketIoApp.set 'browser client gzip', true
socketIoApp.set 'browser client etag', true
socketIoRoutes = routes socketIoApp
testClientRoute = testRoutes socketIoPort
socketIoApp.sockets.on 'connection', (socket) ->
socket.on 'handshake', (data) ->
if hashValidator.hashIsValid secret, data
socket.join data.user_id
logger.info "User #{data.user_id} on socket #{socket.id} joined room"
else
logger.warn "User #{data.user_id} hashes did not match, not joining room"
port = process.env.PORT || 3004
webApp = express()
webApp.configure ->
webApp.set 'port', port
webApp.use express.logger 'dev'
webApp.use express.bodyParser()
webApp.use express.errorHandler()
webApp.use express.methodOverride()
webApp.set 'view engine', 'jade'
webApp.set 'views', __dirname + '/views'
webApp.get '/test', testClientRoute.testClient
webApp.post '/', socketIoRoutes.index
webApp.listen port, ->
logger.info "Flumen server listening on port #{port}"