chook 1.0.0.b1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +174 -0
- data/README.md +259 -0
- data/bin/chook-server +28 -0
- data/data/sample_handlers/RestAPIOperation-executable +91 -0
- data/data/sample_handlers/RestAPIOperation.rb +45 -0
- data/data/sample_handlers/SmartGroupComputerMembershipChange-executable +47 -0
- data/data/sample_handlers/SmartGroupComputerMembershipChange.rb +33 -0
- data/data/sample_jsons/ComputerAdded.json +27 -0
- data/data/sample_jsons/ComputerCheckIn.json +27 -0
- data/data/sample_jsons/ComputerInventoryCompleted.json +27 -0
- data/data/sample_jsons/ComputerPolicyFinished.json +27 -0
- data/data/sample_jsons/ComputerPushCapabilityChanged.json +27 -0
- data/data/sample_jsons/JSSShutdown.json +14 -0
- data/data/sample_jsons/JSSStartup.json +14 -0
- data/data/sample_jsons/MobileDeviceCheckIn.json +26 -0
- data/data/sample_jsons/MobileDeviceCommandCompleted.json +26 -0
- data/data/sample_jsons/MobileDeviceEnrolled.json +26 -0
- data/data/sample_jsons/MobileDevicePushSent.json +26 -0
- data/data/sample_jsons/MobileDeviceUnEnrolled.json +26 -0
- data/data/sample_jsons/PatchSoftwareTitleUpdated.json +14 -0
- data/data/sample_jsons/PushSent.json +11 -0
- data/data/sample_jsons/README +4 -0
- data/data/sample_jsons/RestAPIOperation.json +15 -0
- data/data/sample_jsons/SCEPChallenge.json +10 -0
- data/data/sample_jsons/SmartGroupComputerMembershipChange.json +13 -0
- data/data/sample_jsons/SmartGroupMobileDeviceMembershipChange.json +13 -0
- data/lib/chook.rb +38 -0
- data/lib/chook/configuration.rb +198 -0
- data/lib/chook/event.rb +153 -0
- data/lib/chook/event/handled_event.rb +154 -0
- data/lib/chook/event/handled_event/handlers.rb +206 -0
- data/lib/chook/event/test_event.rb +140 -0
- data/lib/chook/event_handling.rb +40 -0
- data/lib/chook/event_testing.rb +43 -0
- data/lib/chook/foundation.rb +33 -0
- data/lib/chook/handled_events.rb +33 -0
- data/lib/chook/handled_subjects.rb +33 -0
- data/lib/chook/procs.rb +46 -0
- data/lib/chook/server.rb +121 -0
- data/lib/chook/server/routes.rb +27 -0
- data/lib/chook/server/routes/handle_webhook_event.rb +39 -0
- data/lib/chook/server/routes/home.rb +37 -0
- data/lib/chook/subject.rb +143 -0
- data/lib/chook/subject/computer.rb +121 -0
- data/lib/chook/subject/handled_subject.rb +84 -0
- data/lib/chook/subject/jss.rb +56 -0
- data/lib/chook/subject/mobile_device.rb +115 -0
- data/lib/chook/subject/patch_software_title_update.rb +55 -0
- data/lib/chook/subject/push.rb +38 -0
- data/lib/chook/subject/randomizers.rb +506 -0
- data/lib/chook/subject/rest_api_operation.rb +62 -0
- data/lib/chook/subject/samplers.rb +360 -0
- data/lib/chook/subject/scep_challenge.rb +32 -0
- data/lib/chook/subject/smart_group.rb +50 -0
- data/lib/chook/subject/test_subject.rb +195 -0
- data/lib/chook/subject/validators.rb +117 -0
- data/lib/chook/test_events.rb +33 -0
- data/lib/chook/test_subjects.rb +33 -0
- data/lib/chook/version.rb +32 -0
- metadata +129 -0
@@ -0,0 +1,40 @@
|
|
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
|
+
# foundation
|
26
|
+
require 'chook/foundation'
|
27
|
+
|
28
|
+
# namespace modules
|
29
|
+
require 'chook/handled_subjects'
|
30
|
+
require 'chook/handled_events'
|
31
|
+
|
32
|
+
# subjects - must load before events.
|
33
|
+
require 'chook/subject'
|
34
|
+
require 'chook/subject/handled_subject'
|
35
|
+
Chook::HandledSubject.generate_classes
|
36
|
+
|
37
|
+
# events
|
38
|
+
require 'chook/event'
|
39
|
+
require 'chook/event/handled_event'
|
40
|
+
Chook::HandledEvent.generate_classes
|
@@ -0,0 +1,43 @@
|
|
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
|
+
# foundation
|
26
|
+
require 'chook/foundation'
|
27
|
+
|
28
|
+
# subjects - must load before events.
|
29
|
+
require 'chook/subject'
|
30
|
+
require 'chook/subject/randomizers'
|
31
|
+
require 'chook/subject/samplers'
|
32
|
+
require 'chook/subject/validators'
|
33
|
+
|
34
|
+
# testing data generation
|
35
|
+
require 'chook/subject/test_subject'
|
36
|
+
require 'chook/test_subjects'
|
37
|
+
Chook::TestSubject.generate_classes
|
38
|
+
|
39
|
+
# events
|
40
|
+
require 'chook/event'
|
41
|
+
require 'chook/event/test_event'
|
42
|
+
require 'chook/test_events'
|
43
|
+
Chook::TestEvent.generate_classes
|
@@ -0,0 +1,33 @@
|
|
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
|
+
# require the foundational files of chook
|
27
|
+
require 'json'
|
28
|
+
require 'open-uri'
|
29
|
+
require 'pathname'
|
30
|
+
|
31
|
+
require 'chook/version'
|
32
|
+
require 'chook/procs' # must load before configuration
|
33
|
+
require 'chook/configuration'
|
@@ -0,0 +1,33 @@
|
|
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
|
+
# This module is a namespace holding all of the classes that are
|
29
|
+
# subclasses of Chook::HandledEvent, q.v.
|
30
|
+
#
|
31
|
+
module HandledEvents; end
|
32
|
+
|
33
|
+
end # module
|
@@ -0,0 +1,33 @@
|
|
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
|
+
# This module is a namespace holding all of the classes that are
|
29
|
+
# subclasses of Chook::HandledSubject, q.v.
|
30
|
+
#
|
31
|
+
module HandledSubjects; end
|
32
|
+
|
33
|
+
end # module
|
data/lib/chook/procs.rb
ADDED
@@ -0,0 +1,46 @@
|
|
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
|
+
###
|
27
|
+
module Chook
|
28
|
+
|
29
|
+
# A namespace to hold Proc objects in constants
|
30
|
+
module Procs
|
31
|
+
|
32
|
+
TRUE_RE = /^\s*(true|yes)\s*$/i
|
33
|
+
JSS_EPOCH_TO_TIME = proc { |val| Time.strptime val.to_s[0..-4], '%s' }
|
34
|
+
STRING_TO_BOOLEAN = proc { |val| val =~ TRUE_RE ? true : false }
|
35
|
+
STRING_TO_PATHNAME = proc { |val| Pathname.new val }
|
36
|
+
MOBILE_USERID = proc { |_device| '-1' }
|
37
|
+
PRODUCT = proc { |_device| nil }
|
38
|
+
ALWAYS_TRUE = proc { |_boolean| True }
|
39
|
+
COMPUTER_USERID = proc do |comp|
|
40
|
+
id = '-1' unless comp.groups_accounts[:local_accounts].find { |acct| acct[:name] == comp.username }
|
41
|
+
id.is_a?(Hash) ? id[:uid] : '-1'
|
42
|
+
end # end proc do |comp|
|
43
|
+
|
44
|
+
end # module Procs
|
45
|
+
|
46
|
+
end # module Chook
|
data/lib/chook/server.rb
ADDED
@@ -0,0 +1,121 @@
|
|
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
|
+
require 'chook/event_handling'
|
26
|
+
require 'sinatra/base'
|
27
|
+
require 'openssl'
|
28
|
+
|
29
|
+
module Chook
|
30
|
+
|
31
|
+
# The chook server is a basic sinatra server running on
|
32
|
+
# the engine of your choice.
|
33
|
+
class Server < Sinatra::Base
|
34
|
+
|
35
|
+
DEFAULT_SERVER_ENGINE = :webrick
|
36
|
+
DEFAULT_PORT = 8000
|
37
|
+
|
38
|
+
@server_engine = Chook::CONFIG.server_engine || DEFAULT_SERVER_ENGINE
|
39
|
+
require @server_engine.to_s
|
40
|
+
@server_port = Chook::CONFIG.server_port || DEFAULT_PORT
|
41
|
+
|
42
|
+
def self.run!
|
43
|
+
# trap HUPs to reload handlers
|
44
|
+
Signal.trap('HUP') do
|
45
|
+
Chook::HandledEvent::Handlers.load_handlers reload: true
|
46
|
+
end
|
47
|
+
Chook::HandledEvent::Handlers.load_handlers
|
48
|
+
chook_configure
|
49
|
+
case @server_engine.to_sym
|
50
|
+
when :webrick
|
51
|
+
super
|
52
|
+
when :thin
|
53
|
+
if Chook::CONFIG.use_ssl
|
54
|
+
super do |server|
|
55
|
+
server.ssl = true
|
56
|
+
server.ssl_options = {
|
57
|
+
cert_chain_file: Chook::CONFIG.ssl_cert_path.to_s,
|
58
|
+
private_key_file: Chook::CONFIG.ssl_private_key_path.to_s,
|
59
|
+
verify_peer: false
|
60
|
+
}
|
61
|
+
end # super do
|
62
|
+
else
|
63
|
+
super
|
64
|
+
end # if use ssl
|
65
|
+
end # case
|
66
|
+
end # self.run
|
67
|
+
|
68
|
+
# Sinatra Settings
|
69
|
+
def self.chook_configure
|
70
|
+
configure do
|
71
|
+
set :environment, :production
|
72
|
+
enable :logging, :lock
|
73
|
+
set :bind, '0.0.0.0'
|
74
|
+
set :server, @server_engine
|
75
|
+
set :port, @server_port
|
76
|
+
|
77
|
+
if Chook::CONFIG.use_ssl
|
78
|
+
case @server_engine.to_sym
|
79
|
+
when :webrick
|
80
|
+
require 'webrick/https'
|
81
|
+
key = Chook::CONFIG.ssl_private_key_path.read
|
82
|
+
cert = Chook::CONFIG.ssl_cert_path.read
|
83
|
+
cert_name = Chook::CONFIG.ssl_cert_name
|
84
|
+
set :SSLEnable, true
|
85
|
+
set :SSLVerifyClient, OpenSSL::SSL::VERIFY_NONE
|
86
|
+
set :SSLPrivateKey, OpenSSL::PKey::RSA.new(key, ssl_key_password)
|
87
|
+
set :SSLCertificate, OpenSSL::X509::Certificate.new(cert)
|
88
|
+
set :SSLCertName, [['CN', cert_name]]
|
89
|
+
when :thin
|
90
|
+
true
|
91
|
+
end # case
|
92
|
+
end # if ssl
|
93
|
+
end # configure
|
94
|
+
end # chook_configure
|
95
|
+
|
96
|
+
def self.ssl_key_password
|
97
|
+
path = Chook::CONFIG.ssl_private_key_pw_path
|
98
|
+
raise 'No config setting for "ssl_private_key_pw_path"' unless path
|
99
|
+
file = Pathname.new path
|
100
|
+
|
101
|
+
# if the path ends with a pipe, its a command that will
|
102
|
+
# return the desired password, so remove the pipe,
|
103
|
+
# execute it, and return stdout from it.
|
104
|
+
if path.end_with? '|'
|
105
|
+
raise 'ssl_private_key_pw_path: #{path} is not an executable file.' unless file.executable?
|
106
|
+
return `#{path.chomp '|'}`.chomp
|
107
|
+
end
|
108
|
+
|
109
|
+
raise 'ssl_private_key_pw_path: #{path} is not a readable file.' unless file.readable?
|
110
|
+
stat = file.stat
|
111
|
+
raise "Password file for '#{pw}' has insecure permissions, must be 0600." unless ('%o' % stat.mode).end_with? '0600'
|
112
|
+
|
113
|
+
# chomping an empty string removes all trailing \n's and \r\n's
|
114
|
+
file.read.chomp('')
|
115
|
+
end # ssl_key_password
|
116
|
+
|
117
|
+
end # class server
|
118
|
+
|
119
|
+
end # module
|
120
|
+
|
121
|
+
require 'chook/server/routes'
|
@@ -0,0 +1,27 @@
|
|
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
|
+
require 'chook/server/routes/home'
|
27
|
+
require 'chook/server/routes/handle_webhook_event'
|
@@ -0,0 +1,39 @@
|
|
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
|
+
post '/handle_webhook_event' do
|
32
|
+
request.body.rewind # in case someone already read it
|
33
|
+
event = Chook::HandledEvent.parse_event request.body.read
|
34
|
+
event.handle
|
35
|
+
end # post
|
36
|
+
|
37
|
+
end # class
|
38
|
+
|
39
|
+
end # module
|
@@ -0,0 +1,37 @@
|
|
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
|
+
get '/' do
|
32
|
+
body "Hello, this is Chook, a Jamf Pro WebHook handling service from Pixar Animation Studios!\n"
|
33
|
+
end # get /
|
34
|
+
|
35
|
+
end # class
|
36
|
+
|
37
|
+
end # module
|