mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-21 23:36:16 -04:00
Merge branch 'tlwr-filedownload'
This commit is contained in:
commit
45640f2f2e
2 changed files with 35 additions and 13 deletions
|
@ -1028,20 +1028,37 @@ var Utils = {
|
||||||
};
|
};
|
||||||
|
|
||||||
var formatFile = function(file, i) {
|
var formatFile = function(file, i) {
|
||||||
|
var blob = new Blob(
|
||||||
|
[new Uint8Array(file.bytes)],
|
||||||
|
{type: "octet/stream"}
|
||||||
|
);
|
||||||
|
var blobUrl = URL.createObjectURL(blob);
|
||||||
|
|
||||||
|
var downloadAnchorElem = "<a href='" + blobUrl + "' " +
|
||||||
|
"title='Download " + Utils.escapeHtml(file.fileName) + "' " +
|
||||||
|
"download='" + Utils.escapeHtml(file.fileName) + "'>\u21B4</a>";
|
||||||
|
|
||||||
|
var expandFileContentsElem = "<a href='#collapse" + i + "' " +
|
||||||
|
"class='collapsed' " +
|
||||||
|
"data-toggle='collapse' " +
|
||||||
|
"aria-expanded='true' " +
|
||||||
|
"aria-controls='collapse" + i + "' " +
|
||||||
|
"title=\"Show/hide contents of '" + Utils.escapeHtml(file.fileName) + "'\">🔍</a>";
|
||||||
|
|
||||||
var html = "<div class='panel panel-default'>" +
|
var html = "<div class='panel panel-default'>" +
|
||||||
"<div class='panel-heading' role='tab' id='heading" + i + "'>" +
|
"<div class='panel-heading' role='tab' id='heading" + i + "'>" +
|
||||||
"<h4 class='panel-title'>" +
|
"<h4 class='panel-title'>" +
|
||||||
"<a class='collapsed' role='button' data-toggle='collapse' " +
|
"<div>" +
|
||||||
"href='#collapse" + i + "' " +
|
Utils.escapeHtml(file.fileName) +
|
||||||
"aria-expanded='true' aria-controls='collapse" + i +"'>" +
|
" " + expandFileContentsElem +
|
||||||
file.fileName +
|
" " + downloadAnchorElem +
|
||||||
"<span class='pull-right'>" +
|
"<span class='pull-right'>" +
|
||||||
// These are for formatting when stripping HTML
|
// These are for formatting when stripping HTML
|
||||||
"<span style='display: none'>\n</span>" +
|
"<span style='display: none'>\n</span>" +
|
||||||
file.size.toLocaleString() + " bytes" +
|
file.size.toLocaleString() + " bytes" +
|
||||||
"<span style='display: none'>\n</span>" +
|
"<span style='display: none'>\n</span>" +
|
||||||
"</span>" +
|
"</span>" +
|
||||||
"</a>" +
|
"</div>" +
|
||||||
"</h4>" +
|
"</h4>" +
|
||||||
"</div>" +
|
"</div>" +
|
||||||
"<div id='collapse" + i + "' class='panel-collapse collapse' " +
|
"<div id='collapse" + i + "' class='panel-collapse collapse' " +
|
||||||
|
|
|
@ -309,9 +309,8 @@ var Compress = {
|
||||||
files = [];
|
files = [];
|
||||||
|
|
||||||
filenames.forEach(function(fileName) {
|
filenames.forEach(function(fileName) {
|
||||||
var contents = unzip.decompress(fileName);
|
var bytes = unzip.decompress(fileName);
|
||||||
|
var contents = Utils.byteArrayToUtf8(bytes);
|
||||||
contents = Utils.byteArrayToUtf8(contents);
|
|
||||||
|
|
||||||
var file = {
|
var file = {
|
||||||
fileName: fileName,
|
fileName: fileName,
|
||||||
|
@ -320,6 +319,7 @@ var Compress = {
|
||||||
|
|
||||||
var isDir = contents.length === 0 && fileName.endsWith("/");
|
var isDir = contents.length === 0 && fileName.endsWith("/");
|
||||||
if (!isDir) {
|
if (!isDir) {
|
||||||
|
file.bytes = bytes;
|
||||||
file.contents = contents;
|
file.contents = contents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,6 +477,13 @@ var Compress = {
|
||||||
this.position = 0;
|
this.position = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Stream.prototype.getBytes = function(bytesToGet) {
|
||||||
|
var newPosition = this.position + bytesToGet;
|
||||||
|
var bytes = this.bytes.slice(this.position, newPosition);
|
||||||
|
this.position = newPosition;
|
||||||
|
return bytes;
|
||||||
|
};
|
||||||
|
|
||||||
Stream.prototype.readString = function(numBytes) {
|
Stream.prototype.readString = function(numBytes) {
|
||||||
var result = "";
|
var result = "";
|
||||||
for (var i = this.position; i < this.position + numBytes; i++) {
|
for (var i = this.position; i < this.position + numBytes; i++) {
|
||||||
|
@ -535,11 +542,9 @@ var Compress = {
|
||||||
endPosition += 512 - (file.size % 512);
|
endPosition += 512 - (file.size % 512);
|
||||||
}
|
}
|
||||||
|
|
||||||
file.contents = "";
|
file.bytes = stream.getBytes(file.size);
|
||||||
|
file.contents = Utils.byteArrayToUtf8(file.bytes);
|
||||||
while (stream.position < endPosition) {
|
stream.position = endPosition;
|
||||||
file.contents += stream.readString(512);
|
|
||||||
}
|
|
||||||
} else if (file.type === "5") {
|
} else if (file.type === "5") {
|
||||||
// Directory
|
// Directory
|
||||||
files.push(file);
|
files.push(file);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue