diff --git a/readme.md b/readme.md index ed08b0eb6..4ed335c9e 100644 --- a/readme.md +++ b/readme.md @@ -73,9 +73,12 @@ bower update; # serverside dependencies npm update; ``` +## Deleting all data and resetting Cryptpad + To reset your instance of Cryptpad and remove all the data that is being stored: +**WARNING: This will reset your Cryptpad instance and remove all data** ``` # change into your cryptpad directory cd /your/cryptpad/instance/location; diff --git a/www/common/fsStore.js b/www/common/fsStore.js index 623152a35..1be9e797f 100644 --- a/www/common/fsStore.js +++ b/www/common/fsStore.js @@ -153,7 +153,7 @@ define([ f(void 0, store); } - var requestLogin = function (Cryptpad) { + var requestLogin = function () { // log out so that you don't go into an endless loop... Cryptpad.logout(); @@ -162,11 +162,11 @@ define([ window.location.href = '/login/'; }; + var tokenKey = 'loginToken'; if (Cryptpad.isLoggedIn()) { /* This isn't truly secure, since anyone who can read the user's object can set their local loginToken to match that in the object. However, it exposes a UI that will work most of the time. */ - var tokenKey = 'loginToken'; // every user object should have a persistent, random number if (typeof(proxy.loginToken) !== 'number') { @@ -203,6 +203,13 @@ define([ if (typeof(n) !== "string") { return; } Cryptpad.changeDisplayName(n); }); + proxy.on('change', [tokenKey], function () { + console.log('wut'); + var localToken = tryParsing(localStorage.getItem(tokenKey)); + if (localToken !== proxy[tokenKey]) { + return void requestLogin(); + } + }); }; var initialized = false; diff --git a/www/examples/index.html b/www/examples/index.html index e4266b005..9730bc56b 100644 --- a/www/examples/index.html +++ b/www/examples/index.html @@ -11,12 +11,10 @@ diff --git a/www/examples/upload/index.html b/www/examples/upload/index.html deleted file mode 100644 index 0bf8d6c3b..000000000 --- a/www/examples/upload/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - -

Upload

- - diff --git a/www/examples/upload/main.js b/www/examples/upload/main.js deleted file mode 100644 index 6aecafd76..000000000 --- a/www/examples/upload/main.js +++ /dev/null @@ -1,75 +0,0 @@ -define([ - 'jquery', - '/common/cryptget.js', - '/bower_components/chainpad-crypto/crypto.js' -], function ($, Crypt, Crypto) { - var Nacl = window.nacl; - - var key = Nacl.randomBytes(32); - - var handleFile = function (body) { - //console.log("plaintext"); - //console.log(body); - -/* - 0 && Crypt.put(body, function (e, out) { - if (e) { return void console.error(e); } - if (out) { - console.log(out); - } - }); */ - - var data = {}; - -(function () { - var cyphertext = data.payload = Crypto.encrypt(body, key); - console.log("encrypted"); - console.log(cyphertext); - - console.log(data); - - var decrypted = Crypto.decrypt(cyphertext, key); - //console.log('decrypted'); - //console.log(decrypted); - - - if (decrypted !== body) { - throw new Error("failed to maintain integrity with round trip"); - } - - // finding... files are entirely too large. - - - console.log(data.payload.length, body.length); // 1491393, 588323 - console.log(body.length / data.payload.length); // 0.3944788529918003 - console.log(data.payload.length / body.length); // 2.534990132971174 - -/* - -http://stackoverflow.com/questions/19959072/sending-binary-data-in-javascript-over-http - - // Since we deal with Firefox and Chrome only - var bytesToSend = [253, 0, 128, 1]; - var bytesArray = new Uint8Array(bytesToSend); - - $.ajax({ - url: '%your_service_url%', - type: 'POST', - contentType: 'application/octet-stream', - data: bytesArray, - processData: false - }); -*/ -})(); - }; - - var $file = $('input[type="file"]'); - $file.on('change', function (e) { - var file = e.target.files[0]; - var reader = new FileReader(); - reader.onload = function (e) { - handleFile(e.target.result); - }; - reader.readAsText(file); - }); -}); diff --git a/www/settings/main.js b/www/settings/main.js index 1e79371fd..7abff2e85 100644 --- a/www/settings/main.js +++ b/www/settings/main.js @@ -273,8 +273,9 @@ define([ $spinner.show(); $ok.hide(); - var token = proxy.loginToken = Math.floor(Math.random()*Number.MAX_SAFE_INTEGER); + var token = Math.floor(Math.random()*Number.MAX_SAFE_INTEGER); localStorage.setItem('loginToken', token); + proxy.loginToken = token; Cryptpad.whenRealtimeSyncs(realtime, function () { $spinner.hide();