diff --git a/static/functions/keys/ssh.js b/static/functions/keys/ssh.js new file mode 100644 index 0000000..d780e80 --- /dev/null +++ b/static/functions/keys/ssh.js @@ -0,0 +1,44 @@ +const SSH_PUBKEYS = { + devices: { + desktop: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGBaSKoWYuR43fxRPy31P/X/2Ri2hYUZTjKiLBRDoa1F", + laptop: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGEqeWe+pVp3rTsmHr9v5Qcb+niHXihJxwVKcc7p6EXz", + tablet: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8oqpyU3UW9nLzhTFO6AnDvG2Gf/UQGbB0xgtT8JMmr", + phone: "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMbNW3x0Cx04MybxQo5FptZhdjiFJjKITtq67KqrDXAN+jepJwdIG6TUJzuJddztuYIsvPAoQPpiQVSPyC8y51Y=", + }, + others: [ + "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIAkdmKF1cYQTW7cfK7TYC5iVBsAg5g3SRJqlqo2NixHdAAAABHNzaDo=" + ] +} + +export function onRequest(context) { + let request_url = new URL(context.request.url); + + // Check request flags + let add_host_metadata = request_url.searchParams.has("hosts"); + let add_markers = request_url.searchParams.has("markers"); + + // Construct the output + let output = ""; + for (let key in SSH_PUBKEYS.others) { + output += `${SSH_PUBKEYS.others[key]}\n`; + } + for (let device in SSH_PUBKEYS.devices) { + output += SSH_PUBKEYS.devices[device]; + if (add_host_metadata) { + output += ` ewpratten@ewpratten-${device}\n`; + } else { + output += "\n"; + } + } + + // Add markers if needed + if (add_markers) { + output = `\n# --- BEGIN EWPRATTEN SSH KEYS ---\n${output}\n# --- END EWPRATTEN SSH KEYS ---\n\n`; + } + + return new Response(output, { + headers: { + "Content-Type": "text/plain", + }, + }); +}