UNPKG

otr4

Version:

OTR Messaging Protocol [native libotr4.x.x]

83 lines (66 loc) 1.84 kB
var net = require("net"); var otr = require("../index.js"); var user = new otr.User({ keys: "./alice.keys", fingerprints: "./alice.fp", instags: "./alice.instags" }), account = user.account("alice@telechat.org", "telechat"), contact = account.contact("BOB"); if (!account.fingerprint()) { console.log("no key found, run keygen.js to generate keys for this example."); process.exit(); } if (!account.instag()) account.generateInstag(); var server = net.createServer(function (conn) { conn.pause(); //allow time to setup all event handlers var session = contact.openSession({ debug: false }); session.online = function () { if (conn && conn.remotePort) { return true; } return false; }; session.on("disconnect", function () { console.log("remote side ended secure session."); session.end(); //return to plain text }); session.on("new_fingerprint", function (fingerprint) { console.log("contact's fingerprint:", fingerprint); }); session.on("write_fingerprints", function () { console.log("got write_fingerprints event"); }); session.on("gone_secure", function () { console.log("got gone_secure event"); }); session.on("message", function (message, private) { console.log("We got a message:", message); console.log("Message was encrypted?:", private); session.send(message); //echo back message. }); session.on("inject_message", function (fragment) { try { conn.write(fragment); } catch (e) {} }); session.on("plaintext", function () { conn.end(); }); conn.on("end", function () { console.log("closing connection"); session.destroy(); }); conn.on("data", function (data) { session.recv(data); }); conn.resume(); //start emitting data events }); server.listen( 8123, function () { console.log("listening on port:", server.address().port); } );