chook 1.0.1.b2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|