Update app.js
Esse commit está contido em:
+52
-71
@@ -1,28 +1,26 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
var express = require('express'),
|
var sys = require('util'),
|
||||||
app = express(),
|
express = require('express'),
|
||||||
http = require('http').Server(app),
|
packages = require('./libs/packages'),
|
||||||
// io = require('socket.io')(http), // uncomment to enable Socket.IO
|
|
||||||
bodyParser = require('body-parser'),
|
|
||||||
sys = require('sys'),
|
|
||||||
o_ = require('./libs/utils');
|
o_ = require('./libs/utils');
|
||||||
|
|
||||||
o_.merge(global, require('./settings'));
|
o_.merge(global, require('./settings'));
|
||||||
try { o_.merge(global, require('./settings.local')); } catch(e) {}
|
try { o_.merge(global, require('./settings.local')); } catch(e) {}
|
||||||
|
|
||||||
var reapInterval = (typeof io === 'undefined')? 60 * 1000: -1;
|
var app = express();
|
||||||
|
|
||||||
//app.set('env', 'development');
|
//app.set('env', 'development');
|
||||||
|
app.use( require('request-param')() )
|
||||||
|
|
||||||
app.use(require('method-override')());
|
app.use(require('method-override')());
|
||||||
app.use(bodyParser.json());
|
app.use(require('cookie-parser')());;
|
||||||
app.use(bodyParser.urlencoded({extended: true}));
|
//app.use(require('body-parser')());;
|
||||||
var mw = require('./middleware/im')({
|
app.use(require('body-parser').urlencoded({extended: true}));;
|
||||||
maxAge: 60 * 1000,
|
app.use(require('body-parser').json());;
|
||||||
reapInterval: reapInterval,
|
app.use(require('./middleware/im')({
|
||||||
authentication: require('./libs/authentication/' + AUTH_LIBRARY)
|
maxAge: 15 * 60 * 1000,
|
||||||
});
|
reapInterval: 60 * 1000,
|
||||||
app.use(mw.session);
|
authentication: require('./libs/authentication/' + AUTH_LIBRARY)
|
||||||
var store = mw.store;
|
}));
|
||||||
|
|
||||||
app.set('root', __dirname);
|
app.set('root', __dirname);
|
||||||
|
|
||||||
@@ -30,79 +28,62 @@ if ('development' == app.get('env')) {
|
|||||||
app.set('views', __dirname + '/dev/views');
|
app.set('views', __dirname + '/dev/views');
|
||||||
app.set('view engine', 'jade');
|
app.set('view engine', 'jade');
|
||||||
|
|
||||||
app.use(require("morgan")('combined'));
|
app.use(require("morgan")("dev"));
|
||||||
require('./dev/app')('/dev', app);
|
require('./dev/app')('/dev', app);
|
||||||
app.use(express.static(
|
app.use(express.static(
|
||||||
require('path').join(__dirname, '../client')));
|
require('path').join(__dirname, '../client')));
|
||||||
app.use(require('express-error-handler')({dumpExceptions: true, showStack: true}));
|
app.use(require('express-error-handler')({dumpExceptions: true, showStack: true}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Socket.IO handlers
|
app.listen(APP_PORT, APP_HOST);
|
||||||
if (typeof io !== 'undefined') {
|
|
||||||
io.on('connection', function(socket){
|
|
||||||
var username = null;
|
|
||||||
socket.on('server', function(event) {
|
|
||||||
event.reply = function(status) {
|
|
||||||
if (status) {
|
|
||||||
this._status = status;
|
|
||||||
}
|
|
||||||
delete this.reply;
|
|
||||||
socket.emit('client', this);
|
|
||||||
};
|
|
||||||
var unauthenticated = function() {
|
|
||||||
event.reply({sent: false, e: 'unauthenticated'});
|
|
||||||
};
|
|
||||||
store.get(event, function(event, user) {
|
|
||||||
if ((event.type == 'hello') && user) {
|
|
||||||
username = user.data('username');
|
|
||||||
store.set(username, user);
|
|
||||||
event.reply({sent: true});
|
|
||||||
} else if ((event.type != 'hello')) {
|
|
||||||
store.find('username', event.from, function(from) {
|
|
||||||
if (from) {
|
|
||||||
from.dispatch(event);
|
|
||||||
} else {
|
|
||||||
unauthenticated();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
unauthenticated();
|
|
||||||
}
|
|
||||||
}, socket);
|
|
||||||
});
|
|
||||||
socket.on('disconnect', function() {
|
|
||||||
if (username) {
|
|
||||||
store.reap(username);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
http.listen(APP_PORT, APP_HOST, function(){
|
|
||||||
console.log('Ajax IM server started...');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Listener endpoint; handled in middleware
|
// Listener endpoint; handled in middleware
|
||||||
app.get('/app/listen', function(){});
|
app.get('/app/listen', function(){});
|
||||||
|
|
||||||
// HTTP handlers
|
|
||||||
app.use('/app/noop', function(req, res) {
|
|
||||||
req.event._status = {sent: true};
|
|
||||||
res.jsonp(req.event);
|
|
||||||
});
|
|
||||||
|
|
||||||
app.use('/app/message', function(req, res) {
|
app.use('/app/message', function(req, res) {
|
||||||
res.message();
|
|
||||||
|
res.find(req.param('to'), function(user) {
|
||||||
|
if(!user)
|
||||||
|
return res.send(new packages.Error('not online'));
|
||||||
|
|
||||||
|
res.message(user, new packages.Message(
|
||||||
|
req.session.data('username'),
|
||||||
|
req.param('body')
|
||||||
|
));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use('/app/message/typing', function(req, res) {
|
app.use('/app/message/typing', function(req, res) {
|
||||||
res.typing();
|
if(~packages.TYPING_STATES.indexOf('typing' + req.param('state'))) {
|
||||||
|
res.find(req.param('to'), function(user) {
|
||||||
|
if(user) {
|
||||||
|
res.message(user, new packages.Status(
|
||||||
|
req.session.data('username'),
|
||||||
|
'typing' + req.param('state')
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Typing updates do not receive confirmations,
|
||||||
|
// as they are not important enough.
|
||||||
|
res.send('');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
res.send(new packages.Error('invalid state'));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use('/app/status', function(req, res) {
|
app.use('/app/status', function(req, res) {
|
||||||
res.status();
|
if(~packages.STATUSES.indexOf(req.param('status'))) {
|
||||||
|
res.status(req.param('status'), req.param('message'));
|
||||||
|
res.send(new packages.Success('status updated'));
|
||||||
|
} else {
|
||||||
|
res.send(new packages.Error('invalid status'));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use('/app/signoff', function(req, res) {
|
app.use('/app/signoff', function(req, res) {
|
||||||
res.signOff();
|
res.signOff();
|
||||||
|
res.send(new packages.Success('goodbye'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('Ajax IM server started...');
|
||||||
|
|||||||
Referência em uma Nova Issue
Bloquear um usuário