-
Notifications
You must be signed in to change notification settings - Fork 2
/
app.coffee
98 lines (82 loc) · 3.39 KB
/
app.coffee
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
##
# Module dependencies.
#
configArgs = require('./config.js').config
express = require 'express'
form = require 'connect-form'
mongo = require 'mongoskin'
mongoStore = require 'connect-mongodb'
Server = require('mongodb').Server
app = module.exports = express.createServer()
router = require './router.js'
api = require './api.js'
app.io = require('socket.io').listen app
socketio = require './socketio.js'
sys = require 'sys'
GridFS = require('./gridfs.js').GridFS
app.avatarFS = new GridFS { root:'avatar',"content_type": "image/jpeg", "chunk_size": 1024*64 }
app.audioFS = new GridFS { root:'audio','content_type': 'audio/mp3' }
app.wfFS = new GridFS { root:'waveform','content_type': 'image/png' }
app.helpers require('./helpers.js').helpers
app.dynamicHelpers require('./helpers.js').dynamicHelpers;
app.settings.env = configArgs.env
if(configArgs.mongo.account)
app.db = db = mongo.db configArgs.mongo.account + ':' + configArgs.mongo.password + '@' + configArgs.mongo.host + ':' + configArgs.mongo.port + '/' + configArgs.mongo.dbname + '?auto_reconnect'
else
app.db = db = mongo.db configArgs.mongo.host + ':' + configArgs.mongo.port + '/' + configArgs.mongo.dbname + '?auto_reconnect'
server_config = new Server configArgs.mongo.host, configArgs.mongo.port, {auto_reconnect: true}
app.sessionStore = sessionStore = new mongoStore({server_config: server_config, repeatInterval: 3000, dbname:configArgs.mongo.dbname, username:configArgs.mongo.account, password:configArgs.mongo.password})
# Configuration
app.configure () ->
app.set('views', __dirname + '/views')
app.set('view engine', 'jade')
app.use express.bodyParser()
app.use express.cookieParser()
app.use form({keepExtensions: true})
app.use express.session {store: sessionStore, secret: 'supersonic'}
#app.use express.session {store: new mongoStore({db:db.db, repeatInterval: 3000}), secret: 'supersonic'}
app.use(express.methodOverride())
app.use(express.static(__dirname + '/public'))
app.use(app.router)
app.use express.errorHandler {dumpExceptions: true, showStack: true}
# error handling
app.use (err, req, res, next) ->
console.log 'handle err', err
res.render '500.jade'
status:500,
locals: { title:'500', error: err}
db.bind 'user'
db.bind 'loginToken'
db.bind 'post'
db.bind 'comment'
db.bind 'follow'
db.bind 'fav'
db.bind 'notification'
# db.user.ensureIndex {'username':1}, true, (err)->
# console.log 'user index username', err
# db.comment.ensureIndex {'p':1}, false, (err)->
# console.log 'comment index p', err
# db.post.ensureIndex {date:-1, u_id:1}, false, (err)->
# console.log 'post index', err
# db.follow.ensureIndex {from:1, to:1}, true, (err)->
# console.log 'follow index from'
# db.follow.ensureIndex {to:1}, false, (err)->
# console.log 'follow index to'
# db.fav.ensureIndex {p:1}, false, (err)->
# console.log 'fav index'
# db.fav.ensureIndex {u:1, p:1}, true, (err)->
# console.log 'fav index'
# db.notification.ensureIndex {to:1}, false, (err)->
# console.log 'notification index'
# socket io
app.clients = {}
socketio.listen app
# Routes
router.route app
# api
api.start app
app.get '*', (req, res, next)->
res.render '404', {title: '404', status: 404}
app.settings.env = configArgs.env
app.listen(configArgs.port)
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env)