mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Service certificate status.
The service details page has been modified to show certificate status using bullets. It will also show the revocation reason, and display the restore button only if the certificate is on hold. The buttons action handlers have been moved into service_usercertificate_load() so they can update the bullets. A test data file for cert-show operation has been added. Other test data files containing certificate info has been updated for consistency. The certificate_confirmation_dialog() has been removed because it's no longer used.
This commit is contained in:
parent
c2a2ffbe69
commit
267e803cdf
@ -53,38 +53,15 @@ function certificate_parse_dn(dn) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function certificate_confirmation_dialog(spec) {
|
|
||||||
var that = {};
|
|
||||||
spec = spec || {};
|
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
|
||||||
'title': spec.title
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.append(spec.message);
|
|
||||||
|
|
||||||
that.open = function() {
|
|
||||||
dialog.dialog({
|
|
||||||
modal: true,
|
|
||||||
width: 300,
|
|
||||||
height: 150,
|
|
||||||
buttons: {
|
|
||||||
'Close': function() {
|
|
||||||
dialog.dialog('destroy');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
return that;
|
|
||||||
}
|
|
||||||
|
|
||||||
function certificate_get_dialog(spec) {
|
function certificate_get_dialog(spec) {
|
||||||
var that = {};
|
var that = {};
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
|
that.title = spec.title || '';
|
||||||
|
that.usercertificate = spec.usercertificate || '';
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
var dialog = $('<div/>', {
|
||||||
'title': spec.title
|
'title': that.title
|
||||||
});
|
});
|
||||||
|
|
||||||
var textarea = $('<textarea/>', {
|
var textarea = $('<textarea/>', {
|
||||||
@ -94,7 +71,7 @@ function certificate_get_dialog(spec) {
|
|||||||
|
|
||||||
textarea.val(
|
textarea.val(
|
||||||
BEGIN_CERTIFICATE_REQUEST+'\n'+
|
BEGIN_CERTIFICATE_REQUEST+'\n'+
|
||||||
spec.usercertificate+'\n'+
|
that.usercertificate+'\n'+
|
||||||
END_CERTIFICATE_REQUEST
|
END_CERTIFICATE_REQUEST
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -118,8 +95,11 @@ function certificate_revoke_dialog(spec) {
|
|||||||
var that = {};
|
var that = {};
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
|
that.title = spec.title || '';
|
||||||
|
that.revoke = spec.revoke;
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
var dialog = $('<div/>', {
|
||||||
'title': spec.title
|
'title': that.title
|
||||||
});
|
});
|
||||||
|
|
||||||
var table = $('<table/>').appendTo(dialog);
|
var table = $('<table/>').appendTo(dialog);
|
||||||
@ -160,8 +140,8 @@ function certificate_revoke_dialog(spec) {
|
|||||||
'Revoke': function() {
|
'Revoke': function() {
|
||||||
var values = {};
|
var values = {};
|
||||||
values['reason'] = select.val();
|
values['reason'] = select.val();
|
||||||
if (spec.revoke) {
|
if (that.revoke) {
|
||||||
spec.revoke(values);
|
that.revoke(values);
|
||||||
}
|
}
|
||||||
dialog.dialog('destroy');
|
dialog.dialog('destroy');
|
||||||
},
|
},
|
||||||
@ -179,8 +159,11 @@ function certificate_restore_dialog(spec) {
|
|||||||
var that = {};
|
var that = {};
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
|
that.title = spec.title || '';
|
||||||
|
that.restore = spec.restore;
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
var dialog = $('<div/>', {
|
||||||
'title': spec.title
|
'title': that.title
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.append(
|
dialog.append(
|
||||||
@ -195,8 +178,8 @@ function certificate_restore_dialog(spec) {
|
|||||||
buttons: {
|
buttons: {
|
||||||
'Restore': function() {
|
'Restore': function() {
|
||||||
var values = {};
|
var values = {};
|
||||||
if (spec.restore) {
|
if (that.restore) {
|
||||||
spec.restore(values);
|
that.restore(values);
|
||||||
}
|
}
|
||||||
dialog.dialog('destroy');
|
dialog.dialog('destroy');
|
||||||
},
|
},
|
||||||
@ -214,11 +197,17 @@ function certificate_view_dialog(spec) {
|
|||||||
var that = {};
|
var that = {};
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
|
that.title = spec.title || '';
|
||||||
that.subject = certificate_parse_dn(spec.subject);
|
that.subject = certificate_parse_dn(spec.subject);
|
||||||
|
that.serial_number = spec.serial_number || '';
|
||||||
that.issuer = certificate_parse_dn(spec.issuer);
|
that.issuer = certificate_parse_dn(spec.issuer);
|
||||||
|
that.issued_on = spec.issued_on || '';
|
||||||
|
that.expires_on = spec.expires_on || '';
|
||||||
|
that.md5_fingerprint = spec.md5_fingerprint || '';
|
||||||
|
that.sha1_fingerprint = spec.sha1_fingerprint || '';
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
var dialog = $('<div/>', {
|
||||||
'title': spec.title
|
'title': that.title
|
||||||
});
|
});
|
||||||
|
|
||||||
var table = $('<table/>').appendTo(dialog);
|
var table = $('<table/>').appendTo(dialog);
|
||||||
@ -250,7 +239,7 @@ function certificate_view_dialog(spec) {
|
|||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td>Serial Number:</td>').appendTo(tr);
|
$('<td>Serial Number:</td>').appendTo(tr);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'html': spec.serial_number
|
'html': that.serial_number
|
||||||
}).appendTo(tr);
|
}).appendTo(tr);
|
||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
@ -286,13 +275,13 @@ function certificate_view_dialog(spec) {
|
|||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td>Issued On:</td>').appendTo(tr);
|
$('<td>Issued On:</td>').appendTo(tr);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'html': spec.issued_on
|
'html': that.issued_on
|
||||||
}).appendTo(tr);
|
}).appendTo(tr);
|
||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td>Expires On:</td>').appendTo(tr);
|
$('<td>Expires On:</td>').appendTo(tr);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'html': spec.expires_on
|
'html': that.expires_on
|
||||||
}).appendTo(tr);
|
}).appendTo(tr);
|
||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
@ -304,13 +293,13 @@ function certificate_view_dialog(spec) {
|
|||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td>SHA1 Fingerprint:</td>').appendTo(tr);
|
$('<td>SHA1 Fingerprint:</td>').appendTo(tr);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'html': spec.sha1_fingerprint
|
'html': that.sha1_fingerprint
|
||||||
}).appendTo(tr);
|
}).appendTo(tr);
|
||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
$('<td>MD5 Fingerprint:</td>').appendTo(tr);
|
$('<td>MD5 Fingerprint:</td>').appendTo(tr);
|
||||||
$('<td/>', {
|
$('<td/>', {
|
||||||
'html': spec.md5_fingerprint
|
'html': that.md5_fingerprint
|
||||||
}).appendTo(tr);
|
}).appendTo(tr);
|
||||||
|
|
||||||
that.open = function() {
|
that.open = function() {
|
||||||
@ -333,8 +322,11 @@ function certificate_request_dialog(spec) {
|
|||||||
var that = {};
|
var that = {};
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
|
that.title = spec.title || '';
|
||||||
|
that.request = spec.request;
|
||||||
|
|
||||||
var dialog = $('<div/>', {
|
var dialog = $('<div/>', {
|
||||||
'title': spec.title
|
'title': that.title
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.append('Copy and paste the Base64-encoded CSR below:');
|
dialog.append('Copy and paste the Base64-encoded CSR below:');
|
||||||
@ -365,8 +357,8 @@ function certificate_request_dialog(spec) {
|
|||||||
$.trim(request)+'\n'+
|
$.trim(request)+'\n'+
|
||||||
END_CERTIFICATE_REQUEST+'\n';
|
END_CERTIFICATE_REQUEST+'\n';
|
||||||
values['request'] = request;
|
values['request'] = request;
|
||||||
if (spec.request) {
|
if (that.request) {
|
||||||
spec.request(values);
|
that.request(values);
|
||||||
}
|
}
|
||||||
dialog.dialog('destroy');
|
dialog.dialog('destroy');
|
||||||
},
|
},
|
||||||
|
@ -20,6 +20,10 @@
|
|||||||
|
|
||||||
/* REQUIRES: ipa.js, details.js, search.js, add.js, entity.js */
|
/* REQUIRES: ipa.js, details.js, search.js, add.js, entity.js */
|
||||||
|
|
||||||
|
var SERVICE_CERTIFICATE_VALID = 1;
|
||||||
|
var SERVICE_CERTIFICATE_REVOKED = 2;
|
||||||
|
var SERVICE_CERTIFICATE_MISSING = 3;
|
||||||
|
|
||||||
ipa_entity_set_search_definition('service', [
|
ipa_entity_set_search_definition('service', [
|
||||||
['krbprincipalname', 'Principal', null],
|
['krbprincipalname', 'Principal', null],
|
||||||
['quick_links', 'Quick Links', ipa_entity_quick_links]
|
['quick_links', 'Quick Links', ipa_entity_quick_links]
|
||||||
@ -88,147 +92,169 @@ function service_provisioning_status_load(container, dt, result) {
|
|||||||
// skip provisioning_status
|
// skip provisioning_status
|
||||||
}
|
}
|
||||||
|
|
||||||
function service_usercertificate_get(result) {
|
|
||||||
|
|
||||||
var usercertificate = result['usercertificate'];
|
|
||||||
if (!usercertificate) {
|
|
||||||
alert('Service has no usercertificate.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
|
||||||
var service_name = krbprincipalname.replace(/@.*$/, '');
|
|
||||||
|
|
||||||
var dialog = certificate_get_dialog({
|
|
||||||
'title': 'Certificate for Service '+service_name,
|
|
||||||
'usercertificate': usercertificate[0].__base64__
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
function service_usercertificate_view(result) {
|
|
||||||
|
|
||||||
var usercertificate = result['usercertificate'];
|
|
||||||
if (!usercertificate) {
|
|
||||||
alert('Service has no usercertificate.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
|
||||||
var service_name = krbprincipalname.replace(/@.*$/, '');
|
|
||||||
|
|
||||||
var dialog = certificate_view_dialog({
|
|
||||||
'title': 'Certificate for Service '+service_name,
|
|
||||||
'subject': result['subject'],
|
|
||||||
'serial_number': result['serial_number'],
|
|
||||||
'issuer': result['issuer'],
|
|
||||||
'issued_on': result['valid_not_before'],
|
|
||||||
'expires_on': result['valid_not_after'],
|
|
||||||
'md5_fingerprint': result['md5_fingerprint'],
|
|
||||||
'sha1_fingerprint': result['sha1_fingerprint']
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
function service_usercertificate_revoke(result) {
|
|
||||||
|
|
||||||
var usercertificate = result['usercertificate'];
|
|
||||||
if (!usercertificate) {
|
|
||||||
alert('Service has no usercertificate.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
|
||||||
var service_name = krbprincipalname.replace(/@.*$/, '');
|
|
||||||
|
|
||||||
var serial_number = result['serial_number'];
|
|
||||||
|
|
||||||
var dialog = certificate_revoke_dialog({
|
|
||||||
'title': 'Revoke Certificate for Service '+service_name,
|
|
||||||
'revoke': function(values) {
|
|
||||||
var reason = values['reason'];
|
|
||||||
|
|
||||||
ipa_cmd(
|
|
||||||
'cert_revoke',
|
|
||||||
[serial_number],
|
|
||||||
{
|
|
||||||
'revocation_reason': reason
|
|
||||||
},
|
|
||||||
function(data, text_status, xhr) {
|
|
||||||
var dialog = certificate_confirmation_dialog({
|
|
||||||
title: 'Success',
|
|
||||||
message: 'Certificate has been revoked successfully.'
|
|
||||||
});
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
function service_usercertificate_restore(result) {
|
|
||||||
|
|
||||||
var usercertificate = result['usercertificate'];
|
|
||||||
if (!usercertificate) {
|
|
||||||
alert('Service has no usercertificate.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
|
||||||
var service_name = krbprincipalname.replace(/@.*$/, '');
|
|
||||||
|
|
||||||
var serial_number = result['serial_number'];
|
|
||||||
|
|
||||||
var dialog = certificate_restore_dialog({
|
|
||||||
'title': 'Restore Certificate for Service '+service_name,
|
|
||||||
'restore': function(values) {
|
|
||||||
ipa_cmd(
|
|
||||||
'cert_remove_hold',
|
|
||||||
[serial_number],
|
|
||||||
{ },
|
|
||||||
function(data, text_status, xhr) {
|
|
||||||
var dialog = certificate_confirmation_dialog({
|
|
||||||
title: 'Success',
|
|
||||||
message: 'Certificate has been restored successfully.'
|
|
||||||
});
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
function service_usercertificate_request(result) {
|
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
|
||||||
var service_name = krbprincipalname.replace(/@.*$/, '');
|
|
||||||
|
|
||||||
var dialog = certificate_request_dialog({
|
|
||||||
'title': 'Issue New Certificate for Service '+service_name,
|
|
||||||
'request': function(values) {
|
|
||||||
var request = values['request'];
|
|
||||||
|
|
||||||
ipa_cmd(
|
|
||||||
'cert_request',
|
|
||||||
[request],
|
|
||||||
{
|
|
||||||
'principal': krbprincipalname
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
function service_usercertificate_load(container, dt, result) {
|
function service_usercertificate_load(container, dt, result) {
|
||||||
|
|
||||||
|
var li1, li2, li3;
|
||||||
|
|
||||||
|
function set_status(status, revocation_reason) {
|
||||||
|
li1.css('list-style-type', status == SERVICE_CERTIFICATE_VALID ? 'disc' : 'circle');
|
||||||
|
li2.css('list-style-type', status == SERVICE_CERTIFICATE_REVOKED ? 'disc' : 'circle');
|
||||||
|
li3.css('list-style-type', status == SERVICE_CERTIFICATE_MISSING ? 'disc' : 'circle');
|
||||||
|
|
||||||
|
$('#revocation_reason').html(revocation_reason ? CRL_REASON[revocation_reason] : '');
|
||||||
|
$('#restore_button').css('visibility', revocation_reason == 6 ? 'visible' : 'hidden')
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_status(serial_number) {
|
||||||
|
ipa_cmd(
|
||||||
|
'cert_show',
|
||||||
|
[serial_number],
|
||||||
|
{ },
|
||||||
|
function(data, text_status, xhr) {
|
||||||
|
var revocation_reason = data.result.result.revocation_reason;
|
||||||
|
if (revocation_reason) {
|
||||||
|
set_status(SERVICE_CERTIFICATE_REVOKED, revocation_reason);
|
||||||
|
} else {
|
||||||
|
set_status(SERVICE_CERTIFICATE_VALID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_certificate(result) {
|
||||||
|
|
||||||
|
var usercertificate = result['usercertificate'];
|
||||||
|
if (!usercertificate) {
|
||||||
|
set_status(SERVICE_CERTIFICATE_MISSING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
var service_name = krbprincipalname.replace(/@.*$/, '');
|
||||||
|
|
||||||
|
var dialog = certificate_get_dialog({
|
||||||
|
'title': 'Certificate for Service '+service_name,
|
||||||
|
'usercertificate': usercertificate[0].__base64__
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
function view_certificate(result) {
|
||||||
|
|
||||||
|
var usercertificate = result['usercertificate'];
|
||||||
|
if (!usercertificate) {
|
||||||
|
set_status(SERVICE_CERTIFICATE_MISSING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
var service_name = krbprincipalname.replace(/@.*$/, '');
|
||||||
|
|
||||||
|
var dialog = certificate_view_dialog({
|
||||||
|
'title': 'Certificate for Service '+service_name,
|
||||||
|
'subject': result['subject'],
|
||||||
|
'serial_number': result['serial_number'],
|
||||||
|
'issuer': result['issuer'],
|
||||||
|
'issued_on': result['valid_not_before'],
|
||||||
|
'expires_on': result['valid_not_after'],
|
||||||
|
'md5_fingerprint': result['md5_fingerprint'],
|
||||||
|
'sha1_fingerprint': result['sha1_fingerprint']
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
function revoke_certificate(result) {
|
||||||
|
|
||||||
|
var usercertificate = result['usercertificate'];
|
||||||
|
if (!usercertificate) {
|
||||||
|
set_status(SERVICE_CERTIFICATE_MISSING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
var service_name = krbprincipalname.replace(/@.*$/, '');
|
||||||
|
|
||||||
|
var serial_number = result['serial_number'];
|
||||||
|
|
||||||
|
var dialog = certificate_revoke_dialog({
|
||||||
|
'title': 'Revoke Certificate for Service '+service_name,
|
||||||
|
'revoke': function(values) {
|
||||||
|
var reason = values['reason'];
|
||||||
|
|
||||||
|
ipa_cmd(
|
||||||
|
'cert_revoke',
|
||||||
|
[serial_number],
|
||||||
|
{
|
||||||
|
'revocation_reason': reason
|
||||||
|
},
|
||||||
|
function(data, text_status, xhr) {
|
||||||
|
check_status(serial_number);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
function restore_certificate(result) {
|
||||||
|
|
||||||
|
var usercertificate = result['usercertificate'];
|
||||||
|
if (!usercertificate) {
|
||||||
|
set_status(SERVICE_CERTIFICATE_MISSING);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
var service_name = krbprincipalname.replace(/@.*$/, '');
|
||||||
|
|
||||||
|
var serial_number = result['serial_number'];
|
||||||
|
|
||||||
|
var dialog = certificate_restore_dialog({
|
||||||
|
'title': 'Restore Certificate for Service '+service_name,
|
||||||
|
'restore': function(values) {
|
||||||
|
ipa_cmd(
|
||||||
|
'cert_remove_hold',
|
||||||
|
[serial_number],
|
||||||
|
{ },
|
||||||
|
function(data, text_status, xhr) {
|
||||||
|
check_status(serial_number);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
function request_certificate(result) {
|
||||||
|
|
||||||
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
var service_name = krbprincipalname.replace(/@.*$/, '');
|
||||||
|
|
||||||
|
var dialog = certificate_request_dialog({
|
||||||
|
'title': 'Issue New Certificate for Service '+service_name,
|
||||||
|
'request': function(values) {
|
||||||
|
var request = values['request'];
|
||||||
|
|
||||||
|
ipa_cmd(
|
||||||
|
'cert_request',
|
||||||
|
[request],
|
||||||
|
{
|
||||||
|
'principal': krbprincipalname
|
||||||
|
},
|
||||||
|
function(data, text_status, xhr) {
|
||||||
|
check_status(data.result.result.serial_number);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
|
||||||
var krbprincipalname = result['krbprincipalname'][0];
|
var krbprincipalname = result['krbprincipalname'][0];
|
||||||
|
|
||||||
var table = $('<table/>');
|
var table = $('<table/>');
|
||||||
@ -236,40 +262,45 @@ function service_usercertificate_load(container, dt, result) {
|
|||||||
var tr = $('<tr/>').appendTo(table);
|
var tr = $('<tr/>').appendTo(table);
|
||||||
|
|
||||||
var td = $('<td/>').appendTo(tr);
|
var td = $('<td/>').appendTo(tr);
|
||||||
|
li1 = $('<li/>', {
|
||||||
|
style: 'color: green;'
|
||||||
|
}).appendTo(td);
|
||||||
|
|
||||||
|
td = $('<td/>').appendTo(tr);
|
||||||
td.append('Valid Certificate Present:');
|
td.append('Valid Certificate Present:');
|
||||||
|
|
||||||
td = $('<td/>').appendTo(tr);
|
td = $('<td/>').appendTo(tr);
|
||||||
$('<input/>', {
|
$('<input/>', {
|
||||||
type: 'button',
|
'type': 'button',
|
||||||
value: 'Get',
|
'value': 'Get',
|
||||||
click: function() {
|
'click': function() {
|
||||||
ipa_cmd('service_show', [krbprincipalname], {},
|
ipa_cmd('service_show', [krbprincipalname], {},
|
||||||
function(data, text_status, xhr) {
|
function(data, text_status, xhr) {
|
||||||
service_usercertificate_get(data.result.result);
|
get_certificate(data.result.result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}).appendTo(td);
|
}).appendTo(td);
|
||||||
|
|
||||||
$('<input/>', {
|
$('<input/>', {
|
||||||
type: 'button',
|
'type': 'button',
|
||||||
value: 'Revoke',
|
'value': 'Revoke',
|
||||||
click: function() {
|
'click': function() {
|
||||||
ipa_cmd('service_show', [krbprincipalname], {},
|
ipa_cmd('service_show', [krbprincipalname], {},
|
||||||
function(data, text_status, xhr) {
|
function(data, text_status, xhr) {
|
||||||
service_usercertificate_revoke(data.result.result);
|
revoke_certificate(data.result.result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}).appendTo(td);
|
}).appendTo(td);
|
||||||
|
|
||||||
$('<input/>', {
|
$('<input/>', {
|
||||||
type: 'button',
|
'type': 'button',
|
||||||
value: 'View',
|
'value': 'View',
|
||||||
click: function() {
|
'click': function() {
|
||||||
ipa_cmd('service_show', [krbprincipalname], {},
|
ipa_cmd('service_show', [krbprincipalname], {},
|
||||||
function(data, text_status, xhr) {
|
function(data, text_status, xhr) {
|
||||||
service_usercertificate_view(data.result.result);
|
view_certificate(data.result.result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -277,17 +308,28 @@ function service_usercertificate_load(container, dt, result) {
|
|||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
|
|
||||||
|
td = $('<td/>').appendTo(tr);
|
||||||
|
li2 = $('<li/>', {
|
||||||
|
'style': 'color: red;'
|
||||||
|
}).appendTo(td);
|
||||||
|
|
||||||
td = $('<td/>').appendTo(tr);
|
td = $('<td/>').appendTo(tr);
|
||||||
td.append('Certificate Revoked:');
|
td.append('Certificate Revoked:');
|
||||||
|
|
||||||
td = $('<td/>').appendTo(tr);
|
td = $('<td/>').appendTo(tr);
|
||||||
|
td.append($('<span/>', {
|
||||||
|
'id': 'revocation_reason'
|
||||||
|
}));
|
||||||
|
td.append(' ');
|
||||||
|
|
||||||
$('<input/>', {
|
$('<input/>', {
|
||||||
type: 'button',
|
'id': 'restore_button',
|
||||||
value: 'Restore',
|
'type': 'button',
|
||||||
click: function() {
|
'value': 'Restore',
|
||||||
|
'click': function() {
|
||||||
ipa_cmd('service_show', [krbprincipalname], {},
|
ipa_cmd('service_show', [krbprincipalname], {},
|
||||||
function(data, text_status, xhr) {
|
function(data, text_status, xhr) {
|
||||||
service_usercertificate_restore(data.result.result);
|
restore_certificate(data.result.result);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -295,18 +337,30 @@ function service_usercertificate_load(container, dt, result) {
|
|||||||
|
|
||||||
tr = $('<tr/>').appendTo(table);
|
tr = $('<tr/>').appendTo(table);
|
||||||
|
|
||||||
|
td = $('<td/>').appendTo(tr);
|
||||||
|
li3 = $('<li/>', {
|
||||||
|
'style': 'color: goldenrod;'
|
||||||
|
}).appendTo(td);
|
||||||
|
|
||||||
td = $('<td/>').appendTo(tr);
|
td = $('<td/>').appendTo(tr);
|
||||||
td.append('No Valid Certificate:');
|
td.append('No Valid Certificate:');
|
||||||
|
|
||||||
td = $('<td/>').appendTo(tr);
|
td = $('<td/>').appendTo(tr);
|
||||||
$('<input/>', {
|
$('<input/>', {
|
||||||
type: 'button',
|
'type': 'button',
|
||||||
value: 'New Certificate',
|
'value': 'New Certificate',
|
||||||
click: function() {
|
'click': function() {
|
||||||
service_usercertificate_request(result);
|
request_certificate(result);
|
||||||
}
|
}
|
||||||
}).appendTo(td);
|
}).appendTo(td);
|
||||||
|
|
||||||
var dd = ipa_create_first_dd(this.name, table);
|
var dd = ipa_create_first_dd(this.name, table);
|
||||||
dt.after(dd);
|
dt.after(dd);
|
||||||
|
|
||||||
|
var usercertificate = result['usercertificate'];
|
||||||
|
if (usercertificate) {
|
||||||
|
check_status(result.serial_number);
|
||||||
|
} else {
|
||||||
|
set_status(SERVICE_CERTIFICATE_MISSING);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,15 +3,15 @@
|
|||||||
"id": 0,
|
"id": 0,
|
||||||
"result": {
|
"result": {
|
||||||
"result": {
|
"result": {
|
||||||
"certificate": "MIIC2DCCAcCgAwIBAgIBFTANBgkqhkiG9w0BAQsFADAuMQwwCgYDVQQKEwNJUEExHjAcBgNVBAMTFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0xMDEwMTUwNTE3MzZaFw0xMTA0MTMwNTE3MzZaMCgxDDAKBgNVBAoTA0lQQTEYMBYGA1UEAxMPZGV2LmV4YW1wbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDk18o/IK1Qe0Y/eURWsIHcJ/TmGdNy1h2fhzGIILtv8Qgq1K3U4T9eGAZVambpo1SUnJY+k+AAo43TyavSU05se4DIsw00XrrOyD5UunwsW+b+cIUCWbBJLFy9ODsVDJduXrj0RZGHEyta3VuO/gJBtdI9anjVvgegqXUBkenjPwIDAQABo4GKMIGHMB8GA1UdIwQYMBaAFCv9XyGV5ijtHriYMcECVmnNiMMAMD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYjaHR0cDovL2Rldi5leGFtcGxlLmNvbTo5MTgwL2NhL29jc3AwDgYDVR0PAQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQB/OtoBZUYuGD0KZWpNdzIVdCxCTzZAetHA+o97cZCdufiBckZfZ9LEkQdL2MWvcnLlXOnRnQO/BnEAAtYVe4dpmizuzPn1+JTmK9+7q2HhQhXuU2NcsWutgYySNme7eNmfqi8uDoQ8FOPX4LvxLQDyKjkOogs6cEMZePMK8RE60ulHKdYfI23rRNtIExOl1zLJXkpExuXNq1flshyaLLu84B9zwE5FhSD/XAjPyAqYP97IPIkUfWpMyEs3N12JVCVNm0/753CDI946RPnyPpsULZufBV/8sdhDnULHfPIUMPgdOYemm9cYTP/V1uhwwCnFemhSAXSM/g6e9Xm4hH7s",
|
"certificate": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4=",
|
||||||
"issuer": "CN=Certificate Authority,O=IPA",
|
"issuer": "CN=Certificate Authority,O=IPA",
|
||||||
"md5_fingerprint": "87:ca:33:52:e3:07:4c:82:76:24:8d:53:ba:da:b3:fe",
|
"md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
|
||||||
"request_id": "50",
|
"request_id": "1",
|
||||||
"serial_number": "1",
|
"serial_number": "1",
|
||||||
"sha1_fingerprint": "9f:fc:d3:e2:3b:f0:c1:1d:fc:5c:09:fa:f4:10:de:7b:b2:25:ae:7c",
|
"sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
|
||||||
"subject": "CN=dev.example.com,O=IPA",
|
"subject": "CN=dev.example.com,O=IPA",
|
||||||
"valid_not_after": "Wed Apr 13 05:17:36 2011 UTC",
|
"valid_not_after": "Tue Oct 13 01:59:32 2015 UTC",
|
||||||
"valid_not_before": "Fri Oct 15 05:17:36 2010 UTC"
|
"valid_not_before": "Wed Oct 13 01:59:32 2010 UTC"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
17
install/static/test/data/cert_show.json
Normal file
17
install/static/test/data/cert_show.json
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"error": null,
|
||||||
|
"id": 0,
|
||||||
|
"result": {
|
||||||
|
"result": {
|
||||||
|
"certificate": "MIICAjCCAWugAwIBAgICBAswDQYJKoZIhvcNAQEFBQAwKTEnMCUGA1UEAxMeSVBBIFRlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTEwMTAwNzIzMzk0NFoXDTE1MTAwNzIzMzk0NFowKDEMMAoGA1UECgwDSVBBMRgwFgYDVQQDDA9kZXYuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOTXyj8grVB7Rj95RFawgdwn9OYZ03LWHZ+HMYggu2/xCCrUrdThP14YBlVqZumjVJSclj6T4ACjjdPJq9JTTmx7gMizDTReus7IPlS6fCxb5v5whQJZsEksXL04OxUMl25euPRFkYcTK1rdW47+AkG10j1qeNW+B6CpdQGR6eM/AgMBAAGjOjA4MBEGCWCGSAGG+EIBAQQEAwIGQDATBgNVHSUEDDAKBggrBgEFBQcDATAOBgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADgYEASIhq723VL5xP0q51MYXFlGU1boD7pPD1pIQspD/MjCIEupcbH2kAo4wf+EiKsXR0rs+WZkaSgvFqaM4OQ2kWSFTiqmFXFDBEi6EFr68yLg7IpQpNTzVBXERd8B4GwNL9wrRw60jPXlUK29DPBsdGq8fDgX18l39wKkWXv7p1to4=",
|
||||||
|
"issuer": "CN=Certificate Authority,O=IPA",
|
||||||
|
"md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
|
||||||
|
"revocation_reason": 6,
|
||||||
|
"serial_number": "1",
|
||||||
|
"sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
|
||||||
|
"subject": "CN=dev.example.com,O=IPA",
|
||||||
|
"valid_not_after": "Tue Oct 13 01:59:32 2015 UTC",
|
||||||
|
"valid_not_before": "Wed Oct 13 01:59:32 2010 UTC"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -13,7 +13,7 @@
|
|||||||
"dev.example.com"
|
"dev.example.com"
|
||||||
],
|
],
|
||||||
"md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
|
"md5_fingerprint": "08:86:a9:f9:87:af:0d:d7:42:01:e0:5f:12:9b:32:7f",
|
||||||
"serial_number": "1052",
|
"serial_number": "1",
|
||||||
"sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
|
"sha1_fingerprint": "b8:4c:4b:79:4f:13:03:79:47:08:fa:6b:52:63:3d:f9:15:8e:7e:dc",
|
||||||
"subject": "CN=dev.example.com,O=IPA",
|
"subject": "CN=dev.example.com,O=IPA",
|
||||||
"usercertificate": [
|
"usercertificate": [
|
||||||
|
Loading…
Reference in New Issue
Block a user