From 1b24248d8437aae73486bcea5aa5074406857aed Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 07:09:10 -0700 Subject: [PATCH 01/18] in progress --- py_config_gs/app.py | 27 +++++++++++++++++++++++++++ py_config_gs/templates/home.html | 4 ++++ py_config_gs/templates/upload.html | 27 +++++++++++++++++++++++++++ py_config_gs/version.txt | 2 +- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 py_config_gs/templates/upload.html diff --git a/py_config_gs/app.py b/py_config_gs/app.py index 88d49b7..82a9e3b 100644 --- a/py_config_gs/app.py +++ b/py_config_gs/app.py @@ -6,6 +6,7 @@ from importlib.metadata import version +# read version for footer #app_version = version('py-config-gs') with open('version.txt', 'r') as f: app_version = f.read().strip() @@ -19,6 +20,11 @@ app = Flask(__name__) app.secret_key = os.getenv('SECRET_KEY', 'default_secret_key') +# Define the upload folder +GS_UPLOAD_FOLDER = '/etc' +ALLOWED_EXTENSIONS = {'key'} +app.config['GS_UPLOAD_FOLDER'] = GS_UPLOAD_FOLDER + if os.getenv('FLASK_ENV') == 'development': # In development, use the home folder settings file SETTINGS_FILE = os.path.expanduser('~/config/py-config-gs.json') @@ -192,6 +198,27 @@ def service_action(): return redirect(url_for('home')) +# Function to check allowed file extensions +def allowed_file(filename): + return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + +@app.route('/upload', methods=['GET', 'POST']) +def upload_file(): + if request.method == 'POST': + if 'file' not in request.files: + flash('No file part') + return redirect(request.url) + file = request.files['file'] + if file.filename == '': + flash('No selected file') + return redirect(request.url) + if file and allowed_file(file.filename): + file_path = os.path.join(app.config['GS_UPLOAD_FOLDER'], 'gs.key') + file.save(file_path) # Save the uploaded file + flash('File successfully uploaded') + return redirect(url_for('home')) + return render_template('upload.html') # A separate template for file upload + def main(): app.run(host='0.0.0.0', port=SERVER_PORT) diff --git a/py_config_gs/templates/home.html b/py_config_gs/templates/home.html index 22cb969..da77ddb 100644 --- a/py_config_gs/templates/home.html +++ b/py_config_gs/templates/home.html @@ -15,6 +15,10 @@

Configuration Files

No configuration files available.

{% endif %} + + Upload gs.key + +

Radxa Temps

diff --git a/py_config_gs/templates/upload.html b/py_config_gs/templates/upload.html new file mode 100644 index 0000000..af21bf2 --- /dev/null +++ b/py_config_gs/templates/upload.html @@ -0,0 +1,27 @@ + + + + + + Upload gs.key + + + +
+

Upload gs.key

+
+ + + + {% with messages = get_flashed_messages() %} + {% if messages %} +
    + {% for message in messages %} +
  • {{ message }}
  • + {% endfor %} +
+ {% endif %} + {% endwith %} +
+ + diff --git a/py_config_gs/version.txt b/py_config_gs/version.txt index 90a27f9..8fb1297 100644 --- a/py_config_gs/version.txt +++ b/py_config_gs/version.txt @@ -1 +1 @@ -1.0.5 +1.0.5-next From c8c962ba3fcadd2287930efca32a4ef860a3d1a9 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 07:35:25 -0700 Subject: [PATCH 02/18] mobile improvements --- py_config_gs/static/css/styles.css | 41 ++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/py_config_gs/static/css/styles.css b/py_config_gs/static/css/styles.css index 5249561..ba8744d 100644 --- a/py_config_gs/static/css/styles.css +++ b/py_config_gs/static/css/styles.css @@ -1,15 +1,13 @@ -/* styles.css */ - /* General Styles */ body { font-family: Arial, sans-serif; margin: 0; padding: 20px; background-color: #f4f4f4; + line-height: 1.6; } -h1, -h2 { +h1, h2 { color: #333; } @@ -28,10 +26,12 @@ p { display: flex; background-color: #e2e2e2; border-radius: 5px; + flex-wrap: wrap; /* Allows tabs to wrap on small screens */ } .tabs li { margin: 0; + flex: 1 1 auto; /* Allow tabs to be responsive */ } .tabs a { @@ -39,6 +39,7 @@ p { padding: 10px 15px; text-decoration: none; color: #333; + text-align: center; border-radius: 5px; margin-right: 5px; transition: background-color 0.3s; @@ -161,13 +162,14 @@ table td:nth-child(3) { /* Button Styles */ button { - padding: 8px 12px; /* Increase button size */ + padding: 12px 16px; /* Increase button size for touch screens */ margin: 0 5px; border: none; cursor: pointer; background-color: #007bff; color: white; border-radius: 4px; + font-size: 16px; } button[type="submit"]:hover { @@ -178,3 +180,32 @@ button[type="submit"]:hover { form { display: inline; } + +/* Responsive Layout */ +@media (max-width: 768px) { + body { + padding: 10px; + } + + .tabs ul { + flex-direction: column; /* Stack tabs on small screens */ + } + + button { + width: 100%; /* Make buttons full-width on mobile */ + margin-bottom: 10px; + } + + table th, table td { + font-size: 14px; /* Smaller text for tables */ + padding: 10px; + } + + .content { + padding: 15px; + } + + footer { + padding: 8px; + } +} From 32a265308ac92d0b9fd4b0d40574c421d5e64994 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 08:02:48 -0700 Subject: [PATCH 03/18] modify style, add additiona service --- py_config_gs/app.py | 3 +- py_config_gs/static/css/styles.css | 50 ++++++++++++++++++++-- py_config_gs/templates/home.html | 68 +++++++++++++++++++----------- py_config_gs/templates/upload.html | 17 +++----- 4 files changed, 97 insertions(+), 41 deletions(-) diff --git a/py_config_gs/app.py b/py_config_gs/app.py index 82a9e3b..58c7020 100644 --- a/py_config_gs/app.py +++ b/py_config_gs/app.py @@ -75,7 +75,7 @@ def stream(): @app.route('/') def home(): # List of services that you want to control - services = ['openipc'] + services = ['openipc',"wifibroadcast.service"] service_statuses = {} # Fetches the current status (enabled/disabled) for each service. @@ -167,6 +167,7 @@ def run_command(): # Construct the first command based on the dropdown value cli_command = f"echo cli -s {selected_command} > /dev/udp/localhost/14550" logger.debug(f'Running command: {cli_command}') + flash(f'Running command: {cli_command}', 'info') # Run the commands subprocess.run(cli_command, shell=True) diff --git a/py_config_gs/static/css/styles.css b/py_config_gs/static/css/styles.css index ba8744d..86adf91 100644 --- a/py_config_gs/static/css/styles.css +++ b/py_config_gs/static/css/styles.css @@ -89,12 +89,13 @@ p { /* Footer Styles */ footer { - position: fixed; - bottom: 0; - width: 100%; background-color: #f1f1f1; text-align: center; padding: 10px; + width: 100%; + position: relative; /* Change from fixed to relative */ + bottom: 0; + flex-shrink: 0; /* Ensure the footer is not squeezed by the content */ } /* Styled Box */ @@ -209,3 +210,46 @@ form { padding: 8px; } } + + +/* Configuration Files Section */ +.config-section { + border: 1px solid #ccc; /* Thin border around the section */ + border-radius: 5px; /* Optional: Add border radius for smooth edges */ + padding: 20px; + margin-bottom: 20px; /* Space between this section and others */ + background-color: #fff; +} + +.config-section h2 { + margin-top: 0; /* Remove extra top margin */ + font-size: 24px; + color: #333; +} + +/* Configuration Content */ +.config-content { + display: flex; + flex-direction: column; /* Align children vertically */ + gap: 15px; /* Add space between Edit and Actions */ +} + +/* Individual Config Items */ +.config-item h3 { + font-size: 20px; + margin: 0 0 10px 0; /* Space below each heading */ + color: #007bff; /* Optional: Add color to the headings */ +} + +.config-item p { + margin: 0; + color: #555; + font-size: 16px; +} + +/* For mobile responsiveness, if needed */ +@media (max-width: 768px) { + .config-content { + gap: 10px; /* Reduce gap on smaller screens */ + } +} \ No newline at end of file diff --git a/py_config_gs/templates/home.html b/py_config_gs/templates/home.html index da77ddb..9fb4324 100644 --- a/py_config_gs/templates/home.html +++ b/py_config_gs/templates/home.html @@ -2,25 +2,39 @@ {% extends "base.html" %} {% block content %} -

Configuration Files

-{% if config_files %} - -{% else %} -

No configuration files available.

-{% endif %} - - - Upload gs.key - - - + +
+

Configuration Files

+
+
+

Edit

+ {% if config_files %} + + {% else %} +

No configuration files available.

+ {% endif %} +
+
+

Actions

+ +
+
+
+ + +

Radxa Temps

+
@@ -50,10 +64,11 @@

Radxa Temps

+ -
+ - +
{% with messages = get_flashed_messages(with_categories=true) %} @@ -66,10 +81,10 @@

Radxa Temps

{% endif %} {% endwith %}
- +
- +

System Control

@@ -111,11 +126,12 @@

System Control

{% endfor %} - +
- +

Camera Control

+

Work in Progress

@@ -126,7 +142,8 @@

Work in Progress

- +
+ + {% endblock %} \ No newline at end of file diff --git a/py_config_gs/templates/upload.html b/py_config_gs/templates/upload.html index af21bf2..411701e 100644 --- a/py_config_gs/templates/upload.html +++ b/py_config_gs/templates/upload.html @@ -1,12 +1,7 @@ - - - - - - Upload gs.key - - - + +{% extends "base.html" %} + +{% block content %}

Upload gs.key

@@ -22,6 +17,4 @@

Upload gs.key

{% endif %} {% endwith %} -
- - +{% endblock %} \ No newline at end of file From 399268caa77f0967ee0cff205a343cd394817d75 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:24:53 -0700 Subject: [PATCH 04/18] modify style --- py_config_gs/.vscode/sftp.json | 18 +++ py_config_gs/app.py | 130 +++++++++++++++------- py_config_gs/static/css/styles.css | 70 +++++++++++- py_config_gs/static/images/OpenIPCFPV.png | Bin 0 -> 154147 bytes py_config_gs/templates/base.html | 25 ++++- py_config_gs/templates/home.html | 43 +++---- py_config_gs/templates/settings.html | 52 +++++++++ requirements.txt | 13 ++- 8 files changed, 271 insertions(+), 80 deletions(-) create mode 100644 py_config_gs/.vscode/sftp.json create mode 100644 py_config_gs/static/images/OpenIPCFPV.png create mode 100644 py_config_gs/templates/settings.html diff --git a/py_config_gs/.vscode/sftp.json b/py_config_gs/.vscode/sftp.json new file mode 100644 index 0000000..af466bd --- /dev/null +++ b/py_config_gs/.vscode/sftp.json @@ -0,0 +1,18 @@ +{ + "name": "Radxa", + "host": "10.0.1.14", + "protocol": "sftp", + "port": 22, + "username": "root", + "remotePath": "/root/workspace/py_config_gs/py_config_gs", + "uploadOnSave": false, + "useTempFile": false, + "openSsh": false, + "ignore": [ + "**/*.log", + "**/*.tmp", + ".venv/**", + "**/*.env" + + ] +} diff --git a/py_config_gs/app.py b/py_config_gs/app.py index 58c7020..c589f3d 100644 --- a/py_config_gs/app.py +++ b/py_config_gs/app.py @@ -2,16 +2,14 @@ from flask import Flask, render_template, request, Response, redirect, url_for, send_from_directory, flash import json import os +import sys import subprocess from importlib.metadata import version - -# read version for footer -#app_version = version('py-config-gs') +# Read version for footer with open('version.txt', 'r') as f: app_version = f.read().strip() - # Configure logging logging.basicConfig(level=logging.DEBUG, # Set the log level to DEBUG format='%(asctime)s - %(levelname)s - %(message)s') @@ -34,6 +32,7 @@ # Log the SETTINGS_FILE path logger.info(f'Settings file path: {SETTINGS_FILE}') + logger.info(f'App version: {app_version}') # Load settings.json @@ -49,21 +48,25 @@ logger.debug(f'VIDEO_DIR is set to: {VIDEO_DIR}') def stream_journal(): - """Stream journalctl output in real-time.""" - process = subprocess.Popen( - ['journalctl', '-f'], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - text=True - ) - - while True: - output = process.stdout.readline() - if output: - yield f"data: {output}\n\n" - else: - break - + if os.getenv('FLASK_ENV') != 'development': + """Stream journalctl output in real-time.""" + process = subprocess.Popen( + ['journalctl', '-f'], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + text=True + ) + + while True: + output = process.stdout.readline() + if output: + yield f"data: {output}\n\n" + else: + break + else: + logger.info('No data in DEVELOPMENT mode') + yield "data: No data in DEVELOPMENT mode\n\n" # Send as part of stream instead of flashing + @app.route('/journal') def journal(): return render_template('journal.html', version=app_version) @@ -74,18 +77,18 @@ def stream(): @app.route('/') def home(): - # List of services that you want to control - services = ['openipc',"wifibroadcast.service"] + services = ['openipc', "wifibroadcast.service"] service_statuses = {} + + # flash(f'Starting up...', 'info') - # Fetches the current status (enabled/disabled) for each service. - for service in services: - # Check if the service is enabled or disabled - result = subprocess.run(['systemctl', 'is-enabled', service], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - status = result.stdout.decode('utf-8').strip() - service_statuses[service] = status + if os.getenv('FLASK_ENV') != 'development': + for service in services: + result = subprocess.run(['systemctl', 'is-enabled', service], stdout=subprocess.PIPE, stderr=subprocess.PIPE) + status = result.stdout.decode('utf-8').strip() + service_statuses[service] = status - return render_template('home.html', config_files=config_files, version=app_version, services=service_statuses ) + return render_template('home.html', config_files=config_files, version=app_version, services=service_statuses) @app.route('/edit/', methods=['GET', 'POST']) def edit(filename): @@ -117,13 +120,12 @@ def videos(): video_files = [f for f in os.listdir(VIDEO_DIR) if f.endswith(('.mp4', '.mkv', '.avi'))] logger.debug(f'VIDEO_DIR: {VIDEO_DIR}') logger.debug(f'Video files found: {video_files}') + flash(f'Loading from VIDEO_DIR: {VIDEO_DIR}','info') return render_template('videos.html', video_files=video_files, version=app_version) - @app.route('/play/') def play(filename): try: - # Ensure the file exists in the VIDEO_DIR and is served from there return send_from_directory(VIDEO_DIR, filename) except FileNotFoundError: logger.error(f'Video file not found: {filename}') @@ -132,11 +134,17 @@ def play(filename): @app.route('/temperature') def get_temperature(): try: - soc_temp = int(open('/sys/class/thermal/thermal_zone0/temp').read().strip()) / 1000.0 # Convert to °C - gpu_temp = int(open('/sys/class/thermal/thermal_zone1/temp').read().strip()) / 1000.0 # Convert to °C - soc_temp_f = (soc_temp * 9/5) + 32 - gpu_temp_f = (gpu_temp * 9/5) + 32 - + soc_temp = 0 + gpu_temp = 0 + soc_temp_f = 0 + gpu_temp_f = 0 + + if os.getenv('FLASK_ENV') != 'development': + soc_temp = int(open('/sys/class/thermal/thermal_zone0/temp').read().strip()) / 1000.0 # Convert to °C + gpu_temp = int(open('/sys/class/thermal/thermal_zone1/temp').read().strip()) / 1000.0 # Convert to °C + soc_temp_f = (soc_temp * 9/5) + 32 + gpu_temp_f = (gpu_temp * 9/5) + 32 + return { 'soc_temperature': f"{soc_temp:.1f}", 'soc_temperature_f': f"{soc_temp_f:.1f}", @@ -164,16 +172,13 @@ def backup(): def run_command(): selected_command = request.form.get('command') - # Construct the first command based on the dropdown value cli_command = f"echo cli -s {selected_command} > /dev/udp/localhost/14550" logger.debug(f'Running command: {cli_command}') flash(f'Running command: {cli_command}', 'info') - # Run the commands subprocess.run(cli_command, shell=True) subprocess.run("echo killall -1 majestic > /dev/udp/localhost/14550", shell=True) - # Redirect back to the home page after the commands are run return redirect(url_for('home')) @app.route('/service_action', methods=['POST']) @@ -199,7 +204,6 @@ def service_action(): return redirect(url_for('home')) -# Function to check allowed file extensions def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @@ -220,8 +224,50 @@ def upload_file(): return redirect(url_for('home')) return render_template('upload.html') # A separate template for file upload -def main(): - app.run(host='0.0.0.0', port=SERVER_PORT) +@app.route('/settings', methods=['GET', 'POST']) +def settings(): + # Load settings + with open(SETTINGS_FILE, 'r') as f: + settings = json.load(f) + + # Initialize config_files from the loaded settings + config_files = settings['config_files'] + + if request.method == 'POST': + # Get data from the form + config_files = request.form.getlist('config_files') + video_dir = request.form.get('VIDEO_DIR') + server_port = request.form.get('SERVER_PORT') + + # Create a structured dictionary for saving + settings_data = { + "config_files": [ + {"name": config_files[i], "path": request.form[f'path_{i}']} + for i in range(len(config_files)) + ], + "VIDEO_DIR": video_dir, + "SERVER_PORT": int(server_port) # Ensure it's an integer + } + + # Save the settings to JSON + with open(SETTINGS_FILE, 'w') as f: + json.dump(settings_data, f, indent=4) + logger.debug('Updated settings saved.') + + # Restart the Flask app + os.execv(sys.executable, ['python'] + sys.argv) + + return redirect(url_for('home')) + + return render_template('settings.html', config_files=config_files, settings=settings, version=app_version) + + if __name__ == '__main__': - main() + # Load settings to get SERVER_PORT and debug mode from the settings file. + with open(SETTINGS_FILE, 'r') as f: + settings = json.load(f) + + SERVER_PORT = settings['SERVER_PORT'] + DEBUG_MODE = os.getenv('FLASK_ENV') == 'development' + app.run(port=SERVER_PORT, debug=DEBUG_MODE, host='0.0.0.0') diff --git a/py_config_gs/static/css/styles.css b/py_config_gs/static/css/styles.css index 86adf91..18a5ade 100644 --- a/py_config_gs/static/css/styles.css +++ b/py_config_gs/static/css/styles.css @@ -252,4 +252,72 @@ form { .config-content { gap: 10px; /* Reduce gap on smaller screens */ } -} \ No newline at end of file +} + + + +/* Header container to hold the logo on the left and center the heading */ +.header-container { + display: flex; + align-items: center; /* Vertically center the logo and heading */ + justify-content: center; /* Initially center everything */ + position: relative; /* For the absolute positioning of the logo */ + margin-bottom: 20px; +} + +/* Logo styling */ +.header-logo { + position: absolute; + left: 0; /* Align the logo to the left */ + max-width: 60px; /* Set the logo size */ + height: auto; + margin-left: 20px; /* Add space from the left edge */ +} + +/* Center the heading */ +.header-container h1 { + margin: 0; + text-align: center; + font-size: 24px; + color: #333; + flex-grow: 1; /* Let the heading take up the remaining space */ +} + +/* Adjust the layout on smaller screens */ +@media (max-width: 768px) { + .header-container { + flex-direction: column; /* Stack the logo and heading vertically */ + } + + .header-logo { + position: static; + margin-left: 0; + margin-bottom: 10px; /* Add space below the logo when stacked */ + } +} + +/* Flash Message Styles */ +.flash-message { + background-color: #d1ecf1; /* Light blue background */ + color: #0c5460; /* Dark blue text */ + + border: 1px solid #4046ed; /* Border to define the area */ + border-radius: 5px; /* Rounded corners */ + margin-bottom: 20px; /* Space below the flash message */ + + width: 100%; /* Fill the width of the container */ + max-width: 100%; /* Ensure it doesn't exceed the viewport width */ + height: 50px; /* Fixed height */ + overflow-y: auto; /* Allow vertical scrolling */ + + padding: 10px; /* Padding for inner content */ + box-sizing: border-box; /* Include padding in the height and width */ +} + +/* Additional styles for message list */ +.flash-message ul { + list-style-type: none; /* Remove default list styling */ + padding: 0; /* Remove padding */ + margin: 0; /* Remove margin */ +} + diff --git a/py_config_gs/static/images/OpenIPCFPV.png b/py_config_gs/static/images/OpenIPCFPV.png new file mode 100644 index 0000000000000000000000000000000000000000..502a05762c380f72d86709e2a3c7266078dfa724 GIT binary patch literal 154147 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%0D&m# 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 $^>gXaBh5~wG2ALZiM&+H9~9ES~(WU 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�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 z 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 DFZ+d> literal 0 HcmV?d00001 diff --git a/py_config_gs/templates/base.html b/py_config_gs/templates/base.html index 5390b0c..37073c2 100644 --- a/py_config_gs/templates/base.html +++ b/py_config_gs/templates/base.html @@ -4,23 +4,42 @@ - {% block title %}Py-Config-GS{% endblock %} + {% block title %}OpenIPC Improver ConfigMan GS{% endblock %} @@ -31,7 +50,7 @@

Welcome to the Configuration Manager

-

© 2024 PyConfig Groundstation, version: {{ version }}

+

© 2024 OpenIPC Improver ConfigMan GS, version: {{ version }}

diff --git a/py_config_gs/templates/home.html b/py_config_gs/templates/home.html index 9fb4324..c0cf194 100644 --- a/py_config_gs/templates/home.html +++ b/py_config_gs/templates/home.html @@ -3,7 +3,17 @@ {% block content %} -
+ + + + +

Configuration Files

@@ -31,7 +41,6 @@

Actions

-

Radxa Temps

@@ -64,27 +73,9 @@

Radxa Temps

-
- -
- -
-
- - {% with messages = get_flashed_messages(with_categories=true) %} - {% if messages %} -
    - {% for category, message in messages %} -
  • {{ message }}
  • - {% endfor %} -
- {% endif %} - {% endwith %} -
- -
+

System Control

@@ -128,8 +119,7 @@

System Control

- -
+

Camera Control

Work in Progress

@@ -142,11 +132,9 @@

Work in Progress

-
- -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/py_config_gs/templates/settings.html b/py_config_gs/templates/settings.html new file mode 100644 index 0000000..ce6c49c --- /dev/null +++ b/py_config_gs/templates/settings.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} + +{% block content %} + +
+

Settings

+ +
+

Configuration Files

+
+ {% for file in settings.config_files %} +
+ + + + +
+ {% endfor %} +
+ + +

Additional Settings

+
+ + +
+
+ + +
+ + +
+
+ + + + +{% endblock %} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 0d3f12b..3a08d2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,13 @@ blinker==1.8.2 click==8.1.7 -flask==3.0.3 -importlib-metadata==8.5.0 +Flask==3.0.3 +importlib_metadata==8.5.0 itsdangerous==2.2.0 -jinja2==3.1.4 +Jinja2==3.1.4 MarkupSafe==2.1.5 -werkzeug==3.0.4 +packaging==24.1 +python-dotenv==1.0.1 +setuptools==75.1.0 +setuptools-scm==8.1.0 +Werkzeug==3.0.4 zipp==3.20.2 -setuptools-scm==8.1.0 \ No newline at end of file From c1707cebcbd9506f6d42b554d128a35eede0388d Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:32:07 -0700 Subject: [PATCH 05/18] change github actions to create releases for tags on master or next --- .github/workflows/release.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69cbd7a..dcf62e9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Build and Release on: push: tags: - - 'v*.*.*' + - 'v*.*.*' # This triggers the workflow on tags following semantic versioning jobs: build: @@ -22,7 +22,7 @@ jobs: - name: Get version from tag id: vars - run: echo "VERSION=${GITHUB_REF#refs/tags/} >> $GITHUB_ENV" + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Install dependencies run: | @@ -33,9 +33,25 @@ jobs: run: | python setup.py sdist bdist_wheel + - name: Create Release + id: create_release + run: | + if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then + TAG_NAME=${GITHUB_REF#refs/tags/} + if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then + echo "Creating release for tag $TAG_NAME" + echo "GITHUB_REF=$GITHUB_REF" >> $GITHUB_ENV + fi + else + echo "Not a valid tag, skipping release creation." + exit 0 + fi + - name: Upload Package to Release + if: steps.create_release.outputs.tag_name != '' uses: softprops/action-gh-release@v1 with: + tag_name: ${{ steps.create_release.outputs.tag_name }} files: | dist/* env: From ca0d8892aa642fb4ff68c98e7a11048785231696 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:39:00 -0700 Subject: [PATCH 06/18] adjust github actions --- .github/workflows/release.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dcf62e9..5ba31e2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Build and Release on: push: tags: - - 'v*.*.*' # This triggers the workflow on tags following semantic versioning + - 'v*.*.*' # Trigger on semantic versioning tags jobs: build: @@ -36,22 +36,15 @@ jobs: - name: Create Release id: create_release run: | - if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then - TAG_NAME=${GITHUB_REF#refs/tags/} - if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then - echo "Creating release for tag $TAG_NAME" - echo "GITHUB_REF=$GITHUB_REF" >> $GITHUB_ENV - fi - else - echo "Not a valid tag, skipping release creation." - exit 0 - fi + TAG_NAME=${GITHUB_REF#refs/tags/} + echo "Creating release for tag $TAG_NAME" + echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV - name: Upload Package to Release - if: steps.create_release.outputs.tag_name != '' + if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ steps.create_release.outputs.tag_name }} + tag_name: ${{ env.TAG_NAME }} files: | dist/* env: From ad3af11e99939495eef7a0538c5a7edbdc1fb657 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:42:15 -0700 Subject: [PATCH 07/18] adjust github actions --- .github/workflows/release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ba31e2..70b04e0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,14 +37,17 @@ jobs: id: create_release run: | TAG_NAME=${GITHUB_REF#refs/tags/} - echo "Creating release for tag $TAG_NAME" + BRANCH_NAME=$(echo "${GITHUB_REF}" | sed 's/refs\/heads\///') # Extract branch name from GITHUB_REF + echo "Creating release for tag $TAG_NAME on branch $BRANCH_NAME" echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV + echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV - name: Upload Package to Release if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: tag_name: ${{ env.TAG_NAME }} + release_name: Release ${{ env.TAG_NAME }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title files: | dist/* env: From 70dbcc38bfe5c170ceface14d8a9ed61f4ae7cf6 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:45:14 -0700 Subject: [PATCH 08/18] adjust github actions --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 70b04e0..2a0f3ab 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: id: create_release run: | TAG_NAME=${GITHUB_REF#refs/tags/} - BRANCH_NAME=$(echo "${GITHUB_REF}" | sed 's/refs\/heads\///') # Extract branch name from GITHUB_REF + BRANCH_NAME=$(echo "${GITHUB_REF}" | sed 's/refs\/tags\///') # Correctly extract branch name echo "Creating release for tag $TAG_NAME on branch $BRANCH_NAME" echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV @@ -46,8 +46,8 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.TAG_NAME }} - release_name: Release ${{ env.TAG_NAME }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title + tag_name: ${{ env.TAG_NAME }} # Tag to create release + release_name: Release ${{ env.TAG_NAME }} from branch ${{ github.ref#refs/tags/}} # Include branch name in release title files: | dist/* env: From 5256dfbc0a3eb712ee9077625cd9efaf20171546 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:47:22 -0700 Subject: [PATCH 09/18] adjust github actions --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a0f3ab..744622b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ jobs: uses: softprops/action-gh-release@v1 with: tag_name: ${{ env.TAG_NAME }} # Tag to create release - release_name: Release ${{ env.TAG_NAME }} from branch ${{ github.ref#refs/tags/}} # Include branch name in release title + release_name: Release ${{ env.TAG_NAME }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title files: | dist/* env: From 7fe334c135f42e7cb05e2510909059dd8ee6cf0c Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 11:49:50 -0700 Subject: [PATCH 10/18] adjust github actions --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 744622b..ab63f1f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,7 +46,7 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.TAG_NAME }} # Tag to create release + tag_name: ${{ env.TAG_NAME }}-${{ env.BRANCH_NAME }} # Tag to create release release_name: Release ${{ env.TAG_NAME }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title files: | dist/* From 1f8f858802c28c981e1df48beb7d7f2f97dd4edc Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 16:38:54 -0700 Subject: [PATCH 11/18] add open project notes --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index bbc60c1..4e78b58 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,9 @@ sudo systemctl enable py-config-gs ``` pip uninstall py_config_gs-0.1-py3-none-any.whl ``` + +

+
+

This is an open project, so you can help, too.

+ +We try to collect, organize and share as much information regarding different aspects of the project as we can. But sometimes we overlook things that seem obvious to us, developers, but are not so obvious to end-users, people who are less familiar with nuts and bolts behind the scene. That is why we set up this wiki and let anyone having a GitHub account to make additions and improvements to the knowledgebase. Read [How to contribute](https://github.com/OpenIPC/wiki/blob/master/en/contribute.md). \ No newline at end of file From ed93f62275011ebcd738df1f338f3832b3591b3d Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 16:46:49 -0700 Subject: [PATCH 12/18] attempt to fix release tag with branch --- .github/workflows/release.yml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab63f1f..956c2e0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,21 @@ jobs: - name: Get version from tag id: vars - run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + run: | + echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + + - name: Determine Branch + id: determine_branch + run: | + DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) + if [ "$DEFAULT_BRANCH" = "master" ]; then + BRANCH_NAME="master" + elif [ "$DEFAULT_BRANCH" = "next" ]; then + BRANCH_NAME="next" + else + BRANCH_NAME="unknown" + fi + echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV - name: Install dependencies run: | @@ -33,21 +47,12 @@ jobs: run: | python setup.py sdist bdist_wheel - - name: Create Release - id: create_release - run: | - TAG_NAME=${GITHUB_REF#refs/tags/} - BRANCH_NAME=$(echo "${GITHUB_REF}" | sed 's/refs\/tags\///') # Correctly extract branch name - echo "Creating release for tag $TAG_NAME on branch $BRANCH_NAME" - echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV - echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV - - name: Upload Package to Release if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.TAG_NAME }}-${{ env.BRANCH_NAME }} # Tag to create release - release_name: Release ${{ env.TAG_NAME }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title + tag_name: ${{ env.VERSION }}-${{ env.BRANCH_NAME }} # Tag to create release + release_name: Release ${{ env.VERSION }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title files: | dist/* env: From ebb4b44071c326e83b65e1d65a17abe40a7e7356 Mon Sep 17 00:00:00 2001 From: mikecarr Date: Fri, 4 Oct 2024 16:54:40 -0700 Subject: [PATCH 13/18] Update release.yml --- .github/workflows/release.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 956c2e0..63caf98 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,16 +22,15 @@ jobs: - name: Get version from tag id: vars - run: | - echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV + run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Determine Branch id: determine_branch run: | - DEFAULT_BRANCH=$(git symbolic-ref --short HEAD) - if [ "$DEFAULT_BRANCH" = "master" ]; then + # Attempt to find the branch the tag is from + if git branch -r --contains $GITHUB_SHA | grep "origin/master"; then BRANCH_NAME="master" - elif [ "$DEFAULT_BRANCH" = "next" ]; then + elif git branch -r --contains $GITHUB_SHA | grep "origin/next"; then BRANCH_NAME="next" else BRANCH_NAME="unknown" From 4fa768277db8b5e0997613cb7a63426890e11068 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 17:01:38 -0700 Subject: [PATCH 14/18] attempt to fix release tag with branch --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 63caf98..784bd07 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: - name: Determine Branch id: determine_branch run: | - # Attempt to find the branch the tag is from + # Find the branch that contains the commit if git branch -r --contains $GITHUB_SHA | grep "origin/master"; then BRANCH_NAME="master" elif git branch -r --contains $GITHUB_SHA | grep "origin/next"; then From fbcf834b647c7108cefe37fbbb2b01be0b3be597 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 17:05:58 -0700 Subject: [PATCH 15/18] attempt to fix release tag with branch --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 784bd07..9c0f6a9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -51,7 +51,7 @@ jobs: uses: softprops/action-gh-release@v1 with: tag_name: ${{ env.VERSION }}-${{ env.BRANCH_NAME }} # Tag to create release - release_name: Release ${{ env.VERSION }} from branch ${{ env.BRANCH_NAME }} # Include branch name in release title + name: Release ${{ env.VERSION }} from branch ${{ env.BRANCH_NAME }} # Correct input 'name' for release title files: | dist/* env: From 876d85b2164e33fb374923396a0a602df24cca86 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 17:17:26 -0700 Subject: [PATCH 16/18] attempt to fix release tag with branch --- .github/workflows/release.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9c0f6a9..dcf62e9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Build and Release on: push: tags: - - 'v*.*.*' # Trigger on semantic versioning tags + - 'v*.*.*' # This triggers the workflow on tags following semantic versioning jobs: build: @@ -24,19 +24,6 @@ jobs: id: vars run: echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - - name: Determine Branch - id: determine_branch - run: | - # Find the branch that contains the commit - if git branch -r --contains $GITHUB_SHA | grep "origin/master"; then - BRANCH_NAME="master" - elif git branch -r --contains $GITHUB_SHA | grep "origin/next"; then - BRANCH_NAME="next" - else - BRANCH_NAME="unknown" - fi - echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV - - name: Install dependencies run: | python -m pip install --upgrade pip @@ -46,12 +33,25 @@ jobs: run: | python setup.py sdist bdist_wheel + - name: Create Release + id: create_release + run: | + if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then + TAG_NAME=${GITHUB_REF#refs/tags/} + if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then + echo "Creating release for tag $TAG_NAME" + echo "GITHUB_REF=$GITHUB_REF" >> $GITHUB_ENV + fi + else + echo "Not a valid tag, skipping release creation." + exit 0 + fi + - name: Upload Package to Release - if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' + if: steps.create_release.outputs.tag_name != '' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ env.VERSION }}-${{ env.BRANCH_NAME }} # Tag to create release - name: Release ${{ env.VERSION }} from branch ${{ env.BRANCH_NAME }} # Correct input 'name' for release title + tag_name: ${{ steps.create_release.outputs.tag_name }} files: | dist/* env: From 67d98693907d3a834eee745482a7bf7a387af691 Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 17:19:55 -0700 Subject: [PATCH 17/18] attempt to fix release tag with branch --- .github/workflows/release.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dcf62e9..5ba31e2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,7 +3,7 @@ name: Build and Release on: push: tags: - - 'v*.*.*' # This triggers the workflow on tags following semantic versioning + - 'v*.*.*' # Trigger on semantic versioning tags jobs: build: @@ -36,22 +36,15 @@ jobs: - name: Create Release id: create_release run: | - if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then - TAG_NAME=${GITHUB_REF#refs/tags/} - if [[ "${GITHUB_REF}" == "refs/tags/v"* ]]; then - echo "Creating release for tag $TAG_NAME" - echo "GITHUB_REF=$GITHUB_REF" >> $GITHUB_ENV - fi - else - echo "Not a valid tag, skipping release creation." - exit 0 - fi + TAG_NAME=${GITHUB_REF#refs/tags/} + echo "Creating release for tag $TAG_NAME" + echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV - name: Upload Package to Release - if: steps.create_release.outputs.tag_name != '' + if: startsWith(github.ref, 'refs/tags/v') # Run this step if the tag starts with 'v' uses: softprops/action-gh-release@v1 with: - tag_name: ${{ steps.create_release.outputs.tag_name }} + tag_name: ${{ env.TAG_NAME }} files: | dist/* env: From d05a2c55bcbe5e458a8d3f73f565b77f28cc4a6e Mon Sep 17 00:00:00 2001 From: Mike Carr Date: Fri, 4 Oct 2024 19:21:22 -0700 Subject: [PATCH 18/18] reformatted code --- .vscode/sftp.json | 17 +- py_config_gs/.vscode/sftp.json | 18 -- py_config_gs/app.py | 393 ++++++++++++++++--------------- py_config_gs/templates/base.html | 2 +- 4 files changed, 223 insertions(+), 207 deletions(-) delete mode 100644 py_config_gs/.vscode/sftp.json diff --git a/.vscode/sftp.json b/.vscode/sftp.json index bf7623b..aa68bb4 100644 --- a/.vscode/sftp.json +++ b/.vscode/sftp.json @@ -1,11 +1,20 @@ { - "name": "Radxa Zero 3E", + "name": "Radxa", "host": "10.0.1.14", "protocol": "sftp", "port": 22, "username": "root", - "remotePath": "/root/workspace/py_config_gs", + "remotePath": "/root/workspace/improver", "uploadOnSave": false, "useTempFile": false, - "openSsh": false -} \ No newline at end of file + "openSsh": false, + "ignore": [ + "**/*.log", + "**/*.tmp", + ".venv/**", + ".git/**", + "**/*.env", + "**/.DS_Store" + + ] +} diff --git a/py_config_gs/.vscode/sftp.json b/py_config_gs/.vscode/sftp.json deleted file mode 100644 index af466bd..0000000 --- a/py_config_gs/.vscode/sftp.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "Radxa", - "host": "10.0.1.14", - "protocol": "sftp", - "port": 22, - "username": "root", - "remotePath": "/root/workspace/py_config_gs/py_config_gs", - "uploadOnSave": false, - "useTempFile": false, - "openSsh": false, - "ignore": [ - "**/*.log", - "**/*.tmp", - ".venv/**", - "**/*.env" - - ] -} diff --git a/py_config_gs/app.py b/py_config_gs/app.py index c589f3d..e788574 100644 --- a/py_config_gs/app.py +++ b/py_config_gs/app.py @@ -1,62 +1,81 @@ import logging -from flask import Flask, render_template, request, Response, redirect, url_for, send_from_directory, flash import json import os -import sys import subprocess -from importlib.metadata import version - -# Read version for footer -with open('version.txt', 'r') as f: +from flask import ( + Flask, + render_template, + request, + Response, + redirect, + url_for, + send_from_directory, + flash, +) + +# Constants +ALLOWED_EXTENSIONS = {"key"} +GS_UPLOAD_FOLDER = "/etc" +VERSION_FILE = "version.txt" +DEV_SETTINGS_FILE = os.path.expanduser("~/config/py-config-gs.json") +PROD_SETTINGS_FILE = "/config/py-config-gs.json" + +# Load version for footer +with open(VERSION_FILE, "r") as f: app_version = f.read().strip() +# Initialize global variables +settings = {} +config_files = [] + # Configure logging -logging.basicConfig(level=logging.DEBUG, # Set the log level to DEBUG - format='%(asctime)s - %(levelname)s - %(message)s') +logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s - %(levelname)s - %(message)s", +) logger = logging.getLogger(__name__) app = Flask(__name__) -app.secret_key = os.getenv('SECRET_KEY', 'default_secret_key') +app.secret_key = os.getenv("SECRET_KEY", "default_secret_key") -# Define the upload folder -GS_UPLOAD_FOLDER = '/etc' -ALLOWED_EXTENSIONS = {'key'} -app.config['GS_UPLOAD_FOLDER'] = GS_UPLOAD_FOLDER +# Set the settings file based on the environment +SETTINGS_FILE = ( + DEV_SETTINGS_FILE if os.getenv("FLASK_ENV") == "development" else PROD_SETTINGS_FILE +) +logger.info(f"Settings file path: {SETTINGS_FILE}") +logger.info(f"App version: {app_version}") -if os.getenv('FLASK_ENV') == 'development': - # In development, use the home folder settings file - SETTINGS_FILE = os.path.expanduser('~/config/py-config-gs.json') -else: - # In production, use the config folder - SETTINGS_FILE = '/config/py-config-gs.json' -# Log the SETTINGS_FILE path -logger.info(f'Settings file path: {SETTINGS_FILE}') +def load_config(): + """Load configuration settings from the settings file.""" + global settings, config_files + try: + with open(SETTINGS_FILE, "r") as f: + settings = json.load(f) + config_files = settings.get("config_files", []) + logger.debug(f"Config files loaded: {config_files}") + except Exception as e: + logger.error(f"Error loading configuration: {e}") + raise -logger.info(f'App version: {app_version}') -# Load settings.json -with open(SETTINGS_FILE, 'r') as f: - settings = json.load(f) +load_config() +VIDEO_DIR = os.path.expanduser(settings["VIDEO_DIR"]) +SERVER_PORT = settings["SERVER_PORT"] -# Access configuration files and video directory -config_files = settings['config_files'] -VIDEO_DIR = os.path.expanduser(settings['VIDEO_DIR']) -SERVER_PORT = settings['SERVER_PORT'] +logger.debug(f"Loaded settings: {settings}") +logger.debug(f"VIDEO_DIR is set to: {VIDEO_DIR}") -logger.debug(f'Loaded settings: {settings}') -logger.debug(f'VIDEO_DIR is set to: {VIDEO_DIR}') def stream_journal(): - if os.getenv('FLASK_ENV') != 'development': - """Stream journalctl output in real-time.""" + """Stream journalctl output in real-time.""" + if os.getenv("FLASK_ENV") != "development": process = subprocess.Popen( - ['journalctl', '-f'], + ["journalctl", "-f"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, - text=True + text=True, ) - while True: output = process.stdout.readline() if output: @@ -64,210 +83,216 @@ def stream_journal(): else: break else: - logger.info('No data in DEVELOPMENT mode') - yield "data: No data in DEVELOPMENT mode\n\n" # Send as part of stream instead of flashing - -@app.route('/journal') + logger.info("No data in DEVELOPMENT mode") + yield "data: No data in DEVELOPMENT mode\n\n" + + +@app.route("/journal") def journal(): - return render_template('journal.html', version=app_version) + return render_template("journal.html", version=app_version) + -@app.route('/stream') +@app.route("/stream") def stream(): - return Response(stream_journal(), content_type='text/event-stream') + return Response(stream_journal(), content_type="text/event-stream") -@app.route('/') + +@app.route("/") def home(): - services = ['openipc', "wifibroadcast.service"] + services = ["openipc", "wifibroadcast.service"] service_statuses = {} - # flash(f'Starting up...', 'info') - - if os.getenv('FLASK_ENV') != 'development': - for service in services: - result = subprocess.run(['systemctl', 'is-enabled', service], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - status = result.stdout.decode('utf-8').strip() - service_statuses[service] = status - - return render_template('home.html', config_files=config_files, version=app_version, services=service_statuses) + load_config() -@app.route('/edit/', methods=['GET', 'POST']) + if os.getenv("FLASK_ENV") != "development": + for service in services: + result = subprocess.run( + ["systemctl", "is-enabled", service], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + service_statuses[service] = result.stdout.decode("utf-8").strip() + + return render_template( + "home.html", + config_files=config_files, + version=app_version, + services=service_statuses, + ) + + +@app.route("/edit/", methods=["GET", "POST"]) def edit(filename): - file_path = next((item['path'] for item in config_files if item['name'] == filename), None) - - if request.method == 'POST': - content = request.form['content'] - with open(file_path, 'w') as f: + """Edit a configuration file.""" + load_config() + logger.debug(f"Config files available: {config_files}") + + file_path = next( + (item["path"] for item in config_files if item["name"] == filename), None + ) + + if file_path is None: + logger.error(f"File path not found for: {filename}") + flash(f"Configuration file not found: {filename}", "error") + return redirect(url_for("home")) + + if request.method == "POST": + content = request.form["content"] + with open(file_path, "w") as f: f.write(content) - logger.debug(f'Updated configuration file: {filename}') - return redirect(url_for('home')) + logger.debug(f"Updated configuration file: {filename}") + return redirect(url_for("home")) - with open(file_path, 'r') as f: + with open(file_path, "r") as f: content = f.read() - - return render_template('edit.html', filename=filename, content=content, version=app_version) - -@app.route('/save/', methods=['POST']) -def save(filename): - file_path = next((item['path'] for item in config_files if item['name'] == filename), None) - content = request.form['content'] - with open(file_path, 'w') as f: - f.write(content) - logger.debug(f'Saved configuration file: {filename}') - return redirect(url_for('home')) - -@app.route('/videos') + + return render_template( + "edit.html", filename=filename, content=content, version=app_version + ) + + +@app.route("/videos") def videos(): - video_files = [f for f in os.listdir(VIDEO_DIR) if f.endswith(('.mp4', '.mkv', '.avi'))] - logger.debug(f'VIDEO_DIR: {VIDEO_DIR}') - logger.debug(f'Video files found: {video_files}') - flash(f'Loading from VIDEO_DIR: {VIDEO_DIR}','info') - return render_template('videos.html', video_files=video_files, version=app_version) + """List video files in the video directory.""" + video_files = [ + f for f in os.listdir(VIDEO_DIR) if f.endswith((".mp4", ".mkv", ".avi")) + ] + logger.debug(f"VIDEO_DIR: {VIDEO_DIR}") + logger.debug(f"Video files found: {video_files}") + flash(f"Loading from VIDEO_DIR: {VIDEO_DIR}", "info") + return render_template("videos.html", video_files=video_files, version=app_version) -@app.route('/play/') + +@app.route("/play/") def play(filename): + """Serve a video file.""" try: return send_from_directory(VIDEO_DIR, filename) except FileNotFoundError: - logger.error(f'Video file not found: {filename}') + logger.error(f"Video file not found: {filename}") return "File not found", 404 -@app.route('/temperature') + +@app.route("/temperature") def get_temperature(): + """Get SOC and GPU temperatures.""" try: - soc_temp = 0 - gpu_temp = 0 - soc_temp_f = 0 - gpu_temp_f = 0 - - if os.getenv('FLASK_ENV') != 'development': - soc_temp = int(open('/sys/class/thermal/thermal_zone0/temp').read().strip()) / 1000.0 # Convert to °C - gpu_temp = int(open('/sys/class/thermal/thermal_zone1/temp').read().strip()) / 1000.0 # Convert to °C - soc_temp_f = (soc_temp * 9/5) + 32 - gpu_temp_f = (gpu_temp * 9/5) + 32 - + if os.getenv("FLASK_ENV") != "development": + soc_temp = ( + int(open("/sys/class/thermal/thermal_zone0/temp").read().strip()) + / 1000.0 + ) + gpu_temp = ( + int(open("/sys/class/thermal/thermal_zone1/temp").read().strip()) + / 1000.0 + ) + else: + soc_temp = gpu_temp = 0 + return { - 'soc_temperature': f"{soc_temp:.1f}", - 'soc_temperature_f': f"{soc_temp_f:.1f}", - 'gpu_temperature': f"{gpu_temp:.1f}", - 'gpu_temperature_f': f"{gpu_temp_f:.1f}" + "soc_temperature": f"{soc_temp:.1f}", + "gpu_temperature": f"{gpu_temp:.1f}", } - except Exception as e: - logger.error(f'Error getting temperature: {e}') - return {'error': str(e)}, 500 + logger.error(f"Error getting temperature: {e}") + return {"error": str(e)}, 500 + -@app.route('/backup') +@app.route("/backup") def backup(): + """Create backups of configuration files.""" for item in config_files: - file_path = item['path'] - backup_path = file_path + '.bak' - with open(file_path, 'r') as f: + file_path = item["path"] + backup_path = f"{file_path}.bak" + with open(file_path, "r") as f: content = f.read() - with open(backup_path, 'w') as f: + with open(backup_path, "w") as f: f.write(content) - logger.debug('Backup created for configuration files.') - return redirect(url_for('home')) + logger.debug("Backup created for configuration files.") + return redirect(url_for("home")) -@app.route('/run_command', methods=['POST']) -def run_command(): - selected_command = request.form.get('command') +@app.route("/run_command", methods=["POST"]) +def run_command(): + """Run a selected command.""" + selected_command = request.form.get("command") cli_command = f"echo cli -s {selected_command} > /dev/udp/localhost/14550" - logger.debug(f'Running command: {cli_command}') - flash(f'Running command: {cli_command}', 'info') + logger.debug(f"Running command: {cli_command}") + flash(f"Running command: {cli_command}", "info") subprocess.run(cli_command, shell=True) subprocess.run("echo killall -1 majestic > /dev/udp/localhost/14550", shell=True) - return redirect(url_for('home')) + return redirect(url_for("home")) + -@app.route('/service_action', methods=['POST']) +@app.route("/service_action", methods=["POST"]) def service_action(): - service_name = request.form.get('service_name') - action = request.form.get('action') + """Perform an action on a service.""" + service_name = request.form.get("service_name") + action = request.form.get("action") if service_name and action: try: - if action == 'enable': - subprocess.run(['sudo', 'systemctl', 'enable', service_name], check=True) - flash(f'Service {service_name} enabled successfully.', 'success') - elif action == 'disable': - subprocess.run(['sudo', 'systemctl', 'disable', service_name], check=True) - flash(f'Service {service_name} disabled successfully.', 'success') - elif action == 'restart': - subprocess.run(['sudo', 'systemctl', 'restart', service_name], check=True) - flash(f'Service {service_name} restarted successfully.', 'success') - else: - flash('Invalid action.', 'error') + command = ["sudo", "systemctl", action, service_name] + subprocess.run(command, check=True) + flash(f"Service {service_name} {action}d successfully.", "success") except subprocess.CalledProcessError as e: - flash(f'Failed to {action} service {service_name}: {e}', 'error') + flash(f"Failed to {action} service {service_name}: {e}", "error") + + return redirect(url_for("home")) - return redirect(url_for('home')) def allowed_file(filename): - return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS + """Check if the uploaded file is allowed.""" + return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + -@app.route('/upload', methods=['GET', 'POST']) +@app.route("/upload", methods=["GET", "POST"]) def upload_file(): - if request.method == 'POST': - if 'file' not in request.files: - flash('No file part') + """Handle file upload.""" + if request.method == "POST": + if "file" not in request.files: + flash("No file part") return redirect(request.url) - file = request.files['file'] - if file.filename == '': - flash('No selected file') + file = request.files["file"] + if file.filename == "": + flash("No selected file") return redirect(request.url) if file and allowed_file(file.filename): - file_path = os.path.join(app.config['GS_UPLOAD_FOLDER'], 'gs.key') - file.save(file_path) # Save the uploaded file - flash('File successfully uploaded') - return redirect(url_for('home')) - return render_template('upload.html') # A separate template for file upload - -@app.route('/settings', methods=['GET', 'POST']) -def settings(): - # Load settings - with open(SETTINGS_FILE, 'r') as f: - settings = json.load(f) - - # Initialize config_files from the loaded settings - config_files = settings['config_files'] - - if request.method == 'POST': - # Get data from the form - config_files = request.form.getlist('config_files') - video_dir = request.form.get('VIDEO_DIR') - server_port = request.form.get('SERVER_PORT') - - # Create a structured dictionary for saving - settings_data = { - "config_files": [ - {"name": config_files[i], "path": request.form[f'path_{i}']} - for i in range(len(config_files)) - ], - "VIDEO_DIR": video_dir, - "SERVER_PORT": int(server_port) # Ensure it's an integer - } + file_path = os.path.join(GS_UPLOAD_FOLDER, "gs.key") + file.save(file_path) + flash("File successfully uploaded") + return redirect(url_for("home")) + return render_template("upload.html") + - # Save the settings to JSON - with open(SETTINGS_FILE, 'w') as f: - json.dump(settings_data, f, indent=4) - logger.debug('Updated settings saved.') +@app.route("/settings", methods=["GET", "POST"]) +def settings_view(): + """Manage application settings.""" + load_config() - # Restart the Flask app - os.execv(sys.executable, ['python'] + sys.argv) + if request.method == "POST": + try: + config_files = request.form.getlist("config_files") + video_dir = request.form.get("VIDEO_DIR") + server_port = request.form.get("SERVER_PORT") - return redirect(url_for('home')) + settings_data = { + "VIDEO_DIR": video_dir, + "SERVER_PORT": server_port, + "config_files": config_files, + } - return render_template('settings.html', config_files=config_files, settings=settings, version=app_version) + with open(SETTINGS_FILE, "w") as f: + json.dump(settings_data, f, indent=4) + flash("Settings updated successfully.") + except Exception as e: + flash(f"Error saving settings: {e}", "error") + return render_template("settings.html", settings=settings) -if __name__ == '__main__': - # Load settings to get SERVER_PORT and debug mode from the settings file. - with open(SETTINGS_FILE, 'r') as f: - settings = json.load(f) - SERVER_PORT = settings['SERVER_PORT'] - DEBUG_MODE = os.getenv('FLASK_ENV') == 'development' - app.run(port=SERVER_PORT, debug=DEBUG_MODE, host='0.0.0.0') +if __name__ == "__main__": + app.run(host="0.0.0.0", port=SERVER_PORT) diff --git a/py_config_gs/templates/base.html b/py_config_gs/templates/base.html index 37073c2..2d78034 100644 --- a/py_config_gs/templates/base.html +++ b/py_config_gs/templates/base.html @@ -23,7 +23,7 @@

OpenIPC Improver ConfigMan GS

  • Home
  • Journal
  • Videos
  • -
  • Settings
  • +
  • Settings
  • -

    Welcome to the Configuration Manager

    + + +
    + +

    OpenIPC Improver ConfigMan GS

    +
    +
    + + {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} +
      + {% for category, message in messages %} +
    • {{ message }}
    • + {% endfor %} +
    + {% endif %} + {% endwith %} +
    +