3
3
import gzip
4
4
import brotli
5
5
import zlib
6
+ from .modules .logger import Logger
7
+ logger = Logger ()
6
8
7
9
8
10
def decompress_gzip_data (gzip_data : bytes ):
@@ -11,7 +13,7 @@ def decompress_gzip_data(gzip_data: bytes):
11
13
decompressed_content = gzip .decompress (gzip_data )
12
14
decoded_content = decompressed_content .decode ('utf-8' )
13
15
except Exception as e :
14
- print ('# Error in decompressing gzip encoded body : ' + str (e ))
16
+ logger . logger_print ('# Error in decompressing gzip encoded body : ' + str (e ))
15
17
return gzip_data
16
18
17
19
return decoded_content
@@ -23,7 +25,7 @@ def decompress_br_data(br_data: bytes):
23
25
decompressed_content = brotli .decompress (br_data )
24
26
decoded_content = decompressed_content .decode ('utf-8' )
25
27
except Exception as e :
26
- print ('# Error in decompressing br encoded body : ' + str (e ))
28
+ logger . logger_print ('# Error in decompressing br encoded body : ' + str (e ))
27
29
return br_data
28
30
29
31
return decoded_content
@@ -35,7 +37,7 @@ def decompress_deflate_data(deflate_data: bytes):
35
37
decompressed_content = zlib .decompress (deflate_data , - zlib .MAX_WBITS )
36
38
decoded_content = decompressed_content .decode ('utf-8' )
37
39
except Exception as e :
38
- print ('# Error in decompressing deflate encoded body : ' + str (e ))
40
+ logger . logger_print ('# Error in decompressing deflate encoded body : ' + str (e ))
39
41
return deflate_data
40
42
41
43
return decoded_content
@@ -78,7 +80,7 @@ def add_frames(self, frames_bytes: bytes, is_verbose=False):
78
80
79
81
for f in parsed_frames :
80
82
if is_verbose :
81
- print (f .show ())
83
+ logger . logger_print (f .show ())
82
84
83
85
if isinstance (f .payload , h2 .H2HeadersFrame ):
84
86
self .parse_header_frame (f )
@@ -103,33 +105,33 @@ def add_frames(self, frames_bytes: bytes, is_verbose=False):
103
105
self .parse_reset_frame (f )
104
106
105
107
else :
106
- print ('--frame--' )
107
- print ('Frame Type: ' + str (type (f .payload )) + ' / Type ID: ' + str (f .type ))
108
+ logger . logger_print ('--frame--' )
109
+ logger . logger_print ('Frame Type: ' + str (type (f .payload )) + ' / Type ID: ' + str (f .type ))
108
110
f .show ()
109
- print ('##frame##' )
111
+ logger . logger_print ('##frame##' )
110
112
111
113
def parse_settings_frame (self , settings_frame ):
112
114
if 'A' in settings_frame .flags :
113
- print ('* Server sent ACK for client SETTINGS frame' )
115
+ logger . logger_print ('* Server sent ACK for client SETTINGS frame' )
114
116
115
117
else :
116
- print ('* Server sent Settings frame with following values:' )
117
- print ('// Server SETTINGS //' )
118
- print (settings_frame .settings )
119
- print ()
118
+ logger . logger_print ('* Server sent Settings frame with following values:' )
119
+ logger . logger_print ('// Server SETTINGS //' )
120
+ logger . logger_print (settings_frame .settings )
121
+ logger . logger_print ()
120
122
ack_settings_frame = create_settings_frame (is_ack = 1 )
121
123
self .send_frame (ack_settings_frame )
122
- print ('+ Client sent ACK for server SETTINGS frame' )
124
+ logger . logger_print ('+ Client sent ACK for server SETTINGS frame' )
123
125
124
126
def parse_window_update_frame (self , windows_update_frame ):
125
- print ('* Server sent WINDOW UPDATE frame with win_increase_size of: ' + str (windows_update_frame .win_size_incr ))
127
+ logger . logger_print ('* Server sent WINDOW UPDATE frame with win_increase_size of: ' + str (windows_update_frame .win_size_incr ))
126
128
127
129
def parse_ping_frame (self , ping_frame ):
128
130
if 'A' in ping_frame .flags :
129
- print ('* Server sent ACK for PING frame' )
131
+ logger . logger_print ('* Server sent ACK for PING frame' )
130
132
131
133
def parse_reset_frame (self , reset_frame ):
132
- print (f'# Server sent RESET frame for Stream ID: { reset_frame .stream_id } , with Err_Code: { reset_frame .error } ' )
134
+ logger . logger_print (f'# Server sent RESET frame for Stream ID: { reset_frame .stream_id } , with Err_Code: { reset_frame .error } ' )
133
135
134
136
def parse_header_frame (self , header_frame ):
135
137
headers_string = self .get_headers_string_from_headers_frame (header_frame )
@@ -259,56 +261,56 @@ def parse_response_frames_bytes(
259
261
260
262
raw_frame_bytes = frames_bytes
261
263
if raw_frame_bytes :
262
- print ('+--------- START Response Frames ---------+' )
264
+ logger . logger_print ('+--------- START Response Frames ---------+' )
263
265
parsed_frames = h2 .H2Seq (raw_frame_bytes ).frames
264
266
# print(parsed_frames)
265
267
266
268
for f in parsed_frames :
267
269
if is_verbose :
268
- print (f .show ())
270
+ logger . logger_print (f .show ())
269
271
270
272
if isinstance (f .payload , h2 .H2HeadersFrame ):
271
273
headers_string = _get_headers_string_from_headers_frame (f )
272
- print (f'------ Headers Stream ID: { f .stream_id } ------' )
273
- print (headers_string )
274
+ logger . logger_print (f'------ Headers Stream ID: { f .stream_id } ------' )
275
+ logger . logger_print (headers_string )
274
276
275
277
elif isinstance (f .payload , h2 .H2DataFrame ):
276
- print (f'------ Data Stream ID: { f .stream_id } ------' )
278
+ logger . logger_print (f'------ Data Stream ID: { f .stream_id } ------' )
277
279
with gzip .GzipFile (fileobj = gzip .io .BytesIO (f .data ), mode = 'rb' ) as decompressed_file :
278
280
# Read the decompressed data
279
281
decompressed_content = decompressed_file .read ()
280
282
281
283
# If the decompressed content is in bytes, you might want to decode it (if it contains text)
282
284
decoded_content = decompressed_content .decode ('utf-8' )
283
- print (decoded_content )
285
+ logger . logger_print (decoded_content )
284
286
285
287
# print(f'------ Data Stream ID: {f.stream_id} ------')
286
288
# print(str(f.data))
287
289
288
290
elif isinstance (f .payload , h2 .H2SettingsFrame ):
289
291
if socket_obj is not None :
290
- print ('* got a Settings frame from server' )
292
+ logger . logger_print ('* got a Settings frame from server' )
291
293
settings_frame = create_settings_frame (is_ack = 1 )
292
294
socket_obj .send (bytes (settings_frame ))
293
- print ('* client sent ACK for server Settings' )
295
+ logger . logger_print ('* client sent ACK for server Settings' )
294
296
295
297
elif isinstance (f .payload , h2 .H2WindowUpdateFrame ):
296
- print ('* server sent WindowUpdate Frame with win_increase_size of: ' + str (f .win_size_incr ))
298
+ logger . logger_print ('* server sent WindowUpdate Frame with win_increase_size of: ' + str (f .win_size_incr ))
297
299
298
300
elif isinstance (f .payload , h2 .H2PingFrame ):
299
- print ('* server sent ACK for PING frame' )
301
+ logger . logger_print ('* server sent ACK for PING frame' )
300
302
301
303
elif isinstance (f .payload , NoPayload ):
302
304
if f .type == 4 : # settings frame
303
305
if 'A' in f .flags :
304
- print ('* server sent ACK for client Settings' )
306
+ logger . logger_print ('* server sent ACK for client Settings' )
305
307
306
308
else :
307
- print ('--frame--' )
309
+ logger . logger_print ('--frame--' )
308
310
f .show ()
309
- print ('##frame##' )
311
+ logger . logger_print ('##frame##' )
310
312
311
- print ('+--------- END Response Frames ---------+' )
313
+ logger . logger_print ('+--------- END Response Frames ---------+' )
312
314
313
315
314
316
def create_ping_frame (ping_data = '12345678' , is_ack = 0 ):
@@ -318,7 +320,7 @@ def create_ping_frame(ping_data='12345678', is_ack=0):
318
320
"""
319
321
320
322
if len (ping_data ) != 8 :
321
- print ('ping frame payload must be 8 in length! --> ' + ping_data + ' is invalid!' )
323
+ logger . logger_print ('ping frame payload must be 8 in length! --> ' + ping_data + ' is invalid!' )
322
324
exit ()
323
325
324
326
if is_ack :
0 commit comments