Software /
code /
prosody-modules
Annotate
mod_incidents_handling/incidents_handling/incidents_handling.lib.lua @ 913:f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
author | Marco Cirillo <maranda@lightwitch.org> |
---|---|
date | Sun, 17 Feb 2013 19:29:39 +0100 |
child | 1343:7dbde05b48a9 |
rev | line source |
---|---|
913
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
1 -- This contains the auxiliary functions for the Incidents Handling module. |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
2 -- (C) 2012-2013, Marco Cirillo (LW.Org) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
3 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
4 local pairs, ipairs, os_date, string, table, tonumber = pairs, ipairs, os.date, string, table, tonumber |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
5 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
6 local dataforms_new = require "util.dataforms".new |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
7 local st = require "util.stanza" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
8 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
9 local xmlns_inc = "urn:xmpp:incident:2" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
10 local xmlns_iodef = "urn:ietf:params:xml:ns:iodef-1.0" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
11 local my_host = nil |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
12 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
13 -- // Util and Functions // |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
14 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
15 local function ft_str() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
16 local d = os_date("%FT%T%z"):gsub("^(.*)(%+%d+)", function(dt, z) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
17 if z == "+0000" then return dt.."Z" else return dt..z end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
18 end) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
19 return d |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
20 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
21 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
22 local function get_incident_layout(i_type) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
23 local layout = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
24 title = (i_type == "report" and "Incident report form") or (i_type == "request" and "Request for assistance with incident form"), |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
25 instructions = "Started/Ended Time, Contacts, Sources and Targets of the attack are mandatory. See RFC 5070 for further format instructions.", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
26 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/commands" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
27 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
28 { name = "name", type = "hidden", value = my_host }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
29 { name = "entity", type ="text-single", label = "Remote entity to query" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
30 { name = "started", type = "text-single", label = "Incident Start Time" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
31 { name = "ended", type = "text-single", label = "Incident Ended Time" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
32 { name = "reported", type = "hidden", value = ft_str() }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
33 { name = "description", type = "text-single", label = "Description", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
34 desc = "Description syntax is: <lang (in xml:lang format)> <short description>" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
35 { name = "contacts", type = "text-multi", label = "Contacts", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
36 desc = "Contacts entries format is: <address> <type> <role> - separated by new lines" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
37 { name = "related", type = "text-multi", label = "Related Incidents", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
38 desc = "Related incidents entries format is: <CSIRT's FQDN> <Incident ID> - separated by new lines" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
39 { name = "impact", type = "text-single", label = "Impact Assessment", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
40 desc = "Impact assessment format is: <severity> <completion> <type>" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
41 { name = "sources", type = "text-multi", label = "Attack Sources", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
42 desc = "Attack sources format is: <address> <category> <count> <count-type>" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
43 { name = "targets", type = "text-multi", label = "Attack Targets", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
44 desc = "Attack target format is: <address> <category> <noderole>" } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
45 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
46 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
47 if i_type == "request" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
48 table.insert(layout, { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
49 name = "expectation", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
50 type = "list-single", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
51 label = "Expected action from remote entity", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
52 value = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
53 { value = "nothing", label = "No action" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
54 { value = "contact-sender", label = "Contact us, regarding the incident" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
55 { value = "investigate", label = "Investigate the entities listed into the incident" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
56 { value = "block-host", label = "Block the involved accounts" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
57 { value = "other", label = "Other action, filling the description field is required" } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
58 }}) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
59 table.insert(layout, { name = "description", type = "text-single", label = "Description" }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
60 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
61 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
62 return dataforms_new(layout) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
63 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
64 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
65 local function render_list(incidents) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
66 local layout = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
67 title = "Stored Incidents List", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
68 instructions = "You can select and view incident reports here, if a followup/response is possible it'll be noted in the step after selection.", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
69 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/commands" }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
70 { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
71 name = "ids", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
72 type = "list-single", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
73 label = "Stored Incidents", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
74 value = {} |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
75 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
76 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
77 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
78 -- Render stored incidents list |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
79 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
80 for id in pairs(incidents) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
81 table.insert(layout[2].value, { value = id, label = id }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
82 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
83 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
84 return dataforms_new(layout) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
85 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
86 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
87 local function insert_fixed(t, item) table.insert(t, { type = "fixed", value = item }) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
88 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
89 local function render_single(incident) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
90 local layout = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
91 title = string.format("Incident ID: %s - Friendly Name: %s", incident.data.id.text, incident.data.id.name), |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
92 instructions = incident.data.desc.text, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
93 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/commands" } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
94 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
95 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
96 insert_fixed(layout, "Start Time: "..incident.data.start_time) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
97 insert_fixed(layout, "End Time: "..incident.data.end_time) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
98 insert_fixed(layout, "Report Time: "..incident.data.report_time) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
99 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
100 insert_fixed(layout, "Contacts --") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
101 for _, contact in ipairs(incident.data.contacts) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
102 insert_fixed(layout, string.format("Role: %s Type: %s", contact.role, contact.type)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
103 if contact.jid then insert_fixed(layout, "--> JID: "..contact.jid..(contact.xmlns and ", XMLNS: "..contact.xmlns or "")) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
104 if contact.email then insert_fixed(layout, "--> E-Mail: "..contact.email) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
105 if contact.telephone then insert_fixed(layout, "--> Telephone: "..contact.telephone) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
106 if contact.postaladdr then insert_fixed(layout, "--> Postal Address: "..contact.postaladdr) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
107 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
108 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
109 insert_fixed(layout, "Related Activity --") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
110 for _, related in ipairs(incident.data.related) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
111 insert_fixed(layout, string.format("Name: %s ID: %s", related.name, related.text)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
112 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
113 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
114 insert_fixed(layout, "Assessment --") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
115 insert_fixed(layout, string.format("Language: %s Severity: %s Completion: %s Type: %s", |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
116 incident.data.assessment.lang, incident.data.assessment.severity, incident.data.assessment.completion, incident.data.assessment.type)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
117 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
118 insert_fixed(layout, "Sources --") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
119 for _, source in ipairs(incident.data.event_data.sources) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
120 insert_fixed(layout, string.format("Address: %s Counter: %s", source.address.text, source.counter.value)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
121 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
122 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
123 insert_fixed(layout, "Targets --") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
124 for _, target in ipairs(incident.data.event_data.targets) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
125 insert_fixed(layout, string.format("For NodeRole: %s", (target.noderole.cat == "ext-category" and target.noderole.ext) or targets.noderole.cat)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
126 for _, address in ipairs(target.addresses) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
127 insert_fixed(layout, string.format("---> Address: %s Type: %s", address.text, (address.cat == "ext-category" and address.ext) or address.cat)) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
128 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
129 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
130 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
131 if incident.data.expectation then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
132 insert_fixed(layout, "Expected Action: "..incident.data.expectation.action) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
133 if incident.data.expectation.desc then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
134 insert_fixed(layout, "Expected Action Description: "..incident.data.expectation.desc) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
135 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
136 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
137 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
138 if incident.type == "request" and incident.status == "open" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
139 table.insert(layout, { name = "response-datetime", type = "hidden", value = ft_str() }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
140 table.insert(layout, { name = "response", type = "text-single", label = "Respond to the request" }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
141 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
142 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
143 return dataforms_new(layout) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
144 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
145 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
146 local function get_type(var, typ) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
147 if typ == "counter" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
148 local count_type, count_ext = var, nil |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
149 if count_type ~= "byte" or count_type ~= "packet" or count_type ~= "flow" or count_type ~= "session" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
150 count_type ~= "alert" or count_type ~= "message" or count_type ~= "event" or count_type ~= "host" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
151 count_type ~= "site" or count_type ~= "organization" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
152 count_ext = count_type |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
153 count_type = "ext-type" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
154 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
155 return count_type, count_ext |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
156 elseif typ == "category" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
157 local cat, cat_ext = var, nil |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
158 if cat ~= "asn" or cat ~= "atm" or cat ~= "e-mail" or cat ~= "ipv4-addr" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
159 cat ~= "ipv4-net" or cat ~= "ipv4-net-mask" or cat ~= "ipv6-addr" or cat ~= "ipv6-net" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
160 cat ~= "ipv6-net-mask" or cat ~= "mac" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
161 cat_ext = cat |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
162 cat = "ext-category" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
163 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
164 return cat, cat_ext |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
165 elseif type == "noderole" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
166 local noderole_ext = nil |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
167 if cat ~= "client" or cat ~= "server-internal" or cat ~= "server-public" or cat ~= "www" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
168 cat ~= "mail" or cat ~= "messaging" or cat ~= "streaming" or cat ~= "voice" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
169 cat ~= "file" or cat ~= "ftp" or cat ~= "p2p" or cat ~= "name" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
170 cat ~= "directory" or cat ~= "credential" or cat ~= "print" or cat ~= "application" or |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
171 cat ~= "database" or cat ~= "infra" or cat ~= "log" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
172 noderole_ext = true |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
173 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
174 return noderole_ext |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
175 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
176 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
177 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
178 local function do_tag_mapping(tag, object) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
179 if tag.name == "IncidentID" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
180 object.id = { text = tag:get_text(), name = tag.attr.name } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
181 elseif tag.name == "StartTime" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
182 object.start_time = tag:get_text() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
183 elseif tag.name == "EndTime" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
184 object.end_time = tag:get_text() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
185 elseif tag.name == "ReportTime" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
186 object.report_time = tag:get_text() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
187 elseif tag.name == "Description" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
188 object.desc = { text = tag:get_text(), lang = tag.attr["xml:lang"] } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
189 elseif tag.name == "Contact" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
190 local jid = tag:get_child("AdditionalData").tags[1] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
191 local email = tag:get_child("Email") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
192 local telephone = tag:get_child("Telephone") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
193 local postaladdr = tag:get_child("PostalAddress") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
194 if not object.contacts then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
195 object.contacts = {} |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
196 object.contacts[1] = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
197 role = tag.attr.role, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
198 ext_role = (tag.attr["ext-role"] and true) or nil, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
199 type = tag.attr.type, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
200 ext_type = (tag.attr["ext-type"] and true) or nil, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
201 xmlns = jid.attr.xmlns, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
202 jid = jid:get_text(), |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
203 email = email, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
204 telephone = telephone, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
205 postaladdr = postaladdr |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
206 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
207 else |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
208 object.contacts[#object.contacts + 1] = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
209 role = tag.attr.role, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
210 ext_role = (tag.attr["ext-role"] and true) or nil, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
211 type = tag.attr.type, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
212 ext_type = (tag.attr["ext-type"] and true) or nil, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
213 xmlns = jid.attr.xmlns, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
214 jid = jid:get_text(), |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
215 email = email, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
216 telephone = telephone, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
217 postaladdr = postaladdr |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
218 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
219 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
220 elseif tag.name == "RelatedActivity" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
221 object.related = {} |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
222 for _, t in ipairs(tag.tags) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
223 if tag.name == "IncidentID" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
224 object.related[#object.related + 1] = { text = t:get_text(), name = tag.attr.name } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
225 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
226 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
227 elseif tag.name == "Assessment" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
228 local impact = tag:get_child("Impact") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
229 object.assessment = { lang = impact.attr.lang, severity = impact.attr.severity, completion = impact.attr.completion, type = impact.attr.type } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
230 elseif tag.name == "EventData" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
231 local source = tag:get_child("Flow").tags[1] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
232 local target = tag:get_child("Flow").tags[2] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
233 local expectation = tag:get_child("Flow").tags[3] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
234 object.event_data = { sources = {}, targets = {} } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
235 for _, t in ipairs(source.tags) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
236 local addr = t:get_child("Address") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
237 local cntr = t:get_child("Counter") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
238 object.event_data.sources[#object.event_data.sources + 1] = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
239 address = { cat = addr.attr.category, ext = addr.attr["ext-category"], text = addr:get_text() }, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
240 counter = { type = cntr.attr.type, ext_type = cntr.attr["ext-type"], value = cntr:get_text() } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
241 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
242 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
243 for _, entry in ipairs(target.tags) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
244 local noderole = { cat = entry:get_child("NodeRole").attr.category, ext = entry:get_child("NodeRole").attr["ext-category"] } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
245 local current = #object.event_data.targets + 1 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
246 object.event_data.targets[current] = { addresses = {}, noderole = noderole } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
247 for _, tag in ipairs(entry.tags) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
248 object.event_data.targets[current].addresses[#object.event_data.targets[current].addresses + 1] = { text = tag:get_text(), cat = tag.attr.category, ext = tag.attr["ext-category"] } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
249 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
250 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
251 if expectation then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
252 object.event_data.expectation = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
253 action = expectation.attr.action, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
254 desc = expectation:get_child("Description") and expectation:get_child("Description"):get_text() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
255 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
256 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
257 elseif tag.name == "History" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
258 object.history = {} |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
259 for _, t in ipairs(tag.tags) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
260 object.history[#object.history + 1] = { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
261 action = t.attr.action, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
262 date = t:get_child("DateTime"):get_text(), |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
263 desc = t:get_chilld("Description"):get_text() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
264 } |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
265 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
266 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
267 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
268 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
269 local function stanza_parser(stanza) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
270 local object = {} |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
271 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
272 if stanza:get_child("report", xmlns_inc) then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
273 local report = st.clone(stanza):get_child("report", xmlns_inc):get_child("Incident", xmlns_iodef) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
274 for _, tag in ipairs(report.tags) do do_tag_mapping(tag, object) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
275 elseif stanza:get_child("request", xmlns_inc) then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
276 local request = st.clone(stanza):get_child("request", xmlns_inc):get_child("Incident", xmlns_iodef) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
277 for _, tag in ipairs(request.tags) do do_tag_mapping(tag, object) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
278 elseif stanza:get_child("response", xmlns_inc) then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
279 local response = st.clone(stanza):get_child("response", xmlns_inc):get_child("Incident", xmlns_iodef) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
280 for _, tag in ipairs(response.tags) do do_tag_mapping(tag, object) end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
281 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
282 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
283 return object |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
284 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
285 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
286 local function stanza_construct(id) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
287 if not id then return nil |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
288 else |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
289 local object = incidents[id].data |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
290 local s_type = incidents[id].type |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
291 local stanza = st.iq():tag(s_type or "report", { xmlns = xmlns_inc }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
292 stanza:tag("Incident", { xmlns = xmlns_iodef, purpose = incidents[id].purpose }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
293 :tag("IncidentID", { name = object.id.name }):text(object.id.text):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
294 :tag("StartTime"):text(object.start_time):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
295 :tag("EndTime"):text(object.end_time):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
296 :tag("ReportTime"):text(object.report_time):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
297 :tag("Description", { ["xml:lang"] = object.desc.lang }):text(object.desc.text):up():up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
298 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
299 local incident = stanza:get_child(s_type, xmlns_inc):get_child("Incident", xmlns_iodef) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
300 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
301 for _, contact in ipairs(object.contacts) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
302 incident:tag("Contact", { role = (contact.ext_role and "ext-role") or contact.role, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
303 ["ext-role"] = (contact.ext_role and contact.role) or nil, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
304 type = (contact.ext_type and "ext-type") or contact.type, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
305 ["ext-type"] = (contact.ext_type and contact.type) or nil }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
306 :tag("Email"):text(contact.email):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
307 :tag("Telephone"):text(contact.telephone):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
308 :tag("PostalAddress"):text(contact.postaladdr):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
309 :tag("AdditionalData") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
310 :tag("jid", { xmlns = contact.xmlns }):text(contact.jid):up():up():up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
311 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
312 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
313 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
314 incident:tag("RelatedActivity"):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
315 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
316 for _, related in ipairs(object.related) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
317 incident:get_child("RelatedActivity") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
318 :tag("IncidentID", { name = related.name }):text(related.text):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
319 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
320 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
321 incident:tag("Assessment") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
322 :tag("Impact", { |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
323 lang = object.assessment.lang, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
324 severity = object.assessment.severity, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
325 completion = object.assessment.completion, |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
326 type = object.assessment.type |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
327 }):up():up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
328 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
329 incident:tag("EventData") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
330 :tag("Flow") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
331 :tag("System", { category = "source" }):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
332 :tag("System", { category = "target" }):up():up():up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
333 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
334 local e_data = incident:get_child("EventData") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
335 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
336 local sources = e_data:get_child("Flow").tags[1] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
337 local targets = e_data:get_child("Flow").tags[2] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
338 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
339 for _, source in ipairs(object.event_data.sources) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
340 sources:tag("Node") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
341 :tag("Address", { category = source.address.cat, ["ext-category"] = source.address.ext }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
342 :text(source.address.text):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
343 :tag("Counter", { type = source.counter.type, ["ext-type"] = source.counter.ext_type }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
344 :text(source.counter.value):up():up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
345 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
346 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
347 for _, target in ipairs(object.event_data.targets) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
348 targets:tag("Node"):up() ; local node = targets.tags[#targets.tags] |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
349 for _, address in ipairs(target.addresses) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
350 node:tag("Address", { category = address.cat, ["ext-category"] = address.ext }):text(address.text):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
351 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
352 node:tag("NodeRole", { category = target.noderole.cat, ["ext-category"] = target.noderole.ext }):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
353 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
354 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
355 if object.event_data.expectation then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
356 e_data:tag("Expectation", { action = object.event_data.expectation.action }):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
357 if object.event_data.expectation.desc then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
358 local expectation = e_data:get_child("Expectation") |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
359 expectation:tag("Description"):text(object.event_data.expectation.desc):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
360 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
361 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
362 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
363 if object.history then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
364 local history = incident:tag("History"):up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
365 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
366 for _, item in ipairs(object.history) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
367 history:tag("HistoryItem", { action = item.action }) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
368 :tag("DateTime"):text(item.date):up() |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
369 :tag("Description"):text(item.desc):up():up(); |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
370 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
371 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
372 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
373 -- Sanitize contact empty tags |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
374 for _, tag in ipairs(incident) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
375 if tag.name == "Contact" then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
376 for i, check in ipairs(tag) do |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
377 if (check.name == "Email" or check.name == "PostalAddress" or check.name == "Telephone") and |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
378 not check:get_text() then |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
379 table.remove(tag, i) |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
380 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
381 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
382 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
383 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
384 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
385 if s_type == "request" then stanza.attr.type = "get" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
386 elseif s_type == "response" then stanza.attr.type = "set" |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
387 else stanza.attr.type = "set" end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
388 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
389 return stanza |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
390 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
391 end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
392 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
393 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
394 _M = {} -- wraps methods into the library. |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
395 _M.ft_str = ft_str |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
396 _M.get_incident_layout = get_incident_layout |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
397 _M.render_list = render_list |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
398 _M.render_single = render_single |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
399 _M.get_type = get_type |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
400 _M.stanza_parser = stanza_parser |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
401 _M.stanza_construct = stanza_construct |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
402 _M.set_my_host = function(host) my_host = host end |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
403 |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
404 return _M |
f42837829d5f
mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff
changeset
|
405 |