From e6ab985c12c649f97e42a4d8d3c40db29b61943e Mon Sep 17 00:00:00 2001 From: vanzhiganov Date: Sat, 25 Jan 2025 22:07:39 +0300 Subject: [PATCH] WIP add apache wsgi configuration --- README.md | 4 ++-- config.ini | 5 +++++ koji_forgejo_webhook.conf | 5 +++++ koji-forgejo-webook.py => koji_forgejo_webhook.py | 12 +++++++----- koji_forgejo_webhook.wsgi | 7 +++++++ 5 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 config.ini create mode 100644 koji_forgejo_webhook.conf rename koji-forgejo-webook.py => koji_forgejo_webhook.py (94%) create mode 100644 koji_forgejo_webhook.wsgi diff --git a/README.md b/README.md index e08e63b..51f5383 100644 --- a/README.md +++ b/README.md @@ -11,11 +11,11 @@ pip install -r requirements.txt ### rpm ```shell -dnf install python3-flask +dnf install python3-flask python3-mod_wsgi ``` ## run ```shell python3 koji-forgejo-webook.py -``` \ No newline at end of file +``` diff --git a/config.ini b/config.ini new file mode 100644 index 0000000..fc76933 --- /dev/null +++ b/config.ini @@ -0,0 +1,5 @@ +[DEFAULT] +SECRET_KEY = $3cr3tk3y +KOJI_SERVER = https://kojidev.stackwebservices.org/kojihub +KOJI_TARGET = rl9-candidate +WEBHOOK_SECRET_KEY = your_secret_key diff --git a/koji_forgejo_webhook.conf b/koji_forgejo_webhook.conf new file mode 100644 index 0000000..801f543 --- /dev/null +++ b/koji_forgejo_webhook.conf @@ -0,0 +1,5 @@ +WSGIDaemonProcess forgejo processes=2 threads=4 +WSGIScriptAlias /forgejo-webhook /opt/koji-forgejo-webhook/koji_forgejo_webhook.wsgi + + Require all granted + diff --git a/koji-forgejo-webook.py b/koji_forgejo_webhook.py similarity index 94% rename from koji-forgejo-webook.py rename to koji_forgejo_webhook.py index a567464..c314909 100644 --- a/koji-forgejo-webook.py +++ b/koji_forgejo_webhook.py @@ -2,17 +2,17 @@ import json import hashlib import hmac import logging +import configparser from flask import Flask, request, abort import koji +# Load configuration from .ini file +config = configparser.ConfigParser() +config.read('config.ini') app = Flask(__name__) -app.config['SECRET_KEY'] = '123' -# koji -app.config['KOJI_SERVER'] = 'https://kojidev.stackwebservices.org/kojihub' -app.config['KOJI_TARGET'] = 'rl9-candidate' +app.config.from_mapping(config['DEFAULT']) -app.config['WEBHOOK_SECRET_KEY'] = 'your_secret_key' class KojiProcessor: def __init__(self): @@ -98,6 +98,7 @@ class ForgejoWebhookProcessor: abort(400) +@app.route('/', methods=['POST']) @app.route('/forgejo-webhook', methods=['POST']) def webhook(): processor = ForgejoWebhookProcessor(app.config['WEBHOOK_SECRET_KEY']) @@ -115,6 +116,7 @@ def webhook(): return 'Webhook processed', 200 + if __name__ == '__main__': logging.basicConfig(level=logging.INFO) app.run(host="0.0.0.0", port=5001) \ No newline at end of file diff --git a/koji_forgejo_webhook.wsgi b/koji_forgejo_webhook.wsgi new file mode 100644 index 0000000..74515f5 --- /dev/null +++ b/koji_forgejo_webhook.wsgi @@ -0,0 +1,7 @@ +import sys +import logging + +logging.basicConfig(stream=sys.stderr) +sys.path.insert(0, "/opt/koji-forgejo-webhook") + +from koji_forgejo_webhook import app as application