1
0
mirror of https://github.com/laurivosandi/certidude synced 2024-12-23 00:25:18 +00:00

Add request submission from web interface

This commit is contained in:
Lauri Võsandi 2016-09-18 16:25:52 +03:00
parent 2590340355
commit fab52dca76
5 changed files with 56 additions and 6 deletions

View File

@ -33,6 +33,10 @@ class RequestListResource(object):
body = req.stream.read(req.content_length) body = req.stream.read(req.content_length)
# Normalize body, TODO: newlines
if not body.endswith("\n"):
body += "\n"
csr = Request(body) csr = Request(body)
if not csr.common_name: if not csr.common_name:

View File

@ -168,8 +168,8 @@ pre {
.icon{ .icon{
background-size: 24px; background-size: 24px;
background-position: 6px 2px; background-position: 8px 5px;
padding-left: 32px; padding-left: 36px;
background-repeat: no-repeat; background-repeat: no-repeat;
display: block; display: block;
vertical-align: text-bottom; vertical-align: text-bottom;
@ -225,5 +225,7 @@ select {
.icon.wireless { background-image: url("../img/iconmonstr-wireless-6.svg"); } .icon.wireless { background-image: url("../img/iconmonstr-wireless-6.svg"); }
.icon.password { background-image: url("../img/iconmonstr-lock-3.svg"); } .icon.password { background-image: url("../img/iconmonstr-lock-3.svg"); }
.icon.upload { background-image: url("../img/iconmonstr-upload-17.svg"); }
/* Make sure this is the last one */ /* Make sure this is the last one */
.icon.busy{background-image:url("https://software.opensuse.org/assets/ajax-loader-ea46060b6c9f42822a3d58d075c83ea2.gif");} .icon.busy{background-image:url("https://software.opensuse.org/assets/ajax-loader-ea46060b6c9f42822a3d58d075c83ea2.gif");}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M16 16h-3v5h-2v-5h-3l4-4 4 4zm3.479-5.908c-.212-3.951-3.473-7.092-7.479-7.092s-7.267 3.141-7.479 7.092c-2.57.463-4.521 2.706-4.521 5.408 0 3.037 2.463 5.5 5.5 5.5h3.5v-2h-3.5c-1.93 0-3.5-1.57-3.5-3.5 0-2.797 2.479-3.833 4.433-3.72-.167-4.218 2.208-6.78 5.567-6.78 3.453 0 5.891 2.797 5.567 6.78 1.745-.046 4.433.751 4.433 3.72 0 1.93-1.57 3.5-3.5 3.5h-3.5v2h3.5c3.037 0 5.5-2.463 5.5-5.5 0-2.702-1.951-4.945-4.521-5.408z"/></svg>

After

Width:  |  Height:  |  Size: 522 B

View File

@ -287,6 +287,33 @@ $(document).ready(function() {
}); });
} }
if (session.request_submission_allowed) {
$("#request_submit").click(function() {
$(this).addClass("busy");
$.ajax({
method: "POST",
contentType: "application/pkcs10",
url: "/api/request/",
data: $("#request_body").val(),
dataType: "text",
complete: function(xhr, status) {
console.info("Request submitted successfully, server returned", xhr.status, status);
$("#request_submit").removeClass("busy");
},
success: function() {
// Clear textarea on success
$("#request_body").val("");
},
error: function(xhr, status, e) {
console.info("Submitting request failed with:", status, e);
alert(e);
}
});
});
}
/** /**
* Fetch leases associated with certificates * Fetch leases associated with certificates
*/ */

View File

@ -126,13 +126,29 @@ forbidden
<section id="requests"> <section id="requests">
<h1>Pending requests</h1> <h1>Pending requests</h1>
<p>Submit a certificate signing request with Certidude:</p> {% if session.request_submission_allowed %}
<pre>certidude setup client {{session.common_name}}</pre> <p>Generate private key and certificate signing request:</p>
<pre>
openssl genrsa -out example.key 2048
openssl req -new -sha256 -key example.key -out example.csr
cat example.csr
</pre>
<p>Paste the contents here and click submit:</p>
<textarea id="request_body" style="width:100%; min-height: 4em;" placeholder="-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----"></textarea>
<button class="icon upload" id="request_submit" style="float:none;">Submit</button>
{% else %}
<p>Submit a certificate signing request with Certidude:</p>
<pre>certidude setup client {{session.common_name}}</pre>
{% endif %}
<ul id="pending_requests"> <ul id="pending_requests">
{% for request in session.authority.requests %} {% for request in session.authority.requests %}
{% include "views/request.html" %} {% include "views/request.html" %}
{% endfor %} {% endfor %}
<li class="notify"> <li class="notify">
<p>No certificate signing requests to sign!</p> <p>No certificate signing requests to sign!</p>
</li> </li>