chook 1.0.1.b2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGES.md +21 -0
- data/README.md +243 -36
- data/bin/chook-server +29 -1
- data/data/chook.conf.example +104 -0
- data/data/sample_handlers/RestAPIOperation.rb +12 -8
- data/data/sample_handlers/SmartGroupComputerMembershipChange.rb +3 -6
- data/data/sample_jsons/SmartGroupComputerMembershipChange.json +3 -1
- data/data/sample_jsons/SmartGroupMobileDeviceMembershipChange.json +3 -1
- data/lib/chook/configuration.rb +20 -8
- data/lib/chook/event/handled_event.rb +15 -12
- data/lib/chook/event/handled_event/handlers.rb +136 -83
- data/lib/chook/event/handled_event_logger.rb +86 -0
- data/lib/chook/event_handling.rb +1 -0
- data/lib/chook/foundation.rb +2 -0
- data/lib/chook/procs.rb +17 -1
- data/lib/chook/server.rb +71 -74
- data/lib/chook/server/log.rb +215 -0
- data/lib/chook/server/public/css/chook.css +125 -0
- data/lib/chook/server/public/imgs/ChookLogoAlMcWhiggin.png +0 -0
- data/lib/chook/server/public/js/chook.js +127 -0
- data/lib/chook/server/public/js/logstream.js +101 -0
- data/lib/chook/server/routes.rb +45 -0
- data/lib/chook/server/routes/handle_webhook_event.rb +22 -3
- data/lib/chook/server/routes/handlers.rb +52 -0
- data/lib/chook/server/routes/home.rb +34 -1
- data/lib/chook/server/routes/log.rb +106 -0
- data/lib/chook/server/views/admin.haml +11 -0
- data/lib/chook/server/views/bak.haml +48 -0
- data/lib/chook/server/views/config.haml +15 -0
- data/lib/chook/server/views/handlers.haml +48 -0
- data/lib/chook/server/views/layout.haml +39 -0
- data/lib/chook/server/views/logstream.haml +32 -0
- data/lib/chook/server/views/sketch_admin +44 -0
- data/lib/chook/subject.rb +1 -2
- data/lib/chook/subject/smart_group.rb +6 -0
- data/lib/chook/version.rb +1 -1
- metadata +73 -18
@@ -29,7 +29,40 @@ module Chook
|
|
29
29
|
class Server < Sinatra::Base
|
30
30
|
|
31
31
|
get '/' do
|
32
|
-
|
32
|
+
protected!
|
33
|
+
|
34
|
+
# a list of current handlers for the admin page
|
35
|
+
@handlers_for_admin_page = []
|
36
|
+
|
37
|
+
Chook::HandledEvent::Handlers.handlers.keys.sort.each do |eventname|
|
38
|
+
Chook::HandledEvent::Handlers.handlers[eventname].each do |handler|
|
39
|
+
if handler.is_a? Pathname
|
40
|
+
file = handler
|
41
|
+
type = :external
|
42
|
+
else
|
43
|
+
file = Pathname.new(Chook.config.handler_dir) + handler.handler_file
|
44
|
+
type = :internal
|
45
|
+
end # if else
|
46
|
+
@handlers_for_admin_page << { event: eventname, file: file, type: type }
|
47
|
+
end # handlers each
|
48
|
+
end # Handlers.handlers.each
|
49
|
+
|
50
|
+
# the current config, for the admin page
|
51
|
+
@config_text =
|
52
|
+
if Chook::Configuration::DEFAULT_CONF_FILE.file?
|
53
|
+
@config_src = Chook::Configuration::DEFAULT_CONF_FILE.to_s
|
54
|
+
Chook::Configuration::DEFAULT_CONF_FILE.read
|
55
|
+
|
56
|
+
elsif Chook::Configuration::SAMPLE_CONF_FILE.file?
|
57
|
+
@config_src = "Using default values, showing sample config file at #{Chook::Configuration::SAMPLE_CONF_FILE}"
|
58
|
+
Chook::Configuration::SAMPLE_CONF_FILE.read
|
59
|
+
|
60
|
+
else
|
61
|
+
@config_src = "No #{Chook::Configuration::DEFAULT_CONF_FILE} or sample config file found."
|
62
|
+
@config_src
|
63
|
+
end
|
64
|
+
|
65
|
+
haml :admin
|
33
66
|
end # get /
|
34
67
|
|
35
68
|
end # class
|
@@ -0,0 +1,106 @@
|
|
1
|
+
### Copyright 2017 Pixar
|
2
|
+
|
3
|
+
###
|
4
|
+
### Licensed under the Apache License, Version 2.0 (the "Apache License")
|
5
|
+
### with the following modification; you may not use this file except in
|
6
|
+
### compliance with the Apache License and the following modification to it:
|
7
|
+
### Section 6. Trademarks. is deleted and replaced with:
|
8
|
+
###
|
9
|
+
### 6. Trademarks. This License does not grant permission to use the trade
|
10
|
+
### names, trademarks, service marks, or product names of the Licensor
|
11
|
+
### and its affiliates, except as required to comply with Section 4(c) of
|
12
|
+
### the License and to reproduce the content of the NOTICE file.
|
13
|
+
###
|
14
|
+
### You may obtain a copy of the Apache License at
|
15
|
+
###
|
16
|
+
### http://www.apache.org/licenses/LICENSE-2.0
|
17
|
+
###
|
18
|
+
### Unless required by applicable law or agreed to in writing, software
|
19
|
+
### distributed under the Apache License with the above modification is
|
20
|
+
### distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
21
|
+
### KIND, either express or implied. See the Apache License for the specific
|
22
|
+
### language governing permissions and limitations under the Apache License.
|
23
|
+
###
|
24
|
+
###
|
25
|
+
|
26
|
+
module Chook
|
27
|
+
|
28
|
+
# see server.rb
|
29
|
+
class Server < Sinatra::Base
|
30
|
+
|
31
|
+
# External Handlers can use this route to make log entries.
|
32
|
+
#
|
33
|
+
# The request body must be a JSON object (Hash) wth 2 keys 'level' and 'message'
|
34
|
+
# where both values are strings
|
35
|
+
#
|
36
|
+
# Here's an example with curl, split to multi-line for clarity:
|
37
|
+
#
|
38
|
+
# curl -H "Content-Type: application/json" \
|
39
|
+
# -X POST \
|
40
|
+
# --data '{"level":"debug", "message":"It Worked"}' \
|
41
|
+
# https://user:passwd@chookserver.myorg.org:443/log
|
42
|
+
#
|
43
|
+
post '/log' do
|
44
|
+
protected!
|
45
|
+
request.body.rewind # in case someone already read it
|
46
|
+
raw = request.body.read
|
47
|
+
|
48
|
+
begin
|
49
|
+
logentry = JSON.parse raw, symbolize_names: true
|
50
|
+
raise if logentry[:level].to_s.empty? || logentry[:message].to_s.empty?
|
51
|
+
rescue
|
52
|
+
Chook::Server::Log.logger.error "Malformed log entry JSON from #{request.ip}: #{raw}"
|
53
|
+
halt 409, "Malformed log entry JSON: #{raw}"
|
54
|
+
end
|
55
|
+
|
56
|
+
level = logentry[:level].to_sym
|
57
|
+
level = :unknown unless Chook::Server::Log::LOG_LEVELS.key? level
|
58
|
+
Chook::Server::Log.logger.send level, "ExternalEntry: #{logentry[:message]}"
|
59
|
+
|
60
|
+
{ result: 'logged', level: level }.to_json
|
61
|
+
end # post /
|
62
|
+
|
63
|
+
# AJAXy access to a log stream
|
64
|
+
# When an admin displays the log on the chook admin/home page,
|
65
|
+
# the page's javascript starts the stream as an EventSource
|
66
|
+
# from this url.
|
67
|
+
#
|
68
|
+
# The innards are taken almost verbatim from the Sinatra README
|
69
|
+
# docs.
|
70
|
+
#
|
71
|
+
# See also logstream.js and views/admin.haml
|
72
|
+
#
|
73
|
+
#
|
74
|
+
get '/subscribe_to_log_stream', provides: 'text/event-stream' do
|
75
|
+
protected!
|
76
|
+
content_type 'text/event-stream'
|
77
|
+
cache_control 'no-cache'
|
78
|
+
|
79
|
+
# register a client's interest in server events
|
80
|
+
stream(:keep_open) do |outbound_stream|
|
81
|
+
# add this connection to the array of streams
|
82
|
+
Chook::Server::Log.log_streams[outbound_stream] = request.ip
|
83
|
+
logger.debug "Added log stream for #{request.ip}"
|
84
|
+
# purge dead connections
|
85
|
+
Chook::Server::Log.clean_log_streams
|
86
|
+
end # stream
|
87
|
+
end
|
88
|
+
|
89
|
+
# set the log level via the admin page.
|
90
|
+
put '/set_log_level/:level' do
|
91
|
+
level = params[:level].to_sym
|
92
|
+
level = :unknown unless Chook::Server::Log::LOG_LEVELS.key? level
|
93
|
+
Chook.logger.level = level
|
94
|
+
Chook.logger.unknown "Log level changed, now: #{level}"
|
95
|
+
{ result: 'level changed', level: level }.to_json
|
96
|
+
end
|
97
|
+
|
98
|
+
# get the log level via the admin page.
|
99
|
+
get '/current_log_level' do
|
100
|
+
protected!
|
101
|
+
Chook::Server::Log::LOG_LEVELS.invert[Chook.logger.level].to_s
|
102
|
+
end
|
103
|
+
|
104
|
+
end # class
|
105
|
+
|
106
|
+
end # module
|
@@ -0,0 +1,48 @@
|
|
1
|
+
%hr/
|
2
|
+
.section_label#log_label
|
3
|
+
The Live Chook Log
|
4
|
+
|
5
|
+
%button#view_log_btn{ type: 'button', onClick: 'view_log();', title: 'view the live Chook log' }
|
6
|
+
View
|
7
|
+
%button#hide_log_btn{ type: 'button', onClick: 'hide_log();', title: 'hide the live Chook log' }
|
8
|
+
Hide
|
9
|
+
Log Level:
|
10
|
+
%select#log_level_select{ onchange: 'change_log_level();' }
|
11
|
+
%option{ value: 'fatal', selected: Chook.logger.level == Logger::FATAL } fatal
|
12
|
+
%option{ value: 'error', selected: Chook.logger.level == Logger::ERROR } error
|
13
|
+
%option{ value: 'warn', selected: Chook.logger.level == Logger::WARN } warn
|
14
|
+
%option{ value: 'info', selected: Chook.logger.level == Logger::INFO } info
|
15
|
+
%option{ value: 'debug', selected: Chook.logger.level == Logger::DEBUG } debug
|
16
|
+
|
17
|
+
#logbox_div
|
18
|
+
#logbox_btns
|
19
|
+
%input#pause_log{ type: 'checkbox', checked: false, onclick: 'update_logbox();' }
|
20
|
+
Pause
|
21
|
+
|
22
|
+
%button#clear_log_btn{ type: 'button', onClick: 'clear_log();', title: 'clear the live Chook log' }
|
23
|
+
Clear
|
24
|
+
|
25
|
+
// Log Level: [popup list] (set)
|
26
|
+
%textarea.monospaced#logbox{ readonly: true, rows: 20, cols: 150 }
|
27
|
+
|
28
|
+
%hr/
|
29
|
+
.section_label#handlers_label
|
30
|
+
Current Webhook Handlers (#{@handlers_for_admin_page.size})
|
31
|
+
|
32
|
+
|
33
|
+
%button#view_handlers_btn{ type: 'button', onClick: 'view_handlers();', title: 'view the handler list' }
|
34
|
+
View
|
35
|
+
%button#hide_handlers_btn{ type: 'button', onClick: 'hide_handlers();', title: 'hide the handler list' }
|
36
|
+
Hide
|
37
|
+
|
38
|
+
|
39
|
+
Handler Directory:
|
40
|
+
%span.monospaced
|
41
|
+
= Chook.config.handler_dir.to_s
|
42
|
+
|
43
|
+
#handlers_div
|
44
|
+
%table#handlers_table
|
45
|
+
%tr
|
46
|
+
%th Event
|
47
|
+
%th Handler Type
|
48
|
+
%th File Name
|
@@ -0,0 +1,15 @@
|
|
1
|
+
.section_label#config_label
|
2
|
+
%button#view_config_btn{ type: 'button', onClick: 'view_config();', title: 'view the config file' }
|
3
|
+
View
|
4
|
+
%button#hide_config_btn{ type: 'button', onClick: 'hide_config();', title: 'hide the config file' }
|
5
|
+
Hide
|
6
|
+
|
7
|
+
|
8
|
+
Configuration
|
9
|
+
|
10
|
+
#config_div
|
11
|
+
Config file:
|
12
|
+
%span.monospaced= @config_src
|
13
|
+
|
14
|
+
#config_viewer_div
|
15
|
+
%textarea.monospaced#config_box{ readonly: true, rows: 20, cols: 150 }= @config_text
|
@@ -0,0 +1,48 @@
|
|
1
|
+
.section_label#handlers_label
|
2
|
+
%button#view_handlers_btn{ type: 'button', onClick: 'view_handlers();', title: 'view the handler list' }
|
3
|
+
View
|
4
|
+
%button#hide_handlers_btn{ type: 'button', onClick: 'hide_handlers();', title: 'hide the handler list' }
|
5
|
+
Hide
|
6
|
+
|
7
|
+
|
8
|
+
Current Webhook Handlers (#{@handlers_for_admin_page.size})
|
9
|
+
|
10
|
+
#handlers_div
|
11
|
+
|
12
|
+
Handler Directory:
|
13
|
+
%span.monospaced= Chook.config.handler_dir.to_s
|
14
|
+
|
15
|
+
|
16
|
+
%button#reload_all_handlers_btn{ type: 'button', onClick: 'reload_handlers();', title: 'reload all handlers' }
|
17
|
+
Reload
|
18
|
+
|
19
|
+
%span#reloaded_notification
|
20
|
+
|
21
|
+
%table#handlers_table
|
22
|
+
%tr#handlers_table_header_row
|
23
|
+
%th.handlers_table_cell Event
|
24
|
+
%th.handlers_table_cell{ width: '10%' } Handler Type
|
25
|
+
%th.handlers_table_cell File Name
|
26
|
+
%th.handlers_table_cell Actions
|
27
|
+
|
28
|
+
- @handlers_for_admin_page.each do |hndlr_info|
|
29
|
+
%tr
|
30
|
+
%td.handlers_table_cell= hndlr_info[:event]
|
31
|
+
%td.handlers_table_cell= hndlr_info[:type].to_s
|
32
|
+
%td.handlers_table_cell= hndlr_info[:file].basename.to_s
|
33
|
+
%td.handlers_table_cell
|
34
|
+
%button.edit_handler_btn{ type: 'button', onClick: "edit_handler('#{hndlr_info[:file].basename}', '#{hndlr_info[:type]}');", title: 'View this handler' }
|
35
|
+
View
|
36
|
+
|
37
|
+
#handler_viewer_div
|
38
|
+
%input#currently_viewing_handler_file{ name: 'currently_viewing_handler_file', type: :hidden }
|
39
|
+
%input#currently_editing_handler_type{ name: 'currently_editing_handler_type', type: :hidden }
|
40
|
+
#currently_viewing_handler_label
|
41
|
+
%button#hide_handler_viewer_btn{ type: 'button', onClick: 'hide_handler_viewer();', title: 'hide the handler editor' }
|
42
|
+
Hide
|
43
|
+
|
44
|
+
Viewing handler:
|
45
|
+
%span.monospaced#currently_viewing_filename -nothing-
|
46
|
+
|
47
|
+
|
48
|
+
%textarea.monospaced#handler_viewer{ rows: 35 , readonly: true }
|
@@ -0,0 +1,39 @@
|
|
1
|
+
!!!
|
2
|
+
%html{ lang: 'en' }
|
3
|
+
|
4
|
+
%head
|
5
|
+
|
6
|
+
%meta{ charset: 'UTF-8' }
|
7
|
+
%title
|
8
|
+
Chook
|
9
|
+
|
10
|
+
/ CSS
|
11
|
+
%link{ href: '/css/chook.css', rel: 'stylesheet' }
|
12
|
+
|
13
|
+
/ JavaScript
|
14
|
+
%script{ type: 'text/javascript', language: 'javascript', src: '/js/chook.js' }
|
15
|
+
%script{ type: 'text/javascript', language: 'javascript', src: '/js/logstream.js' }
|
16
|
+
|
17
|
+
%body
|
18
|
+
/ Top
|
19
|
+
#pageheader
|
20
|
+
%table{ width: '100%' }
|
21
|
+
%tr
|
22
|
+
%td{ valign: 'bottom', width: '120' }
|
23
|
+
#header_logo
|
24
|
+
%img{ alt: '', height: '120', src: '/imgs/ChookLogoAlMcWhiggin.png', width: '120' }
|
25
|
+
#header_version
|
26
|
+
v#{Chook::VERSION}
|
27
|
+
%td
|
28
|
+
#definition
|
29
|
+
%span.chook_title Chook
|
30
|
+
%br/
|
31
|
+
%span.def_pronunciation /tʃʊk/ (also chookie /ˈtʃʊki/ )
|
32
|
+
%br/
|
33
|
+
%span.def_part_of_speech noun
|
34
|
+
%span.def_dialect Australian/NZ informal
|
35
|
+
%br/
|
36
|
+
%span.def_definition a chicken or fowl
|
37
|
+
|
38
|
+
|
39
|
+
= yield
|
@@ -0,0 +1,32 @@
|
|
1
|
+
.section_label#log_label
|
2
|
+
%button#view_log_btn{ type: 'button', onClick: 'view_log();', title: 'view the live Chook log' }
|
3
|
+
View
|
4
|
+
%button#hide_log_btn{ type: 'button', onClick: 'hide_log();', title: 'hide the live Chook log' }
|
5
|
+
Hide
|
6
|
+
|
7
|
+
|
8
|
+
The Live Chook Log
|
9
|
+
|
10
|
+
|
11
|
+
#logbox_div
|
12
|
+
#logbox_btns
|
13
|
+
%input#pause_log{ type: 'checkbox', checked: false, onclick: 'update_logbox();' }
|
14
|
+
Pause
|
15
|
+
|
16
|
+
|
17
|
+
%button#clear_log_btn{ type: 'button', onClick: 'clear_log();', title: 'clear the live Chook log' }
|
18
|
+
Clear
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
Server Log Level:
|
23
|
+
%select#log_level_select{ onchange: 'change_log_level();',
|
24
|
+
title: 'changes here affect logging the server, not just your view' }
|
25
|
+
|
26
|
+
%option{ value: 'fatal', selected: Chook.logger.level == Logger::FATAL } fatal
|
27
|
+
%option{ value: 'error', selected: Chook.logger.level == Logger::ERROR } error
|
28
|
+
%option{ value: 'warn', selected: Chook.logger.level == Logger::WARN } warn
|
29
|
+
%option{ value: 'info', selected: Chook.logger.level == Logger::INFO } info
|
30
|
+
%option{ value: 'debug', selected: Chook.logger.level == Logger::DEBUG } debug
|
31
|
+
|
32
|
+
%textarea.monospaced#logbox{ readonly: true, rows: 20 }
|
@@ -0,0 +1,44 @@
|
|
1
|
+
[image] Chook v.XXX
|
2
|
+
|
3
|
+
|
4
|
+
Log (view/hide) Log Level: [popup list] (set)
|
5
|
+
--------- hidable text area with streaming log -----------
|
6
|
+
|
7
|
+
|
8
|
+
Current Handlers
|
9
|
+
filename/type (view/edit) (remove)
|
10
|
+
...
|
11
|
+
...
|
12
|
+
(Add new handler)
|
13
|
+
--------- text area with editable handler -----------
|
14
|
+
(save)
|
15
|
+
|
16
|
+
|
17
|
+
Configuration (save)
|
18
|
+
--------- text area with editable (?) config file -----------
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
(c) Pixar.... [links]
|
data/lib/chook/subject.rb
CHANGED
@@ -41,6 +41,12 @@ Chook::Subject.classes[Chook::Subject::SMART_GROUP] = {
|
|
41
41
|
# sampler: :smart_group_jssid,
|
42
42
|
api_object_attribute: :id
|
43
43
|
},
|
44
|
+
groupAddedDevicesIds: {
|
45
|
+
validation: Array
|
46
|
+
},
|
47
|
+
groupRemovedDevicesIds: {
|
48
|
+
validation: Array
|
49
|
+
},
|
44
50
|
computer: { # SmartGroupComputerMembershipChange == true, SmartGroupMobileDeviceMembershipChange == false
|
45
51
|
validation: :boolean,
|
46
52
|
randomizer: :bool,
|
data/lib/chook/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Lasell
|
@@ -9,27 +9,69 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- -
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '2.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: '2.0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: sinatra-contrib
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: thin
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.7'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.7'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: haml
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '5.0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.0'
|
28
70
|
description: |2
|
29
71
|
Chook is a Ruby module which implements a framework for working with webhook events
|
30
72
|
sent by the JSS, the core of Jamf Pro, a management tool for Apple devices.
|
31
73
|
|
32
|
-
Chook also provides a simple, sinatra-based HTTP server, for handling those Events,
|
74
|
+
Chook also provides a simple, sinatra-based HTTP(S) server, for handling those Events,
|
33
75
|
and classes for sending simulated TestEvents to a webhook handling server.
|
34
76
|
email: chook@pixar.com
|
35
77
|
executables:
|
@@ -38,10 +80,13 @@ extensions: []
|
|
38
80
|
extra_rdoc_files:
|
39
81
|
- README.md
|
40
82
|
- LICENSE.txt
|
83
|
+
- CHANGES.md
|
41
84
|
files:
|
85
|
+
- CHANGES.md
|
42
86
|
- LICENSE.txt
|
43
87
|
- README.md
|
44
88
|
- bin/chook-server
|
89
|
+
- data/chook.conf.example
|
45
90
|
- data/sample_handlers/RestAPIOperation-executable
|
46
91
|
- data/sample_handlers/RestAPIOperation.rb
|
47
92
|
- data/sample_handlers/SmartGroupComputerMembershipChange-executable
|
@@ -70,6 +115,7 @@ files:
|
|
70
115
|
- lib/chook/event.rb
|
71
116
|
- lib/chook/event/handled_event.rb
|
72
117
|
- lib/chook/event/handled_event/handlers.rb
|
118
|
+
- lib/chook/event/handled_event_logger.rb
|
73
119
|
- lib/chook/event/test_event.rb
|
74
120
|
- lib/chook/event_handling.rb
|
75
121
|
- lib/chook/event_testing.rb
|
@@ -78,9 +124,23 @@ files:
|
|
78
124
|
- lib/chook/handled_subjects.rb
|
79
125
|
- lib/chook/procs.rb
|
80
126
|
- lib/chook/server.rb
|
127
|
+
- lib/chook/server/log.rb
|
128
|
+
- lib/chook/server/public/css/chook.css
|
129
|
+
- lib/chook/server/public/imgs/ChookLogoAlMcWhiggin.png
|
130
|
+
- lib/chook/server/public/js/chook.js
|
131
|
+
- lib/chook/server/public/js/logstream.js
|
81
132
|
- lib/chook/server/routes.rb
|
82
133
|
- lib/chook/server/routes/handle_webhook_event.rb
|
134
|
+
- lib/chook/server/routes/handlers.rb
|
83
135
|
- lib/chook/server/routes/home.rb
|
136
|
+
- lib/chook/server/routes/log.rb
|
137
|
+
- lib/chook/server/views/admin.haml
|
138
|
+
- lib/chook/server/views/bak.haml
|
139
|
+
- lib/chook/server/views/config.haml
|
140
|
+
- lib/chook/server/views/handlers.haml
|
141
|
+
- lib/chook/server/views/layout.haml
|
142
|
+
- lib/chook/server/views/logstream.haml
|
143
|
+
- lib/chook/server/views/sketch_admin
|
84
144
|
- lib/chook/subject.rb
|
85
145
|
- lib/chook/subject/computer.rb
|
86
146
|
- lib/chook/subject/handled_subject.rb
|
@@ -103,28 +163,23 @@ licenses:
|
|
103
163
|
- Nonstandard
|
104
164
|
metadata: {}
|
105
165
|
post_install_message:
|
106
|
-
rdoc_options:
|
107
|
-
- --title
|
108
|
-
- Chook
|
109
|
-
- --line-numbers
|
110
|
-
- --main
|
111
|
-
- README.md
|
166
|
+
rdoc_options: []
|
112
167
|
require_paths:
|
113
168
|
- lib
|
114
169
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
170
|
requirements:
|
116
|
-
- -
|
171
|
+
- - ">="
|
117
172
|
- !ruby/object:Gem::Version
|
118
173
|
version: '0'
|
119
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
175
|
requirements:
|
121
|
-
- -
|
176
|
+
- - ">="
|
122
177
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
178
|
+
version: '0'
|
124
179
|
requirements: []
|
125
180
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.
|
181
|
+
rubygems_version: 2.7.7
|
127
182
|
signing_key:
|
128
183
|
specification_version: 4
|
129
|
-
summary: A Ruby framework for simulating and processing Jamf Pro
|
184
|
+
summary: A Ruby framework for simulating and processing Jamf Pro Webhook Events
|
130
185
|
test_files: []
|