Annotate

util/helpers.lua @ 5901:1d13f73af58e

certmanager: Default to using the server's cipher preference order by default, as clients have been shown to commonly select weak and insecure ciphers even when they support stronger ones
author Matthew Wild <mwild1@gmail.com>
date Sat, 09 Nov 2013 17:50:19 +0000
parent 5415:9e7aa5b47bdf
child 5776:bd0ff8ae98a8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1964
101a8df23b29 util.helpers: Add copyright header
Matthew Wild <mwild1@gmail.com>
parents: 1959
diff changeset
1 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1964
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 1964
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
1964
101a8df23b29 util.helpers: Add copyright header
Matthew Wild <mwild1@gmail.com>
parents: 1959
diff changeset
4 --
101a8df23b29 util.helpers: Add copyright header
Matthew Wild <mwild1@gmail.com>
parents: 1959
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
101a8df23b29 util.helpers: Add copyright header
Matthew Wild <mwild1@gmail.com>
parents: 1959
diff changeset
6 -- COPYING file in the source package for more information.
101a8df23b29 util.helpers: Add copyright header
Matthew Wild <mwild1@gmail.com>
parents: 1959
diff changeset
7 --
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
4681
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
9 local debug = require "util.debug";
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
10
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 module("helpers", package.seeall);
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 -- Helper functions for debugging
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local log = require "util.logger".init("util.debug");
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16
5415
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
17 function log_host_events(host)
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
18 return log_events(prosody.hosts[host].events, host);
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
19 end
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
20
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
21 function revert_log_host_events(host)
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
22 return revert_log_events(prosody.hosts[host].events);
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
23 end
9e7aa5b47bdf util.helpers: Helper helpers to log host events
Matthew Wild <mwild1@gmail.com>
parents: 4705
diff changeset
24
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 function log_events(events, name, logger)
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 local f = events.fire_event;
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 if not f then
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 error("Object does not appear to be a util.events object");
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 logger = logger or log;
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 name = name or tostring(events);
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 function events.fire_event(event, ...)
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 logger("debug", "%s firing event: %s", name, event);
1795
0e933d6f2c31 util.helpers: It would be a good idea to fire an event when we say we are
Matthew Wild <mwild1@gmail.com>
parents: 1531
diff changeset
34 return f(event, ...);
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 end
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 events[events.fire_event] = f;
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 return events;
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 end
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 function revert_log_events(events)
4536
285450536ec0 util.helpers: After nearly 'fixing' this code, I conclude it instead only deserves a bigger smile
Matthew Wild <mwild1@gmail.com>
parents: 2923
diff changeset
41 events.fire_event, events[events.fire_event] = events[events.fire_event], nil; -- :))
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43
4705
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
44 function show_events(events, specific_event)
4681
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
45 local event_handlers = events._handlers;
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
46 local events_array = {};
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
47 local event_handler_arrays = {};
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
48 for event in pairs(events._event_map) do
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
49 local handlers = event_handlers[event];
4705
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
50 if handlers and (event == specific_event or not specific_event) then
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
51 table.insert(events_array, event);
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
52 local handler_strings = {};
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
53 for i, handler in ipairs(handlers) do
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
54 local upvals = debug.string_from_var_table(debug.get_upvalues_table(handler));
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
55 handler_strings[i] = " "..i..": "..tostring(handler)..(upvals and ("\n "..upvals) or "");
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
56 end
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
57 event_handler_arrays[event] = handler_strings;
4681
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
58 end
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
59 end
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
60 table.sort(events_array);
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
61 local i = 1;
4705
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
62 while i <= #events_array do
4681
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
63 local handlers = event_handler_arrays[events_array[i]];
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
64 for j=#handlers, 1, -1 do
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
65 table.insert(events_array, i+1, handlers[j]);
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
66 end
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
67 if i > 1 then events_array[i] = "\n"..events_array[i]; end
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
68 i = i + #handlers + 1
4705
447f5a94792d util.helpers: show_events(): Make more robust, and allow filtering results to a specific event
Matthew Wild <mwild1@gmail.com>
parents: 4681
diff changeset
69 end
4681
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
70 return table.concat(events_array, "\n");
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
71 end
3299223bbed5 util.helpers: Add show_events(), to show the events and handlers in a util.events object
Matthew Wild <mwild1@gmail.com>
parents: 4536
diff changeset
72
1959
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
73 function get_upvalue(f, get_name)
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
74 local i, name, value = 0;
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
75 repeat
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
76 i = i + 1;
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
77 name, value = debug.getupvalue(f, i);
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
78 until name == get_name or name == nil;
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
79 return value;
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
80 end
f56670ce64de util.helpers: Add get_upvalue(function, name) helper
Matthew Wild <mwild1@gmail.com>
parents: 1795
diff changeset
81
1531
21051377f11b util.helpers: New util library to aid with debugging, etc.
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 return _M;