unifying lemur defaults
This commit is contained in:
parent
9da713ab06
commit
aaae4d5a1f
|
@ -17,7 +17,7 @@ from lemur.domains.views import mod as domains_bp
|
||||||
from lemur.destinations.views import mod as destinations_bp
|
from lemur.destinations.views import mod as destinations_bp
|
||||||
from lemur.authorities.views import mod as authorities_bp
|
from lemur.authorities.views import mod as authorities_bp
|
||||||
from lemur.certificates.views import mod as certificates_bp
|
from lemur.certificates.views import mod as certificates_bp
|
||||||
from lemur.status.views import mod as status_bp
|
from lemur.defaults.views import mod as defaults_bp
|
||||||
from lemur.plugins.views import mod as plugins_bp
|
from lemur.plugins.views import mod as plugins_bp
|
||||||
from lemur.notifications.views import mod as notifications_bp
|
from lemur.notifications.views import mod as notifications_bp
|
||||||
from lemur.sources.views import mod as sources_bp
|
from lemur.sources.views import mod as sources_bp
|
||||||
|
@ -31,7 +31,7 @@ LEMUR_BLUEPRINTS = (
|
||||||
destinations_bp,
|
destinations_bp,
|
||||||
authorities_bp,
|
authorities_bp,
|
||||||
certificates_bp,
|
certificates_bp,
|
||||||
status_bp,
|
defaults_bp,
|
||||||
plugins_bp,
|
plugins_bp,
|
||||||
notifications_bp,
|
notifications_bp,
|
||||||
sources_bp
|
sources_bp
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
"""
|
"""
|
||||||
from builtins import str
|
from builtins import str
|
||||||
|
|
||||||
from flask import Blueprint, current_app, make_response, jsonify
|
from flask import Blueprint, make_response, jsonify
|
||||||
from flask.ext.restful import reqparse, Api, fields
|
from flask.ext.restful import reqparse, Api, fields
|
||||||
|
|
||||||
from cryptography import x509
|
from cryptography import x509
|
||||||
|
@ -668,58 +668,9 @@ class NotificationCertificatesList(AuthenticatedResource):
|
||||||
return service.render(args)
|
return service.render(args)
|
||||||
|
|
||||||
|
|
||||||
class CertificatesDefaults(AuthenticatedResource):
|
|
||||||
""" Defineds the 'certificates' defaults endpoint """
|
|
||||||
def __init__(self):
|
|
||||||
super(CertificatesDefaults)
|
|
||||||
|
|
||||||
def get(self):
|
|
||||||
"""
|
|
||||||
.. http:get:: /certificates/defaults
|
|
||||||
|
|
||||||
Returns defaults needed to generate CSRs
|
|
||||||
|
|
||||||
**Example request**:
|
|
||||||
|
|
||||||
.. sourcecode:: http
|
|
||||||
|
|
||||||
GET /certificates/defaults HTTP/1.1
|
|
||||||
Host: example.com
|
|
||||||
Accept: application/json, text/javascript
|
|
||||||
|
|
||||||
**Example response**:
|
|
||||||
|
|
||||||
.. sourcecode:: http
|
|
||||||
|
|
||||||
HTTP/1.1 200 OK
|
|
||||||
Vary: Accept
|
|
||||||
Content-Type: text/javascript
|
|
||||||
|
|
||||||
{
|
|
||||||
"country": "US",
|
|
||||||
"state": "CA",
|
|
||||||
"location": "Los Gatos",
|
|
||||||
"organization": "Netflix",
|
|
||||||
"organizationalUnit": "Operations"
|
|
||||||
}
|
|
||||||
|
|
||||||
:reqheader Authorization: OAuth token to authenticate
|
|
||||||
:statuscode 200: no error
|
|
||||||
:statuscode 403: unauthenticated
|
|
||||||
"""
|
|
||||||
return dict(
|
|
||||||
country=current_app.config.get('LEMUR_DEFAULT_COUNTRY'),
|
|
||||||
state=current_app.config.get('LEMUR_DEFAULT_STATE'),
|
|
||||||
location=current_app.config.get('LEMUR_DEFAULT_LOCATION'),
|
|
||||||
organization=current_app.config.get('LEMUR_DEFAULT_ORGANIZATION'),
|
|
||||||
organizationalUnit=current_app.config.get('LEMUR_DEFAULT_ORGANIZATIONAL_UNIT')
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
api.add_resource(CertificatesList, '/certificates', endpoint='certificates')
|
api.add_resource(CertificatesList, '/certificates', endpoint='certificates')
|
||||||
api.add_resource(Certificates, '/certificates/<int:certificate_id>', endpoint='certificate')
|
api.add_resource(Certificates, '/certificates/<int:certificate_id>', endpoint='certificate')
|
||||||
api.add_resource(CertificatesStats, '/certificates/stats', endpoint='certificateStats')
|
api.add_resource(CertificatesStats, '/certificates/stats', endpoint='certificateStats')
|
||||||
api.add_resource(CertificatesUpload, '/certificates/upload', endpoint='certificateUpload')
|
api.add_resource(CertificatesUpload, '/certificates/upload', endpoint='certificateUpload')
|
||||||
api.add_resource(CertificatePrivateKey, '/certificates/<int:certificate_id>/key', endpoint='privateKeyCertificates')
|
api.add_resource(CertificatePrivateKey, '/certificates/<int:certificate_id>/key', endpoint='privateKeyCertificates')
|
||||||
api.add_resource(NotificationCertificatesList, '/notifications/<int:notification_id>/certificates', endpoint='notificationCertificates')
|
api.add_resource(NotificationCertificatesList, '/notifications/<int:notification_id>/certificates', endpoint='notificationCertificates')
|
||||||
api.add_resource(CertificatesDefaults, '/certificates/defaults', endpoint='certificatesDefault')
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
"""
|
||||||
|
.. module: lemur.status.views
|
||||||
|
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
||||||
|
:license: Apache, see LICENSE for more details.
|
||||||
|
"""
|
||||||
|
from flask import current_app, Blueprint
|
||||||
|
from flask.ext.restful import Api
|
||||||
|
|
||||||
|
from lemur.auth.service import AuthenticatedResource
|
||||||
|
|
||||||
|
|
||||||
|
mod = Blueprint('default', __name__)
|
||||||
|
api = Api(mod)
|
||||||
|
|
||||||
|
|
||||||
|
class LemurDefaults(AuthenticatedResource):
|
||||||
|
""" Defines the 'defaults' endpoint """
|
||||||
|
def __init__(self):
|
||||||
|
super(LemurDefaults)
|
||||||
|
|
||||||
|
def get(self):
|
||||||
|
"""
|
||||||
|
.. http:get:: /defaults
|
||||||
|
|
||||||
|
Returns defaults needed to generate CSRs
|
||||||
|
|
||||||
|
**Example request**:
|
||||||
|
|
||||||
|
.. sourcecode:: http
|
||||||
|
|
||||||
|
GET /defaults HTTP/1.1
|
||||||
|
Host: example.com
|
||||||
|
Accept: application/json, text/javascript
|
||||||
|
|
||||||
|
**Example response**:
|
||||||
|
|
||||||
|
.. sourcecode:: http
|
||||||
|
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Vary: Accept
|
||||||
|
Content-Type: text/javascript
|
||||||
|
|
||||||
|
{
|
||||||
|
"country": "US",
|
||||||
|
"state": "CA",
|
||||||
|
"location": "Los Gatos",
|
||||||
|
"organization": "Netflix",
|
||||||
|
"organizationalUnit": "Operations"
|
||||||
|
}
|
||||||
|
|
||||||
|
:reqheader Authorization: OAuth token to authenticate
|
||||||
|
:statuscode 200: no error
|
||||||
|
:statuscode 403: unauthenticated
|
||||||
|
"""
|
||||||
|
return dict(
|
||||||
|
country=current_app.config.get('LEMUR_DEFAULT_COUNTRY'),
|
||||||
|
state=current_app.config.get('LEMUR_DEFAULT_STATE'),
|
||||||
|
location=current_app.config.get('LEMUR_DEFAULT_LOCATION'),
|
||||||
|
organization=current_app.config.get('LEMUR_DEFAULT_ORGANIZATION'),
|
||||||
|
organizationalUnit=current_app.config.get('LEMUR_DEFAULT_ORGANIZATIONAL_UNIT')
|
||||||
|
)
|
||||||
|
|
||||||
|
api.add_resource(LemurDefaults, '/defaults', endpoint='default')
|
|
@ -60,6 +60,15 @@ lemur.controller('datePickerController', function ($scope, $timeout){
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
lemur.service('DefaultService', function (LemurRestangular) {
|
||||||
|
var DefaultService = this;
|
||||||
|
DefaultService.get = function () {
|
||||||
|
return LemurRestangular.all('defaults').customGET().then(function (defaults) {
|
||||||
|
return defaults;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
lemur.factory('LemurRestangular', function (Restangular, $location, $auth) {
|
lemur.factory('LemurRestangular', function (Restangular, $location, $auth) {
|
||||||
return Restangular.withConfig(function (RestangularConfigurer) {
|
return Restangular.withConfig(function (RestangularConfigurer) {
|
||||||
RestangularConfigurer.setBaseUrl('http://localhost:5000/api/1');
|
RestangularConfigurer.setBaseUrl('http://localhost:5000/api/1');
|
||||||
|
|
|
@ -30,6 +30,9 @@ angular.module('lemur')
|
||||||
.controller('AuthorityCreateController', function ($scope, $modalInstance, AuthorityService, LemurRestangular, RoleService, PluginService, WizardHandler) {
|
.controller('AuthorityCreateController', function ($scope, $modalInstance, AuthorityService, LemurRestangular, RoleService, PluginService, WizardHandler) {
|
||||||
$scope.authority = LemurRestangular.restangularizeElement(null, {}, 'authorities');
|
$scope.authority = LemurRestangular.restangularizeElement(null, {}, 'authorities');
|
||||||
|
|
||||||
|
// set the defaults
|
||||||
|
AuthorityService.getDefaults($scope.authority);
|
||||||
|
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
$scope.create = function (authority) {
|
$scope.create = function (authority) {
|
||||||
WizardHandler.wizard().context.loading = true;
|
WizardHandler.wizard().context.loading = true;
|
||||||
|
|
|
@ -56,7 +56,7 @@ angular.module('lemur')
|
||||||
});
|
});
|
||||||
return LemurRestangular.all('authorities');
|
return LemurRestangular.all('authorities');
|
||||||
})
|
})
|
||||||
.service('AuthorityService', function ($location, AuthorityApi, toaster) {
|
.service('AuthorityService', function ($location, AuthorityApi, DefaultService, toaster) {
|
||||||
var AuthorityService = this;
|
var AuthorityService = this;
|
||||||
AuthorityService.findAuthorityByName = function (filterValue) {
|
AuthorityService.findAuthorityByName = function (filterValue) {
|
||||||
return AuthorityApi.getList({'filter[name]': filterValue})
|
return AuthorityApi.getList({'filter[name]': filterValue})
|
||||||
|
@ -117,6 +117,16 @@ angular.module('lemur')
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AuthorityService.getDefaults = function (authority) {
|
||||||
|
return DefaultService.get().then(function (defaults) {
|
||||||
|
authority.caDN.country = defaults.country;
|
||||||
|
authority.caDN.state = defaults.state;
|
||||||
|
authority.caDN.location = defaults.location;
|
||||||
|
authority.caDN.organization = defaults.organization;
|
||||||
|
authority.caDN.organizationalUnit = defaults.organizationalUnit;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
AuthorityService.getRoles = function (authority) {
|
AuthorityService.getRoles = function (authority) {
|
||||||
return authority.getList('roles').then(function (roles) {
|
return authority.getList('roles').then(function (roles) {
|
||||||
authority.roles = roles;
|
authority.roles = roles;
|
||||||
|
|
|
@ -89,7 +89,7 @@ angular.module('lemur')
|
||||||
});
|
});
|
||||||
return LemurRestangular.all('certificates');
|
return LemurRestangular.all('certificates');
|
||||||
})
|
})
|
||||||
.service('CertificateService', function ($location, CertificateApi, LemurRestangular, toaster) {
|
.service('CertificateService', function ($location, CertificateApi, LemurRestangular, DefaultService, toaster) {
|
||||||
var CertificateService = this;
|
var CertificateService = this;
|
||||||
CertificateService.findCertificatesByName = function (filterValue) {
|
CertificateService.findCertificatesByName = function (filterValue) {
|
||||||
return CertificateApi.getList({'filter[name]': filterValue})
|
return CertificateApi.getList({'filter[name]': filterValue})
|
||||||
|
@ -207,7 +207,7 @@ angular.module('lemur')
|
||||||
};
|
};
|
||||||
|
|
||||||
CertificateService.getDefaults = function (certificate) {
|
CertificateService.getDefaults = function (certificate) {
|
||||||
return certificate.customGET('defaults').then(function (defaults) {
|
return DefaultService.get().then(function (defaults) {
|
||||||
certificate.country = defaults.country;
|
certificate.country = defaults.country;
|
||||||
certificate.state = defaults.state;
|
certificate.state = defaults.state;
|
||||||
certificate.location = defaults.location;
|
certificate.location = defaults.location;
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
"""
|
|
||||||
.. module: lemur.status.views
|
|
||||||
:copyright: (c) 2015 by Netflix Inc., see AUTHORS for more
|
|
||||||
:license: Apache, see LICENSE for more details.
|
|
||||||
"""
|
|
||||||
import os
|
|
||||||
|
|
||||||
from flask import app, current_app, Blueprint, jsonify
|
|
||||||
from flask.ext.restful import Api
|
|
||||||
|
|
||||||
from lemur.auth.service import AuthenticatedResource
|
|
||||||
|
|
||||||
|
|
||||||
mod = Blueprint('status', __name__)
|
|
||||||
api = Api(mod)
|
|
||||||
|
|
||||||
|
|
||||||
class Status(AuthenticatedResource):
|
|
||||||
""" Defines the 'accounts' endpoint """
|
|
||||||
def __init__(self):
|
|
||||||
super(Status, self).__init__()
|
|
||||||
|
|
||||||
def get(self):
|
|
||||||
if not os.path.isdir(os.path.join(app.config.get("KEY_PATH"), "decrypted")):
|
|
||||||
return jsonify({
|
|
||||||
'environment': app.config.get('ENVIRONMENT'),
|
|
||||||
'status': 'degraded',
|
|
||||||
'message': "This Lemur instance is in a degraded state and is unable to issue certificates, please alert {0}".format(
|
|
||||||
current_app.config.get('LEMUR_SECURITY_TEAM_EMAIL')
|
|
||||||
)})
|
|
||||||
else:
|
|
||||||
return jsonify({
|
|
||||||
'environment': app.config.get('ENVIRONMENT'),
|
|
||||||
'status': 'healthy',
|
|
||||||
'message': "This Lemur instance is healthy"})
|
|
Loading…
Reference in New Issue