From f0962d95d2789aad5fe0f78f684e2f43cf53eebb Mon Sep 17 00:00:00 2001 From: Garrett Summerfield Date: Mon, 10 Apr 2023 00:07:09 -0500 Subject: [PATCH 1/2] Manifest cleanup functions delete_files() deletes files from the Pterodactyl instance. cleanup_local_files() deletes files stored locally for mirroring. --- sync.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/sync.py b/sync.py index f7fecf3..072d9a1 100644 --- a/sync.py +++ b/sync.py @@ -95,6 +95,32 @@ def start_server(): api.client.servers.send_power_action(server, "start") print("Server started") +def delete_files(): + """_summary_ Deletes files from the files directory + """ + print("Deleting files on mirrored instance...") + # Because pydactyl is terrible with deleting files, we have to do it manually using the API + headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer ' + staging_api_key + } + data = { + "root": "/", + "files": [""] + } + + response = requests.post(staging_server, headers=headers, json=data) + print(response.status_code) # prints the status code of the response + print(response.json()) # prints the JSON content of the response + + print("Files deleted") + +def cleanup_local_files(): + """_summary_ Deletes files from the files directory + """ + print("Deleting local files...") + os.rmdir("./files") + print("Files deleted") if __name__ == "__main__": main() From f9ffaf920b0696743a42ce7b2488949166b9c039 Mon Sep 17 00:00:00 2001 From: Garrett Summerfield Date: Mon, 10 Apr 2023 22:28:11 -0500 Subject: [PATCH 2/2] Add functionality to delete local and remote files Files are now remotely deleted before upload to prevent overwriting and corrupting data, as well as after upload to clean up the directory and prevent overwriting and corrupting data. --- sync.py | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/sync.py b/sync.py index 072d9a1..5b86250 100644 --- a/sync.py +++ b/sync.py @@ -2,6 +2,7 @@ """ import os +import shutil import sys import time import requests @@ -28,8 +29,10 @@ def main(): """ download_ftp() stop_server() + delete_remote_files() upload_files() start_server() + delete_local_files() def download_ftp(): @@ -95,32 +98,25 @@ def start_server(): api.client.servers.send_power_action(server, "start") print("Server started") -def delete_files(): +def delete_remote_files(): """_summary_ Deletes files from the files directory """ print("Deleting files on mirrored instance...") - # Because pydactyl is terrible with deleting files, we have to do it manually using the API - headers = { - 'Content-Type': 'application/json', - 'Authorization': 'Bearer ' + staging_api_key - } - data = { - "root": "/", - "files": [""] - } - - response = requests.post(staging_server, headers=headers, json=data) - print(response.status_code) # prints the status code of the response - print(response.json()) # prints the JSON content of the response + dict_files = api.client.servers.files.list_files(server, "/") + file_names = [] + for file in dict_files["data"]: + file_names.append(file["attributes"]["name"]) + + api.client.servers.files.delete_files(server, file_names, "/") print("Files deleted") -def cleanup_local_files(): +def delete_local_files(): """_summary_ Deletes files from the files directory """ print("Deleting local files...") - os.rmdir("./files") - print("Files deleted") + shutil.rmtree("./files") + print("Local files deleted") if __name__ == "__main__": main()