Use json.dump in FileExfiltrationWriter (#15095)

To directly write to the open file, instead of writing to an
in-memory string first.
This commit is contained in:
Dirk Klimpel 2023-02-22 20:29:39 +01:00 committed by GitHub
parent 91f8de7b56
commit 6def779a1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 8 deletions

1
changelog.d/15095.misc Normal file
View File

@ -0,0 +1 @@
Refactor writing json data in `FileExfiltrationWriter`.

View File

@ -149,7 +149,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
with open(events_file, "a") as f: with open(events_file, "a") as f:
for event in events: for event in events:
print(json.dumps(event.get_pdu_json()), file=f) json.dump(event.get_pdu_json(), fp=f)
def write_state( def write_state(
self, room_id: str, event_id: str, state: StateMap[EventBase] self, room_id: str, event_id: str, state: StateMap[EventBase]
@ -162,7 +162,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
with open(event_file, "a") as f: with open(event_file, "a") as f:
for event in state.values(): for event in state.values():
print(json.dumps(event.get_pdu_json()), file=f) json.dump(event.get_pdu_json(), fp=f)
def write_invite( def write_invite(
self, room_id: str, event: EventBase, state: StateMap[EventBase] self, room_id: str, event: EventBase, state: StateMap[EventBase]
@ -178,7 +178,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
with open(invite_state, "a") as f: with open(invite_state, "a") as f:
for event in state.values(): for event in state.values():
print(json.dumps(event), file=f) json.dump(event, fp=f)
def write_knock( def write_knock(
self, room_id: str, event: EventBase, state: StateMap[EventBase] self, room_id: str, event: EventBase, state: StateMap[EventBase]
@ -194,7 +194,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
with open(knock_state, "a") as f: with open(knock_state, "a") as f:
for event in state.values(): for event in state.values():
print(json.dumps(event), file=f) json.dump(event, fp=f)
def write_profile(self, profile: JsonDict) -> None: def write_profile(self, profile: JsonDict) -> None:
user_directory = os.path.join(self.base_directory, "user_data") user_directory = os.path.join(self.base_directory, "user_data")
@ -202,7 +202,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
profile_file = os.path.join(user_directory, "profile") profile_file = os.path.join(user_directory, "profile")
with open(profile_file, "a") as f: with open(profile_file, "a") as f:
print(json.dumps(profile), file=f) json.dump(profile, fp=f)
def write_devices(self, devices: List[JsonDict]) -> None: def write_devices(self, devices: List[JsonDict]) -> None:
user_directory = os.path.join(self.base_directory, "user_data") user_directory = os.path.join(self.base_directory, "user_data")
@ -211,7 +211,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
for device in devices: for device in devices:
with open(device_file, "a") as f: with open(device_file, "a") as f:
print(json.dumps(device), file=f) json.dump(device, fp=f)
def write_connections(self, connections: List[JsonDict]) -> None: def write_connections(self, connections: List[JsonDict]) -> None:
user_directory = os.path.join(self.base_directory, "user_data") user_directory = os.path.join(self.base_directory, "user_data")
@ -220,7 +220,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
for connection in connections: for connection in connections:
with open(connection_file, "a") as f: with open(connection_file, "a") as f:
print(json.dumps(connection), file=f) json.dump(connection, fp=f)
def write_account_data( def write_account_data(
self, file_name: str, account_data: Mapping[str, JsonDict] self, file_name: str, account_data: Mapping[str, JsonDict]
@ -233,7 +233,7 @@ class FileExfiltrationWriter(ExfiltrationWriter):
account_data_file = os.path.join(account_data_directory, file_name) account_data_file = os.path.join(account_data_directory, file_name)
with open(account_data_file, "a") as f: with open(account_data_file, "a") as f:
print(json.dumps(account_data), file=f) json.dump(account_data, fp=f)
def finished(self) -> str: def finished(self) -> str:
return self.base_directory return self.base_directory