diff --git a/.env.example b/.env.example
index 21128ef..da7391a 100644
--- a/.env.example
+++ b/.env.example
@@ -10,6 +10,9 @@ CLEAR_AT_RESTART=1
SKIP_IHDR_FILL=0
REMOVAL_MIN_AGE_SECONDS=300
+GOOGLE_ADS_TXT="google.com, pub-2324718887045017, DIRECT, f08c47fec0942fa0"
+CUSTOM_EXTERNAL_SCRIPT="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2324718887045017"
+
# Flask configuration
FLASK_DEBUG=0
diff --git a/aperisolve/app.py b/aperisolve/app.py
index 97a99bc..11158c8 100644
--- a/aperisolve/app.py
+++ b/aperisolve/app.py
@@ -22,7 +22,13 @@ from .utils.sentry import initialize_sentry
initialize_sentry()
from .config import (
+ CUSTOM_EXTERNAL_SCRIPT,
+ DB_URI,
+ FLASK_DEBUG,
+ GOOGLE_ADS_TXT,
IMAGE_EXTENSIONS,
+ MAX_CONTENT_LENGTH,
+ PROJECT_VERSION,
REMOVAL_MIN_AGE_SECONDS,
REMOVED_IMAGES_FOLDER,
RESULT_FOLDER,
@@ -35,10 +41,11 @@ def create_app() -> Flask:
"""Create flask application with routes."""
app = Flask(__name__)
app.json.sort_keys = False # type: ignore
- app.config["SQLALCHEMY_DATABASE_URI"] = os.environ.get("DB_URI")
- app.config["PROJECT_VERSION"] = os.getenv("PROJECT_VERSION")
+ app.config["PROJECT_VERSION"] = PROJECT_VERSION
+ app.config["CUSTOM_EXTERNAL_SCRIPT"] = CUSTOM_EXTERNAL_SCRIPT
+ app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
- app.config["MAX_CONTENT_LENGTH"] = int(os.environ.get("MAX_CONTENT_LENGTH", 1024 * 1024))
+ app.config["MAX_CONTENT_LENGTH"] = MAX_CONTENT_LENGTH
app.config["REDIS_QUEUE"] = Queue(connection=Redis(host="redis", port=6379))
db.init_app(app)
@@ -433,10 +440,14 @@ def create_app() -> Flask:
return send_file(output_file, as_attachment=True)
+ @app.route("/ads.txt")
+ def google_ads() -> str:
+ """Google Ads required file"""
+ return GOOGLE_ADS_TXT
+
return app
if __name__ == "__main__":
my_app = create_app()
- debug_mode = os.environ.get("FLASK_DEBUG", "0") == "1"
- my_app.run(host="0.0.0.0", port=5000, debug=debug_mode)
+ my_app.run(host="0.0.0.0", port=5000, debug=FLASK_DEBUG)
diff --git a/aperisolve/config.py b/aperisolve/config.py
index 8ecf6e6..a813a2a 100644
--- a/aperisolve/config.py
+++ b/aperisolve/config.py
@@ -6,12 +6,23 @@
from os import getenv
from pathlib import Path
-IMAGE_EXTENSIONS = [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp", ".tiff"]
-WORKER_FILES = ["binwalk", "foremost", "steghide", "zsteg", "openstego", "pcrt", "jpseek"]
+PROJECT_VERSION = getenv("PROJECT_VERSION", "development")
-RESULT_FOLDER = Path(__file__).parent.resolve() / "results"
-REMOVED_IMAGES_FOLDER = Path(__file__).parent.resolve() / "removed_images"
REMOVAL_MIN_AGE_SECONDS = int(getenv("REMOVAL_MIN_AGE_SECONDS", "300")) # 5 minutes
MAX_PENDING_TIME = int(getenv("MAX_PENDING_TIME", "600")) # 10 minutes by default
MAX_STORE_TIME = int(getenv("MAX_STORE_TIME", "259200")) # 3 days by default
+MAX_CONTENT_LENGTH = int(getenv("MAX_CONTENT_LENGTH", "1048576")) # 1 MB by default
CLEAR_AT_RESTART = int(getenv("CLEAR_AT_RESTART", "0"))
+
+IMAGE_EXTENSIONS = [".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp", ".tiff"]
+WORKER_FILES = ["binwalk", "foremost", "steghide", "zsteg", "openstego", "pcrt", "jpseek"]
+
+GOOGLE_ADS_TXT = getenv("GOOGLE_ADS_TXT", "")
+CUSTOM_EXTERNAL_SCRIPT = getenv("CUSTOM_EXTERNAL_SCRIPT", "")
+
+
+RESULT_FOLDER = Path(__file__).parent.resolve() / "results"
+REMOVED_IMAGES_FOLDER = Path(__file__).parent.resolve() / "removed_images"
+
+DB_URI = getenv("DB_URI", "")
+FLASK_DEBUG = bool(getenv("FLASK_DEBUG", "0") == "1")
diff --git a/aperisolve/templates/base.html b/aperisolve/templates/base.html
index a2961d9..0fabf19 100644
--- a/aperisolve/templates/base.html
+++ b/aperisolve/templates/base.html
@@ -13,6 +13,7 @@
+