in ghactions.py [0:0]
def main():
# Grab all GitHub WebHook IP ranges
webhook_ips = requests.get("https://api.github.com/meta").json()["hooks"]
allowed_ips = [netaddr.IPNetwork(ip) for ip in webhook_ips]
# Init Flask...
app = flask.Flask(__name__)
@app.route("/hook", methods=["POST", "PUT"])
def parse_request():
this_ip = netaddr.IPAddress(flask.request.headers.get("X-Forwarded-For") or flask.request.remote_addr)
allowed = any(this_ip in ip for ip in allowed_ips)
if not allowed:
return "No content\n"
content = flask.request.json
act = content.get("action")
if act == "completed" and "workflow_run" in content:
logmsg = parse_payload(content["workflow_run"])
log.log(level=logging.WARNING, msg=logmsg)
return "Delivered\n"
# Disable werkzeug request logging to stdout
log = logging.getLogger("werkzeug")
log.setLevel(logging.WARNING)
# Start up the app
app.run(host="127.0.0.1", port=8083, debug=False)