ts-query.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. const net = require('net');
  2. unescape = function(str) {
  3. return String(str).replace(/\\\\/g, '\\')
  4. .replace(/\\\//g, '/')
  5. .replace(/\\p/g, '|')
  6. .replace(/\\n/g, '\n')
  7. .replace(/\\r/g, '\r')
  8. .replace(/\\t/g, '\t')
  9. .replace(/\\v/g, '\v')
  10. .replace(/\\f/g, '\f')
  11. .replace(/\\s/g, ' ');
  12. };
  13. const formated = function (string) {
  14. string = string.split(" ");
  15. var obj = {}, temp;
  16. for (var x in string) {
  17. if (string.hasOwnProperty(x)) {
  18. temp = string[x].split("=");
  19. obj[temp[0].replace("\r", '')] = unescape(temp[1]);
  20. }
  21. }
  22. return obj;
  23. };
  24. exports.query = function(host, port, callback){
  25. var socket = new net.Socket();
  26. var temp = String();
  27. var obj, result, error = "Some problem";
  28. host = host || "localhost";
  29. port = port || 10011;
  30. socket.on("close", function (he) {
  31. if(typeof(result) == "undefined" || he){
  32. callback(error);
  33. }else{
  34. callback(null, result);
  35. }
  36. });
  37. socket.on("error", function (e) {
  38. error = e.code;
  39. });
  40. socket.on("data", function (data) {
  41. // console.log(String(data));
  42. var str = String(data);
  43. for (var x in str) {
  44. if (!str.hasOwnProperty(x)) {
  45. continue;
  46. }
  47. var char = str[x];
  48. // console.log(str[x], "\n");
  49. if(char === '\n'){
  50. obj = formated(temp);
  51. if(!obj.error){
  52. result = obj;
  53. }
  54. temp = String();
  55. }else{
  56. temp += char;
  57. }
  58. }
  59. });
  60. socket.connect({
  61. port: port,
  62. host: host
  63. });
  64. socket.write("use 1\n");
  65. socket.write("serverinfo\n");
  66. socket.end();
  67. };