From b2e69388152b21c864d486d54c9c415b5fa36491 Mon Sep 17 00:00:00 2001 From: Curtis Castrapel Date: Tue, 10 Apr 2018 14:28:53 -0700 Subject: [PATCH] WIP: Add support for Acme/LetsEncrypt with DNS Provider integration --- lemur/certificates/models.py | 2 +- lemur/models.py | 13 +++++++++++++ lemur/plugins/lemur_acme/plugin.py | 1 + .../app/angular/authorities/authority/authority.js | 1 + .../certificates/certificate/tracking.tpl.html | 2 +- .../angular/destinations/destination/destination.js | 6 ++++-- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/lemur/certificates/models.py b/lemur/certificates/models.py index 63d2ea7c..d8354d94 100644 --- a/lemur/certificates/models.py +++ b/lemur/certificates/models.py @@ -102,7 +102,7 @@ class Certificate(db.Model): serial = Column(String(128)) cn = Column(String(128)) deleted = Column(Boolean, index=True) - dns_provider_id = Column(Integer(), nullable=True) + dns_provider = Column(Integer(), nullable=True) not_before = Column(ArrowType) not_after = Column(ArrowType) diff --git a/lemur/models.py b/lemur/models.py index 9f352bb9..3a9cf121 100644 --- a/lemur/models.py +++ b/lemur/models.py @@ -132,3 +132,16 @@ pending_cert_role_associations = db.Table('pending_cert_role_associations', ) Index('pending_cert_role_associations_ix', pending_cert_role_associations.c.pending_cert_id, pending_cert_role_associations.c.role_id) + +dns_providers = db.Table('dns_providers', + Column('id', Integer(), nullable=False), + Column('name', String(length=256), nullable=True), + Column('description', String(length=1024), nullable=True), + Column('provider_type', String(length=256), nullable=True), + Column('credentials', String(length=256), nullable=True), + Column('api_endpoint', String(length=256), nullable=True), + Column('date_created', ArrowType(), server_default=text('now()'), nullable=False), + Column('status', String(length=128), nullable=True), + Column('options', JSON), + PrimaryKeyConstraint('id'), + UniqueConstraint('name')) diff --git a/lemur/plugins/lemur_acme/plugin.py b/lemur/plugins/lemur_acme/plugin.py index a7b81579..e5fd1730 100644 --- a/lemur/plugins/lemur_acme/plugin.py +++ b/lemur/plugins/lemur_acme/plugin.py @@ -11,6 +11,7 @@ .. moduleauthor:: Mikhail Khodorovskiy """ import josepy as jose +import json from flask import current_app diff --git a/lemur/static/app/angular/authorities/authority/authority.js b/lemur/static/app/angular/authorities/authority/authority.js index 9863bf4d..223d8fc6 100644 --- a/lemur/static/app/angular/authorities/authority/authority.js +++ b/lemur/static/app/angular/authorities/authority/authority.js @@ -51,6 +51,7 @@ angular.module('lemur') } }); }); + console.log("HERE2") $scope.getAuthoritiesByName = function (value) { return AuthorityService.findAuthorityByName(value).then(function (authorities) { diff --git a/lemur/static/app/angular/certificates/certificate/tracking.tpl.html b/lemur/static/app/angular/certificates/certificate/tracking.tpl.html index 21277106..fa8425ad 100644 --- a/lemur/static/app/angular/certificates/certificate/tracking.tpl.html +++ b/lemur/static/app/angular/certificates/certificate/tracking.tpl.html @@ -1,4 +1,4 @@ -
+static/app/angular/certificates/certificate/tracking.tpl.html
diff --git a/lemur/static/app/angular/destinations/destination/destination.js b/lemur/static/app/angular/destinations/destination/destination.js index 21f624c8..03533949 100644 --- a/lemur/static/app/angular/destinations/destination/destination.js +++ b/lemur/static/app/angular/destinations/destination/destination.js @@ -44,20 +44,22 @@ angular.module('lemur') DestinationApi.get(editId).then(function (destination) { $scope.destination = destination; - + console.log("HERE1"); PluginService.getByType('destination').then(function (plugins) { $scope.plugins = plugins; - _.each($scope.plugins, function (plugin) { + console.log("HERE2"); if (plugin.slug === $scope.destination.plugin.slug) { plugin.pluginOptions = $scope.destination.plugin.pluginOptions; $scope.destination.plugin = plugin; _.each($scope.destination.plugin.pluginOptions, function (option) { + console.log("HERE3"); if (option.type === 'export-plugin') { PluginService.getByType('export').then(function (plugins) { $scope.exportPlugins = plugins; _.each($scope.exportPlugins, function (plugin) { + console.log("HERE4"); if (plugin.slug === option.value.slug) { plugin.pluginOptions = option.value.pluginOptions; option.value = plugin;