31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
import os
|
|
from flask import Flask
|
|
from .models import db, User
|
|
from .routes import bp
|
|
|
|
|
|
def create_app():
|
|
app = Flask(__name__, instance_relative_config=False)
|
|
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'change-me')
|
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////app/data/streamhub.db'
|
|
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
|
app.config['ADMIN_USERNAME'] = os.getenv('ADMIN_USERNAME', 'admin')
|
|
app.config['ADMIN_PASSWORD'] = os.getenv('ADMIN_PASSWORD', 'ChangeMe123!')
|
|
app.config['PUBLIC_BASE_URL'] = os.getenv('PUBLIC_BASE_URL', 'https://localhost')
|
|
app.config['MEDIA_BASE_URL'] = os.getenv('MEDIA_BASE_URL', 'http://mediamtx:8888')
|
|
app.config['MEDIA_PUBLIC_HLS_BASE'] = os.getenv('MEDIA_PUBLIC_HLS_BASE', app.config['PUBLIC_BASE_URL'].rstrip('/') + '/hls')
|
|
app.config['MEDIAMTX_API_URL'] = os.getenv('MEDIAMTX_API_URL', 'http://mediamtx:9997')
|
|
|
|
db.init_app(app)
|
|
app.register_blueprint(bp)
|
|
|
|
with app.app_context():
|
|
db.create_all()
|
|
if not User.query.filter_by(username=app.config['ADMIN_USERNAME']).first():
|
|
admin = User(username=app.config['ADMIN_USERNAME'], role='admin', active=True)
|
|
admin.set_password(app.config['ADMIN_PASSWORD'])
|
|
db.session.add(admin)
|
|
db.session.commit()
|
|
|
|
return app
|