Advertisement
austinh115

hookedHandle - xat html5 bot

Jun 11th, 2018
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. /* Custom Data Handling */
  2.  
  3. var HOOKS_REGISTER = {};
  4.  
  5. xat_activityToC = activityToC;
  6. activityToC = function(e, o, t) {
  7. "xatMessageReceived" == e && "#MESSAGE" == o && (t = hookedHandle("fromxat", e, o, atob(t))); // Custom Data Handling
  8. return xat_activityToC(e, o, t);
  9. }
  10.  
  11. xat_xatSend = xatSend;
  12. xatSend = function(e, o) {
  13. "" == e && (o = hookedHandle("toxat", e, "", o)); // Custom Data Handling
  14. return xat_xatSend(e, o);
  15. }
  16.  
  17. function hookedHandle(d, e, o, t) {
  18. // e == "xatMessageReceived" (Event)
  19. // o == "#MESSAGE" (More event details/Status)
  20. // t == (Base64 DECODED Data)
  21.  
  22. var parser = new DOMParser();
  23. var xmlDoc = parser.parseFromString(t,"text/xml");
  24. var send = true;
  25.  
  26. var tag = xmlDoc.documentElement.nodeName;
  27. let attribs = new Object();
  28. for (var att, i = 0, atts = xmlDoc.documentElement.attributes, n = atts.length; i < n; i++){
  29. attribs[atts[i].nodeName.toString()] = atts[i].nodeValue.toString();
  30. }
  31.  
  32. callHooks(d, tag, attribs, xmlDoc, send);
  33.  
  34. // console.info(".hookedHandle", e + " " + o + " " + (new XMLSerializer().serializeToString(xmlDoc.documentElement)));
  35. // console.info(".hookedHandle", "TAG=["+tag+"], ATTRIBS=" + JSON.stringify(attribs));
  36.  
  37. // if(d == "toxat") console.info(".hookedHandle", e + " " + o + " " + t);
  38.  
  39. return new XMLSerializer().serializeToString(xmlDoc.documentElement);
  40. }
  41.  
  42. function registerHook(tag, func) {
  43. if(!HOOKS_REGISTER[tag]) HOOKS_REGISTER[tag] = [];
  44. HOOKS_REGISTER[tag].push(func);
  45. }
  46.  
  47. function callHooks(direction, tag, attribs, doc, send) {
  48. if(!HOOKS_REGISTER[tag]) return;
  49. function call(fn, attribs, direction, doc, send) { fn(attribs, direction, doc, send); }
  50. HOOKS_REGISTER[tag].forEach(fn => call(fn, attribs, direction, doc, send));
  51. }
  52.  
  53. function fakeRecv(data) {
  54. xat_activityToC("xatMessageReceived", "#MESSAGE", btoa(data));
  55. }
  56.  
  57. function fakeSend(data) {
  58. xat_xatSend("", data);
  59. }
  60.  
  61. registerHook("z", function(attribs, direction, doc, send) {
  62. direction == "fromxat" && attribs.t == "/l" && fakeRecv('<p t="I tickled you!" u="'+ attribs.u +'" />');
  63. direction == "toxat" && attribs.t.indexOf("/a_NF") == -1 && (doc.documentElement.attributes.t.value = "/a_NF");
  64. });
  65.  
  66. registerHook("m", function(packet, direction, doc, send) {
  67. if(direction != "toxat") return;
  68.  
  69. console.info("attribs: " + JSON.stringify(packet));
  70.  
  71. packet.t = packet.t.replace(String.fromCharCode(127), "").trim();
  72. if (!packet.t || packet.t.substr(0, 1) != "`") return;
  73. var message = packet.t.split(" ");
  74. var cmd = message.shift().substr(1).toLowerCase();
  75. var msg = message.join(" ");
  76.  
  77. fakeSend('<m t="' + msg +'" u="' + packet.u + '" />');
  78.  
  79. console.info([message, cmd, msg]);
  80. });
  81.  
  82. /* End Custom Data Handling */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement