diff --git a/bower.json b/bower.json index 8e6d5cb79..b35e8e481 100644 --- a/bower.json +++ b/bower.json @@ -30,9 +30,8 @@ "secure-fabric.js": "secure-v1.7.9", "hyperjson": "~1.4.0", "chainpad-crypto": "^0.2.0", - "chainpad-listmap": "^0.5.0", + "chainpad-listmap": "^0.6.0", "chainpad": "^5.1.0", - "chainpad-netflux": "^0.7.0", "file-saver": "1.3.1", "alertifyjs": "1.0.11", "scrypt-async": "1.2.0", diff --git a/customize.dist/login.js b/customize.dist/login.js index 2902d303a..ab0290909 100644 --- a/customize.dist/login.js +++ b/customize.dist/login.js @@ -13,11 +13,12 @@ define([ '/common/outer/local-store.js', '/customize/messages.js', '/bower_components/nthen/index.js', + '/common/outer/login-block.js', '/bower_components/tweetnacl/nacl-fast.min.js', '/bower_components/scrypt-async/scrypt-async.min.js', // better load speed ], function ($, Listmap, Crypto, Util, NetConfig, Cred, ChainPad, Realtime, Constants, UI, - Feedback, LocalStore, Messages, nThen) { + Feedback, LocalStore, Messages, nThen, Block) { var Exports = { Cred: Cred, }; @@ -42,11 +43,11 @@ define([ // 32 more for a signing key var edSeed = opt.edSeed = dispense(32); - // TODO // 32 more bytes to seed an additional signing key + opt.blockSignSeed = dispense(32); - // TODO // 32 more bytes for a symmetric key for block encryption + opt.blockSymmetric = dispense(32); // derive a private key from the ed seed var signingKeypair = Nacl.sign.keyPair.fromSeed(new Uint8Array(edSeed)); @@ -124,6 +125,14 @@ define([ // run scrypt to derive the user's keys res.opt = allocateBytes(bytes); })); + + + // TODO consider checking the block here + }).nThen(function (/* waitFor */) { + // check for blocks + Block = Block; // jshint + + }).nThen(function (waitFor) { var opt = res.opt; // use the derived key to generate an object @@ -283,7 +292,9 @@ define([ proxy[Constants.displayNameKey] = uname; } LocalStore.eraseTempSessionValues(); - proceed(result); + LocalStore.login(result.userHash, result.userName, function () { + setTimeout(function () { proceed(result); }); + }); }); }); break; diff --git a/package.json b/package.json index 8de5b61f4..c6b69cf44 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,14 @@ "version": "2.3.0", "license": "AGPL-3.0-or-later", "dependencies": { - "chainpad-server": "^2.0.0", + "chainpad-server": "~2.1.0", "express": "~4.16.0", "mkdirp": "^0.5.1", "nthen": "~0.1.0", "pull-stream": "^3.6.1", "replify": "^1.2.0", "saferphore": "0.0.1", + "socket.io": "^2.1.1", "sortify": "^1.0.4", "stream-to-pull-stream": "^1.7.2", "tweetnacl": "~0.12.2", diff --git a/server.js b/server.js index 02cb54029..47c19eaff 100644 --- a/server.js +++ b/server.js @@ -5,7 +5,7 @@ var Express = require('express'); var Http = require('http'); var Https = require('https'); var Fs = require('fs'); -var WebSocketServer = require('ws').Server; +var SocketIO = require('socket.io'); var NetfluxSrv = require('./node_modules/chainpad-server/NetfluxWebsocketSrv'); var Package = require('./package.json'); var Path = require("path"); @@ -249,7 +249,10 @@ var nt = nThen(function (w) { console.log("setting up a new websocket server"); wsConfig = { port: websocketPort}; } - var wsSrv = new WebSocketServer(wsConfig); + var wsSrv = new SocketIO(httpServer, { + path: config.websocketPath || '/cryptpad_websocket' + }); + Storage.create(config, function (store) { NetfluxSrv.run(store, wsSrv, config, rpc); });