From 151e194f76beb16ff37b463a93a918cd11101262 Mon Sep 17 00:00:00 2001 From: iFargle Date: Wed, 15 Feb 2023 14:43:38 +0900 Subject: [PATCH] Add more checks --- helper.py | 65 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/helper.py b/helper.py index 12a6220..775d813 100644 --- a/helper.py +++ b/helper.py @@ -123,43 +123,62 @@ def startup_checks(): # Check 1: See if the Headscale server is reachable: reachable = False response = requests.get(str(url)+"/health") - log.warning("STARTUP CHECK: Response: "+str(response.status_code)) - if response.status_code == 200: - reachable = True - else: - reachable = False - checks_passed = False + if response.status_code == 200: reachable = True - # Check 2: See if /data/ is writable: - writable = False - python_error = "" - try: - key_file = open("/data/key.txt", "a") - if key_file.writable(): - writable = True - else: - writable = False - except Exception as e: - writable = False - checks_passed = False - python_error = e + # Check 2 and 3: See if /data/ is rw: + data_readable = False + data_writable = False + if os.access('/data/', os.R_OK): data_readable = True + if os.access('/data/', os.W_OK): data_writable = True + + # Check 4/5: See if /data/key.txt is rw: + file_readable = False + file_writable = False + if os.access('/data/key.txt', os.R_OK): file_readable = True + if os.access('/data/key.txt', os.W_OK): file_writable = True if checks_passed: return "Pass" messageHTML = "" # Generate the message: - if not reachable: + if not server_reachable: message = """

Your headscale server is either unreachable or not properly configured. Please ensure your configuration is correct (Check for 200 status on """+url+"""/api/v1 failed. Response: """+str(response.status_code)+""".)

""" + messageHTML += format_error_message("Error", "Headscale unreachable", message) - if not writable: + if not data_writable: + message = """ +

/data/ is not writable. Please ensure your + permissions are correct. /data mount should be writable + by UID/GID 1000:1000.

+ """ + + messageHTML += format_error_message("Error", "/data not writable", message) + if not data_readable: + message = """ +

/data/ is not readable. Please ensure your + permissions are correct. /data mount should be readable + by UID/GID 1000:1000.

+ """ + + messageHTML += format_error_message("Error", "/data not readable", message) + if not file_writable: message = """

/data/key.txt is not writable. Please ensure your permissions are correct. /data mount should be writable - by UID/GID 1000:1000. Error: """+str(python_error)+"""

+ by UID/GID 1000:1000.

""" - messageHTML += format_error_message("Error", "/data not writable", message) + + messageHTML += format_error_message("Error", "/data/key.txt not writable", message) + if not file_readable: + message = """ +

/data/key.txt is not readable. Please ensure your + permissions are correct. /data mount should be readable + by UID/GID 1000:1000.

+ """ + + messageHTML += format_error_message("Error", "/data/key.txt not readable", message) return messageHTML \ No newline at end of file