Commit f3c73bd6 authored by Pietro Albini's avatar Pietro Albini

Add an authorization token to hooks

parent c400d83f
...@@ -45,6 +45,7 @@ file di configurazione `config.json` presente in essa, in questo modo: ...@@ -45,6 +45,7 @@ file di configurazione `config.json` presente in essa, in questo modo:
"gitlab-token": "YOUR-API-KEY", "gitlab-token": "YOUR-API-KEY",
"gitlab-url": "http://code.ubuntu-it.org", "gitlab-url": "http://code.ubuntu-it.org",
"gitlab-project": "ubuntu-it-web/www", "gitlab-project": "ubuntu-it-web/www",
"hooks-token": "RANDOM-TOKEN",
"keep-branches": [ "keep-branches": [
"master" "master"
] ]
...@@ -56,6 +57,7 @@ I parametri in esso sono i seguenti: ...@@ -56,6 +57,7 @@ I parametri in esso sono i seguenti:
* `gitlab-token` è l'API key di GitLab del tuo account * `gitlab-token` è l'API key di GitLab del tuo account
* `gitlab-url` è l'URL dell'istanza GitLab * `gitlab-url` è l'URL dell'istanza GitLab
* `gitlab-project` è l'ID del progetto su GitLab * `gitlab-project` è l'ID del progetto su GitLab
* `hooks-token` è il token necessario per inviare hook a managetests
* `keep-branches` è una lista di branch da caricare anche se non sono in una * `keep-branches` è una lista di branch da caricare anche se non sono in una
merge request (per esempio `master`) merge request (per esempio `master`)
......
...@@ -19,6 +19,8 @@ import os ...@@ -19,6 +19,8 @@ import os
import sys import sys
import json import json
import subprocess import subprocess
import random
import string
import click import click
...@@ -32,6 +34,13 @@ def error(message, *format): ...@@ -32,6 +34,13 @@ def error(message, *format):
sys.exit(1) sys.exit(1)
def random_string(length):
"""Generate a random string"""
rand = random.SystemRandom() # Uses /dev/urandom
chars = string.ascii_letters+string.digits
return "".join(rand.choice(chars) for i in range(length))
@click.group() @click.group()
@click.option("-r", "--root", help="The managetests root") @click.option("-r", "--root", help="The managetests root")
@click.pass_context @click.pass_context
...@@ -70,6 +79,7 @@ def init_command(ctx, git_url): ...@@ -70,6 +79,7 @@ def init_command(ctx, git_url):
"gitlab-url": "http://code.ubuntu-it.org", "gitlab-url": "http://code.ubuntu-it.org",
"gitlab-project": "ubuntu-it-web/www", "gitlab-project": "ubuntu-it-web/www",
"gitlab-token": "abcdefghi", "gitlab-token": "abcdefghi",
"hooks-token": random_string(32),
"keep-branches": [ "keep-branches": [
"master", "master",
], ],
......
...@@ -62,9 +62,12 @@ def create_app(manager, processor): ...@@ -62,9 +62,12 @@ def create_app(manager, processor):
return flask.render_template("index.html", branches=branches) return flask.render_template("index.html", branches=branches)
@app.route("/+hook", methods=["POST"]) @app.route("/+hook/<token>", methods=["POST"])
def hook(): def hook(token):
if token != manager.config["hooks-token"]:
return "UNAUTHORIZED", 401
processor.append(flask.request.json) processor.append(flask.request.json)
return "OK" return "OK", 200
return app return app
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment