aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()