diff options
Diffstat (limited to '_www')
| -rw-r--r-- | _www/functions.js | 21 | ||||
| -rw-r--r-- | _www/functions.ts | 23 | ||||
| -rw-r--r-- | _www/gorankusu.js | 3 | ||||
| -rw-r--r-- | _www/gorankusu.ts | 3 | ||||
| -rw-r--r-- | _www/interface.ts | 1 | ||||
| -rw-r--r-- | _www/nav_links.ts | 1 | ||||
| -rw-r--r-- | _www/target.js | 17 | ||||
| -rw-r--r-- | _www/target.ts | 21 |
8 files changed, 89 insertions, 1 deletions
diff --git a/_www/functions.js b/_www/functions.js index 4b677d4..762a8cc 100644 --- a/_www/functions.js +++ b/_www/functions.js @@ -175,6 +175,24 @@ function saveTargetOptTimeout(target) { const storageKey = `${target.ID}.opt.Timeout`; window.localStorage.setItem(storageKey, "" + target.Opts.Timeout); } +// loadTargetHeader get target header from local storage or return the +// original value. +export function loadTargetHeader(target, key) { + const storageKey = `${target.ID}.header.${key}`; + const val = window.localStorage.getItem(storageKey); + if (val) { + return val; + } + const tvar = target.Headers[key]; + if (tvar) { + return tvar.value; + } + return ""; +} +function saveTargetHeader(target, key, value) { + const storageKey = `${target.ID}.header.${key}`; + window.localStorage.setItem(storageKey, value); +} // // loadTargetVar get target variable from local storage or return the original // value. @@ -242,6 +260,9 @@ export function save(target, httpTarget, wsTarget) { saveTargetOptDuration(target); saveTargetOptRatePerSecond(target); saveTargetOptTimeout(target); + for (const [k, fi] of Object.entries(target.Headers)) { + saveTargetHeader(target, k, fi.value); + } for (const [k, fi] of Object.entries(target.Vars)) { saveTargetVar(target, k, fi.value); } diff --git a/_www/functions.ts b/_www/functions.ts index 48d916c..b570cc4 100644 --- a/_www/functions.ts +++ b/_www/functions.ts @@ -226,6 +226,26 @@ function saveTargetOptTimeout(target: TargetInterface) { window.localStorage.setItem(storageKey, "" + target.Opts.Timeout); } +// loadTargetHeader get target header from local storage or return the +// original value. +export function loadTargetHeader(target: TargetInterface, key: string): string { + const storageKey = `${target.ID}.header.${key}`; + const val = window.localStorage.getItem(storageKey); + if (val) { + return val; + } + const tvar = target.Headers[key]; + if (tvar) { + return tvar.value; + } + return ""; +} + +function saveTargetHeader(target: TargetInterface, key: string, value: string) { + const storageKey = `${target.ID}.header.${key}`; + window.localStorage.setItem(storageKey, value); +} + // // loadTargetVar get target variable from local storage or return the original // value. @@ -322,6 +342,9 @@ export function save( saveTargetOptRatePerSecond(target); saveTargetOptTimeout(target); + for (const [k, fi] of Object.entries(target.Headers)) { + saveTargetHeader(target, k, fi.value); + } for (const [k, fi] of Object.entries(target.Vars)) { saveTargetVar(target, k, fi.value); } diff --git a/_www/gorankusu.js b/_www/gorankusu.js index 02b972d..fd49ddf 100644 --- a/_www/gorankusu.js +++ b/_www/gorankusu.js @@ -219,6 +219,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: target.Name, BaseURL: target.BaseURL, @@ -303,6 +304,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: "", BaseURL: "", @@ -339,6 +341,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: "", BaseURL: "", diff --git a/_www/gorankusu.ts b/_www/gorankusu.ts index 671e427..bf04d42 100644 --- a/_www/gorankusu.ts +++ b/_www/gorankusu.ts @@ -295,6 +295,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: target.Name, BaseURL: target.BaseURL, @@ -396,6 +397,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: "", BaseURL: "", @@ -441,6 +443,7 @@ export class Gorankusu { Target: { ID: target.ID, Opts: target.Opts, + Headers: target.Headers, Vars: target.Vars, Name: "", BaseURL: "", diff --git a/_www/interface.ts b/_www/interface.ts index 5447951..9c4d487 100644 --- a/_www/interface.ts +++ b/_www/interface.ts @@ -112,6 +112,7 @@ export interface TargetInterface { Hint?: string; BaseURL: string; Opts: AttackOptionsInterface; + Headers: KeyFormInput; Vars: KeyFormInput; HTTPTargets: HTTPTargetInterface[]; WebSocketTargets: WebSocketTargetInterface[]; diff --git a/_www/nav_links.ts b/_www/nav_links.ts index f577607..ea9c01a 100644 --- a/_www/nav_links.ts +++ b/_www/nav_links.ts @@ -70,6 +70,7 @@ export class NavLinks { Name: "", BaseURL: "", Opts: {} as AttackOptionsInterface, + Headers: {} as KeyFormInput, Vars: {} as KeyFormInput, HTTPTargets: [], WebSocketTargets: [], diff --git a/_www/target.js b/_www/target.js index caa6ec8..c7aaf29 100644 --- a/_www/target.js +++ b/_www/target.js @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later import { WuiInputNumber } from "./wui/input/number.js"; import { WuiInputString } from "./wui/input/string.js"; -import { generateFormInput, loadTargetOptDuration, loadTargetOptRatePerSecond, loadTargetOptTimeout, loadTargetVar, } from "./functions.js"; +import { generateFormInput, loadTargetOptDuration, loadTargetOptRatePerSecond, loadTargetOptTimeout, loadTargetHeader, loadTargetVar, } from "./functions.js"; import { CLASS_INPUT, CLASS_INPUT_LABEL, CLASS_NAV_TARGET, } from "./interface.js"; import { HTTPTarget } from "./http_target.js"; import { WebSocketTarget } from "./ws_target.js"; @@ -55,6 +55,7 @@ export class Target { generateContent(gorankusu) { this.generateContentBaseURL(); this.generateContentAttackOptions(); + this.generateContentHeaders(); this.generateContentVars(); this.generateHTTPTargets(gorankusu); this.generateWebSocketTargets(gorankusu); @@ -133,6 +134,20 @@ export class Target { wrapper.appendChild(comInputTimeout.el); this.elContent.appendChild(wrapper); } + generateContentHeaders() { + if (!this.opts.Headers) { + return; + } + const wrapper = document.createElement("fieldset"); + const legend = document.createElement("legend"); + legend.innerText = "Headers"; + wrapper.appendChild(legend); + for (const [key, fi] of Object.entries(this.opts.Headers)) { + fi.value = loadTargetHeader(this.opts, key); + generateFormInput(wrapper, fi); + } + this.elContent.appendChild(wrapper); + } generateContentVars() { if (!this.opts.Vars) { return; diff --git a/_www/target.ts b/_www/target.ts index 26c15b2..9e637cc 100644 --- a/_www/target.ts +++ b/_www/target.ts @@ -9,6 +9,7 @@ import { loadTargetOptDuration, loadTargetOptRatePerSecond, loadTargetOptTimeout, + loadTargetHeader, loadTargetVar, } from "./functions.js"; import { @@ -90,6 +91,7 @@ export class Target { private generateContent(gorankusu: GorankusuInterface) { this.generateContentBaseURL(); this.generateContentAttackOptions(); + this.generateContentHeaders(); this.generateContentVars(); this.generateHTTPTargets(gorankusu); this.generateWebSocketTargets(gorankusu); @@ -179,6 +181,25 @@ export class Target { this.elContent.appendChild(wrapper); } + private generateContentHeaders() { + if (!this.opts.Headers) { + return; + } + + const wrapper = document.createElement("fieldset"); + + const legend = document.createElement("legend"); + legend.innerText = "Headers"; + wrapper.appendChild(legend); + + for (const [key, fi] of Object.entries(this.opts.Headers)) { + fi.value = loadTargetHeader(this.opts, key); + generateFormInput(wrapper, fi); + } + + this.elContent.appendChild(wrapper); + } + private generateContentVars() { if (!this.opts.Vars) { return; |
