I was thinking of that, but I only have one test computer and I'm worried if installing python does fix the issue, I then wont be able to revert it easily to its previous state to continue testing.
At first (just in pycharm, before trying exe) my scripts were all using
verify=f"{root_path}/Cisco Umbrella Root CA.crt"
which is a cert I got from the Meraki Dashboard I think? That worked for months until one day it stopped, so I went to the Dashboard again and found the cert was now DigiCert Global Root G2.crt - so I swapped it and it worked fine.
DigiCert was the one I was using when I first tried to package into exe. When it didn't work I also tried Digicert TLS RSA etc etc.
Then I tried just relying on Certifi - didnt work for the exe but I noticed my pycharm code was using it ok (didnt work a year ago when I first started coding) - so I have now changed the api calls in every script to just remove the verify bit.
script_path = sys.argv[0]
root_path = os.path.dirname(os.path.abspath(script_path))
def get_network_names():
logging_config.log_function_start()
retry_count = 3
timeout = 1
networks_url = f"https://api.meraki.com/api/v1/organizations/{org_id}/networks"
for attempt in range(retry_count):
try:
networks = requests.get(networks_url, headers=headers, timeout=timeout)
logging_config.log_API_CALL(f"GET 1: {networks_url} {networks}")
time.sleep(DELAY)
network_data = networks.json()
print(network_data)
if networks.status_code not in [200, 201]:
logging_config.log_info(f"Error! HTTP status code: {networks.status_code}, Response text: {networks.text}")
messagebox.showerror("Error", (f"Error! HTTP status code: {networks.status_code}, Response text: {networks.text}"))
return [] # Return an empty list to indicate failure
for network in networks.json():
network_name_to_id[network["name"].lower()] = network["id"]
network_names = sorted([network["name"].lower() for network in networks.json()])
break
except requests.exceptions.Timeout:
logging_config.log_exception(f"Request timed out. Retrying... Attempt {attempt + 1}/{retry_count}")
time.sleep(DELAY)
except requests.exceptions.HTTPError as e:
logging_config.log_exception(f"HTTP Error occurred: {e}")
messagebox.showerror("Error", str(e))
return []
except requests.exceptions.RequestException as e:
logging_config.log_exception(f"Request Exception occurred: {e}")
messagebox.showerror("Error", str(e))
return []
except Exception as e:
logging_config.log_exception(f"Unhandled Exception occurred: {e}")
messagebox.showerror("Error", str(e))
return []
logging_config.log_function_finish()
return network_names, network_name_to_id, network_data