mod_incidents_handling/incidents_handling/incidents_handling.lib.lua
author Matthew Wild <mwild1@gmail.com>
Tue, 27 Sep 2022 18:23:42 +0100
changeset 5064 bc491065c221
parent 1343 7dbde05b48a9
permissions -rw-r--r--
mod_sasl2_bind2, mod_sasl2_sm: Remove bind2 <features/> wrapper element This was dropped from the spec. It's more consistent with SASL2.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    16
	local d = os_date("%FT%T%z"):gsub("^(.*)(%+%d+)", function(dt, z)
913
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" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    27
913
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" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    37
		{ name = "related", type = "text-multi", label = "Related Incidents",
913
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" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    39
		{ name = "impact", type = "text-single", label = "Impact Assessment",
913
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>" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    41
		{ name = "sources", type = "text-multi", label = "Attack Sources",
913
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>" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    43
		{ name = "targets", type = "text-multi", label = "Attack Targets",
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    48
		table.insert(layout, {
913
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" },
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
    70
		{
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   109
	insert_fixed(layout, "Related Activity --")
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   208
			object.contacts[#object.contacts + 1] = {
913
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")
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   229
		object.assessment = { lang = impact.attr.lang, severity = impact.attr.severity, completion = impact.attr.completion, type = impact.attr.type }
913
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 }
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   247
			for _, tag in ipairs(entry.tags) do
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   251
		if expectation then
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   252
			object.event_data.expectation = {
913
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()
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   255
			}
913
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 = {}
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   271
913
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();
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   298
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   299
		local incident = stanza:get_child(s_type, xmlns_inc):get_child("Incident", xmlns_iodef)
913
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()
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   311
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   317
			incident:get_child("RelatedActivity")
913
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")
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   322
			:tag("Impact", {
913
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();
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   365
913
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();
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   370
			end
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   379
						table.remove(tag, i)
913
f42837829d5f mod_incidents_handling: commiting its auxiliary library.
Marco Cirillo <maranda@lightwitch.org>
parents:
diff changeset
   380
					end
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   381
				end
913
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"
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   387
		else stanza.attr.type = "set" end
913
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
1343
7dbde05b48a9 all the things: Remove trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 913
diff changeset
   391
end
913
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