UNPKG

@tradle/otr

Version:

Off-the-Record Messaging Protocol

87 lines (76 loc) 2.05 kB
var OTR = require('./').OTR var CONST = require('./lib/const') var keys = require('./test/spec/unit/data/keys.js') var Parse = require('./lib/parse') var USER_ID = 0 var users = { userA: null, userB: null } function getOther(user) { return user === 'userA' ? 'userB' : 'userA' } users.userA = makeUser('userA') users.userB = makeUser('userB') var CONST = require('./lib/const') users.userA.sendQueryMsg() users.userA.on('status', function (status) { if (status === CONST.STATUS_AKE_SUCCESS) { users.userA.died = true users.userA = makeUser('userA') users.userA.sendMsg('back') // users.userA.their_instance_tag = OTR.makeInstanceTag() // users.userA.sendMsg('hi') // session ends } }) function makeUser(me) { var other = getOther(me) var user = new OTR({ priv: keys[me] }) user.REQUIRE_ENCRYPTION = true var lastMsg user.USER_ID = USER_ID++ var ignore = [] user.on('ui', function (msg) { console.log(msg, 'from', other) if (msg === 'back') { debugger } }) user.on('error', function(err) { if (err) throw err }) user.on('io', function (msg) { lastMsg = msg if (user.died) { debugger return } if (users[other].died) debugger users[other].receiveMsg(msg) if (users[other].their_instance_tag !== '\x00\x00\x00\x00') { var parsed = Parse.parseMsg(users[other], msg); if (parsed.cls === 'query') { debugger users[other].died = true users[other] = makeUser(other) users[other].receiveMsg(msg) } } }) user.on('warn', function(err) { if (/session/.test(err)) { debugger // if (this.their_instance_tag !== '\x00\x00\x00\x00') { // users[me].removeAllListeners() // users[me] = makeUser(me) // users[me].receiveMsg(lastMsg) // } // user.endOtr(function() { // user.removeAllListeners() // user = users[me] = makeUser(me, other) // user.sendMsg('yo') // }) } console.warn(err) }) return user }