diff options
| author | Autumn <git@autumnfo.rest> | 2026-05-17 17:22:58 +0100 |
|---|---|---|
| committer | Autumn <git@autumnfo.rest> | 2026-05-17 17:22:58 +0100 |
| commit | e7563787be5b3a9c1de66a7f4eb16ed09d9d4a21 (patch) | |
| tree | 2956aed96a4d1873ac997bc17ad224815ba4bbb5 /fetch.lua | |
| parent | 2bad2793f33c3c0879d3a8a36de327a6626c32ed (diff) | |
[main] added ability to fetch service & tidied up functions
Diffstat (limited to 'fetch.lua')
| -rw-r--r-- | fetch.lua | 88 |
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() |
