Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Custom Data Handling */
- var HOOKS_REGISTER = {};
- xat_activityToC = activityToC;
- activityToC = function(e, o, t) {
- "xatMessageReceived" == e && "#MESSAGE" == o && (t = hookedHandle("fromxat", e, o, atob(t))); // Custom Data Handling
- return xat_activityToC(e, o, t);
- }
- xat_xatSend = xatSend;
- xatSend = function(e, o) {
- "" == e && (o = hookedHandle("toxat", e, "", o)); // Custom Data Handling
- return xat_xatSend(e, o);
- }
- function hookedHandle(d, e, o, t) {
- // e == "xatMessageReceived" (Event)
- // o == "#MESSAGE" (More event details/Status)
- // t == (Base64 DECODED Data)
- var parser = new DOMParser();
- var xmlDoc = parser.parseFromString(t,"text/xml");
- var send = true;
- var tag = xmlDoc.documentElement.nodeName;
- let attribs = new Object();
- for (var att, i = 0, atts = xmlDoc.documentElement.attributes, n = atts.length; i < n; i++){
- attribs[atts[i].nodeName.toString()] = atts[i].nodeValue.toString();
- }
- callHooks(d, tag, attribs, xmlDoc, send);
- // console.info(".hookedHandle", e + " " + o + " " + (new XMLSerializer().serializeToString(xmlDoc.documentElement)));
- // console.info(".hookedHandle", "TAG=["+tag+"], ATTRIBS=" + JSON.stringify(attribs));
- // if(d == "toxat") console.info(".hookedHandle", e + " " + o + " " + t);
- return new XMLSerializer().serializeToString(xmlDoc.documentElement);
- }
- function registerHook(tag, func) {
- if(!HOOKS_REGISTER[tag]) HOOKS_REGISTER[tag] = [];
- HOOKS_REGISTER[tag].push(func);
- }
- function callHooks(direction, tag, attribs, doc, send) {
- if(!HOOKS_REGISTER[tag]) return;
- function call(fn, attribs, direction, doc, send) { fn(attribs, direction, doc, send); }
- HOOKS_REGISTER[tag].forEach(fn => call(fn, attribs, direction, doc, send));
- }
- function fakeRecv(data) {
- xat_activityToC("xatMessageReceived", "#MESSAGE", btoa(data));
- }
- function fakeSend(data) {
- xat_xatSend("", data);
- }
- registerHook("z", function(attribs, direction, doc, send) {
- direction == "fromxat" && attribs.t == "/l" && fakeRecv('<p t="I tickled you!" u="'+ attribs.u +'" />');
- direction == "toxat" && attribs.t.indexOf("/a_NF") == -1 && (doc.documentElement.attributes.t.value = "/a_NF");
- });
- registerHook("m", function(packet, direction, doc, send) {
- if(direction != "toxat") return;
- console.info("attribs: " + JSON.stringify(packet));
- packet.t = packet.t.replace(String.fromCharCode(127), "").trim();
- if (!packet.t || packet.t.substr(0, 1) != "`") return;
- var message = packet.t.split(" ");
- var cmd = message.shift().substr(1).toLowerCase();
- var msg = message.join(" ");
- fakeSend('<m t="' + msg +'" u="' + packet.u + '" />');
- console.info([message, cmd, msg]);
- });
- /* End Custom Data Handling */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement