OverviewFilesCommitsIssuesDocsReleasesPeers

apds commits / fd3ea00

move dovepub code into apds
fd3ea0079f0c3c95d3592480746a0f777adaa765
by Everett Bogue <ev@evbogue.com> · 2025-10-19T11:53:28.000Z

Changed files (3) +74 -4

apds.js +0 -2
……@@ -79,7 +79,6 @@ apds.keypair = async () => {
7979
8080apds.pubkey = async () => {
8181 const keypair = await apds.keypair()
82 console.log(keypair)
8382 if (keypair) {
8483 return keypair.substring(0, 44)
8584 }
……@@ -105,7 +104,6 @@ apds.hash = async (data) => { return await an.hash(data) }
105104apds.sign = async (data) => {
106105 const hash = await apds.make(data)
107106 const sig = await an.sign(hash, await apds.keypair())
108 console.log(sig)
109107 await apds.add(sig)
110108 const protocolMsg = await apds.make(sig)
111109
db.json +3 -0
……@@ -0,0 +1,3 @@
1{
2 "ev": ["EVxe89AeRwmTT0hfrT7sHe0wAuzvH9Yvg9TFUgqPh4M=", "evV0NdGf55+k5xho0oLB9zINdI+cfQ+iUTDeK49Ml8U=", "evSFOKnXaF9ZWSsff8bVfXP6+XnGZUj8XNp6bca590k="]
3}
serve.js +71 -2
……@@ -1,5 +1,74 @@
1import db from './db.json' with { type: 'json'}
12import { serveDir } from 'https://deno.land/std/http/file_server.ts'
3import { apds } from './apds.js'
24
3Deno.serve((r) => {
4 return serveDir(r, {quiet: 'True'})
5await apds.start('apdsv1')
6
7if (!await apds.pubkey()) {
8 const keypair = await apds.generate()
9 await apds.put('keypair', keypair)
10 console.log('New keypair generated, your pubkey: ' + await apds.pubkey())
11} else {
12 console.log('apdsbot started, your pubkey: ' + await apds.pubkey())
13}
14
15const apdsbot = async (ws) => {
16 ws.onopen = async () => {
17 console.log('CONNECTED!')
18 }
19 ws.onmessage = async (m) => {
20 console.log('RECEIVED:' + m.data)
21 if (m.data.length === 44) {
22 const latest = await apds.getLatest(m.data)
23 if (latest) { ws.send(latest.sig) }
24 const got = await apds.get(m.data)
25 if (got) { ws.send(got) }
26 }
27 if (m.data.length != 44) {
28 await apds.make(m.data)
29 await apds.add(m.data)
30 }
31 }
32 ws.onclose = () => {
33 console.log('DISCONNECTED!')
34 }
35}
36
37const directory = async (r) => {
38 const url = new URL(r.url)
39 const key = url.pathname.substring(1)
40 const header = new Headers()
41 header.append("Content-Type", "application/json")
42 header.append("Access-Control-Allow-Origin", "*")
43 if (db[key]) {
44 const ar = db[key]
45 return new Response(JSON.stringify(ar), {headers: header})
46 }
47 if (await apds.getLatest(key)) {
48 const latest = await apds.getLatest(key)
49 if (!latest.text) {
50 const text = await apds.get(latest.opened.substring(13))
51 latest.text = text.value
52 }
53 return new Response(JSON.stringify(latest), {headers: header})
54 }
55 else if (key != '' && await apds.query(key)) {
56 const q = await apds.query(key)
57 return new Response(JSON.stringify(q), {headers: header})
58 } else {
59 return serveDir(r, {quiet: 'True'})
60 }
61}
62
63Deno.serve(
64 {port: 9000},
65 async (r) => {
66 try {
67 const { socket, response } = Deno.upgradeWebSocket(r)
68 await apdsbot(socket)
69 return response
70 } catch (err) {}
71 try {
72 return await directory(r)
73 } catch (err) {console.log(err)}
574})