node-red-contrib-trustpoint
Version:
Node-RED nodes for EST (Enrollment over Secure Transport) and certificate operations.
129 lines (108 loc) • 4.8 kB
HTML
<script type="text/html" data-template-name="trustpoint-simpleenroll">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Node name">
</div>
<div class="form-row">
<label for="node-input-estHost"><i class="fa fa-link"></i> EST Base URL</label>
<input type="text" id="node-input-estHost" placeholder="https://localhost:8443/.well-known/est/simpleenroll">
</div>
<div class="form-row">
<label for="node-input-useBasic"><i class="fa fa-lock"></i> Use Basic Auth</label>
<input type="checkbox" id="node-input-useBasic" style="width:auto;">
</div>
<div class="form-row">
<label for="node-input-username"><i class="fa fa-user"></i> Username</label>
<input type="text" id="node-input-username" placeholder="Basic Auth username">
</div>
<div class="form-row">
<label for="node-input-password"><i class="fa fa-key"></i> Password</label>
<input type="password" id="node-input-password" placeholder="Basic Auth password">
</div>
<div class="form-row">
<label for="node-input-useMtls"><i class="fa fa-certificate"></i> Use mTLS</label>
<input type="checkbox" id="node-input-useMtls" style="width:auto;">
</div>
<div class="form-row">
<label for="node-input-clientCert"><i class="fa fa-file"></i> Client Certificate</label>
<input type="text" id="node-input-clientCert" placeholder="Path or msg.clientCert">
</div>
<div class="form-row">
<label for="node-input-clientKey"><i class="fa fa-key"></i> Client Private Key</label>
<input type="text" id="node-input-clientKey" placeholder="Path or msg.clientKey">
</div>
<div class="form-row">
<label for="node-input-serverCert"><i class="fa fa-shield"></i> Server Certificate </label>
<input type="text" id="node-input-serverCert" placeholder="Path or msg.serverCert">
</div>
<div class="form-row">
<label for="node-input-rejectUnauthorized">
<input type="checkbox" id="node-input-rejectUnauthorized" style="width:auto;" checked>
Reject self-signed certificates (recommended)
</label>
</div>
<div id="enroll-preview" class="validation-result">
<div class="validation-box" id="enroll-preview-box">
This node sends a CSR to the EST server using SimpleEnroll. Provide <code>msg.payload</code> with a valid CSR (Buffer or PEM string).
</div>
</div>
</script>
<style>
.validation-box {
padding: 10px;
border-radius: 5px;
margin-top: 10px;
font-weight: normal;
}
.validation-info {
background-color: #4cafaf;
color: white;
}
</style>
<script type="text/javascript">
(function () {
RED.nodes.registerType('trustpoint-simpleenroll', {
category: 'Trustpoint',
color: '#3e91f7',
defaults: {
name: { value: "" },
estHost: { value: "" },
useBasic: { value: false },
username: { value: "" },
password: { value: "" },
useMtls: { value: false },
clientCert: { value: "" },
clientKey: { value: "" },
serverCert: { value: "" },
serverKey: { value: "" },
rejectUnauthorized: { value: true }
},
inputs: 1,
outputs: 1,
icon: "font-awesome/fa-exchange",
label: function () {
return this.name || "trustpoint-simpleenroll";
},
labelStyle: function () {
return "fill: white; font-weight: bold;";
},
oneditprepare: function () {
function toggleAuthFields() {
const useBasic = $("#node-input-useBasic").is(":checked");
$("#node-input-username").prop("disabled", !useBasic);
$("#node-input-password").prop("disabled", !useBasic);
}
function toggleMtlsFields() {
const useMtls = $("#node-input-useMtls").is(":checked");
$("#node-input-clientCert").prop("disabled", !useMtls);
$("#node-input-clientKey").prop("disabled", !useMtls);
}
$("#node-input-useBasic").on("change", toggleAuthFields);
$("#node-input-useMtls").on("change", toggleMtlsFields);
toggleAuthFields();
toggleMtlsFields();
$("#enroll-preview-box").addClass("validation-info");
}
});
})();
</script>