Skip to content

Commit cebafc6

Browse files
authored
Merge pull request #683 from allproxy/v3-27-0
V3 27 0: Show current message count and show date instead of time bar
2 parents 1680519 + 4dba869 commit cebafc6

File tree

8 files changed

+34
-34
lines changed

8 files changed

+34
-34
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ MITM debugging proxy with a web GUI to view and modify all of the HTTP and HTTPS
88

99
### Install
1010

11-
> Mac: **[allproxy.dmg](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4-x64.dmg)**
11+
> Mac: **[allproxy.dmg](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0-x64.dmg)**
1212
13-
> RedHat: **[allproxy.rpm](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4-1.x86_64.rpm)**
13+
> RedHat: **[allproxy.rpm](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0-1.x86_64.rpm)**
1414
15-
> Ubuntu: **[allproxy.deb](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy_3.26.4_amd64.deb)**
15+
> Ubuntu: **[allproxy.deb](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy_3.27.0_amd64.deb)**
1616
17-
> Windows: **[Setup.exe](https://github.com/allproxy/allproxy/releases/download/v3.26.0/allproxy-3.26.4.Setup.exe)**
17+
> Windows: **[Setup.exe](https://github.com/allproxy/allproxy/releases/download/v3.27.0/allproxy-3.27.0.Setup.exe)**
1818
1919
> Other install options:
2020
> 1. Install NPM package: **npm install -g allproxy**

client/src/App.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ td input {
688688

689689
.request__msg-time-bar-container {
690690
margin-left: .5rem;
691-
min-width: 8ch;
691+
min-width: 6.5rem;
692692
display: flex;
693693
align-items: center;
694694
justify-content: right;

client/src/components/Footer.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import FilterStore from '../store/FilterStore';
22
import { observer } from 'mobx-react-lite';
33
import BreakpointStore from '../store/BreakpointStore';
44
import ExcludeTags from './ExcludeTags';
5+
import { messageQueueStore } from '../store/MessageQueueStore';
56

67
/**
78
* Footer view
@@ -13,6 +14,11 @@ type Props = {
1314
const Footer = observer(({ filterStore, breakpointStore }: Props): JSX.Element => {
1415
return (
1516
<div className="footer__container">
17+
<div>
18+
<div className="footer__item" title="Number of messages">
19+
<div>Messages: {messageQueueStore.getUnfilteredCount()} of {messageQueueStore.getTotalLength()}</div>
20+
</div>
21+
</div>
1622
<div>
1723
<div className="footer__item" title="Number of active breakpoints">
1824
<div>Breakpoints: {breakpointStore.getBreakpointCount()}</div>

client/src/components/Request.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,21 @@ type Props = {
1616
onClick: () => void,
1717
onResend: () => void,
1818
store: MessageStore,
19-
timeBarPercent: string,
2019
maxStatusSize: number,
2120
maxMethodSize: number,
2221
maxEndpointSize: number,
2322
vertical: boolean,
2423
isFiltered: boolean,
2524
};
26-
const Request = observer(({ isActive, highlight, onClick, store, onResend, timeBarPercent, maxStatusSize, maxMethodSize, maxEndpointSize, vertical, isFiltered }: Props) => {
25+
const Request = observer(({ isActive, highlight, onClick, store, onResend, maxStatusSize, maxMethodSize, maxEndpointSize, vertical, isFiltered }: Props) => {
2726
const [openNoteDialog, setOpenNoteDialog] = React.useState(false);
2827

2928
const handleClick = () => {
3029
onClick();
3130
store.setVisited(true);
3231
}
3332
const message = store.getMessage();
34-
const percent = store.isNoResponse() ? '100%' : timeBarPercent;
35-
const responseTime = store.isNoResponse() ? 'no response' : message.elapsedTime ? message.elapsedTime + ' ms' : '';
33+
const messageDate = new Date(message.timestamp);
3634
const levelColor = function (level: string): string | undefined {
3735
if (level === 'err' || level === 'error') return 'red';
3836
if (level === 'warning' || level === 'warn') return 'rgb(203, 75, 22)';
@@ -45,17 +43,18 @@ const Request = observer(({ isActive, highlight, onClick, store, onResend, timeB
4543
<div className="request__msg-header">
4644
<div className="request__msg-time-ms">
4745
{message.protocol !== 'log:' ?
48-
responseTime
46+
<div className="request__msg-log-level" style={{ fontFamily: 'monospace' }}
47+
title={message.elapsedTime + ' ms, ' + formatTimestamp(message.timestamp)}>
48+
{store.isNoResponse() ? 'no response' : dateToHHMMSS(messageDate)}
49+
</div>
4950
:
5051
<div className="request__msg-log-level" style={{ fontFamily: 'monospace' }}
5152
title={store.getLogEntry().date.toLocaleDateString()}>
5253
{dateToHHMMSS(store.getLogEntry().date)}
53-
</div>}
54+
</div>
55+
}
5456
</div>
5557
<div className="request__msg-time-bar-container">
56-
<div style={{ width: `calc(100% - ${percent})` }} />
57-
<div className={'request__msg-time-bar' + (store.isNoResponse() ? ' no-response' : '')}
58-
style={{ width: percent }} />
5958
</div>
6059
<div className="request__msg-icon fa fa-sticky-note"
6160
title={store.getNote()}
@@ -200,7 +199,8 @@ export function formatTimestamp(timestamp: number) {
200199
}
201200

202201
export function dateToHHMMSS(d: Date) {
203-
return d.getHours().toString().padStart(2, '0') + ':' + d.getMinutes().toString().padStart(2, '0') + ':' + d.getSeconds().toString().padStart(2, '0');
202+
const monthDay = d.getMonth() + 1 + '/' + d.getDate();
203+
return monthDay + ' ' + d.getHours().toString().padStart(2, '0') + ':' + d.getMinutes().toString().padStart(2, '0') + ':' + d.getSeconds().toString().padStart(2, '0');
204204
}
205205

206206
export default Request;

client/src/components/SnapshotTabContent.tsx

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,27 +95,15 @@ const SnapshotTabContent = observer(({
9595
}
9696
}
9797

98-
const shouldShowTimeBar = (message: Message) => {
99-
if (message.protocol === 'log:') {
100-
const catFile = message.proxyConfig!.path && message.proxyConfig!.path.startsWith('cat ');
101-
return catFile;
102-
}
103-
return true;
104-
}
105-
10698
let maxStatusSize = 0;
10799
let maxMethodSize = 0;
108100
let maxEndpointSize = 0;
109-
let maxElapsedTime = 0;
110101
messageQueueStore.getMessages()
111102
.forEach(messageStore => {
112103
maxStatusSize = Math.max(maxStatusSize, (messageStore.getMessage().status + '').length);
113104
const method = messageStore.getMessage().method;
114105
maxMethodSize = Math.max(maxMethodSize, method ? method.length : 0);
115106
maxEndpointSize = Math.max(maxEndpointSize, messageStore.getMessage().endpoint.length);
116-
if (!shouldShowTimeBar(messageStore.getMessage())) return;
117-
const et = messageStore.getMessage().elapsedTime ? messageStore.getMessage().elapsedTime : 0;
118-
maxElapsedTime = Math.max(maxElapsedTime, et);
119107
});
120108

121109
let activeRequestIndex = Number.MAX_SAFE_INTEGER;
@@ -165,9 +153,6 @@ const SnapshotTabContent = observer(({
165153
activeRequestIndex = index;
166154
}
167155
matchCount++;
168-
const timeBarPercent = maxElapsedTime > 0 && shouldShowTimeBar(message)
169-
? (message.elapsedTime ? ((message.elapsedTime * 100) / maxElapsedTime) : 1)
170-
: 0;
171156
return (
172157
<Request
173158
maxStatusSize={maxStatusSize}
@@ -177,7 +162,6 @@ const SnapshotTabContent = observer(({
177162
key={seqNum}
178163
isActive={isActiveRequest}
179164
highlight={seqNum === messageQueueStore.getHighlightSeqNum()}
180-
timeBarPercent={timeBarPercent + '%'}
181165
onClick={() => messageQueueStore.getMessages().length > 1000 ?
182166
setClickPendingSeqNum(seqNum)
183167
:

client/src/store/MessageQueueStore.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,16 @@ export default class MessageQueueStore {
202202
return count;
203203
}
204204

205+
public getUnfilteredCount() {
206+
let count = 0;
207+
for (const message of this.getMessages()) {
208+
if (!message.isFiltered()) {
209+
++count;
210+
}
211+
}
212+
return count;
213+
}
214+
205215
@action private sort() {
206216
const selectedMessages = snapshotStore.getSelectedMessages();
207217
const copyMessages = selectedMessages.slice(); // shallow copy

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "allproxy",
3-
"version": "3.26.4",
3+
"version": "3.27.0",
44
"description": "AllProxy: MITM HTTP Debugging Tool.",
55
"keywords": [
66
"proxy",

0 commit comments

Comments
 (0)