initial commit
[map.git] / honeymap-master / server / server_alienfeeds.js.old
1 var sys = require('sys');
2 var url = require('url');
3 var app = require('http').createServer(handler);
4 var fs = require('fs');
5 var util = require('util');
6 var ns = require('node-static');
7 var io = require('socket.io').listen(app);
8 var hpfeeds = require('alienfeeds');
9 var file = new(ns.Server)("../static/", { cache: 600 });
10 var sanitize = require('validator').sanitize;
11
12 eval(fs.readFileSync('server_hpfeeds_config.js').toString());
13
14 // Listen and drop privileges
15 app.listen(config.port);
16 process.setuid(config.uid);
17
18 // Production settings for socket.io
19 io.enable('browser client minification');  // send minified client
20 io.enable('browser client etag');          // apply etag caching logic based on version number
21 io.enable('browser client gzip');          // gzip the file
22 io.set('log level', 1);                    // reduce logging
23
24 // hp feed
25 var feedconn = new alienfeeds.HPC(
26   config.alienfeeds.server,
27   condig.alienfeeds.port
28   //config.hpfeeds.port,
29   //config.hpfeeds.ident,
30   //config.hpfeeds.auth
31 );
32 feedconn.onready(function() { feedconn.subscribe('geoloc.events'); });
33
34 // Serve static content
35 function handler (req, res) {
36   try {
37     console.log('New request: ' + req.connection.remoteAddress + ': ' + url.parse(req.url).href);
38     req.addListener('end', function() {
39       file.serve(req, res, function(err, result) {
40         if (err) {
41           console.error('Error serving %s: %s', req.url, err.message);
42           if (err.status === 404 || err.status === 500) {
43             file.serveFile(util.format('/%d.html', err.status), err.status, {}, req, res);
44           } else {
45             res.writeHead(err.status, err.headers);
46             res.end();
47           }
48         }
49       });
50     });
51   } catch(err) {
52     sys.puts(err);
53     res.writeHead(500);
54     res.end('Internal Server Error');
55   }
56 }
57
58 // Push feed data to all connected sockets
59 feedconn.msgcb = function(id, chan, data) {
60   if(data != null) {
61     io.sockets.emit('marker', {
62       latitude: data.latitude, longitude: data.longitude,
63       countrycode: data.countrycode, country: data.country, city: data.city,
64
65       latitude2: data.latitude2, longitude2: data.longitude2,
66       countrycode2: data.countrycode2, country2: data.country2, city2: data.city2,
67  
68       type: data.type ? sanitize(data.type).xss() : null,
69       md5: data.md5 ? sanitize(data.md5).xss() : null
70     });
71   }
72 }
73
74 io.sockets.on('connection', function (socket) {
75   socket.on('disconnect', function() {
76     delete socket.namespace.sockets[socket.id];
77   })
78 })