From 55dcc9b2868586576f84654f6285406f278f96c8 Mon Sep 17 00:00:00 2001
From: ps-porpoise <152162390+ps-porpoise@users.noreply.github.com>
Date: Fri, 15 Dec 2023 14:18:09 +0000
Subject: [PATCH 1/2] Update Bambda Checker to support logger view filter
 Bambdas, add examples

---
 .github/workflows/bambda-checker-manual.yml   |   4 ++--
 .github/workflows/bambda-checker-merge.yml    |   4 ++--
 .../workflows/bambda-checker-pull-request.yml |   4 ++--
 ...daChecker-1.1.jar => BambdaChecker-1.2.jar | Bin 18118 -> 18347 bytes
 Logger/View/HighlightToolType.bambda          |  19 ++++++++++++++++++
 Logger/View/SlowResponses.bambda              |   8 ++++++++
 6 files changed, 33 insertions(+), 6 deletions(-)
 rename BambdaChecker-1.1.jar => BambdaChecker-1.2.jar (73%)
 create mode 100644 Logger/View/HighlightToolType.bambda
 create mode 100644 Logger/View/SlowResponses.bambda

diff --git a/.github/workflows/bambda-checker-manual.yml b/.github/workflows/bambda-checker-manual.yml
index 72629ba..c2cece9 100644
--- a/.github/workflows/bambda-checker-manual.yml
+++ b/.github/workflows/bambda-checker-manual.yml
@@ -17,8 +17,8 @@ jobs:
 
       - name: Validate Bambdas & update READMEs
         run: |
-          [ $(sha256sum BambdaChecker-1.1.jar | awk '{ print $1 }') = '21805c494ccea16158081855326810e3715034900a1cd18d9e2b9ab7f108de57' ]
-          java -jar BambdaChecker-1.1.jar
+          [ $(sha256sum BambdaChecker-1.2.jar | awk '{ print $1 }') = '30959be3dce023d3b53c4e2507b9db7fed8bfe41501b14bb8c0d4d3a0a50fd71' ]
+          java -jar BambdaChecker-1.2.jar
           git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
           git config --local user.name "github-actions[bot]"
           git add .
diff --git a/.github/workflows/bambda-checker-merge.yml b/.github/workflows/bambda-checker-merge.yml
index 546a8d4..ea1c4bc 100644
--- a/.github/workflows/bambda-checker-merge.yml
+++ b/.github/workflows/bambda-checker-merge.yml
@@ -23,8 +23,8 @@ jobs:
 
       - name: Validate Bambdas & update READMEs
         run: |
-          [ $(sha256sum BambdaChecker-1.1.jar | awk '{ print $1 }') = '21805c494ccea16158081855326810e3715034900a1cd18d9e2b9ab7f108de57' ]
-          java -jar BambdaChecker-1.1.jar
+          [ $(sha256sum BambdaChecker-1.2.jar | awk '{ print $1 }') = '30959be3dce023d3b53c4e2507b9db7fed8bfe41501b14bb8c0d4d3a0a50fd71' ]
+          java -jar BambdaChecker-1.2.jar
           git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
           git config --local user.name "github-actions[bot]"
           git add .
diff --git a/.github/workflows/bambda-checker-pull-request.yml b/.github/workflows/bambda-checker-pull-request.yml
index 618e098..7d0db16 100644
--- a/.github/workflows/bambda-checker-pull-request.yml
+++ b/.github/workflows/bambda-checker-pull-request.yml
@@ -19,5 +19,5 @@ jobs:
 
       - name: Validate Bambdas
         run: |
-          [ $(sha256sum BambdaChecker-1.1.jar | awk '{ print $1 }') = '21805c494ccea16158081855326810e3715034900a1cd18d9e2b9ab7f108de57' ]
-          java -jar BambdaChecker-1.1.jar validateonly
+          [ $(sha256sum BambdaChecker-1.2.jar | awk '{ print $1 }') = '30959be3dce023d3b53c4e2507b9db7fed8bfe41501b14bb8c0d4d3a0a50fd71' ]
+          java -jar BambdaChecker-1.2.jar validateonly
diff --git a/BambdaChecker-1.1.jar b/BambdaChecker-1.2.jar
similarity index 73%
rename from BambdaChecker-1.1.jar
rename to BambdaChecker-1.2.jar
index 02258ae28b58fbd710636551c8af57b4a28f3696..587831768e0566515d05aa0497f629974f7dd325 100755
GIT binary patch
delta 2406
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

delta 2098
zcmZ9NeLT~98^>p}nK4goo}WpEuqD+bW;1D~Ni2;c4^eC?xg`#3lst=Hg=iA$<RQ5i
z5_Tu4P`QPar^Hz_nUvJ=aL$?EIj>jueSZI3*Xw;<-_Q4ZU4Q&O)wwc{vt`f>8cY@g
zfgq8PWkymS+6+cxC+6A5gF#>fhM~={JB%biPR2n=T4Z*IBcm_DA&?d{z>pzwuljPB
z8{9BSX7X%g^<(4#t3gcv71^MMU>5o-{9;753wj@x6_C%XVaHBM5S8=uwR3?V&R4ni
z=_jm?_P-tIcL27U88M7@gonqzAD<py8BGXZn&+0T!Y3S8s|+95hMw4KIg&FyZvTF|
zx%|1f@=Y?|=JP7FExWrZvz5(lNey?P=^aAeIzo0Jhkl-XB(fap^`O%Ux=*7N%}p*m
zv>>VkG1U4u2?{)?HI-hlF`J-R7KXB)-D#iN*m{&zQf67yJwBlEujd1`r#Zn(X1xif
zEqZvk!~U4E;-FatUcYZ8CCN%0c5d%8ysqb~qq#-*XT!wm(fp7DUy8W#3Q*_C`TYy1
zc&%YK#hy<&_(fA@B%e+{HR-d6i=%f&eGE!-*Xp^`u%qMG;R*>>i)b~1`*33cr(r8>
zMrgTD%~~wi7pQq(J{S<$)mAo1|7eo4vtx@qp>Y^*ba`K%dhm!stZ?7t<(mnqoPht*
z{69*Vc=OnDbW4Hm78h>ul?>SS-R(5vfK+nVfEghk*@053j?<aHVDurhbBo7Z#ncS#
z?64$WX$TiY?kXDeTRNSu?L$)4Ll<dce^<r2<r)2ZrzBpnqsx~)NPgy1(~9&ej)`l3
zI;-Csvu{P$`?!Cnd`al*=2XY%i-wL8TV40tx%V1-AHFKg@ZQd)f3*!iaPCBhYR-_D
zB=)!nzZMlnQ6Ja%ddCg(+7D|mq5E6=F`pQqaMrVNVm3mP6XdU=H~0F~WxKvUlv$~F
zAkzT)<$8wh4Na*1SN9vPCwgn%;Id86<JU$*{R<VR2pz%`U7EPgHsgZXh3oG!9;Usu
zZw+oeXdR`=)QWcH_FA^MH7tws<%ZdvxJWd-3VW|*;?3db0#5&6H-S;MYo>g~=K~5_
zm#+VN;X7*eD-O0hqQ1b-ovsiv<TI+`SZ>PSMnCe*nvoFIqpkiQ2JU%u_?}WMI-%;E
z)2-~rf|&$|y5j!(A;<#;4xwHtnT>|Ket8-FxV16?d;anZZWBB2dFtrTb}KrHtdc9a
zQ}zuW%UlP6@1kN=2fh1?ah-k%D^f1J?Edk&%66)K_cWgHHl%xyLPn;;1~O`!N3Nw~
z2IF@h>c6xjf7@E-#zG7`$3DQN__I^Kz|xcNJ?|xKDRxag3n!wfoRRVlcbn4bpZcut
zjSSag+HZd6dbCel2p<$EuGy5}Yg`j}k$&=2?d1}_#u3G<mCH?Bapo|yN_%@b3l6lT
z*Kln1ch3$nQzi%Y6&;HbL_{Z!4T#6^V|FJISEsy6Onil^iEFhe9g(?EqiG_HaGT#?
zC3%{wEV1~WZvCmicu#vk>ey`N%S#OGt`ish$2_^;f>+XiTJUod6n?*Q!6b3>Q~X?R
zN^q7$&49Bw?rt)+R8iN@a>}06XjT>(5lcyHSI0HO;Eki+yM+p;1CummnzhsG7g5)H
zADsR98cFE9x4{B#orp|JDdI!lStpyqKGKyJ9bNXuf5OM&txWh5^k$Ph35P``jExAh
zc-(}oGXaE0dW#>a7{|r8>ARqFZgqCsJWN$g-&d3r$`g{K&1R5YMTQj?o6L_sX?<jq
zUmdfsEE8de8X9@YH5}Jv1qQG=LOd0brQV$$CW@npVrZgJLG<;?&xdFtUYICUL8LVL
zD7iHMs5Z<_;@RUL%Cx<k+=Spy1We$$ROq7S;W(al-pdtSc8Xf_%__9F`ZbqkTwm62
zs|Wkij^N(*O$lpXEIuG-IXy0dBt=Fy>EHEsA-#x7PlUF3Rgbq3>hEgAqhdG48MKdz
zKchQ%EP?**S5Hb!4SEnE(<yuL^~uU11;GZLw|72#29sre>Vlbni*O!1?qI&M8TF<b
zAu2O|;ySu?tBovL!U`Xs`c4wtuBMePD8&B(`|*QMWh4nykt0wTAWh~`en{9lp>6mT
zsw7RAvCLaN69@<-Q3c>xnF42U2;j^HSwNqH7R0HG5$jeUIIQ<b20UeD(1ie#?;Cw#
zV95(-3|sdJL9EptStV)0TzkfPa8wQgVXFamh!(&hs+s_WKPd-xpV@8<1<zL!nSUjJ
z>{OP8Nj(TqCE2aF0J}*}V9X%dfU%Y20Q%4}$^D-`<mIy8aD9YRJ&lx9C<KxvwI?Fv
z$5+8KkON5ShJZ6tSD8VRfns2Pd7g9=fC^a$x+X6zn*rWrt@TF%$E3(lO^PglaiSd1
zM%Do3e{2W>+4@5rQo(b^N}IO<mJ~(ssYHqn^rS9$<0*;}C|N8;ME$=d5x@*Z4a93w
zjMxZvIwKVUs;e3(z;e}r2AWH;8Nhed0>{2DMQ1I+&Tp<JAkw4iK>KXKu0vFP@E}i$
za<=`g2M0Q+I^Z?$q*$;+iq{8Hvi#o_tnZEM95>nygFwcR5D5PN215fuZWM%`^E&(!
DtaOMe

diff --git a/Logger/View/HighlightToolType.bambda b/Logger/View/HighlightToolType.bambda
new file mode 100644
index 0000000..340604a
--- /dev/null
+++ b/Logger/View/HighlightToolType.bambda
@@ -0,0 +1,19 @@
+/**
+ * Highlights responses according to their tool type.
+ * @author ps-porpoise
+**/
+var highlights = Map.of(
+        ToolType.TARGET,     HighlightColor.RED,
+        ToolType.PROXY,      HighlightColor.BLUE,
+        ToolType.INTRUDER,   HighlightColor.CYAN,
+        ToolType.REPEATER,   HighlightColor.MAGENTA,
+        ToolType.EXTENSIONS, HighlightColor.ORANGE,
+        ToolType.SCANNER,    HighlightColor.GREEN,
+        ToolType.SEQUENCER,  HighlightColor.PINK
+);
+
+requestResponse.annotations().setHighlightColor(
+        highlights.getOrDefault(requestResponse.toolSource().toolType(), HighlightColor.NONE)
+);
+
+return true;
\ No newline at end of file
diff --git a/Logger/View/SlowResponses.bambda b/Logger/View/SlowResponses.bambda
new file mode 100644
index 0000000..26b482f
--- /dev/null
+++ b/Logger/View/SlowResponses.bambda
@@ -0,0 +1,8 @@
+/**
+ * Finds slow responses.
+ * @author ps-porpoise
+**/
+var delta = requestResponse.timingData().timeBetweenRequestSentAndStartOfResponse();
+var threshold = Duration.ofSeconds(3);
+
+return delta != null && delta.toMillis() >= threshold.toMillis();
\ No newline at end of file

From 48dfe58cee693afba0dfa9368ab837e330bd80a6 Mon Sep 17 00:00:00 2001
From: ps-porpoise <152162390+ps-porpoise@users.noreply.github.com>
Date: Fri, 15 Dec 2023 14:52:27 +0000
Subject: [PATCH 2/2] Minor docs fix

---
 Logger/View/HighlightToolType.bambda | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Logger/View/HighlightToolType.bambda b/Logger/View/HighlightToolType.bambda
index 340604a..398873e 100644
--- a/Logger/View/HighlightToolType.bambda
+++ b/Logger/View/HighlightToolType.bambda
@@ -1,5 +1,5 @@
 /**
- * Highlights responses according to their tool type.
+ * Highlights messages according to their tool type.
  * @author ps-porpoise
 **/
 var highlights = Map.of(