webpanel.py 1.88 KB
# Copyright (C) 2023 Stefy Lanza <stefy@nexlab.net> and SexHack.me
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#   
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

from flask import Flask, render_template, request
from utils import check_port_available, run_command, create_daemon
import sys
import os

# Flask App Setup
flask_app = Flask('SHMCamStudio', template_folder=TEMPLATE_DIR)

@flask_app.route('/')
def index():
    return render_template('index.html', commands=COMMANDS)

@flask_app.route('/execute', methods=['POST'])
def execute():
    command_key = request.form.get('command')

    if command_key in COMMANDS:
        result = run_command(COMMANDS[command_key])
        return result
    else:
        return "Invalid command", 400

@flask_app.route('/stream')
def stream():
    stream_url = config.get('Web', 'stream_url', fallback="https://192.168.42.1/HLS/record/Live.m3u8")
    return render_template('stream.html', stream_url=stream_url)



def run_flask_app(port=5000, daemon_mode=False):
    """Run Flask app with optional daemon mode"""
    if not check_port_available(port):
        logger.error(f"Port {port} is already in use")
        sys.exit(1)

    logger.info(f"Starting Flask app on port {port}")
   
    if daemon_mode and sys.platform != 'win32':
        create_daemon()
   
    flask_app.run(host='0.0.0.0', port=port, debug=False, use_reloader=False)