123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /* Import core modules. */
- const _ = require('lodash')
- const bch = require('bitcore-lib-cash')
- const repl = require('repl')
- /* Import local modules. */
- const messageUtils = require('./serverMessages.js')
- /* Set magic bytes. */
- const magic = Buffer.from('42bcc32669467873', 'hex')
- const currentPath = __filename.substring(0, __filename.lastIndexOf('/'))
- process.chdir(currentPath)
- /* Initialize shuffle. */
- const shuffleIt = repl.start('cashshuffle debug > ')
- shuffleIt.context.round
- try {
- shuffleIt.context.round = require(currentPath + '/_failedShuffle.js')
- } catch (nope) {
- /* eslint-disable-next-line no-console */
- console.log('\n No failed shuffle file found at', currentPath + '/_failedShuffle.js')
- shuffleIt.context.round = {}
- /* Quit application. */
- process.exit()
- }
- // shuffleIt.context.players = shuffleIt.context.round.players
- shuffleIt.context.inbox = shuffleIt.context.round.inbox
- shuffleIt.context.outbox = shuffleIt.context.round.outbox
- shuffleIt.context.me = _.find(shuffleIt.context.round.players, { isMe: true })
- for (let onePlayer of shuffleIt.context.round.players) {
- if (onePlayer.isMe) {
- continue
- }
- let somePlayer = {}
- somePlayer['player' + onePlayer.playerNumber] = onePlayer
- Object.assign(shuffleIt.context, somePlayer)
- }
- shuffleIt.context.bch = bch
- shuffleIt.context.Address = shuffleIt.context.bch.Address
- shuffleIt.context.PrivateKey = shuffleIt.context.bch.PrivateKey
- shuffleIt.context.PublicKey = shuffleIt.context.bch.PublicKey
- shuffleIt.context.Message = require('./BetterMessage.js')
- shuffleIt.context.msg = messageUtils
- shuffleIt.context.crypto = require('./cryptoUtils.js')
- shuffleIt.context._ = _
- shuffleIt.context.tools = {
- crypto: require('./cryptoUtils.js'),
- coin: require('./coinUtils.js'),
- loadProtobuffMessageFromMailbox: function(someMailboxMessageObject) {
- let messageBuffer = Buffer.from(someMailboxMessageObject.protobuffMessage.components.buffer, 'base64')
- let decodedMessage = messageUtils.decodeAndClassify(messageBuffer)
- delete decodedMessage.components
- let sender = _.find(shuffleIt.context.round.players, {
- session: decodedMessage.pruned.message.session
- })
- return Object.assign(decodedMessage, { sender: sender })
- },
- // Find a properly packed `Protocol Message` from
- // somewhere deep inside a base64 encoded string.
- findValidPackets: function(someBase64EncodedString) {
- let messageBuffer = Buffer.from(someBase64EncodedString, 'base64')
- let aintGood = true
- let indexCounter = 0
- let packets
- let numTries = 0
- while (aintGood && numTries < someBase64EncodedString.length) {
- numTries++
- try {
- let messageMagic = messageBuffer.slice(indexCounter, indexCounter + 8)
- if (messageMagic.toString('hex') !== magic.toString('hex')) {
- indexCounter += 1
- throw new Error('message_magic:'+(messageMagic.toString('hex')))
- } else {
- packets = shuffleIt.context.crypto.PB.Packets
- .decode(messageBuffer.slice(indexCounter+12, )).toJSON()
- aintGood = false
- }
- } catch (nope) {
- console.error(nope) // eslint-disable-line no-console
- }
- }
- console.log(JSON.stringify(packets, null, 4)) // eslint-disable-line no-console
- return packets
- }
- }
|