Make ui for typescript version

Currently UI is based on old version of this project.
This commit is contained in:
Slava Bacherikov committed 2018-01-30 19:26:33 +02:00
1 parent 485063c43a
commit 8c14f3794f
7 files changed
+204 -60

No files matched your search

+8
View File
@@ -0,0 +1,8 @@
import { keygen } from "./keygen";
describe("BIOS keygen", () => {
it("Sony key for 1234567 is 9648669", () => {
let keysList = keygen("1234567");
expect(keysList[0][1]).toEqual(["9648669"]);
});
});
+40
View File
@@ -0,0 +1,40 @@
import { dellHddSolver, dellSolver, hddOldSolver } from "./dell";
import { fsi20DecNewSolver, fsi20DecOldSolver, fsiHexSolver } from "./fsi";
import { hpMiniSolver } from "./hpmini";
import { insydeSolver } from "./insyde";
import {
phoenixFsiLSolver, phoenixFsiPSolver, phoenixFsiSolver,
phoenixFsiSSolver, phoenixFsiXSolver, phoenixHPCompaqSolver, phoenixSolver
} from "./phoenix";
import { samsungSolver } from "./samsung";
import { sonySolver } from "./sony";
import { Solver } from "./utils";
export type KeygenResult = [Solver, string[]];
export const solvers: Solver[] = [
sonySolver,
samsungSolver,
hddOldSolver,
dellSolver,
dellHddSolver,
fsiHexSolver,
fsi20DecNewSolver,
fsi20DecOldSolver,
hpMiniSolver,
insydeSolver,
phoenixSolver,
phoenixHPCompaqSolver,
phoenixFsiSolver,
phoenixFsiLSolver,
phoenixFsiPSolver,
phoenixFsiSSolver,
phoenixFsiXSolver
];
// NOTE: In future this function can change or even be removed
export function keygen(serial: string): KeygenResult[] {
return solvers
.map((solver): KeygenResult => [solver, solver(serial)])
.filter(([_, passwords]) => passwords !== undefined && passwords.length >= 1);
}
+48
View File
@@ -0,0 +1,48 @@
import { keygen, KeygenResult } from "./keygen";
/// <reference types="dom" />
let form = document.getElementById("form_id") as HTMLFormElement;
let serialInput = document.getElementById("serial_id") as HTMLInputElement;
let tryThis = document.getElementById("try_this") as HTMLElement;
let dellNote = document.getElementById("dell_note") as HTMLElement;
let answerElement = document.getElementById("answer") as HTMLDivElement;
function renderResult(results: KeygenResult[]): void {
let table = document.createElement("table");
table.classList.add("answer_table");
results.forEach(([solver, passwords]) => {
let trElem = document.createElement("tr");
let tdNameElem = document.createElement("td");
tdNameElem.appendChild(document.createTextNode(solver.biosName));
trElem.appendChild(tdNameElem);
let tdElem = document.createElement("td");
passwords.forEach((pwd, index) => {
if (index > 0) {
tdElem.appendChild(document.createElement("br"));
}
tdElem.appendChild(document.createTextNode(pwd));
});
trElem.appendChild(tdElem);
table.appendChild(trElem);
});
answerElement.appendChild(table);
}
form.addEventListener("submit", (event) => {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
answerElement.innerHTML = ""; // remove old table
let results = keygen(serialInput.value);
if (results.length > 0) {
tryThis.style.display = "";
dellNote.style.display = "";
renderResult(results);
} else {
tryThis.style.display = "none";
dellNote.style.display = "none";
}
}, true);