Add script for syncing notes from remote relays
This commit is contained in:
parent
433ac4dc8e
commit
61cb8f4941
@ -113,6 +113,7 @@ services:
|
||||
- ./docker/strfry/strfry.conf:/etc/strfry.conf
|
||||
- ./extras/strfry/ldap-policy.ts:/opt/ldap-policy.ts
|
||||
- ./extras/strfry/strfry-policy.ts:/opt/strfry-policy.ts
|
||||
- ./extras/strfry/strfry-sync.ts:/opt/strfry-sync.ts
|
||||
- strfry-data:/var/lib/strfry
|
||||
networks:
|
||||
- external_network
|
||||
|
39
extras/strfry/strfry-sync.ts
Normal file
39
extras/strfry/strfry-sync.ts
Normal file
@ -0,0 +1,39 @@
|
||||
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);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user