2021-01-29 20:32:28 +00:00
|
|
|
import logging
|
2019-11-29 14:04:32 +00:00
|
|
|
from os import environ, urandom
|
|
|
|
|
|
|
|
from flask import Flask
|
2019-12-13 17:23:06 +00:00
|
|
|
from flask.cli import load_dotenv
|
2019-11-29 14:04:32 +00:00
|
|
|
from flask_httpauth import HTTPBasicAuth
|
|
|
|
from flask_sqlalchemy import SQLAlchemy
|
2021-07-10 07:25:35 +00:00
|
|
|
from redis import Redis
|
2021-07-10 21:15:06 +00:00
|
|
|
from transmission_rpc.client import Client
|
2019-11-29 14:04:32 +00:00
|
|
|
|
2019-12-15 11:42:46 +00:00
|
|
|
load_dotenv()
|
2019-11-29 14:04:32 +00:00
|
|
|
|
2022-09-01 18:52:02 +00:00
|
|
|
IS_DEBUG = environ.get("FLASK_ENV", "production") == "development"
|
|
|
|
ADMIN_USERNAME = environ.get("ADMIN_USERNAME", "admin")
|
|
|
|
ADMIN_PASSWORD = environ.get("ADMIN_PASSWORD", "secret")
|
|
|
|
APP_PORT = int(environ.get("FLASK_PORT", 5000))
|
|
|
|
CACHE_TIMEOUT = int(environ.get("CACHE_TIMEOUT", 60 * 60))
|
|
|
|
REQUESTS_TIMEOUT = int(environ.get("REQUESTS_TIMEOUT", 5))
|
|
|
|
BLACKLIST_WORDS = (
|
|
|
|
environ.get("BLACKLIST_WORDS", "").split(",")
|
|
|
|
if environ.get("BLACKLIST_WORDS", "")
|
|
|
|
else []
|
|
|
|
)
|
2022-03-04 08:46:21 +00:00
|
|
|
DB_ENABLED = False
|
2021-07-10 07:25:35 +00:00
|
|
|
REDIS_ENABLED = False
|
2021-07-10 21:15:06 +00:00
|
|
|
TRANSMISSION_ENABLED = False
|
2019-12-07 09:17:29 +00:00
|
|
|
|
2019-11-29 14:04:32 +00:00
|
|
|
app = Flask(__name__)
|
2022-09-01 18:52:02 +00:00
|
|
|
app.name = "PyNyaaTa"
|
2020-12-30 20:18:15 +00:00
|
|
|
app.debug = IS_DEBUG
|
2019-12-07 09:17:29 +00:00
|
|
|
app.secret_key = urandom(24).hex()
|
2020-01-05 11:24:23 +00:00
|
|
|
app.url_map.strict_slashes = False
|
2019-11-29 14:04:32 +00:00
|
|
|
auth = HTTPBasicAuth()
|
2021-01-29 20:32:28 +00:00
|
|
|
logging.basicConfig(level=(logging.DEBUG if IS_DEBUG else logging.INFO))
|
|
|
|
logger = logging.getLogger(app.name)
|
2020-04-09 12:02:05 +00:00
|
|
|
|
2022-09-01 18:52:02 +00:00
|
|
|
db_uri = environ.get("DATABASE_URI")
|
2022-03-04 08:46:21 +00:00
|
|
|
if db_uri:
|
|
|
|
DB_ENABLED = True
|
2022-09-01 18:52:02 +00:00
|
|
|
app.config["SQLALCHEMY_DATABASE_URI"] = db_uri
|
|
|
|
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
|
|
|
|
app.config["SQLALCHEMY_ECHO"] = IS_DEBUG
|
|
|
|
app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {"pool_recycle": 200}
|
2020-04-09 12:02:05 +00:00
|
|
|
db = SQLAlchemy(app)
|
2021-07-10 15:56:14 +00:00
|
|
|
from .models import create_all
|
2021-07-10 15:28:45 +00:00
|
|
|
|
|
|
|
create_all()
|
2021-07-10 07:25:35 +00:00
|
|
|
|
2022-09-01 18:52:02 +00:00
|
|
|
cache_host = environ.get("REDIS_SERVER")
|
2021-07-10 07:25:35 +00:00
|
|
|
if cache_host:
|
|
|
|
REDIS_ENABLED = True
|
|
|
|
cache = Redis(cache_host)
|
2021-07-10 21:15:06 +00:00
|
|
|
|
2022-09-01 18:52:02 +00:00
|
|
|
transmission_host = environ.get("TRANSMISSION_SERVER")
|
2021-07-10 21:15:06 +00:00
|
|
|
if transmission_host:
|
|
|
|
TRANSMISSION_ENABLED = True
|
2022-09-01 18:52:02 +00:00
|
|
|
transmission_username = environ.get("TRANSMISSION_RPC_USERNAME")
|
|
|
|
transmission_password = environ.get("TRANSMISSION_RPC_PASSWORD")
|
2021-07-30 10:55:01 +00:00
|
|
|
transmission = Client(
|
|
|
|
username=transmission_username,
|
|
|
|
password=transmission_password,
|
|
|
|
host=transmission_host,
|
2022-09-01 18:52:02 +00:00
|
|
|
logger=logger,
|
2021-07-30 10:55:01 +00:00
|
|
|
)
|