aboutsummaryrefslogtreecommitdiff
path: root/fetch.lua
diff options
context:
space:
mode:
authorAutumn <git@autumnfo.rest>2026-05-17 17:22:58 +0100
committerAutumn <git@autumnfo.rest>2026-05-17 17:22:58 +0100
commite7563787be5b3a9c1de66a7f4eb16ed09d9d4a21 (patch)
tree2956aed96a4d1873ac997bc17ad224815ba4bbb5 /fetch.lua
parent2bad2793f33c3c0879d3a8a36de327a6626c32ed (diff)
[main] added ability to fetch service & tidied up functions
Diffstat (limited to 'fetch.lua')
-rw-r--r--fetch.lua88
1 files changed, 0 insertions, 88 deletions
diff --git a/fetch.lua b/fetch.lua
deleted file mode 100644
index 72b579a..0000000
--- a/fetch.lua
+++ /dev/null
@@ -1,88 +0,0 @@
---
--- ~~~ 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/variables")
-local Servers = require("src/pawsd/servers")
-require("src/utils")
-
-local pawsd = {}
-pawsd.response = require("src/pawsd/metadata")
-pawsd.signature = require("src/pawsd/signature")
-pawsd.service = require("src/pawsd/service")
-
-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.REQUEST .. PawSD.Version .. PawSD.Verbs.FETCH_SERVICE .. server.keyalg .. "0020" .. server.key .. index)
-client:send(request)
-
--- print response
-local response = {}
-
-while true do
- local packet, status = client:receive(1)
-
- -- if packet then print(response) end
- table.insert(response, packet)
- if status == "closed" then break end
-end
-
--- check that the response is correct
-local responseMagic = pawsd.response.type(response)
-if not responseMagic == PawSD.Magic.RESPONSE then
- error("invalid response")
-end
-
-print("R> Response Magic: " .. responseMagic)
-
--- check that the status is okay
-local responseStatus = pawsd.response.status(response)
-if not responseStatus == PawSD.Responses.OK then
- error("unsuccessful request")
-end
-
-print("R> Response Status: " .. responseStatus)
-
--- get signature information
-local responseSignature = pawsd.signature.get(response)
-local responseSignatureValid = pawsd.signature.validate(responseSignature, server.key)
-
-print("R> Signature: " .. responseSignature)
-
-if responseSignatureValid then
- print("R> Signature Validity: VALID")
-else
- print("R> Signature Validity: INVALID")
-end
-
--- get service info
-local responseIndex = pawsd.service.index(response)
-local responseFlags = pawsd.service.flags(response)
-
-print("\nR> Index: " .. responseIndex)
-print("R> Flags: " .. responseFlags)
-
--- get number of records
-local responseRecords = pawsd.service.records.all(response)
-
--- close connection
-client:close()