Page MenuHomeSealhub

No OneTemporary

diff --git a/build_html.js b/build_html.js
index 8d3309f..2be94b2 100644
--- a/build_html.js
+++ b/build_html.js
@@ -1,35 +1,44 @@
import { readFileSync } from "fs";
import { fileURLToPath } from "node:url";
-import * as path from "node:path"
-
+import * as path from "node:path";
/**
* @param {string | undefined} har_file
- * @param {[string, string][] | undefined} private_data
+ * @param {{data: string, desc: string}[] | undefined} private_data
*/
export function build_html(har_file, private_data) {
- let path_prefix = path.dirname(fileURLToPath(import.meta.url)) + "/";
- let template = readFileSync(path_prefix + "src/template.html").toString('utf8');
+ let path_prefix = path.dirname(fileURLToPath(import.meta.url)) + "/";
+ let template = readFileSync(path_prefix + "src/template.html").toString(
+ "utf8"
+ );
let replacement = "";
- replacement += "<script type='module'>" + readFileSync(path_prefix + "lib/src/web_entrypoint.js").toString('utf8') + '</script>';
+ replacement +=
+ "<script type='module'>" +
+ readFileSync(path_prefix + "lib/src/web_entrypoint.js").toString(
+ "utf8"
+ ) +
+ "</script>";
if (har_file) {
- replacement += "<script id='har_file' type='application/json'>" + har_file + '</script>';
+ replacement +=
+ "<script id='har_file' type='application/json'>" +
+ har_file +
+ "</script>";
}
- template = template.replace('<!-- REPLACE ME -->', replacement);
+ template = template.replace("<!-- REPLACE ME -->", replacement);
if (private_data) {
let replacement = "";
for (const row of private_data) {
- replacement += "<tr>\n"
- replacement += " <td>"
- replacement += row[0];
- replacement += " </td>\n"
- replacement += " <td>"
- replacement += row[1];
- replacement += " </td>\n"
- replacement += "</tr>\n"
+ replacement += "<tr>\n";
+ replacement += "<td>";
+ replacement += row.data;
+ replacement += "</td>\n";
+ replacement += "<td>";
+ replacement += row.desc;
+ replacement += "</td>\n";
+ replacement += "</tr>\n";
}
template = template.replace("<!-- PRIVATE INFO -->", replacement);
}
return template;
}
diff --git a/src/web_entrypoint.ts b/src/web_entrypoint.ts
index 6f5fa35..6284d83 100644
--- a/src/web_entrypoint.ts
+++ b/src/web_entrypoint.ts
@@ -1,101 +1,105 @@
import * as har_parser from "./index";
import { TabulatorFull as Tabulator } from "tabulator-tables";
+let parser: har_parser.HARParser | undefined;
+
let filePicker = document.getElementById("file")!;
filePicker.addEventListener("change", fullUpdate, false);
let privateInfoForm = <HTMLFormElement>(
document.getElementById("private-info-form")
);
privateInfoForm.addEventListener("submit", privateInfoSubmit, false);
- let privateInfoTable = new Tabulator("#private-info-table", {
- columns: [
- {title: "Information", field: "information", editor:"input"},
- {title: "Description", field: "description", editor:"input"},
- ],
- layout: "fitDataStretch"
- });
+let privateInfoTable = new Tabulator("#private-info-table", {
+ columns: [
+ { title: "Information", field: "information", editor: "input" },
+ { title: "Description", field: "description", editor: "input" },
+ ],
+ layout: "fitDataStretch",
+});
- privateInfoTable.on("cellEdited", updateTable)
+privateInfoTable.on("cellEdited", updateTable);
function privateInfoSubmit(evt: SubmitEvent) {
evt.preventDefault();
let form_data = new FormData(privateInfoForm);
let info = form_data.get("info")!;
let desc = form_data.get("desc")!;
- privateInfoTable.addRow({"information": info.toString(), "description": desc.toString()});
+ privateInfoTable.addRow({
+ information: info.toString(),
+ description: desc.toString(),
+ });
updateTable();
}
async function fullUpdate(evt: any) {
var files = evt.target.files;
var file = files[0];
- (<any>window).parser = new har_parser.HARParser(file);
+ parser = new har_parser.HARParser(file);
+
// TODO: Manage parsing errors here
- await (<any>window).parser.try_parse();
- updateTable();
+ await parser.try_parse();
await updateTable();
}
function getPrivateInfo(): [string, string][] {
let ret: [string, string][] = [];
let data = privateInfoTable.getData();
for (const row of data) {
ret.push([row.information, row.description]);
}
return ret;
}
async function updateTable() {
- if (!(<any>window).parser)
- return;
- let parser: har_parser.HARParser = (<any>window).parser;
+ if (!parser) return;
parser.process_private_information(getPrivateInfo());
var tabledata = [];
var curr_id = 0;
for (const [domain, records] of parser.kv.entries()) {
for (const rec of records) {
let path = "";
for (const [idx, path_part] of rec.path.entries()) {
path += path_part.pretty_print();
if (idx != rec.path.length - 1) path += " -> ";
}
tabledata.push({
id: curr_id,
domain: domain,
path: path,
value: rec.value,
private_info_idxs: rec.private_info_idxs.join(" "),
});
curr_id++;
}
}
new Tabulator("#example-table", {
data: tabledata, //assign data to table
layout: "fitColumns", //fit columns to width of table (optional)
movableColumns: true, //allow column order to be changed
paginationCounter: "rows", //display count of paginated rows in footer
columns: [
//Define Table Columns
{ title: "Domain", field: "domain" },
{ title: "Path", field: "path" },
{ title: "Value", field: "value" },
{
title: "Private info found",
field: "private_info_idxs",
},
],
});
}
+
let har_file = document.getElementById("har_file");
if (har_file) {
- (<any>window).parser = new har_parser.HARParser(new Blob([har_file.innerText]));
+ parser = new har_parser.HARParser(new Blob([har_file.innerText]));
+
// TODO: Manage parsing errors here
- // TODO: Genericise, don't repeat myself here
- await (<any>window).parser.try_parse();
- updateTable();
- await updateTable();
+ parser.try_parse().then(() => {
+ updateTable();
+ });
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Nov 8, 07:47 (1 d, 8 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1034294
Default Alt Text
(5 KB)

Event Timeline