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
|
- ./docker/strfry/strfry.conf:/etc/strfry.conf
|
||||||
- ./extras/strfry/ldap-policy.ts:/opt/ldap-policy.ts
|
- ./extras/strfry/ldap-policy.ts:/opt/ldap-policy.ts
|
||||||
- ./extras/strfry/strfry-policy.ts:/opt/strfry-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
|
- strfry-data:/var/lib/strfry
|
||||||
networks:
|
networks:
|
||||||
- external_network
|
- 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