[copr] bkabrda-workspace: Use http basic auth for backend (fde6b4a)

bkabrda at fedoraproject.org bkabrda at fedoraproject.org
Mon Nov 19 12:35:16 UTC 2012


Repository : http://git.fedorahosted.org/cgit/copr.git

On branch  : bkabrda-workspace

>---------------------------------------------------------------

commit fde6b4a3b31948f7a22cc3403c566c0908951388
Author: Bohuslav Kabrda <bkabrda at redhat.com>
Date:   Mon Nov 19 13:35:01 2012 +0100

    Use http basic auth for backend


>---------------------------------------------------------------

 wsgi/coprs/config.py                           |    2 +-
 wsgi/coprs/views/backend_ns/backend_general.py |    2 ++
 wsgi/coprs/views/misc.py                       |   12 ++++++++++++
 3 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/wsgi/coprs/config.py b/wsgi/coprs/config.py
index fcf29d3..e07f5d3 100644
--- a/wsgi/coprs/config.py
+++ b/wsgi/coprs/config.py
@@ -12,6 +12,7 @@ class Config(object):
     DATABASE = os.path.join(REPO_DIR, '../data/copr.db')
     OPENID_STORE = os.path.join(DATA_DIR, '../openid_store')
     SECRET_KEY = 'THISISNOTASECRETATALL'
+    BACKEND_PASSWORD = 'thisisbackend'
 
     # SQLAlchemy
     SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.abspath(DATABASE)
@@ -26,7 +27,6 @@ class DevelopmentConfig(Config):
 class UnitTestConfig(Config):
     DATABASE = os.path.abspath('tests/data/copr.db')
     OPENID_STORE = os.path.abspath('tests/data/openid_store')
-    SECRET_KEY = 'THISISNOTASECRETATALL'
 
     # SQLAlchemy
     SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.abspath(DATABASE)
diff --git a/wsgi/coprs/views/backend_ns/backend_general.py b/wsgi/coprs/views/backend_ns/backend_general.py
index 0d20623..8765f0d 100644
--- a/wsgi/coprs/views/backend_ns/backend_general.py
+++ b/wsgi/coprs/views/backend_ns/backend_general.py
@@ -5,6 +5,7 @@ from coprs import models
 
 from coprs.logic import builds_logic
 
+from coprs.views import misc
 from coprs.views.backend_ns import backend_ns
 
 @backend_ns.route('/waiting_builds/')
@@ -18,6 +19,7 @@ def waiting_builds():
                                                               '__included_ids__': False}) for build in builds]})
 
 @backend_ns.route('/update_builds/', methods = ['POST', 'PUT'])
+ at misc.backend_authenticated
 def update_builds():
     build_ids = []
     for build in flask.request.json['builds']: # first get ids of sent builds
diff --git a/wsgi/coprs/views/misc.py b/wsgi/coprs/views/misc.py
index 68b3995..224e8eb 100644
--- a/wsgi/coprs/views/misc.py
+++ b/wsgi/coprs/views/misc.py
@@ -4,6 +4,7 @@ import flask
 
 from flask.ext.openid import OpenID
 
+from coprs import app
 from coprs import db
 from coprs import models
 from coprs import oid
@@ -54,3 +55,14 @@ def login_required(f):
             return flask.redirect(flask.url_for('misc.login', next = flask.request.url))
         return f(*args, **kwargs)
     return decorated_function
+
+
+# backend authentication
+def backend_authenticated(f):
+    @functools.wraps(f)
+    def decorated_function(*args, **kwargs):
+        auth = flask.request.authorization
+        if not auth or auth.password != app.config['BACKEND_PASSWORD']:
+            return 'You have to provide the correct password', 401
+        return f(*args, **kwargs)
+    return decorated_function



More information about the copr-devel mailing list