mirror of
				https://github.com/laurivosandi/certidude
				synced 2025-10-31 01:19:11 +00:00 
			
		
		
		
	Refactor wrappers
Completely remove wrapper class for CA, use certidude.authority module instead.
This commit is contained in:
		| @@ -1,59 +1,62 @@ | ||||
| <h1>{{authority.common_name}} management</h1> | ||||
|  | ||||
| <p>Hi {{session.username}},</p> | ||||
|  | ||||
| <p>Request submission is allowed from: {% if authority.request_subnets %}{% for i in authority.request_subnets %}{{ i }} {% endfor %}{% else %}anywhere{% endif %}</p> | ||||
| <p>Autosign is allowed from: {% if authority.autosign_subnets %}{% for i in authority.autosign_subnets %}{{ i }} {% endfor %}{% else %}nowhere{% endif %}</p> | ||||
| <p>Authority administration is allowed from: {% if authority.admin_subnets %}{% for i in authority.admin_subnets %}{{ i }} {% endfor %}{% else %}anywhere{% endif %} | ||||
| <p>Authority administration allowed for: {% for i in authority.admin_users %}{{ i }} {% endfor %}</p> | ||||
| <p>Request submission is allowed from: {% if session.request_subnets %}{% for i in session.request_subnets %}{{ i }} {% endfor %}{% else %}anywhere{% endif %}</p> | ||||
| <p>Autosign is allowed from: {% if session.autosign_subnets %}{% for i in session.autosign_subnets %}{{ i }} {% endfor %}{% else %}nowhere{% endif %}</p> | ||||
| <p>Authority administration is allowed from: {% if session.admin_subnets %}{% for i in session.admin_subnets %}{{ i }} {% endfor %}{% else %}anywhere{% endif %} | ||||
| <p>Authority administration allowed for: {% for i in session.admin_users %}{{ i }} {% endfor %}</p> | ||||
|  | ||||
| {% set s = authority.certificate.identity %} | ||||
| {% set s = session.certificate.identity %} | ||||
|  | ||||
|  | ||||
| <input id="search" class="icon search" type="search" placeholder="hostname, IP-address, etc"/> | ||||
|  | ||||
| <h1>Pending requests</h1> | ||||
|  | ||||
| <ul id="pending_requests"> | ||||
|     {% for request in authority.requests %} | ||||
|          {% include "request.html" %} | ||||
| 	{% endfor %} | ||||
|     <li class="notify"> | ||||
|         <p>No certificate signing requests to sign! You can  submit a certificate signing request by:</p> | ||||
|         <pre>certidude setup client {{authority.common_name}}</pre> | ||||
|     </li> | ||||
| </ul> | ||||
| <div id="requests"> | ||||
|     <h1>Pending requests</h1> | ||||
|  | ||||
| <h1>Signed certificates</h1> | ||||
|  | ||||
| <ul id="signed_certificates"> | ||||
|     {% for certificate in authority.signed | sort | reverse %} | ||||
|         {% include "signed.html" %} | ||||
| 	{% endfor %} | ||||
| </ul> | ||||
|  | ||||
| <h1>Revoked certificates</h1> | ||||
|  | ||||
| <p>To fetch certificate revocation list:</p> | ||||
| <pre> | ||||
| curl {{window.location.href}}api/revoked/ | openssl crl -text -noout | ||||
| </pre> | ||||
| <!-- | ||||
| <p>To perform online certificate status request</p> | ||||
|  | ||||
| <pre> | ||||
| curl {{request.url}}/certificate/ > authority.pem | ||||
| openssl ocsp -issuer authority.pem -CAfile authority.pem -url {{request.url}}/ocsp/ -serial 0x | ||||
| </pre> | ||||
| --> | ||||
| <ul> | ||||
|     {% for j in authority.revoked %} | ||||
|         <li id="certificate_{{ j.sha256sum }}"> | ||||
|             {{j.changed}} | ||||
|             {{j.serial_number}} <span class="monospace">{{j.identity}}</span> | ||||
|     <ul id="pending_requests"> | ||||
|         {% for request in session.requests %} | ||||
|              {% include "request.html" %} | ||||
| 	    {% endfor %} | ||||
|         <li class="notify"> | ||||
|             <p>No certificate signing requests to sign! You can  submit a certificate signing request by:</p> | ||||
|             <pre>certidude setup client {{session.common_name}}</pre> | ||||
|         </li> | ||||
|     {% else %} | ||||
|         <li>Great job! No certificate signing requests to sign.</li> | ||||
| 	{% endfor %} | ||||
| </ul> | ||||
|     </ul> | ||||
| </div> | ||||
|  | ||||
|  | ||||
| <div id="signed"> | ||||
|     <h1>Signed certificates</h1> | ||||
|     <ul id="signed_certificates"> | ||||
|         {% for certificate in session.signed | sort | reverse %} | ||||
|             {% include "signed.html" %} | ||||
| 	    {% endfor %} | ||||
|     </ul> | ||||
| </div> | ||||
|  | ||||
| <div id="revoked"> | ||||
|     <h1>Revoked certificates</h1> | ||||
|     <p>To fetch certificate revocation list:</p> | ||||
|     <pre> | ||||
|     curl {{window.location.href}}api/revoked/ | openssl crl -text -noout | ||||
|     </pre> | ||||
|     <!-- | ||||
|     <p>To perform online certificate status request</p> | ||||
|  | ||||
|     <pre> | ||||
|     curl {{request.url}}/certificate/ > session.pem | ||||
|     openssl ocsp -issuer session.pem -CAfile session.pem -url {{request.url}}/ocsp/ -serial 0x | ||||
|     </pre> | ||||
|     --> | ||||
|     <ul> | ||||
|         {% for j in session.revoked %} | ||||
|             <li id="certificate_{{ j.sha256sum }}"> | ||||
|                 {{j.changed}} | ||||
|                 {{j.serial_number}} <span class="monospace">{{j.identity}}</span> | ||||
|             </li> | ||||
|         {% else %} | ||||
|             <li>Great job! No certificate signing requests to sign.</li> | ||||
| 	    {% endfor %} | ||||
|     </ul> | ||||
| </div> | ||||
|   | ||||
| @@ -94,9 +94,7 @@ html,body { | ||||
| } | ||||
|  | ||||
| body { | ||||
|     background: #222; | ||||
|     background-image: url('../img/free_hexa_pattern_cc0_by_black_light_studio.png'); | ||||
|     background-position: center; | ||||
|     background: #fff; | ||||
| } | ||||
|  | ||||
| .comment { | ||||
| @@ -142,24 +140,31 @@ pre { | ||||
|     margin: 0 0; | ||||
| } | ||||
|  | ||||
| #container { | ||||
|     max-width: 60em; | ||||
|     margin: 1em auto; | ||||
|     background: #fff; | ||||
|     padding: 1em; | ||||
|     border-style: solid; | ||||
|     border-width: 2px; | ||||
|     border-color: #aaa; | ||||
|     border-radius: 10px; | ||||
|  | ||||
| .container { | ||||
|     max-width: 960px; | ||||
|     margin: 0 auto; | ||||
| } | ||||
|  | ||||
| li { | ||||
| #container li { | ||||
|     margin: 4px 0; | ||||
|     padding: 4px 0; | ||||
|     clear: both; | ||||
|     border-top: 1px dashed #ccc; | ||||
| } | ||||
|  | ||||
| #menu { | ||||
|     background-color: #444; | ||||
| } | ||||
|  | ||||
| #menu li { | ||||
|     color: #fff; | ||||
|     border: none; | ||||
|     display: inline; | ||||
|     margin: 1mm 5mm 1mm 0; | ||||
|     line-height: 200%; | ||||
| } | ||||
|  | ||||
| .icon{ | ||||
|     background-size: 24px; | ||||
|     padding-left: 36px; | ||||
|   | ||||
| @@ -11,7 +11,15 @@ | ||||
|     <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> | ||||
| </head> | ||||
| <body> | ||||
|     <div id="container"> | ||||
|     <div id="menu"> | ||||
|         <ul class="container"> | ||||
|           <li>Requests</li> | ||||
|           <li>Signed</li> | ||||
|           <li>Revoked</li> | ||||
|           <li>Log</li> | ||||
|         </ul> | ||||
|     </div> | ||||
|     <div id="container" class="container"> | ||||
|         Loading certificate authority... | ||||
|     </div> | ||||
| </body> | ||||
|   | ||||
| @@ -1,9 +1,8 @@ | ||||
| $(document).ready(function() { | ||||
|     console.info("Loading CA, to debug: curl " + window.location.href + " --negotiate -u : -H 'Accept: application/json'"); | ||||
|  | ||||
|     $.ajax({ | ||||
|         method: "GET", | ||||
|         url: "/api/session/", | ||||
|         url: "/api/", | ||||
|         dataType: "json", | ||||
|         error: function(response) { | ||||
|             if (response.responseJSON) { | ||||
| @@ -14,130 +13,116 @@ $(document).ready(function() { | ||||
|             $("#container").html(nunjucks.render('error.html', { message: msg })); | ||||
|         }, | ||||
|         success: function(session, status, xhr) { | ||||
|             console.info("Loaded CA list:", session); | ||||
|             console.info("Got:", session); | ||||
|  | ||||
|             if (!session.authorities) { | ||||
|                 alert("No certificate authorities to manage! Have you created one yet?"); | ||||
|                 return; | ||||
|             console.info("Opening EventSource from:", session.event_channel); | ||||
|  | ||||
|             var source = new EventSource(session.event_channel); | ||||
|  | ||||
|             source.onmessage = function(event) { | ||||
|                 console.log("Received server-sent event:", event); | ||||
|             } | ||||
|  | ||||
|             source.addEventListener("up-client", function(e) { | ||||
|                 console.log("Adding security association:" + e.data); | ||||
|                 var lease = JSON.parse(e.data); | ||||
|                 var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status"); | ||||
|                 $status.html(nunjucks.render('status.html', { | ||||
|                     lease: { | ||||
|                         address: lease.address, | ||||
|                         identity: lease.identity, | ||||
|                         acquired: new Date(), | ||||
|                         released: null | ||||
|                     }})); | ||||
|             }); | ||||
|  | ||||
|             source.addEventListener("down-client", function(e) { | ||||
|                 console.log("Removing security association:" + e.data); | ||||
|                 var lease = JSON.parse(e.data); | ||||
|                 var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status"); | ||||
|                 $status.html(nunjucks.render('status.html', { | ||||
|                     lease: { | ||||
|                         address: lease.address, | ||||
|                         identity: lease.identity, | ||||
|                         acquired: null, | ||||
|                         released: new Date() | ||||
|                     }})); | ||||
|             }); | ||||
|  | ||||
|             source.addEventListener("request_deleted", function(e) { | ||||
|                 console.log("Removing deleted request #" + e.data); | ||||
|                 $("#request_" + e.data).remove(); | ||||
|             }); | ||||
|  | ||||
|             source.addEventListener("request_submitted", function(e) { | ||||
|                 console.log("Request submitted:", e.data); | ||||
|                 $.ajax({ | ||||
|                     method: "GET", | ||||
|                     url: "/api/request/" + e.data + "/", | ||||
|                     dataType: "json", | ||||
|                     success: function(request, status, xhr) { | ||||
|                         console.info(request); | ||||
|                         $("#pending_requests").prepend( | ||||
|                             nunjucks.render('request.html', { request: request })); | ||||
|                     } | ||||
|                 }); | ||||
|  | ||||
|             }); | ||||
|  | ||||
|             source.addEventListener("request_signed", function(e) { | ||||
|                 console.log("Request signed:", e.data); | ||||
|                 $("#request_" + e.data).slideUp("normal", function() { $(this).remove(); }); | ||||
|  | ||||
|                 $.ajax({ | ||||
|                     method: "GET", | ||||
|                     url: "/api/signed/" + e.data + "/", | ||||
|                     dataType: "json", | ||||
|                     success: function(certificate, status, xhr) { | ||||
|                         console.info(certificate); | ||||
|                         $("#signed_certificates").prepend( | ||||
|                             nunjucks.render('signed.html', { certificate: certificate })); | ||||
|                     } | ||||
|                 }); | ||||
|             }); | ||||
|  | ||||
|             source.addEventListener("certificate_revoked", function(e) { | ||||
|                 console.log("Removing revoked certificate #" + e.data); | ||||
|                 $("#certificate_" + e.data).slideUp("normal", function() { $(this).remove(); }); | ||||
|             }); | ||||
|  | ||||
|             $("#container").html(nunjucks.render('authority.html', { session: session, window: window })); | ||||
|  | ||||
|             $.ajax({ | ||||
|                 method: "GET", | ||||
|                 url: "/api/", | ||||
|                 url: "/api/lease/", | ||||
|                 dataType: "json", | ||||
|                 success: function(authority, status, xhr) { | ||||
|                     console.info("Got CA:", authority); | ||||
|  | ||||
|                     console.info("Opening EventSource from:", authority.event_channel); | ||||
|  | ||||
|                     var source = new EventSource(authority.event_channel); | ||||
|  | ||||
|                     source.onmessage = function(event) { | ||||
|                         console.log("Received server-sent event:", event); | ||||
|                 success: function(leases, status, xhr) { | ||||
|                     console.info("Got leases:", leases); | ||||
|                     for (var j = 0; j < leases.length; j++) { | ||||
|                         var $status = $("#signed_certificates [data-dn='" + leases[j].identity + "'] .status"); | ||||
|                         if (!$status.length) { | ||||
|                             console.info("Detected rogue client:", leases[j]); | ||||
|                             continue; | ||||
|                         } | ||||
|                         $status.html(nunjucks.render('status.html', { | ||||
|                             lease: { | ||||
|                                 address: leases[j].address, | ||||
|                                 identity: leases[j].identity, | ||||
|                                 acquired: new Date(leases[j].acquired).toLocaleString(), | ||||
|                                 released: leases[j].released ? new Date(leases[j].released).toLocaleString() : null | ||||
|                             }})); | ||||
|                     } | ||||
|  | ||||
|                     source.addEventListener("up-client", function(e) { | ||||
|                         console.log("Adding security association:" + e.data); | ||||
|                         var lease = JSON.parse(e.data); | ||||
|                         var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status"); | ||||
|                         $status.html(nunjucks.render('status.html', { | ||||
|                             lease: { | ||||
|                                 address: lease.address, | ||||
|                                 identity: lease.identity, | ||||
|                                 acquired: new Date(), | ||||
|                                 released: null | ||||
|                             }})); | ||||
|                     }); | ||||
|  | ||||
|                     source.addEventListener("down-client", function(e) { | ||||
|                         console.log("Removing security association:" + e.data); | ||||
|                         var lease = JSON.parse(e.data); | ||||
|                         var $status = $("#signed_certificates [data-dn='" + lease.identity + "'] .status"); | ||||
|                         $status.html(nunjucks.render('status.html', { | ||||
|                             lease: { | ||||
|                                 address: lease.address, | ||||
|                                 identity: lease.identity, | ||||
|                                 acquired: null, | ||||
|                                 released: new Date() | ||||
|                             }})); | ||||
|                     }); | ||||
|  | ||||
|                     source.addEventListener("request_deleted", function(e) { | ||||
|                         console.log("Removing deleted request #" + e.data); | ||||
|                         $("#request_" + e.data).remove(); | ||||
|                     }); | ||||
|  | ||||
|                     source.addEventListener("request_submitted", function(e) { | ||||
|                         console.log("Request submitted:", e.data); | ||||
|                         $.ajax({ | ||||
|                             method: "GET", | ||||
|                             url: "/api/request/lauri-c720p/", | ||||
|                             dataType: "json", | ||||
|                             success: function(request, status, xhr) { | ||||
|                                 console.info(request); | ||||
|                                 $("#pending_requests").prepend( | ||||
|                                     nunjucks.render('request.html', { request: request })); | ||||
|                     /* Set up search box */ | ||||
|                     $("#search").on("keyup", function() { | ||||
|                         var q = $("#search").val().toLowerCase(); | ||||
|                         $(".filterable").each(function(i, e) { | ||||
|                             if ($(e).attr("data-dn").toLowerCase().indexOf(q) >= 0) { | ||||
|                                 $(e).show(); | ||||
|                             } else { | ||||
|                                 $(e).hide(); | ||||
|                             } | ||||
|                         }); | ||||
|  | ||||
|                     }); | ||||
|  | ||||
|                     source.addEventListener("request_signed", function(e) { | ||||
|                         console.log("Request signed:", e.data); | ||||
|                         $("#request_" + e.data).slideUp("normal", function() { $(this).remove(); }); | ||||
|  | ||||
|                         $.ajax({ | ||||
|                             method: "GET", | ||||
|                             url: "/api/signed/lauri-c720p/", | ||||
|                             dataType: "json", | ||||
|                             success: function(certificate, status, xhr) { | ||||
|                                 console.info(certificate); | ||||
|                                 $("#signed_certificates").prepend( | ||||
|                                     nunjucks.render('signed.html', { certificate: certificate })); | ||||
|                             } | ||||
|                         }); | ||||
|                     }); | ||||
|  | ||||
|                     source.addEventListener("certificate_revoked", function(e) { | ||||
|                         console.log("Removing revoked certificate #" + e.data); | ||||
|                         $("#certificate_" + e.data).slideUp("normal", function() { $(this).remove(); }); | ||||
|                     }); | ||||
|  | ||||
|                     $("#container").html(nunjucks.render('authority.html', { authority: authority, session: session, window: window })); | ||||
|  | ||||
|                     $.ajax({ | ||||
|                         method: "GET", | ||||
|                         url: "/api/lease/", | ||||
|                         dataType: "json", | ||||
|                         success: function(leases, status, xhr) { | ||||
|                             console.info("Got leases:", leases); | ||||
|                             for (var j = 0; j < leases.length; j++) { | ||||
|                                 var $status = $("#signed_certificates [data-dn='" + leases[j].identity + "'] .status"); | ||||
|                                 if (!$status.length) { | ||||
|                                     console.info("Detected rogue client:", leases[j]); | ||||
|                                     continue; | ||||
|                                 } | ||||
|                                 $status.html(nunjucks.render('status.html', { | ||||
|                                     lease: { | ||||
|                                         address: leases[j].address, | ||||
|                                         identity: leases[j].identity, | ||||
|                                         acquired: new Date(leases[j].acquired).toLocaleString(), | ||||
|                                         released: leases[j].released ? new Date(leases[j].released).toLocaleString() : null | ||||
|                                     }})); | ||||
|                             } | ||||
|  | ||||
|                             /* Set up search box */ | ||||
|                             $("#search").on("keyup", function() { | ||||
|                                 var q = $("#search").val().toLowerCase(); | ||||
|                                 $(".filterable").each(function(i, e) { | ||||
|                                     if ($(e).attr("data-dn").toLowerCase().indexOf(q) >= 0) { | ||||
|                                         $(e).show(); | ||||
|                                     } else { | ||||
|                                         $(e).hide(); | ||||
|                                     } | ||||
|                                 }); | ||||
|                             }); | ||||
|                         } | ||||
|                     }); | ||||
|                 } | ||||
|             }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user