blob: 007d978caffaa04bccce590933a71c1029f60ddf (
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
--
-- ~~~ selenepaw actions
--
require("src/utils")
-- load help messages
local help = require("src/help")
-- load pawsd
local Servers = require("src/pawsd/servers")
local pawsd = {}
pawsd.response = require("src/pawsd/metadata")
pawsd.service = require("src/pawsd/service")
local PawSD = require("src/pawsd/variables")
local send = require("src/pawsd/send")
-- 0000: echo
function echo ()
-- check length
if not (#arg == 3) then
help.echo()
return
end
-- get server name
local server = Servers[arg[2]]
if not server then
print("\nE> Error: server not found.\n")
return
end
-- log temporary warning message
print("\nW> Warning: this currently does not work I think.\n")
-- send request
local request = PawSD.Verbs.ECHO .. string.tohex(arg[3])
local response = send(server, request)
-- log response
print(response)
end
-- 0001: fetch service
function fetchservice ()
-- check length
if not (#arg == 3) then
help.fetchservice ()
return
end
-- get server name
local server = Servers[arg[2]]
if not server then
print("\nE> Error: server not found.\n")
return
end
-- send request
local request = PawSD.Verbs.FETCH_SERVICE .. server.keyalg .. "0020" .. server.key .. arg[3]
local response = send(server, request)
-- check response
local valid = pawsd.response.validate(response)
if not valid then
print("\nE> Error: invalid request.\n")
return
end
-- todo: validate signature
-- get records
local records = pawsd.service.records.all(response)
-- log records
for recordindex = 1, #records, 1 do
for recordtagindex = 1, #records[recordindex], 1 do
print(table.dump(records[recordindex][recordtagindex]))
end
end
end
-- return
return {
echo = echo,
fetchservice = fetchservice
}
|