From c229be3b17fb8d48b57f82831e39f0ae510efbf8 Mon Sep 17 00:00:00 2001 From: Dave Christenson Date: Fri, 14 Jul 2023 16:42:59 -0500 Subject: [PATCH 1/4] Show message count at bottom left --- client/src/components/Footer.tsx | 6 ++++++ client/src/store/MessageQueueStore.ts | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/client/src/components/Footer.tsx b/client/src/components/Footer.tsx index f5761c5d..fddb7281 100644 --- a/client/src/components/Footer.tsx +++ b/client/src/components/Footer.tsx @@ -2,6 +2,7 @@ import FilterStore from '../store/FilterStore'; import { observer } from 'mobx-react-lite'; import BreakpointStore from '../store/BreakpointStore'; import ExcludeTags from './ExcludeTags'; +import { messageQueueStore } from '../store/MessageQueueStore'; /** * Footer view @@ -13,6 +14,11 @@ type Props = { const Footer = observer(({ filterStore, breakpointStore }: Props): JSX.Element => { return (
+
+
+
Messages: {messageQueueStore.getUnfilteredCount()} of {messageQueueStore.getTotalLength()}
+
+
Breakpoints: {breakpointStore.getBreakpointCount()}
diff --git a/client/src/store/MessageQueueStore.ts b/client/src/store/MessageQueueStore.ts index 63738e54..d37afacd 100644 --- a/client/src/store/MessageQueueStore.ts +++ b/client/src/store/MessageQueueStore.ts @@ -202,6 +202,16 @@ export default class MessageQueueStore { return count; } + public getUnfilteredCount() { + let count = 0; + for (const message of this.getMessages()) { + if (!message.isFiltered()) { + ++count; + } + } + return count; + } + @action private sort() { const selectedMessages = snapshotStore.getSelectedMessages(); const copyMessages = selectedMessages.slice(); // shallow copy From cbe15f738434420dbc7698e37a75f90d201854ca Mon Sep 17 00:00:00 2001 From: Dave Christenson Date: Fri, 14 Jul 2023 17:29:38 -0500 Subject: [PATCH 2/4] Show date instead of time bar --- client/src/App.css | 2 +- client/src/components/Request.tsx | 20 ++++++++++---------- client/src/components/SnapshotTabContent.tsx | 16 ---------------- 3 files changed, 11 insertions(+), 27 deletions(-) diff --git a/client/src/App.css b/client/src/App.css index d64daed9..3a43ba35 100644 --- a/client/src/App.css +++ b/client/src/App.css @@ -688,7 +688,7 @@ td input { .request__msg-time-bar-container { margin-left: .5rem; - min-width: 8ch; + min-width: 6.5rem; display: flex; align-items: center; justify-content: right; diff --git a/client/src/components/Request.tsx b/client/src/components/Request.tsx index 7f5e6832..2d9f226d 100644 --- a/client/src/components/Request.tsx +++ b/client/src/components/Request.tsx @@ -16,14 +16,13 @@ type Props = { onClick: () => void, onResend: () => void, store: MessageStore, - timeBarPercent: string, maxStatusSize: number, maxMethodSize: number, maxEndpointSize: number, vertical: boolean, isFiltered: boolean, }; -const Request = observer(({ isActive, highlight, onClick, store, onResend, timeBarPercent, maxStatusSize, maxMethodSize, maxEndpointSize, vertical, isFiltered }: Props) => { +const Request = observer(({ isActive, highlight, onClick, store, onResend, maxStatusSize, maxMethodSize, maxEndpointSize, vertical, isFiltered }: Props) => { const [openNoteDialog, setOpenNoteDialog] = React.useState(false); const handleClick = () => { @@ -31,8 +30,7 @@ const Request = observer(({ isActive, highlight, onClick, store, onResend, timeB store.setVisited(true); } const message = store.getMessage(); - const percent = store.isNoResponse() ? '100%' : timeBarPercent; - const responseTime = store.isNoResponse() ? 'no response' : message.elapsedTime ? message.elapsedTime + ' ms' : ''; + const messageDate = new Date(message.timestamp); const levelColor = function (level: string): string | undefined { if (level === 'err' || level === 'error') return 'red'; if (level === 'warning' || level === 'warn') return 'rgb(203, 75, 22)'; @@ -45,17 +43,18 @@ const Request = observer(({ isActive, highlight, onClick, store, onResend, timeB
{message.protocol !== 'log:' ? - responseTime +
+ {store.isNoResponse() ? 'no response' : dateToHHMMSS(messageDate)} +
:
{dateToHHMMSS(store.getLogEntry().date)} -
} +
+ }
-
-
{ - if (message.protocol === 'log:') { - const catFile = message.proxyConfig!.path && message.proxyConfig!.path.startsWith('cat '); - return catFile; - } - return true; - } - let maxStatusSize = 0; let maxMethodSize = 0; let maxEndpointSize = 0; - let maxElapsedTime = 0; messageQueueStore.getMessages() .forEach(messageStore => { maxStatusSize = Math.max(maxStatusSize, (messageStore.getMessage().status + '').length); const method = messageStore.getMessage().method; maxMethodSize = Math.max(maxMethodSize, method ? method.length : 0); maxEndpointSize = Math.max(maxEndpointSize, messageStore.getMessage().endpoint.length); - if (!shouldShowTimeBar(messageStore.getMessage())) return; - const et = messageStore.getMessage().elapsedTime ? messageStore.getMessage().elapsedTime : 0; - maxElapsedTime = Math.max(maxElapsedTime, et); }); let activeRequestIndex = Number.MAX_SAFE_INTEGER; @@ -165,9 +153,6 @@ const SnapshotTabContent = observer(({ activeRequestIndex = index; } matchCount++; - const timeBarPercent = maxElapsedTime > 0 && shouldShowTimeBar(message) - ? (message.elapsedTime ? ((message.elapsedTime * 100) / maxElapsedTime) : 1) - : 0; return ( messageQueueStore.getMessages().length > 1000 ? setClickPendingSeqNum(seqNum) : From ec9bb6c79cda0d50599a1027d03655832e7386c2 Mon Sep 17 00:00:00 2001 From: Dave Christenson Date: Fri, 14 Jul 2023 17:39:45 -0500 Subject: [PATCH 3/4] 3.27.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8930d5d2..e5095796 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "allproxy", - "version": "3.26.4", + "version": "3.27.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "allproxy", - "version": "3.26.4", + "version": "3.27.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index f325d764..f89f6dc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "allproxy", - "version": "3.26.4", + "version": "3.27.0", "description": "AllProxy: MITM HTTP Debugging Tool.", "keywords": [ "proxy", From 4dba86918a49ab09f7a99dbf825232d7efffd794 Mon Sep 17 00:00:00 2001 From: Dave Christenson Date: Fri, 14 Jul 2023 19:08:02 -0500 Subject: [PATCH 4/4] Update version --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5fc6b184..3e5cf44b 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,13 @@ MITM debugging proxy with a web GUI to view and modify all of the HTTP and HTTPS ### Install -> Mac: **[allproxy.dmg](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4-x64.dmg)** +> Mac: **[allproxy.dmg](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0-x64.dmg)** -> RedHat: **[allproxy.rpm](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4-1.x86_64.rpm)** +> RedHat: **[allproxy.rpm](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0-1.x86_64.rpm)** -> Ubuntu: **[allproxy.deb](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy_3.26.4_amd64.deb)** +> Ubuntu: **[allproxy.deb](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy_3.27.0_amd64.deb)** -> Windows: **[Setup.exe](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4.Setup.exe)** +> Windows: **[Setup.exe](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0.Setup.exe)** > Other install options: > 1. Install NPM package: **npm install -g allproxy**