65 lines
2.0 KiB
TypeScript
Executable File
65 lines
2.0 KiB
TypeScript
Executable File
#!/usr/bin/env runts -- --allow-env --allow-import --allow-net
|
|
|
|
import { parseArgs } from "jsr:@std/cli/parse-args";
|
|
import { encryptEcdhP256 } from "https://global.hatter.ink/script/get/@0/deno-wrapkey-mod.ts";
|
|
import { log } from "https://global.hatter.ink/script/get/@1/deno-commons-mod.ts";
|
|
import { fetchWithTimoutAndAutoProxy } from "https://global.hatter.ink/script/get/@0/deno-fetch-auto-proxy-mod.ts";
|
|
|
|
const endpoint = Deno.env.get("POST_ENCRYPTED_NOTE_ENDPOINT");
|
|
const publicKeyPointHex = Deno.env.get("ENCRYPTION_PUBLIC_KEY_POINT_HEX");
|
|
|
|
if (!endpoint || !publicKeyPointHex) {
|
|
log.error("Endpoint and public key point hex must both assigned.");
|
|
if (!endpoint) {
|
|
log.info("POST_ENCRYPTED_NOTE_ENDPOINT must be assigned.");
|
|
}
|
|
if (!publicKeyPointHex) {
|
|
log.info("ENCRYPTION_PUBLIC_KEY_POINT_HEX must be assigned.");
|
|
}
|
|
Deno.exit(1);
|
|
}
|
|
|
|
const flags = parseArgs(Deno.args, {
|
|
boolean: ["help", "post-message"],
|
|
string: ["title"],
|
|
});
|
|
|
|
if (flags.help) {
|
|
console.log("post-note.ts [--post-message] [--title <title>] <message>");
|
|
Deno.exit(0);
|
|
}
|
|
|
|
if (flags._.length === 0) {
|
|
log.error("Requires message.");
|
|
Deno.exit(1);
|
|
}
|
|
|
|
const args = [];
|
|
if (flags.title) {
|
|
const encryptedTitle = await encryptEcdhP256(
|
|
"k",
|
|
publicKeyPointHex,
|
|
new TextEncoder().encode(flags.title),
|
|
);
|
|
args.push(`title=${encodeURIComponent(encryptedTitle.toString())}`);
|
|
}
|
|
const encryptedMessage = await encryptEcdhP256(
|
|
"k",
|
|
publicKeyPointHex,
|
|
new TextEncoder().encode(flags._.join("\n")),
|
|
);
|
|
args.push(`memo=${encodeURIComponent(encryptedMessage.toString())}`);
|
|
|
|
if (flags["post-message"]) {
|
|
args.push("postMessage=true");
|
|
}
|
|
|
|
const response = await fetchWithTimoutAndAutoProxy(
|
|
`${endpoint}?${args.join("&")}`,
|
|
);
|
|
|
|
console.info(response.status, await response.json());
|
|
|
|
// @SCRIPT-SIGNATURE-V1: yk-r1.ES256.20250705T082352+08:00.MEUCIQCXIiNRCQYEV3S5tDmu
|
|
// j/1mMjlNjHne9gWjxNJuJuz8pQIgNtTvQ4XwngDgNSAGYCUDCgB7abitnVUsG+NRVwJJurw=
|