aboutsummaryrefslogtreecommitdiff
path: root/src/actions.lua
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
}