aboutsummaryrefslogtreecommitdiff
path: root/fetch.lua
blob: 59c8e3cf07bf167140ea1dd8311f518c1258d319 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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()