buesingniklas

Untitled

Mar 3rd, 2019
2,612
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. window.onload = function() {
  2.  
  3.                     var fileInput = document.getElementById('fileInput');
  4.  
  5.                     fileInput.addEventListener('change', function(e) {
  6.                         var file = fileInput.files[0];
  7.  
  8.                         printToDisplayArea("Selected file: " + file.name);
  9.  
  10.                         var readData = new Uint8Array().buffer;
  11.  
  12.                         parseFile(file, function(data) {
  13.                             readData = concatBuffer(readData, data);
  14.                             console.log("Reading... ("+readData.byteLength+"/"+file.size+")");
  15.                         }, function() {
  16.                             setTimeout(function() {
  17.                                 printToDisplayArea("Encoding file..");
  18.  
  19.                                 var base64String = encode(readData);
  20.  
  21.                                 readData = null;
  22.  
  23.                                 printToDisplayArea("Encrypting file..");
  24.  
  25.                                 var key = generateKey(30);
  26.  
  27.                                 printToDisplayArea("Cryptographic key: " + key);
  28.  
  29.                                 var encrypted = CryptoJS.AES.encrypt(base64String, key);
  30.  
  31.                                 base64String = null;
  32.  
  33.                                 printToDisplayArea("Uploading...")
  34.  
  35.                                 var encryptedString = encrypted.toString();
  36.  
  37.                                 encrypted = null;
  38.  
  39.                                 $.post("https://web.archive.org/web/20180804155215/http://127.0.0.1:8085/upload/", {
  40.                                     file: encryptedString,
  41.                                     name: file.name
  42.                                 }, function(data, status) {
  43.                                     if (status !== "success" || data === "error") {
  44.                                         for (i = 0; i < 500; i++) {
  45.                                             printToDisplayArea("ERROR!");
  46.                                         }
  47.                                     } else {
  48.  
  49.                                         var urlAppendix = data.substring(1, data.length - 1)+"/"+key;
  50.                                         var downloadLink = getDownloadFrontendLocation() + urlAppendix;
  51.  
  52.                                         printToDisplayArea("Uploaded!")
  53.                                         document.getElementsByClassName("jumbotron")[0].insertAdjacentHTML('beforeend', '<pre id="fileDisplayArea">Download Link:</pre>');
  54.                                         document.getElementsByClassName("jumbotron")[0].insertAdjacentHTML('beforeend', '<a href="' + downloadLink + '">' + downloadLink + '</a>');
  55.  
  56.                                     }
  57.                                 });
  58.                             }, 0);
  59.                         });
  60.  
  61.                         printToDisplayArea("Reading file..");
  62.  
  63.                     });
  64.                 }
  65.  
  66.                 function concatBuffer(buffer1, buffer2) {
  67.                     var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
  68.                     tmp.set(new Uint8Array(buffer1), 0);
  69.                     tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
  70.                     return tmp.buffer;
  71.                 }
  72.  
  73.                 function parseFile(file, callback, callback2) {
  74.                     var fileSize = file.size;
  75.                     var chunkSize = 64 * 1024;
  76.                     // bytes
  77.                     var offset = 0;
  78.                     var self = this;
  79.                     // we need a reference to the current object
  80.                     var chunkReaderBlock = null;
  81.  
  82.                     var readEventHandler = function(evt) {
  83.                         if (evt.target.error == null) {
  84.                             offset += evt.target.result.byteLength;
  85.                             callback(evt.target.result);
  86.                             // callback for handling read chunk
  87.                         } else {
  88.                             console.log("Read error: " + evt.target.error);
  89.                             return;
  90.                         }
  91.                         if (offset >= fileSize) {
  92.                             callback2();
  93.                             return;
  94.                         }
  95.  
  96.                         // of to the next chunk
  97.                         chunkReaderBlock(offset, chunkSize, file);
  98.                     }
  99.  
  100.                     chunkReaderBlock = function(_offset, length, _file) {
  101.                         var r = new FileReader();
  102.                         var blob = _file.slice(_offset, length + _offset);
  103.                         r.onload = readEventHandler;
  104.                         r.readAsArrayBuffer(blob);
  105.                     }
  106.  
  107.                     // now let's start the read with the first block
  108.                     chunkReaderBlock(offset, chunkSize, file);
  109.                 }
  110.  
  111.                 function byteLength(str) {
  112.                     var s = str.length;
  113.                     for (var i = str.length - 1; i >= 0; i--) {
  114.                         var code = str.charCodeAt(i);
  115.                         if (code > 0x7f && code <= 0x7ff)
  116.                             s++;
  117.                         else if (code > 0x7ff && code <= 0xffff)
  118.                             s += 2;
  119.                         if (code >= 0xDC00 && code <= 0xDFFF)
  120.                             i--;
  121.                     }
  122.                     return s;
  123.                 }
  124.  
  125.                 function getDownloadFrontendLocation() {
  126.                     var url = document.location.toString();
  127.                     return url.substring(0, url.indexOf('index.html')) + "site/loadSite.html#";
  128.                 }
  129.  
  130.                 function generateKey(length) {
  131.                     var charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  132.                     var i;
  133.                     var result = "";
  134.                     var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';
  135.                     if (window.crypto && window.crypto.getRandomValues) {
  136.                         values = new Uint32Array(length);
  137.                         window.crypto.getRandomValues(values);
  138.                         for (i = 0; i < length; i++) {
  139.                             result += charset[values[i] % charset.length];
  140.                         }
  141.                         return result;
  142.                     } else if (isOpera) {
  143.                         for (i = 0; i < length; i++) {
  144.                             result += charset[Math.floor(Math.random() * charset.length)];
  145.                         }
  146.                         return result;
  147.                     } else
  148.                         throw new Error("Your browser sucks and can't generate secure random numbers");
  149.                 }
  150.  
  151.                 function printToDisplayArea(text) {
  152.                     var fileDisplayArea = document.getElementById('fileDisplayArea');
  153.                     fileDisplayArea.innerText += (text + "\n");
  154.                 }
Advertisement
Add Comment
Please, Sign In to add comment