xolo-server 1.0.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 +7 -0
- data/LICENSE.txt +177 -0
- data/README.md +7 -0
- data/bin/xoloserver +106 -0
- data/data/com.pixar.xoloserver.plist +29 -0
- data/data/uninstall-pkgs-by-id.zsh +103 -0
- data/lib/xolo/server/app.rb +133 -0
- data/lib/xolo/server/command_line.rb +216 -0
- data/lib/xolo/server/configuration.rb +739 -0
- data/lib/xolo/server/constants.rb +70 -0
- data/lib/xolo/server/helpers/auth.rb +257 -0
- data/lib/xolo/server/helpers/client_data.rb +415 -0
- data/lib/xolo/server/helpers/file_transfers.rb +265 -0
- data/lib/xolo/server/helpers/jamf_pro.rb +156 -0
- data/lib/xolo/server/helpers/log.rb +97 -0
- data/lib/xolo/server/helpers/maintenance.rb +401 -0
- data/lib/xolo/server/helpers/notification.rb +145 -0
- data/lib/xolo/server/helpers/pkg_signing.rb +141 -0
- data/lib/xolo/server/helpers/progress_streaming.rb +252 -0
- data/lib/xolo/server/helpers/title_editor.rb +92 -0
- data/lib/xolo/server/helpers/titles.rb +145 -0
- data/lib/xolo/server/helpers/versions.rb +160 -0
- data/lib/xolo/server/log.rb +286 -0
- data/lib/xolo/server/mixins/changelog.rb +315 -0
- data/lib/xolo/server/mixins/title_jamf_access.rb +1668 -0
- data/lib/xolo/server/mixins/title_ted_access.rb +519 -0
- data/lib/xolo/server/mixins/version_jamf_access.rb +1541 -0
- data/lib/xolo/server/mixins/version_ted_access.rb +373 -0
- data/lib/xolo/server/object_locks.rb +102 -0
- data/lib/xolo/server/routes/auth.rb +89 -0
- data/lib/xolo/server/routes/jamf_pro.rb +89 -0
- data/lib/xolo/server/routes/maint.rb +174 -0
- data/lib/xolo/server/routes/title_editor.rb +71 -0
- data/lib/xolo/server/routes/titles.rb +285 -0
- data/lib/xolo/server/routes/uploads.rb +93 -0
- data/lib/xolo/server/routes/versions.rb +261 -0
- data/lib/xolo/server/routes.rb +168 -0
- data/lib/xolo/server/title.rb +1143 -0
- data/lib/xolo/server/version.rb +902 -0
- data/lib/xolo/server.rb +205 -0
- data/lib/xolo-server.rb +8 -0
- metadata +243 -0
data/lib/xolo/server.rb
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Copyright 2025 Pixar
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the terms set forth in the LICENSE.txt file available at
|
|
4
|
+
# at the root of this project.
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
# frozen_string_literal: true
|
|
8
|
+
|
|
9
|
+
# This file is the entry point for loading the Xolo Server
|
|
10
|
+
#
|
|
11
|
+
# You can and should require the convenience file 'xolo-server.rb'
|
|
12
|
+
#
|
|
13
|
+
# require 'xolo-server'
|
|
14
|
+
|
|
15
|
+
require 'xolo/core'
|
|
16
|
+
|
|
17
|
+
# Standard Libraries
|
|
18
|
+
######
|
|
19
|
+
require 'logger'
|
|
20
|
+
require 'openssl'
|
|
21
|
+
require 'securerandom'
|
|
22
|
+
require 'singleton'
|
|
23
|
+
require 'json'
|
|
24
|
+
require 'yaml'
|
|
25
|
+
require 'open3'
|
|
26
|
+
require 'base64'
|
|
27
|
+
require 'resolv'
|
|
28
|
+
require 'shellwords'
|
|
29
|
+
require 'net/smtp'
|
|
30
|
+
|
|
31
|
+
# Gems
|
|
32
|
+
######
|
|
33
|
+
|
|
34
|
+
require 'ruby-jss'
|
|
35
|
+
require 'windoo'
|
|
36
|
+
require 'sinatra/base'
|
|
37
|
+
require 'sinatra/custom_logger'
|
|
38
|
+
require 'sinatra/extension' # see https://sinatrarb.com/contrib/extension
|
|
39
|
+
require 'thin'
|
|
40
|
+
require 'concurrent/hash'
|
|
41
|
+
require 'concurrent/atomic/reentrant_read_write_lock'
|
|
42
|
+
require 'concurrent/executor/thread_pool_executor'
|
|
43
|
+
require 'concurrent/timer_task'
|
|
44
|
+
|
|
45
|
+
# Xolo Server - order matters
|
|
46
|
+
######
|
|
47
|
+
require 'xolo/server/constants'
|
|
48
|
+
require 'xolo/server/command_line'
|
|
49
|
+
require 'xolo/server/log'
|
|
50
|
+
require 'xolo/server/object_locks'
|
|
51
|
+
|
|
52
|
+
module Xolo
|
|
53
|
+
|
|
54
|
+
# The Xolo Server is the focal point for a Xolo installation.
|
|
55
|
+
# It centralizes and standardizes all communication between
|
|
56
|
+
# the serverside parts of Xolo:
|
|
57
|
+
#
|
|
58
|
+
# - The Xolo Admin command-line application 'xadm'
|
|
59
|
+
# - Used to manage software deployed by Xolo either manually
|
|
60
|
+
# or via automated scripts (e.g. Xcode builds)
|
|
61
|
+
#
|
|
62
|
+
# - A Jamf Title Editor server
|
|
63
|
+
# - Used as the 'external patch source' hosting locally-developed
|
|
64
|
+
# software, and/or titles from other sources
|
|
65
|
+
#
|
|
66
|
+
# - A Jamf Pro server
|
|
67
|
+
# - Connected to the Title Editor, the Jamf internal patch source,
|
|
68
|
+
# and perhaps other external patch sources.
|
|
69
|
+
# - Handles initial installation and patching of software on the
|
|
70
|
+
# managed client Macs via Policies and Patch Policies.
|
|
71
|
+
#
|
|
72
|
+
# The Xolo server also (eventually) implements a webhook handling server that specifically
|
|
73
|
+
# handles PatchSoftwareTitleUpdated events from the Jamf Pro server. This allows
|
|
74
|
+
# for the automatic packaging, piloting, and maintenance of titles using
|
|
75
|
+
# tools such as AutoPkg.
|
|
76
|
+
#
|
|
77
|
+
# The Xolo client tool 'xolo', used on managed Macs, does not communicate
|
|
78
|
+
# directly with the Xolo server. Instead, it communicates with the Jamf Pro, mostly
|
|
79
|
+
# by running 'jamf policy' commands.
|
|
80
|
+
#
|
|
81
|
+
#
|
|
82
|
+
module Server
|
|
83
|
+
|
|
84
|
+
# Mixins & extensions
|
|
85
|
+
##############################
|
|
86
|
+
##############################
|
|
87
|
+
|
|
88
|
+
include Xolo::Server::Constants
|
|
89
|
+
extend Xolo::Server::CommandLine
|
|
90
|
+
extend Xolo::Server::ObjectLocks
|
|
91
|
+
include Xolo::Server::Log
|
|
92
|
+
|
|
93
|
+
# Constants
|
|
94
|
+
#############################
|
|
95
|
+
#############################
|
|
96
|
+
|
|
97
|
+
# everything xolo-related in Jamf is in this category
|
|
98
|
+
# (this is never used as a SSvc category - that should be set per title)
|
|
99
|
+
JAMF_XOLO_CATEGORY = 'xolo'
|
|
100
|
+
|
|
101
|
+
# Module methods
|
|
102
|
+
##############################
|
|
103
|
+
##############################
|
|
104
|
+
|
|
105
|
+
################
|
|
106
|
+
def self.start_time
|
|
107
|
+
@start_time
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
################
|
|
111
|
+
def self.start_time=(t)
|
|
112
|
+
@start_time = t
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
################
|
|
116
|
+
def self.app_env
|
|
117
|
+
@app_env
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
################
|
|
121
|
+
def self.app_env=(e)
|
|
122
|
+
ENV['APP_ENV'] = e.to_s
|
|
123
|
+
@app_env = e
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
################
|
|
127
|
+
def self.debug=(bool)
|
|
128
|
+
@debug = bool ? true : false
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
################
|
|
132
|
+
def self.debug?
|
|
133
|
+
@debug
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
################
|
|
137
|
+
def self.config
|
|
138
|
+
Xolo::Server::Configuration.instance
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
################
|
|
142
|
+
def self.shutting_down?
|
|
143
|
+
@shutting_down
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
################
|
|
147
|
+
def self.shutting_down=(bool)
|
|
148
|
+
@shutting_down = bool ? true : false
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# threads for reporting
|
|
152
|
+
##########################
|
|
153
|
+
def self.thread_info
|
|
154
|
+
info = {}
|
|
155
|
+
Thread.list.each do |thr|
|
|
156
|
+
name =
|
|
157
|
+
if thr.name
|
|
158
|
+
thr.name
|
|
159
|
+
elsif Thread.main == thr
|
|
160
|
+
'Main'
|
|
161
|
+
elsif thr.to_s.include? 'eventmachine'
|
|
162
|
+
"eventmachine-#{thr.object_id}"
|
|
163
|
+
else
|
|
164
|
+
thr.to_s
|
|
165
|
+
end
|
|
166
|
+
info[name] = thr.status
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
info
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
end # Server
|
|
173
|
+
|
|
174
|
+
end # Xolo
|
|
175
|
+
|
|
176
|
+
# Load the rest of Xolo Server
|
|
177
|
+
# order matters
|
|
178
|
+
|
|
179
|
+
require 'xolo/server/mixins/changelog'
|
|
180
|
+
require 'xolo/server/mixins/title_jamf_access'
|
|
181
|
+
require 'xolo/server/mixins/title_ted_access'
|
|
182
|
+
require 'xolo/server/mixins/version_jamf_access'
|
|
183
|
+
require 'xolo/server/mixins/version_ted_access'
|
|
184
|
+
|
|
185
|
+
require 'xolo/server/helpers/log'
|
|
186
|
+
require 'xolo/server/helpers/auth'
|
|
187
|
+
require 'xolo/server/helpers/notification'
|
|
188
|
+
require 'xolo/server/helpers/pkg_signing'
|
|
189
|
+
require 'xolo/server/helpers/progress_streaming'
|
|
190
|
+
require 'xolo/server/helpers/title_editor'
|
|
191
|
+
require 'xolo/server/helpers/jamf_pro'
|
|
192
|
+
require 'xolo/server/helpers/titles'
|
|
193
|
+
require 'xolo/server/helpers/versions'
|
|
194
|
+
require 'xolo/server/helpers/client_data'
|
|
195
|
+
require 'xolo/server/helpers/file_transfers'
|
|
196
|
+
require 'xolo/server/helpers/maintenance'
|
|
197
|
+
|
|
198
|
+
require 'xolo/server/configuration'
|
|
199
|
+
|
|
200
|
+
require 'xolo/server/title'
|
|
201
|
+
require 'xolo/server/version'
|
|
202
|
+
|
|
203
|
+
require 'xolo/server/routes'
|
|
204
|
+
|
|
205
|
+
require 'xolo/server/app'
|
data/lib/xolo-server.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: xolo-server
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Chris Lasell
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2025-09-28 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: faraday
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.8'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.8'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: faraday-multipart
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '1.0'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '1.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: pixar-ruby-extensions
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '1.11'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '1.11'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: concurrent-ruby
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.1'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '1.1'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: net-smtp
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.5'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.5'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: ruby-jss
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '4.2'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '4.2'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: sinatra
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - "~>"
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '3.2'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '3.2'
|
|
111
|
+
- !ruby/object:Gem::Dependency
|
|
112
|
+
name: sinatra-contrib
|
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
|
114
|
+
requirements:
|
|
115
|
+
- - "~>"
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '3.2'
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - "~>"
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '3.2'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: thin
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - "~>"
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '1.8'
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - "~>"
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '1.8'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: windoo
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - "~>"
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '1.0'
|
|
146
|
+
type: :runtime
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - "~>"
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '1.0'
|
|
153
|
+
description: |
|
|
154
|
+
== Xolo
|
|
155
|
+
Xolo (sorta pronounced 'show-low') is an HTTPS server and set of command-line tools for macOS that provide automatable access to the software deployment and patch management aspects of {Jamf Pro}[https://www.jamf.com/products/jamf-pro/] and the {Jamf Title Editor}[https://learn.jamf.com/en-US/bundle/title-editor/page/About_Title_Editor.html]. It enhances Jamf Pro's abilities in many ways:
|
|
156
|
+
|
|
157
|
+
- Management of titles and versions/patches is scriptable and automatable, allowing developers and admins to integrate with CI/CD workflows.
|
|
158
|
+
- Simplifies and standardizes the complex, multistep manual process of managing titles and patches using the Title Editor and Patch Management web interfaces.
|
|
159
|
+
- Client installs can be performed by remotely via ssh and/or MDM
|
|
160
|
+
- Automated pre-release piloting of new versions/patches
|
|
161
|
+
- Titles can be expired (auto-uninstalled) after a period of disuse, reclaiming unused licenses.
|
|
162
|
+
- And more!
|
|
163
|
+
|
|
164
|
+
"Xolo" is the short name for the Mexican hairless dog breed {'xoloitzcuintle'}[https://en.wikipedia.org/wiki/Xoloitzcuintle] (show-low-itz-kwint-leh), as personified by Dante in the 2017 Pixar film _Coco_.
|
|
165
|
+
|
|
166
|
+
The xolo-server gem packages the code needed to run `xoloserver`, the sinatra-based HTTPS server at the heart of Xolo.
|
|
167
|
+
email: xolo@pixar.com
|
|
168
|
+
executables:
|
|
169
|
+
- xoloserver
|
|
170
|
+
extensions: []
|
|
171
|
+
extra_rdoc_files:
|
|
172
|
+
- README.md
|
|
173
|
+
- LICENSE.txt
|
|
174
|
+
files:
|
|
175
|
+
- LICENSE.txt
|
|
176
|
+
- README.md
|
|
177
|
+
- bin/xoloserver
|
|
178
|
+
- data/com.pixar.xoloserver.plist
|
|
179
|
+
- data/uninstall-pkgs-by-id.zsh
|
|
180
|
+
- lib/xolo-server.rb
|
|
181
|
+
- lib/xolo/server.rb
|
|
182
|
+
- lib/xolo/server/app.rb
|
|
183
|
+
- lib/xolo/server/command_line.rb
|
|
184
|
+
- lib/xolo/server/configuration.rb
|
|
185
|
+
- lib/xolo/server/constants.rb
|
|
186
|
+
- lib/xolo/server/helpers/auth.rb
|
|
187
|
+
- lib/xolo/server/helpers/client_data.rb
|
|
188
|
+
- lib/xolo/server/helpers/file_transfers.rb
|
|
189
|
+
- lib/xolo/server/helpers/jamf_pro.rb
|
|
190
|
+
- lib/xolo/server/helpers/log.rb
|
|
191
|
+
- lib/xolo/server/helpers/maintenance.rb
|
|
192
|
+
- lib/xolo/server/helpers/notification.rb
|
|
193
|
+
- lib/xolo/server/helpers/pkg_signing.rb
|
|
194
|
+
- lib/xolo/server/helpers/progress_streaming.rb
|
|
195
|
+
- lib/xolo/server/helpers/title_editor.rb
|
|
196
|
+
- lib/xolo/server/helpers/titles.rb
|
|
197
|
+
- lib/xolo/server/helpers/versions.rb
|
|
198
|
+
- lib/xolo/server/log.rb
|
|
199
|
+
- lib/xolo/server/mixins/changelog.rb
|
|
200
|
+
- lib/xolo/server/mixins/title_jamf_access.rb
|
|
201
|
+
- lib/xolo/server/mixins/title_ted_access.rb
|
|
202
|
+
- lib/xolo/server/mixins/version_jamf_access.rb
|
|
203
|
+
- lib/xolo/server/mixins/version_ted_access.rb
|
|
204
|
+
- lib/xolo/server/object_locks.rb
|
|
205
|
+
- lib/xolo/server/routes.rb
|
|
206
|
+
- lib/xolo/server/routes/auth.rb
|
|
207
|
+
- lib/xolo/server/routes/jamf_pro.rb
|
|
208
|
+
- lib/xolo/server/routes/maint.rb
|
|
209
|
+
- lib/xolo/server/routes/title_editor.rb
|
|
210
|
+
- lib/xolo/server/routes/titles.rb
|
|
211
|
+
- lib/xolo/server/routes/uploads.rb
|
|
212
|
+
- lib/xolo/server/routes/versions.rb
|
|
213
|
+
- lib/xolo/server/title.rb
|
|
214
|
+
- lib/xolo/server/version.rb
|
|
215
|
+
homepage: https://pixaranimationstudios.github.io/xolo-home/
|
|
216
|
+
licenses:
|
|
217
|
+
- LicenseRef-LICENSE.txt
|
|
218
|
+
metadata: {}
|
|
219
|
+
post_install_message:
|
|
220
|
+
rdoc_options:
|
|
221
|
+
- "--title"
|
|
222
|
+
- Xolo-Server
|
|
223
|
+
- "--line-numbers"
|
|
224
|
+
- "--main"
|
|
225
|
+
- README.md
|
|
226
|
+
require_paths:
|
|
227
|
+
- lib
|
|
228
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
|
+
requirements:
|
|
230
|
+
- - ">="
|
|
231
|
+
- !ruby/object:Gem::Version
|
|
232
|
+
version: 2.7.0
|
|
233
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
|
+
requirements:
|
|
235
|
+
- - ">="
|
|
236
|
+
- !ruby/object:Gem::Version
|
|
237
|
+
version: '0'
|
|
238
|
+
requirements: []
|
|
239
|
+
rubygems_version: 3.3.11
|
|
240
|
+
signing_key:
|
|
241
|
+
specification_version: 4
|
|
242
|
+
summary: Automation and Standardization for Jamf Pro Patch Management
|
|
243
|
+
test_files: []
|