]> git.ipfire.org Git - pbs.git/commitdiff
builders: Drop passphrase
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Oct 2022 16:07:12 +0000 (16:07 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Oct 2022 16:07:12 +0000 (16:07 +0000)
Builders are now being authenticated using Kerberos.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
Makefile.am
src/buildservice/builders.py
src/database.sql
src/templates/builders/pass.html [deleted file]
src/web/__init__.py
src/web/builders.py

index 73d4ef0c0cd63095ab5c112ab7f232d0ea6c74a9..26ab3771718cdb2b184a268166bf5d0f6b527dc9 100644 (file)
@@ -198,8 +198,7 @@ dist_templates_builders_DATA = \
        src/templates/builders/detail.html \
        src/templates/builders/edit.html \
        src/templates/builders/list.html \
-       src/templates/builders/new.html \
-       src/templates/builders/pass.html
+       src/templates/builders/new.html
 
 templates_buildersdir = $(templatesdir)/builders
 
index 203ce1cb2453cd5d2dd5b7628ba812c170f29292..7027533a9694cf7ede6334dcf74b9b1eccfb733a 100644 (file)
@@ -43,15 +43,12 @@ class Builders(base.Object):
                builder = self._get_builder("INSERT INTO builders(name) \
                        VALUES(%s) RETURNING *", name)
 
-               # Generate a new passphrase.
-               passphrase = builder.regenerate_passphrase()
-
                # Log what we have done.
                if log:
                        builder.log("created", user=user)
 
                # The Builder object and the passphrase are returned.
-               return builder, passphrase
+               return builder
 
        def get_by_id(self, builder_id):
                return self._get_builder("SELECT * FROM builders WHERE id = %s", builder_id)
@@ -247,31 +244,6 @@ class Builder(base.DataObject):
                self.db.execute("INSERT INTO builders_history(builder_id, action, user_id, time) \
                        VALUES(%s, %s, %s, NOW())", self.id, action, user_id)
 
-       def regenerate_passphrase(self):
-               """
-                       Generates a new random passphrase and stores it as a salted hash
-                       to the database.
-
-                       The new passphrase is returned to be sent to the user (once).
-               """
-               # Generate a random string with 40 chars.
-               passphrase = misc.generate_random_string(length=40)
-
-               # Create salted hash.
-               passphrase_hash = generate_password_hash(passphrase)
-
-               # Store the hash in the database.
-               self._set_attribute("passphrase", passphrase_hash)
-
-               # Return the clear-text passphrase.
-               return passphrase
-
-       def validate_passphrase(self, passphrase):
-               """
-                       Compare the given passphrase with the one stored in the database.
-               """
-               return check_password_hash(passphrase, self.data.passphrase)
-
        # Description
 
        def set_description(self, description):
@@ -482,10 +454,6 @@ class Builder(base.DataObject):
        def hostname(self):
                return self.name
 
-       @property
-       def passphrase(self):
-               return self.data.passphrase
-
        @property
        def pakfire_version(self):
                return self.data.pakfire_version or ""
index e2a5ff4d492136610c2d10ef328f063eec715358..3ffce8cb083830aeb1e387490bfb3bd64a205bc4 100644 (file)
@@ -94,7 +94,6 @@ ALTER TABLE public.builder_stats OWNER TO pakfire;
 CREATE TABLE public.builders (
     id integer NOT NULL,
     name text NOT NULL,
-    passphrase text,
     description text,
     enabled boolean DEFAULT false NOT NULL,
     deleted boolean DEFAULT false NOT NULL,
diff --git a/src/templates/builders/pass.html b/src/templates/builders/pass.html
deleted file mode 100644 (file)
index 45c5623..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-{% extends "../base.html" %}
-
-{% block body %}
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                       <nav aria-label="breadcrumb" role="navigation">
-                               <ol class="breadcrumb">
-                                       <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
-                                       <li class="breadcrumb-item"><a href="/builders">{{ _("Builders") }}</a></li>
-                                       <li class="breadcrumb-item"><a href="/builders/{{ builder.name }}">{{ builder.name }}</a></li>
-                                       <li class="breadcrumb-item active">
-                                               <a href="/builders/{{ builder.name }}/edit">{{ _("Manage") }}</a>
-                                       </li>
-                               </ol>
-                       </nav>
-               </div>
-       </div>
-
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                       <h2 style="word-wrap: break-word;">
-                               {{ _("Builder") }}: {{ builder.name }}
-                       </h2>
-               </div>
-       </div>
-
-       <div class="row">
-               <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
-                       <p>
-                               {% if action == "new" %}
-                                       {{ _("The new host") }} <strong> {{ builder.name }} </strong> {{ _("has been successfully created.") }}
-                               {% elif action == "update" %}
-                                       {{ _("The passphrase for") }}  <strong> {{ builder.name }}</strong> {{ _("has been regenerated.") }}
-                               {% end %}
-                               <br>
-                               {{ _("For authorization to the Pakfire Master Server there is a passphrase required which must be configured to the host.") }}
-                       </p>
-
-                       <p>
-                               {{ _("This passphrase is:") }} <strong>{{ passphrase }}</strong>
-                       </p>
-               </div>
-       </div>
-
-       <div class="row justify-content-end">
-               <div class="col-12 col-sm-12 col-md-3 col-lg-2 col-xl-2">
-                               <a class="btn btn-primary btn-block" href="/builders/{{ builder.name }}">{{ _("Next") }}</a>
-               </div>
-       </div>
-{% end block %}
index 5c9afbbf449c1db3a8b164a148e54d8a4b9f30f8..95b96ffc155d0f84a78cc7042a453165caf29fbf 100644 (file)
@@ -165,7 +165,6 @@ class Application(tornado.web.Application):
                        (r"/builders/new", builders.BuilderNewHandler),
                        (r"/builders/([A-Za-z0-9\-\.]+)/delete", builders.BuilderDeleteHandler),
                        (r"/builders/([A-Za-z0-9\-\.]+)/edit", builders.BuilderEditHandler),
-                       (r"/builders/([A-Za-z0-9\-\.]+)/renew", builders.BuilderRenewPassphraseHandler),
                        (r"/builders/([A-Za-z0-9\-\.]+)", builders.BuilderDetailHandler),
 
                        # Distributions
index 241d29c44e43ed2acc7846030d5623cc3113f347..dd74c6e76212178dcb81bce5696fff53407b5cd5 100644 (file)
@@ -32,12 +32,11 @@ class BuilderNewHandler(base.BaseHandler):
 
                name = self.get_argument("name")
 
-               # Create a new builder.
-               builder, passphrase = \
-                       self.backend.builders.create(name, user=self.current_user)
+               # Create a new builder
+               with self.db.transaction():
+                       builder = self.backend.builders.create(name, user=self.current_user)
 
-               self.render("builders/pass.html", action="new", builder=builder,
-                       passphrase=passphrase)
+               self.redirect("/builders/%s" % builder.hostname)
 
 
 class BuilderEditHandler(base.BaseHandler):
@@ -67,17 +66,6 @@ class BuilderEditHandler(base.BaseHandler):
                self.redirect("/builders/%s" % builder.hostname)
 
 
-class BuilderRenewPassphraseHandler(base.BaseHandler):
-       @tornado.web.authenticated
-       def get(self, name):
-               builder = self.backend.builders.get_by_name(name)
-
-               passphrase = builder.regenerate_passphrase()
-
-               self.render("builders/pass.html", action="update", builder=builder,
-                       passphrase=passphrase)
-
-
 class BuilderDeleteHandler(base.BaseHandler):
        @tornado.web.authenticated
        def get(self, name):
@@ -89,7 +77,7 @@ class BuilderDeleteHandler(base.BaseHandler):
                if not self.current_user.has_perm("builders"):
                        raise tornado.web.HTTPError(403)
 
-               confirmed = self.get_argument("confirmed", None)        
+               confirmed = self.get_argument("confirmed", None)
                if confirmed:
                        with self.db.transaction():
                                builder.deleted = True