12.diff (19308B)
1 diff --git a/handlers/getNodes.js b/handlers/getNodes.js 2 deleted file mode 100644 3 index 28b1b20..0000000 4 --- a/handlers/getNodes.js 5 +++ /dev/null 6 @@ -1,121 +0,0 @@ 7 -/** 8 - * NodeHelper Module 9 - * 10 - * @module Main 11 - * @class getNodes 12 - * @submodule getNodes 13 - * @author Marcel Radzio 14 - */ 15 -//Load needed Features 16 -var request = require('request') 17 -//require('request-debug')(request); 18 -var fs = require('fs'); 19 -var jsonfile = require('jsonfile') 20 -var slack = require('./slack.js'); 21 -var _ = require("lodash"); 22 -/** 23 - * Get Community Config at start 24 - * 25 - * @property communities 26 - * @type String 27 - */ 28 -module.exports = { 29 - saveNodes: function () { 30 - request.get('https://cdn.rawgit.com/MTRNord/gluon-web-remote/5bd3a914b3c15af70b3ce46b3bfcc16bbc7b89b5/configs/communities.json', function (err, res, body) { 31 - 32 - if (!err && res.statusCode === 200) { 33 - /** 34 - * Content of communities 35 - * 36 - * @property communities 37 - * @type String 38 - */ 39 - communities = body; 40 - if (!fs.existsSync("handlers/tmp")){ 41 - fs.mkdirSync("handlers/tmp"); 42 - } 43 - fs.writeFile("handlers/tmp/communities.json", communities, { flag: 'w' }, function(err) { 44 - if(err) { 45 - console.log(err); 46 - return err 47 - } 48 - }); 49 - }else{ 50 - /** 51 - * Fired when an error occurs... 52 - * 53 - * @property error 54 - * @type String 55 - */ 56 - //TODO Add real Error Handler 57 - console.log(err); 58 - return err 59 - } 60 - }) 61 - }, 62 - countNodes: function (ccode_func, handler, TfromId, Tmsg, channel, bot, botan, IRCto) { 63 - jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 64 - if (err) { 65 - return console.log(err); 66 - } 67 - var communities = obj 68 - _.find(communities.communities, function (key) { 69 - var ccode = key["ccode"]; 70 - if (ccode.toLowerCase() == ccode_func.toLowerCase()) { 71 - var nodesFile_link = key["nodesURL"]; 72 - var name = key["name"]; 73 - request.get(nodesFile_link, function (err, res, body) { 74 - if (!err && res.statusCode == 200) { 75 - /** 76 - * Content of communities 77 - * 78 - * @property communities 79 - * @type String 80 - */ 81 - // console.log(body); 82 - // onlineNodes = body.nodes.length 83 - // onlineNodes = Object.keys(body.nodes).length; 84 - var count = 0; 85 - nodes = JSON.parse(body) 86 - _.find(nodes.nodes, function (key) { 87 - if (key.hasOwnProperty('flags')) { 88 - if (key["flags"]["online"] == true) { 89 - count++; 90 - } 91 - } 92 - if (key.hasOwnProperty('status')) { 93 - if (key["status"]["online"] == true) { 94 - count++; 95 - } 96 - } 97 - }); 98 - var output = "Current nodes in " + name + ": " + count 99 - if(handler == "telegram"){ 100 - bot.sendMessage(TfromId, output) 101 - botan.track(Tmsg, 'nodes ' + ccode_func) 102 - }else { 103 - if(handler == "irc"){ 104 - bot.say(IRCto, output); 105 - }else { 106 - if(handler == "slack"){ 107 - slack.slackSend(Schannel, output); 108 - } 109 - } 110 - } 111 - }else{ 112 - /** 113 - * Fired when an error occurs... 114 - * 115 - * @property error 116 - * @type String 117 - */ 118 - //TODO Add real Error Handler 119 - console.log(err); 120 - return err 121 - } 122 - }) 123 - } 124 - }); 125 - }); 126 - } 127 -} 128 diff --git a/handlers/irc.js b/handlers/irc.js 129 index 7112909..2a4514a 100644 130 --- a/handlers/irc.js 131 +++ b/handlers/irc.js 132 @@ -18,7 +18,7 @@ var rl = require("readline") 133 134 var command_config = require("../configs/commands.json"); 135 var params_config = require("../configs/ircServer.json"); 136 -var getNodes = require('./getNodes.js'); 137 +var getNodes = require('./parseNodes.js'); 138 139 //Set Params 140 /** 141 @@ -80,7 +80,7 @@ _.find(params_config["servers"], function (key) { 142 autoConnect: false, 143 messageSplit: 1000000, 144 floodProtection: true, 145 - floodProtectionDelay: 1000 146 + floodProtectionDelay: 200 147 }); 148 clients.push(bot[key]); 149 } 150 @@ -287,7 +287,7 @@ module.exports = { 151 nodes: function (callback) { 152 if (S(message).contains("!nodes")) { 153 jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 154 - if (err) {console.log(err)} 155 + if (err) {throw new Error(err);} 156 var communities = obj 157 _.find(communities.communities, function (key) { 158 var ccode = key["ccode"]; 159 @@ -300,10 +300,29 @@ module.exports = { 160 }); 161 } 162 }, 163 + node: function (callback) { 164 + if (S(message).contains("!node") || !S(message).contains("!nodes")) { 165 + jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 166 + if (err) {throw new Error(err);} 167 + var communities = obj 168 + _.find(communities.communities, function (key) { 169 + var ccode = key["ccode"]; 170 + if (ccode.toLowerCase() === channel[1]) { 171 + clients.forEach(function(client) { 172 + if (channel[2] == undefined) { 173 + channel[2] = "NoArg" 174 + } 175 + getNodes.NodeInfo(channel[1], channel[2].toLowerCase(), "irc", "", "", "", client, "", from) 176 + }); 177 + } 178 + }); 179 + }); 180 + } 181 + }, 182 communities: function (callback) { 183 if (S(message).contains("!communities")) { 184 jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 185 - if (err) {console.log(err)} 186 + if (err) {throw new Error(err);} 187 var communities = obj 188 var communities_list = "" 189 _.find(communities.communities, function (key) { 190 @@ -334,7 +353,7 @@ module.exports = { 191 * @type String 192 */ 193 door_status = error; 194 - console.log(error); 195 + throw new Error(err); 196 } 197 if (!error && response.statusCode === 200) { 198 if (door_status === "geschlossen") { 199 @@ -370,7 +389,7 @@ module.exports = { 200 * @type String 201 */ 202 door_status = error; 203 - console.log(error); 204 + throw new Error(err); 205 } 206 if (!error && response.statusCode == 200) { 207 if (door_status === "geschlossen") { 208 @@ -431,7 +450,7 @@ module.exports = { 209 }, 210 function(err, result) { 211 if (err) { 212 - console.log(err) 213 + throw new Error(err); 214 } 215 } 216 ); 217 diff --git a/handlers/parseNodes.js b/handlers/parseNodes.js 218 new file mode 100644 219 index 0000000..6e9d646 220 --- /dev/null 221 +++ b/handlers/parseNodes.js 222 @@ -0,0 +1,198 @@ 223 +/** 224 + * NodeHelper Module 225 + * 226 + * @module Main 227 + * @class getNodes 228 + * @submodule getNodes 229 + * @author Marcel Radzio 230 + */ 231 +//Load needed Features 232 +var request = require('request') 233 +//require('request-debug')(request); 234 +var fs = require('fs'); 235 +var jsonfile = require('jsonfile') 236 +var slack = require('./slack.js'); 237 +var _ = require("lodash"); 238 +/** 239 + * Get Community Config at start 240 + * 241 + * @property communities 242 + * @type String 243 + */ 244 +module.exports = { 245 + saveNodes: function () { 246 + request.get('https://cdn.rawgit.com/MTRNord/gluon-web-remote/5bd3a914b3c15af70b3ce46b3bfcc16bbc7b89b5/configs/communities.json', function (err, res, body) { 247 + if (!err && res.statusCode === 200) { 248 + /** 249 + * Content of communities 250 + * 251 + * @property communities 252 + * @type String 253 + */ 254 + communities = body; 255 + if (!fs.existsSync("handlers/tmp")){ 256 + fs.mkdirSync("handlers/tmp"); 257 + } 258 + fs.writeFile("handlers/tmp/communities.json", communities, { flag: 'w' }, function(err) { 259 + if(err) { 260 + console.log(err); 261 + return err 262 + } 263 + }); 264 + }else{ 265 + /** 266 + * Fired when an error occurs... 267 + * 268 + * @property error 269 + * @type String 270 + */ 271 + //TODO Add real Error Handler 272 + console.log(err); 273 + return err 274 + } 275 + }) 276 + }, 277 + countNodes: function (ccode_func, handler, TfromId, Tmsg, channel, bot, botan, IRCto) { 278 + jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 279 + if (err) { 280 + return console.log(err); 281 + } 282 + var communities = obj 283 + _.find(communities.communities, function (key) { 284 + var ccode = key["ccode"]; 285 + if (ccode.toLowerCase() == ccode_func.toLowerCase()) { 286 + var nodesFile_link = key["nodesURL"]; 287 + var name = key["name"]; 288 + request.get(nodesFile_link, function (err, res, body) { 289 + if (!err && res.statusCode == 200) { 290 + /** 291 + * Content of communities 292 + * 293 + * @property communities 294 + * @type String 295 + */ 296 + var count = 0; 297 + nodes = JSON.parse(body) 298 + _.find(nodes.nodes, function (key) { 299 + if (key.hasOwnProperty('flags')) { 300 + if (key["flags"]["online"] == true) { 301 + count++; 302 + } 303 + } 304 + if (key.hasOwnProperty('status')) { 305 + if (key["status"]["online"] == true) { 306 + count++; 307 + } 308 + } 309 + }); 310 + var output = "Current nodes in " + name + ": " + count 311 + if(handler == "telegram"){ 312 + bot.sendMessage(TfromId, output) 313 + botan.track(Tmsg, 'nodes ' + ccode_func) 314 + }else { 315 + if(handler == "irc"){ 316 + bot.say(IRCto, output); 317 + }else { 318 + if(handler == "slack"){ 319 + slack.slackSend(Schannel, output); 320 + } 321 + } 322 + } 323 + }else{ 324 + /** 325 + * Fired when an error occurs... 326 + * 327 + * @property error 328 + * @type String 329 + */ 330 + //TODO Add real Error Handler 331 + throw new Error(err); 332 + } 333 + }) 334 + } 335 + }); 336 + }); 337 + }, 338 + NodeInfo: function (ccode_func, askedNode, handler, TfromId, Tmsg, channel, bot, botan, IRCto) { 339 + jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 340 + if (err) { 341 + throw new Error(err); 342 + } 343 + var communities = obj 344 + _.find(communities.communities, function (key) { 345 + var ccode = key["ccode"]; 346 + if (ccode.toLowerCase() == ccode_func.toLowerCase()) { 347 + var nodesFile_link = key["nodesURL"]; 348 + request.get(nodesFile_link, function (err, res, body) { 349 + if (!err && res.statusCode == 200) { 350 + /** 351 + * Content of communities 352 + * 353 + * @property communities 354 + * @type String 355 + */ 356 + var count = 0; 357 + nodes = JSON.parse(body) 358 + var output = "Some error" 359 + var name = "" 360 + var router = "" 361 + var version = "" 362 + var autoupdate = "" 363 + var autoupdateBranch = "" 364 + var clients = "" 365 + var status = "" 366 + var since = "" 367 + _.find(nodes.nodes, function (key) { 368 + name = key["nodeinfo"]["hostname"] 369 + if (name.toLowerCase() == askedNode.toLowerCase()){ 370 + router = key["nodeinfo"]["hardware"]["model"] 371 + version = key["nodeinfo"]["software"]["firmware"]["release"] 372 + autoupdate = key["nodeinfo"]["software"]["autoupdater"]["enabled"] 373 + if (autoupdate === true) { 374 + autoupdate = "active" 375 + }else{ 376 + autoupdate = "unactive" 377 + } 378 + autoupdateBranch = key["nodeinfo"]["software"]["autoupdater"]["branch"] 379 + clients = key["statistics"]["clients"] 380 + status = key["flags"]["online"] 381 + since = key["firstseen"] 382 + if(handler == "telegram"){ 383 + output = "<b>Name: </b>" + name + "\n<b>Router Model: </b>" + router + "\n<b>Firmware Version: </b>" + version + "\n<b>Autoupdater Status: </b>" + autoupdate + "\n<b>Autoupdater Branch: </b>" + autoupdateBranch + "\n<b>Clients Connected: </b>" + clients + "\n<b>Online Status: </b>" + status + "\n<b>First Seen: </b>" + since 384 + } 385 + if(handler == "irc"){ 386 + output = "Name: " + name + "\nRouter Model: " + router + "\nFirmware Version: " + version + "\nAutoupdater Status: " + autoupdate + "\nAutoupdater Branch: " + autoupdateBranch + "\nClients Connected: " + clients + "\nOnline Status: " + status + "\nFirst Seen: " + since 387 + } 388 + if(handler == "slack"){ 389 + output = "<b>Name: </b>" + name + "\n<b>Router Model: </b>" + router + "\n<b>Firmware Version: </b>" + version + "\n<b>Autoupdater Status: </b>" + autoupdate + "\n<b>Autoupdater Branch: </b>" + autoupdateBranch + "\n<b>Clients Connected: </b>" + clients + "\n<b>Online Status: </b>" + status + "\n<b>First Seen: </b>" + since 390 + } 391 + } 392 + }); 393 + if (askedNode.toLowerCase() !== "noarg") { 394 + if(handler == "telegram"){ 395 + bot.sendMessage(TfromId, output, {"parse_mode": "HTML"}) 396 + botan.track(Tmsg, 'node ' + ccode_func) 397 + } 398 + if(handler == "irc"){ 399 + bot.say(IRCto, output); 400 + } 401 + if(handler == "slack"){ 402 + slack.slackSend(Schannel, output); 403 + } 404 + } 405 + }else{ 406 + /** 407 + * Fired when an error occurs... 408 + * 409 + * @property error 410 + * @type String 411 + */ 412 + //TODO Add real Error Handler 413 + throw new Error(err); 414 + } 415 + }) 416 + } 417 + }); 418 + }); 419 + } 420 +} 421 diff --git a/handlers/pushbullet.js b/handlers/pushbullet.js 422 index 091a9a4..4b4364e 100644 423 --- a/handlers/pushbullet.js 424 +++ b/handlers/pushbullet.js 425 @@ -28,7 +28,7 @@ module.exports = { 426 * @property err 427 * @type String 428 */ 429 - console.log(err); 430 + throw new Error(err) 431 } 432 }); 433 } 434 diff --git a/handlers/telegram.js b/handlers/telegram.js 435 index 2283e0d..3a5581b 100644 436 --- a/handlers/telegram.js 437 +++ b/handlers/telegram.js 438 @@ -8,7 +8,7 @@ if (typeof botan_token === 'undefined' && !botan_token) { 439 } 440 var TelegramBot = require('node-telegram-bot-api'); 441 var jsonfile = require('jsonfile') 442 -var getNodes = require('./getNodes.js'); 443 +var getNodes = require('./parseNodes.js'); 444 var botan = require('botanio')(botan_token); 445 var util = require('util'); 446 var async = require("async"); 447 @@ -24,7 +24,7 @@ module.exports = { 448 var resp = match[1]; 449 bot.sendChatAction(fromId, "typing") 450 jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 451 - if (err) {console.log(err)} 452 + if (err) {throw new Error(err);} 453 var communities = obj 454 _.find(communities.communities, function (key) { 455 var ccode = key["ccode"]; 456 @@ -36,6 +36,25 @@ module.exports = { 457 }); 458 callback() 459 }, 460 + node: function (callback) { 461 + bot.onText(/\/node (.+)/, function (msg, match) { 462 + var fromId = msg.chat.id; 463 + var resp = match[1]; 464 + var args = _.split(resp, ' '); 465 + bot.sendChatAction(fromId, "typing") 466 + jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 467 + if (err) {throw new Error(err);} 468 + var communities = obj 469 + _.find(communities.communities, function (key) { 470 + var ccode = key["ccode"]; 471 + if (ccode.toLowerCase() === args[0].toLowerCase()) { 472 + getNodes.NodeInfo(args[0].toLowerCase(), args[1].toLowerCase(), "telegram", fromId, msg, "", bot, botan) 473 + } 474 + }); 475 + }); 476 + }); 477 + callback() 478 + }, 479 communities: function (callback) { 480 bot.onText(/\/communities/, function (msg, match) { 481 var fromId = msg.chat.id; 482 @@ -43,7 +62,7 @@ module.exports = { 483 bot.sendChatAction(fromId, "typing") 484 jsonfile.readFile('handlers/tmp/communities.json', 'utf8', function (err,obj) { 485 var communities = obj 486 - var communities_list 487 + var communities_list = "" 488 _.find(communities.communities, function (key) { 489 var ccode = key["ccode"] 490 var name = key["name"] 491 @@ -51,7 +70,7 @@ module.exports = { 492 }); 493 botan.track(msg, 'communities', function (err, res, body) { 494 if (err) { 495 - console.log("[BOTAN] ERR: " + err); 496 + throw new Error("[BOTAN] ERR: " + err); 497 } 498 console.log("[BOTAN] RES: " + res.statusCode); 499 console.log("[BOTAN] BODY: " + util.inspect(body, {showHidden: false, depth: null})); 500 @@ -64,7 +83,7 @@ module.exports = { 501 }, 502 function(err, result) { 503 if (err) { 504 - console.log(err) 505 + throw new Error(err) 506 } 507 } 508 ); 509 diff --git a/main.js b/main.js 510 index 1f8d979..6fd0102 100644 511 --- a/main.js 512 +++ b/main.js 513 @@ -21,7 +21,7 @@ require('./helper/heroku.js'); 514 var pushbullet = require('./handlers/pushbullet.js'); 515 var irc = require('./handlers/irc.js'); 516 var slack = require('./handlers/slack.js'); 517 -var getNodes = require('./handlers/getNodes.js'); 518 +var getNodes = require('./handlers/parseNodes.js'); 519 var telegram = require('./handlers/telegram.js'); 520 521 //Constants 522 @@ -60,6 +60,7 @@ function GetData(){ 523 */ 524 //TODO Add real Error Handler 525 door_status = error; 526 + throw new Error(err) 527 } 528 //If no error -> go on 529 if (!error && response.statusCode === 200) { 530 @@ -119,7 +120,7 @@ process.on(SIGINT, function () { 531 */ 532 function update(){ 533 git.pull("origin", "master", function(err, update) { 534 - if (err) {console.log(err)} 535 + if (err) {throw new Error(err)} 536 if(update && update.summary.changes) { 537 console.log('Start Update!'); 538 restart();