Merge pull request #200 from M2Ys4U/socks
[KiwiIRC.git] / server / identd.js
1 var net = require('net');
2
3 function IdentdServer(opts) {
4
5 // Option defaults
6 opts = opts || {};
7 opts.bind_addr = opts.bind_addr || '0.0.0.0';
8 opts.bind_port = opts.bind_port || 113;
9 opts.system_id = opts.system_id || 'UNIX-KiwiIRC';
10 opts.user_id = opts.user_id || 'kiwi';
11
12
13 var server = net.createServer(function(socket) {
14 var user, system;
15
16 if (typeof opts.user_id === 'function') {
17 user = opts.user_id(socket).toString();
18 } else {
19 user = opts.user_id.toString();
20 }
21
22 if (typeof opts.system_id === 'function') {
23 system = opts.system_id(socket).toString();
24 } else {
25 system = opts.system_id.toString();
26 }
27
28 socket.end('25,25 : USERID : ' + system + ' : ' + user);
29 });
30
31 server.on('listening', function() {
32 console.log('Ident Server listening on ' + server.address().address + ':' + server.address().port);
33 });
34
35
36 this.start = function() {
37 server.listen(opts.bind_port, opts.bind_addr);
38 };
39
40 this.stop = function(callback) {
41 server.close(callback);
42 };
43 }
44
45
46 module.exports = IdentdServer;