From f35c6989a4d29e892bffbac50a0c4c30fab68013 Mon Sep 17 00:00:00 2001 From: Stephen M Moraco Date: Sat, 11 Feb 2023 14:57:29 -0700 Subject: [PATCH] update version fetch mech. - use diff source for versions - now get versions every 12 hours - bump script ver for release --- ChangeLog | 4 ++++ ISP-RPi-mqtt-daemon.py | 33 ++++++++++++++++++++++++++------- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e58a2b..665f8bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ # ChangeLog +Sat, 11 Feb 2023 14:28:59 -0700 v1.7.2 + +- Repair fetch of versions, now every 12 hours + Fri, 10 Feb 2023 17:27:06 -0700 v1.7.1 - Fix internal release number diff --git a/ISP-RPi-mqtt-daemon.py b/ISP-RPi-mqtt-daemon.py index b97516c..b3a2317 100755 --- a/ISP-RPi-mqtt-daemon.py +++ b/ISP-RPi-mqtt-daemon.py @@ -24,9 +24,10 @@ import sdnotify from signal import signal, SIGPIPE, SIG_DFL signal(SIGPIPE, SIG_DFL) -import urllib3 +import requests +from urllib3.exceptions import InsecureRequestWarning -script_version = "1.7.1" +script_version = "1.7.2" script_name = 'ISP-RPi-mqtt-daemon.py' script_info = '{} v{}'.format(script_name, script_version) project_name = 'RPi Reporter MQTT2HA Daemon' @@ -35,6 +36,10 @@ # we'll use this throughout local_tz = get_localzone() +# turn off insecure connection warnings (our KZ0Q site has bad certs) +# REF: https://www.geeksforgeeks.org/how-to-disable-security-certificate-checks-for-requests-in-python/ +requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) + # TODO: # - add announcement of free-space and temperatore endpoints @@ -222,18 +227,22 @@ def on_publish(client, userdata, mid): # ----------------------------------------------------------------------------- daemon_version_list = [ 'NOT-LOADED' ] +daemon_last_fetch_time = 0.0 def getDaemonReleases(): # retrieve latest formal release versions list from repo global daemon_version_list + global daemon_last_fetch_time + newVersionList = [] latestVersion = '' - http = urllib3.PoolManager() - result = http.request('GET', 'https://raw.githubusercontent.com/ironsheep/RPi-Reporter-MQTT2HA-Daemon/master/Release') - if result.status != 200: - print_line('- getDaemonReleases() RQST status=({})'.format(result.status), error=True) + + response = requests.request('GET', 'http://kz0q.com/daemon-releases', verify=False) + if response.status_code != 200: + print_line('- getDaemonReleases() RQST status=({})'.format(response.status_code), error=True) + daemon_version_list = [ 'NOT-LOADED' ] # mark as NOT fetched else: - content = result.data.decode('utf-8') + content = response.text lines = content.split('\n') for line in lines: if len(line) > 0: @@ -257,8 +266,10 @@ def getDaemonReleases(): daemon_version_list = newVersionList print_line('- RQST daemon_version_list=({})'.format(daemon_version_list), debug=True) + daemon_last_fetch_time = time() # record when we last fetched the versions getDaemonReleases() # and load them! +print_line('* daemon_last_fetch_time=({})'.format(daemon_last_fetch_time), debug=True) @@ -1561,12 +1572,20 @@ def afterMQTTConnect(): afterMQTTConnect() # now instead of after? +# check every 12 hours (twice a day) = 12 hours * 60 minutes * 60 seconds +kVersionCheckIntervalInSeconds = (12 * 60 * 60) + # now just hang in forever loop until script is stopped externally try: while True: # our INTERVAL timer does the work sleep(10000) + timeNow = time() + if timeNow > daemon_last_fetch_time + kVersionCheckIntervalInSeconds: + getDaemonReleases() # and load them! + + finally: # cleanup used pins... just because we like cleaning up after us stopPeriodTimer() # don't leave our timers running!