Skip to content

Commit afc9a01

Browse files
author
RaizeTheLimit
committed
feat(proto-log): include raw base64 data in the saved json
1 parent 8d63eb7 commit afc9a01

3 files changed

Lines changed: 32 additions & 10 deletions

File tree

src/index.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,23 @@ const httpServer = http.createServer(function (req, res) {
4848
}
4949
const identifier = parsedData['username'];
5050
for (let i = 0; i < parsedData['contents'].length; i++) {
51+
const rawRequest = parsedData['contents'][i].request || "";
52+
const rawResponse = parsedData['contents'][i].payload || "";
53+
5154
const parsedRequestData = decodePayloadTraffic(
5255
parsedData['contents'][i].type,
53-
parsedData['contents'][i].request,
56+
rawRequest,
5457
"request"
5558
);
5659
const parsedResponseData = decodePayloadTraffic(
5760
parsedData['contents'][i].type,
58-
parsedData['contents'][i].payload,
61+
rawResponse,
5962
"response"
6063
);
6164

6265
// Save sample if enabled
6366
if (sampleSaver && parsedRequestData.length > 0 && parsedResponseData.length > 0) {
64-
sampleSaver.savePair(parsedRequestData[0], parsedResponseData[0], "golbat");
67+
sampleSaver.savePair(parsedRequestData[0], parsedResponseData[0], rawRequest, rawResponse, "golbat");
6568
}
6669

6770
if (typeof parsedRequestData === "string") {

src/utils/index.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,23 @@ export function getIPAddress() {
3535

3636
export function handleData(incoming: WebStreamBuffer, outgoing: WebStreamBuffer, identifier: any, parsedData: string, sampleSaver?: any) {
3737
for (let i = 0; i < parsedData['protos'].length; i++) {
38+
const rawRequest = parsedData['protos'][i].request || "";
39+
const rawResponse = parsedData['protos'][i].response || "";
40+
3841
const parsedRequestData = decodePayloadTraffic(
3942
parsedData['protos'][i].method,
40-
parsedData['protos'][i].request,
43+
rawRequest,
4144
"request"
4245
);
4346
const parsedResponseData = decodePayloadTraffic(
4447
parsedData['protos'][i].method,
45-
parsedData['protos'][i].response,
48+
rawResponse,
4649
"response"
4750
);
4851

4952
// Save sample if enabled
5053
if (sampleSaver && parsedRequestData.length > 0 && parsedResponseData.length > 0) {
51-
sampleSaver.savePair(parsedRequestData[0], parsedResponseData[0], "traffic");
54+
sampleSaver.savePair(parsedRequestData[0], parsedResponseData[0], rawRequest, rawResponse, "traffic");
5255
}
5356

5457
if (typeof parsedRequestData === "string") {

src/utils/sample-saver.ts

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ interface SavedSample {
1515
timestamp: string;
1616
request: any;
1717
response: any;
18+
rawRequest: string;
19+
rawResponse: string;
1820
}
1921

2022
interface SampleFile {
@@ -101,7 +103,13 @@ class SampleSaver {
101103
return true;
102104
}
103105

104-
public async saveSample(request: DecodedProto, response: DecodedProto | null, endpoint: string): Promise<void> {
106+
public async saveSample(
107+
request: DecodedProto,
108+
response: DecodedProto | null,
109+
rawRequest: string,
110+
rawResponse: string,
111+
endpoint: string
112+
): Promise<void> {
105113
if (!request || !request.methodId) return;
106114
if (!this.shouldSave(endpoint)) return;
107115

@@ -117,7 +125,9 @@ class SampleSaver {
117125
methodName: request.methodName,
118126
timestamp: this.getTimestamp(),
119127
request: request.data,
120-
response: response ? response.data : null
128+
response: response ? response.data : null,
129+
rawRequest: rawRequest,
130+
rawResponse: rawResponse
121131
};
122132

123133
const safeMethodName = request.methodName.replace(/[^a-zA-Z0-9_-]/g, '_');
@@ -144,8 +154,14 @@ class SampleSaver {
144154
}
145155
}
146156

147-
public async savePair(request: DecodedProto, response: DecodedProto, endpoint: string): Promise<void> {
148-
await this.saveSample(request, response, endpoint);
157+
public async savePair(
158+
request: DecodedProto,
159+
response: DecodedProto,
160+
rawRequest: string,
161+
rawResponse: string,
162+
endpoint: string
163+
): Promise<void> {
164+
await this.saveSample(request, response, rawRequest, rawResponse, endpoint);
149165
}
150166
}
151167

0 commit comments

Comments
 (0)