aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutumn <git@autumnfo.rest>2026-05-16 18:36:48 +0100
committerAutumn <git@autumnfo.rest>2026-05-16 18:36:48 +0100
commita1a0d46c8865f4e3fc28cc8aab41dc7b5f4a31d4 (patch)
treec4f0ef6590d740ec6269d2cbfb0245787d5d936c
parentfc5f00a9fcfb50e02d7fc447a19e522b5b86f55f (diff)
[fetch] added basic fetching utility
-rw-r--r--fetch.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/fetch.lua b/fetch.lua
new file mode 100644
index 0000000..59c8e3c
--- /dev/null
+++ b/fetch.lua
@@ -0,0 +1,42 @@
+--
+-- ~~~ fetch a pawsd service
+--
+
+-- require a name & service index to fetch
+if not arg[1] or not arg[2] then
+ error("server name & index required")
+end
+
+-- imports
+local PawSD = require("src/pawsd")
+local Servers = require("src/servers")
+require("src/utils")
+
+local socket = require("socket")
+local client = assert(socket.tcp())
+
+-- get arguments & check validity
+local server = Servers[arg[1]]
+local index = arg[2]
+
+if not server then
+ error("server not found")
+end
+
+-- connect to client
+client:connect(server.host, server.port)
+
+-- send request
+local request = string.fromhex(PawSD.Magic .. PawSD.Version .. PawSD.Verbs.FETCH_SERVICE .. server.keyalg .. "0020" .. server.key .. index)
+client:send(request)
+
+-- print response
+while true do
+ local response, status = client:receive(1)
+
+ if response then print(response) end
+ if status == "closed" then break end
+end
+
+-- close connection
+client:close()