mirror of
https://github.com/FAUSheppy/simple-webhook-handler
synced 2025-12-06 04:11:35 +01:00
add production WSGI
This commit is contained in:
17
README.md
17
README.md
@@ -6,6 +6,23 @@ The config file uses *COMMA* as a separator, lines are comments if they start wi
|
|||||||
|
|
||||||
PROJECT,TOKEN,PATH_TO_SCRIPT
|
PROJECT,TOKEN,PATH_TO_SCRIPT
|
||||||
|
|
||||||
|
# Running standalone with flask-inbuild server
|
||||||
|
|
||||||
|
usage: webhook_listener.py [-h] [-i INTERFACE] [-p PORT] [-c C]
|
||||||
|
Simple Webhook listener
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
-i INTERFACE, --interface INTERFACE
|
||||||
|
Interface to listen on (default: 0.0.0.0)
|
||||||
|
-p PORT, --port PORT Port to listen on (default: 5000)
|
||||||
|
-c C Config for handling of webhooks (default:
|
||||||
|
webhook.config)
|
||||||
|
|
||||||
|
# Running with waitress (WSGI)
|
||||||
|
|
||||||
|
waitress-serve --host 127.0.0.1 --port 5000 --call 'app:createApp'
|
||||||
|
|
||||||
# Running behind NGINX for SSL
|
# Running behind NGINX for SSL
|
||||||
You can (and should) run this tool behind a reverse proxy handling SSL. I recommend nginx with this configuration. Note the *proxy_next_upstream*-directive which tells nginx, that it should only report a timeout as bad gateway, since the backend will respond with certain error codes to ease debugging.
|
You can (and should) run this tool behind a reverse proxy handling SSL. I recommend nginx with this configuration. Note the *proxy_next_upstream*-directive which tells nginx, that it should only report a timeout as bad gateway, since the backend will respond with certain error codes to ease debugging.
|
||||||
|
|
||||||
|
|||||||
3
app.py
Normal file
3
app.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import webhook_listener as server
|
||||||
|
def createApp(envivorment=None, start_response=None):
|
||||||
|
return server.app
|
||||||
@@ -7,6 +7,7 @@ import os
|
|||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
app = flask.Flask("webhook-listener")
|
app = flask.Flask("webhook-listener")
|
||||||
|
app.config["EXEC_CONFIG"] = "webhook.config"
|
||||||
TOKEN_HEADER = "X-Gitlab-Token"
|
TOKEN_HEADER = "X-Gitlab-Token"
|
||||||
PROJECT_IDENTIFIER = "web_url"
|
PROJECT_IDENTIFIER = "web_url"
|
||||||
SEPERATOR = ","
|
SEPERATOR = ","
|
||||||
@@ -85,6 +86,10 @@ def readExecutionConfig(configFile):
|
|||||||
projectIdent, token, scriptName = line.split(SEPERATOR)
|
projectIdent, token, scriptName = line.split(SEPERATOR)
|
||||||
config.update({projectIdent:(token, scriptName)})
|
config.update({projectIdent:(token, scriptName)})
|
||||||
|
|
||||||
|
@app.before_first_request
|
||||||
|
def init():
|
||||||
|
readExecutionConfig(app.config["EXEC_CONFIG"])
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(description="Simple Webhook listener", \
|
parser = argparse.ArgumentParser(description="Simple Webhook listener", \
|
||||||
@@ -95,5 +100,5 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument("-c", default="webhook.config", help="Config for handling of webhooks")
|
parser.add_argument("-c", default="webhook.config", help="Config for handling of webhooks")
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
readExecutionConfig(args.c)
|
app.config["EXEC_CONFIG"] = args.c
|
||||||
app.run(host=args.interface, port=args.port)
|
app.run(host=args.interface, port=args.port)
|
||||||
Reference in New Issue
Block a user