From 4b19063b66a7b49e091584ee7dc634d079ed0778 Mon Sep 17 00:00:00 2001 From: bernd Date: Fri, 13 Oct 2023 20:03:12 +0200 Subject: [PATCH] =?UTF-8?q?api=20wird=20aus=20einer=20template=20variable?= =?UTF-8?q?=20gelesen,=20ausgabe=20des=20peer=20cert=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/server/apistatusd.py | 90 ++++++++++++++++++++++++++++++------- 1 file changed, 73 insertions(+), 17 deletions(-) diff --git a/source/server/apistatusd.py b/source/server/apistatusd.py index d6ef14e..b15ab06 100755 --- a/source/server/apistatusd.py +++ b/source/server/apistatusd.py @@ -19,7 +19,7 @@ try: import threading from time import time, localtime, strftime, sleep import configparser -except ImportException as e: +except Exception as e: print('Import error: {}'.format(e)) @@ -117,14 +117,28 @@ def display_peercert(cert): elif len(cert) == 0: logging.debug('Peer certificate was not valid') else: - logging.debug('Peer certificate commonName: {}'.format( - cert['subject'][5][0][1])) - logging.debug('Peer certificate serialNumber: {}'.format( - cert['serialNumber'])) - logging.debug('Peer certificate notBefore: {}'.format( - cert['notBefore'])) - logging.debug('Peer certificate notAfter: {}'.format( - cert['notAfter'])) + logging.debug('--- Peer cert ---') + for key in cert.keys(): + if key in ('subject', 'serialNumber', 'notBefore', 'notAfter'): + if key == 'subject': + logging.debug(f'Subject: {cert[key]}') + for i in cert[key]: + logging.debug(f'{i[0][0]}: {i[0][1]}') + else: + logging.debug(f'{key}: {cert[key]}') + logging.debug('-----------------') + try: + logging.debug('Peer certificate commonName: {}'.format( + cert['subject'][5][0][1])) + logging.debug('Peer certificate serialNumber: {}'.format( + cert['serialNumber'])) + logging.debug('Peer certificate notBefore: {}'.format( + cert['notBefore'])) + logging.debug('Peer certificate notAfter: {}'.format( + cert['notAfter'])) + except Exception as error: + logging.debug('Cert display failed') + logging.debug(error) def receive_buffer_is_valid(raw_data): ''' @@ -172,7 +186,7 @@ def read_api(api): return False return api_json_data -def change_status(status, timestamp, filename): +def change_status(status, timestamp, api_template, filename): ''' Write the new status together with a timestamp into the Space API JSON. param 1: byte object @@ -181,18 +195,19 @@ def change_status(status, timestamp, filename): ''' logging.debug('Change status API') # todo: use walrus operator := when migrating to python >= 3.8 - data = read_api(filename) - if data is False: - return False + # data = read_api(filename) + # if data is False: + # return False if os.access(filename, os.W_OK): logging.debug('API file is writable') with open(filename, 'w') as api_file: logging.debug('API file successfull writable opened') - data["state"]["open"] = status - data["state"]["lastchange"] = timestamp + api_template["state"]["open"] = status + api_template["state"]["lastchange"] = timestamp try: - json.dump(data, api_file, indent=4) + # json.dump(data, api_file, indent=4) + json.dump(api_template, api_file, indent=4) except Exception as e: logging.error('Failed to change API file') logging.error('{}'.format(e)) @@ -335,6 +350,47 @@ def main(): 'token': 'aaaaa-bbbbb-ccccc-ddddd-eeeee' } } + + api_template = { + "api": "0.13", + "space": "Krautspace", + "url": "https://kraut.space", + "logo": "https://status.krautspace.de/images/krautspace_pixelbanner.png", + "location": { + "address": "Hackspace Jena e. V., Krautgasse 26, 07743 Jena, Germany", + "lat": 50.9292, + "lon": 11.5826 + }, + "state": { + "open": False, + "lastchange": 1563499131, + "icon": { + "open":"https://status.krautspace.de/images/krautspace_pixelicon_open.png", + "closed":"https://status.krautspace.de/images/krautspace_pixelicon_closed.png" + } + }, + "feeds": { + "calendar": { + "type": "ical", + "url": "https://kraut.space/krautspace.ics" + } + }, + "contact": { + "mastodon": "https://chaos.social/@krautspace", + "matrix": "#krautchan:matrix.kraut.space", + "email": "office@krautspace.de" + }, + "issue_report_channels": [ + "mastodon", + "matrix", + "email" + ], + "projects": [ + "https://git.kraut.space", + "https://github.com/HackspaceJena/" + ] + } + logging.info('Try to read config file') configfile = './apistatusd.conf' config = configparser.ConfigParser() @@ -402,7 +458,7 @@ def main(): raw_data = Connection.recv(1) if receive_buffer_is_valid(raw_data) is True: status, timestamp = get_status_and_time(raw_data) - if change_status(status, timestamp, config['api']['api']) is True: + if change_status(status, timestamp, api_template, config['api']['api']) is True: answer = raw_data if config['mastodon']['send'].lower() == 'true': logging.debug('Toot is set to true')