mirror of
https://github.com/tribufu/node-gamedig
synced 2026-06-01 09:42:41 +00:00
Add mumble support
This commit is contained in:
parent
16ef96fccf
commit
c5abf7aa07
5 changed files with 92 additions and 5 deletions
46
games/mumble.js
Normal file
46
games/mumble.js
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
var async = require('async');
|
||||
|
||||
module.exports = require('./protocols/core').extend({
|
||||
init: function() {
|
||||
this._super();
|
||||
this.pretty = 'Mumble';
|
||||
this.options.port = 27800;
|
||||
this.options.tcpTimeout = 5000;
|
||||
},
|
||||
run: function(state) {
|
||||
var self = this;
|
||||
|
||||
this.tcpSend('\x6A\x73\x6F\x6E', function(buffer) {
|
||||
if(buffer.length < 10) return;
|
||||
var str = buffer.toString();
|
||||
var json;
|
||||
try {
|
||||
json = JSON.parse(str);
|
||||
} catch(e) {
|
||||
// probably not all here yet
|
||||
return;
|
||||
}
|
||||
|
||||
state.raw = json;
|
||||
state.name = json.name;
|
||||
|
||||
var channelStack = [state.raw.root];
|
||||
while(channelStack.length) {
|
||||
var channel = channelStack.shift();
|
||||
channel.description = self.cleanComment(channel.description);
|
||||
channelStack = channelStack.concat(channel.channels);
|
||||
for(var i = 0; i < channel.users.length; i++) {
|
||||
var user = channel.users[i];
|
||||
user.comment = self.cleanComment(user.comment);
|
||||
state.players.push(user);
|
||||
}
|
||||
}
|
||||
|
||||
self.finish(state);
|
||||
return true;
|
||||
});
|
||||
},
|
||||
cleanComment: function(str) {
|
||||
return str.replace(/<.*>/g,'');
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue