import { load } from "https://deno.land/std@0.224.0/dotenv/mod.ts"; import { Client } from 'npm:ldapts'; const dirname = new URL('.', import.meta.url).pathname; await load({ envPath: `${dirname}/.env`, export: true }); const opts = { url: Deno.env.get("LDAP_URL"), bindDN: Deno.env.get("LDAP_BIND_DN"), password: Deno.env.get("LDAP_PASSWORD"), searchDN: Deno.env.get("LDAP_SEARCH_DN"), relayUrl: Deno.args[0] } const client = new Client({ url: opts.url }); try { await client.bind(opts.bindDN, opts.password); const { searchEntries } = await client.search(opts.searchDN, { filter: `(nostrKey=*)`, attributes: ['nostrKey'] }); const pubkeys = searchEntries.map(e => e.nostrKey); const filter = JSON.stringify({ authors: pubkeys }); const p = Deno.run({ cmd: [ "strfry", "sync", opts.relayUrl, "--dir", "down", "--filter", filter ]}); const result = await p.status(); Deno.exit(result.code); } catch (ex) { console.error(ex); Deno.exit(1); }