|
|
|
@ -1,12 +1,17 @@
|
|
|
|
|
define([
|
|
|
|
|
'jquery',
|
|
|
|
|
'/common/cryptpad-common.js',
|
|
|
|
|
'/common/cryptget.js',
|
|
|
|
|
'/common/pinpad.js',
|
|
|
|
|
'/common/common-constants.js',
|
|
|
|
|
'/common/outer/local-store.js',
|
|
|
|
|
'/common/outer/login-block.js',
|
|
|
|
|
'/common/outer/network-config.js',
|
|
|
|
|
'/customize/login.js',
|
|
|
|
|
'/common/test.js',
|
|
|
|
|
'/bower_components/nthen/index.js',
|
|
|
|
|
'/bower_components/netflux-websocket/netflux-client.js',
|
|
|
|
|
'/bower_components/tweetnacl/nacl-fast.min.js'
|
|
|
|
|
], function ($, Cryptpad, Constants, LocalStore, Test, nThen) {
|
|
|
|
|
], function ($, Crypt, Pinpad, Constants, LocalStore, Block, NetConfig, Login, Test, nThen, Netflux) {
|
|
|
|
|
var Nacl = window.nacl;
|
|
|
|
|
|
|
|
|
|
var signMsg = function (msg, privKey) {
|
|
|
|
@ -27,9 +32,57 @@ define([
|
|
|
|
|
sessionStorage[Constants.userHashKey];
|
|
|
|
|
|
|
|
|
|
var proxy;
|
|
|
|
|
var rpc;
|
|
|
|
|
var network;
|
|
|
|
|
var rpcError;
|
|
|
|
|
|
|
|
|
|
var loadProxy = function (hash) {
|
|
|
|
|
nThen(function (waitFor) {
|
|
|
|
|
var wsUrl = NetConfig.getWebsocketURL();
|
|
|
|
|
var w = waitFor();
|
|
|
|
|
Netflux.connect(wsUrl).then(function (_network) {
|
|
|
|
|
network = _network;
|
|
|
|
|
w();
|
|
|
|
|
}, function (err) {
|
|
|
|
|
rpcError = err;
|
|
|
|
|
console.error(err);
|
|
|
|
|
});
|
|
|
|
|
}).nThen(function (waitFor) {
|
|
|
|
|
Crypt.get(hash, waitFor(function (err, val) {
|
|
|
|
|
if (err) {
|
|
|
|
|
waitFor.abort();
|
|
|
|
|
console.error(err);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
var parsed = JSON.parse(val);
|
|
|
|
|
proxy = parsed;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log("Can't parse user drive", e);
|
|
|
|
|
}
|
|
|
|
|
}), {
|
|
|
|
|
network: network
|
|
|
|
|
});
|
|
|
|
|
}).nThen(function (waitFor) {
|
|
|
|
|
if (!network) { return void waitFor.abort(); }
|
|
|
|
|
Pinpad.create(network, proxy, waitFor(function (e, call) {
|
|
|
|
|
if (e) {
|
|
|
|
|
rpcError = e;
|
|
|
|
|
return void waitFor.abort();
|
|
|
|
|
}
|
|
|
|
|
rpc = call;
|
|
|
|
|
}));
|
|
|
|
|
}).nThen(function () {
|
|
|
|
|
Test(function () {
|
|
|
|
|
// This is only here to maybe trigger an error.
|
|
|
|
|
window.drive = proxy['drive'];
|
|
|
|
|
Test.passed();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var whenReady = function (cb) {
|
|
|
|
|
if (proxy) { return void cb(); }
|
|
|
|
|
if (proxy && (rpc || rpcError)) { return void cb(); }
|
|
|
|
|
console.log('CryptPad not ready...');
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
whenReady(cb);
|
|
|
|
@ -45,6 +98,17 @@ define([
|
|
|
|
|
console.log('CP receiving', data);
|
|
|
|
|
if (data.cmd === 'PING') {
|
|
|
|
|
ret.res = 'PONG';
|
|
|
|
|
} else if (data.cmd === 'LOGIN') {
|
|
|
|
|
Login.loginOrRegister(data.data.name, data.data.password, false, false, function (err) {
|
|
|
|
|
if (err) {
|
|
|
|
|
ret.error = 'LOGIN_ERROR';
|
|
|
|
|
srcWindow.postMessage(JSON.stringify(ret), domain);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
loadProxy(LocalStore.getUserHash());
|
|
|
|
|
srcWindow.postMessage(JSON.stringify(ret), domain);
|
|
|
|
|
});
|
|
|
|
|
return;
|
|
|
|
|
} else if (data.cmd === 'SIGN') {
|
|
|
|
|
if (!AUTHORIZED_DOMAINS.filter(function (x) { return x.test(domain); }).length) {
|
|
|
|
|
ret.error = "UNAUTH_DOMAIN";
|
|
|
|
@ -63,7 +127,16 @@ define([
|
|
|
|
|
}
|
|
|
|
|
} else if (data.cmd === 'UPDATE_LIMIT') {
|
|
|
|
|
return void whenReady(function () {
|
|
|
|
|
Cryptpad.updatePinLimit(function (e, limit, plan, note) {
|
|
|
|
|
if (rpcError) {
|
|
|
|
|
// Tell the user on accounts that there was an issue and they need to wait maximum 24h or contact an admin
|
|
|
|
|
ret.warning = true;
|
|
|
|
|
srcWindow.postMessage(JSON.stringify(ret), domain);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
rpc.updatePinLimits(function (e, limit, plan, note) {
|
|
|
|
|
if (e) {
|
|
|
|
|
ret.warning = true;
|
|
|
|
|
}
|
|
|
|
|
ret.res = [limit, plan, note];
|
|
|
|
|
srcWindow.postMessage(JSON.stringify(ret), domain);
|
|
|
|
|
});
|
|
|
|
@ -74,18 +147,8 @@ define([
|
|
|
|
|
srcWindow.postMessage(JSON.stringify(ret), domain);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
nThen(function (waitFor) {
|
|
|
|
|
Cryptpad.ready(waitFor());
|
|
|
|
|
}).nThen(function (waitFor) {
|
|
|
|
|
Cryptpad.getUserObject(null, waitFor(function (obj) {
|
|
|
|
|
proxy = obj;
|
|
|
|
|
}));
|
|
|
|
|
}).nThen(function () {
|
|
|
|
|
console.log('IFRAME READY');
|
|
|
|
|
Test(function () {
|
|
|
|
|
// This is only here to maybe trigger an error.
|
|
|
|
|
window.drive = proxy['drive'];
|
|
|
|
|
Test.passed();
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
var userHash = LocalStore.getUserHash();
|
|
|
|
|
if (userHash) {
|
|
|
|
|
loadProxy(userHash);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|