icinga-cert-service 0.18.4
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 +504 -0
- data/README.md +344 -0
- data/bin/icinga2-cert-service.rb +278 -0
- data/bin/installer.sh +33 -0
- data/bin/test.rb +28 -0
- data/lib/cert-service.rb +323 -0
- data/lib/cert-service/backup.rb +42 -0
- data/lib/cert-service/certificate_handler.rb +466 -0
- data/lib/cert-service/configure_icinga.rb +1 -0
- data/lib/cert-service/download.rb +24 -0
- data/lib/cert-service/endpoint_handler.rb +98 -0
- data/lib/cert-service/executor.rb +34 -0
- data/lib/cert-service/in-memory-cache.rb +43 -0
- data/lib/cert-service/templates.rb +62 -0
- data/lib/cert-service/version.rb +5 -0
- data/lib/cert-service/zone_handler.rb +71 -0
- data/lib/logging.rb +61 -0
- data/lib/monkey_patches.rb +128 -0
- data/lib/util.rb +94 -0
- data/lib/validator.rb +38 -0
- metadata +246 -0
data/lib/util.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rubygems/package'
|
4
|
+
|
5
|
+
require 'zlib'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
module Util
|
9
|
+
|
10
|
+
# Submodule for handling tar archives
|
11
|
+
#
|
12
|
+
module Tar
|
13
|
+
|
14
|
+
# Creates a tar file in memory recursively
|
15
|
+
# from the given path.
|
16
|
+
#
|
17
|
+
# Returns a StringIO whose underlying String
|
18
|
+
# is the contents of the tar file.
|
19
|
+
def tar(path)
|
20
|
+
tarfile = StringIO.new('')
|
21
|
+
Gem::Package::TarWriter.new(tarfile) do |tar|
|
22
|
+
Dir[File.join(path, '**/*')].each do |file|
|
23
|
+
mode = File.stat(file).mode
|
24
|
+
relative_file = file.sub /^#{Regexp.escape path}\/?/, ''
|
25
|
+
|
26
|
+
if File.directory?(file)
|
27
|
+
tar.mkdir relative_file, mode
|
28
|
+
else
|
29
|
+
tar.add_file relative_file, mode do |tf|
|
30
|
+
File.open(file, 'rb') { |f| tf.write f.read }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
tarfile.rewind
|
37
|
+
tarfile
|
38
|
+
end
|
39
|
+
|
40
|
+
# gzips the underlying string in the given StringIO,
|
41
|
+
# returning a new StringIO representing the
|
42
|
+
# compressed file.
|
43
|
+
def gzip(tarfile)
|
44
|
+
gz = StringIO.new('')
|
45
|
+
z = Zlib::GzipWriter.new(gz)
|
46
|
+
z.write tarfile.string
|
47
|
+
z.close # this is necessary!
|
48
|
+
|
49
|
+
# z was closed to write the gzip footer, so
|
50
|
+
# now we need a new StringIO
|
51
|
+
StringIO.new gz.string
|
52
|
+
end
|
53
|
+
|
54
|
+
# un-gzips the given IO, returning the
|
55
|
+
# decompressed version as a StringIO
|
56
|
+
def ungzip(tarfile)
|
57
|
+
z = Zlib::GzipReader.new(tarfile)
|
58
|
+
unzipped = StringIO.new(z.read)
|
59
|
+
z.close
|
60
|
+
unzipped
|
61
|
+
end
|
62
|
+
|
63
|
+
# untars the given IO into the specified
|
64
|
+
# directory
|
65
|
+
def untar(io, destination)
|
66
|
+
Gem::Package::TarReader.new io do |tar|
|
67
|
+
tar.each do |tarfile|
|
68
|
+
destination_file = File.join destination, tarfile.full_name
|
69
|
+
|
70
|
+
if tarfile.directory?
|
71
|
+
FileUtils.mkdir_p destination_file
|
72
|
+
else
|
73
|
+
destination_directory = File.dirname(destination_file)
|
74
|
+
FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory)
|
75
|
+
File.open destination_file, 'wb' do |f|
|
76
|
+
f.print tarfile.read
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
### Usage Example: ###
|
86
|
+
#
|
87
|
+
# include Util::Tar
|
88
|
+
#
|
89
|
+
# io = tar("./Desktop") # io is a TAR of files
|
90
|
+
# gz = gzip(io) # gz is a TGZ
|
91
|
+
#
|
92
|
+
# io = ungzip(gz) # io is a TAR
|
93
|
+
# untar(io, "./untarred") # files are untarred
|
94
|
+
#
|
data/lib/validator.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
module IcingaCertService
|
3
|
+
|
4
|
+
# namespace for validate options
|
5
|
+
module Validator
|
6
|
+
|
7
|
+
# function to validate function parameters
|
8
|
+
#
|
9
|
+
# @param [Hash] params
|
10
|
+
# @param [Hash] options
|
11
|
+
# @option options [Bool] requiered
|
12
|
+
# @option options [String] vat
|
13
|
+
# @option options [Object] type Ruby Object to check the valid type. e.g String, Ineger Hash, ...
|
14
|
+
#
|
15
|
+
# @example
|
16
|
+
# name = validate( params, required: true, var: 'name', type: String )
|
17
|
+
# vars = validate( params, required: false, var: 'vars', type: Hash )
|
18
|
+
#
|
19
|
+
# @return [Mixed] the variable from the parmas Hash or nil
|
20
|
+
#
|
21
|
+
def validate( params, options )
|
22
|
+
required = options.dig(:required) || false
|
23
|
+
var = options.dig(:var)
|
24
|
+
type = options.dig(:type)
|
25
|
+
|
26
|
+
params = params.deep_symbolize_keys
|
27
|
+
variable = params.dig(var.to_sym)
|
28
|
+
|
29
|
+
clazz = Object.const_get(type.to_s)
|
30
|
+
|
31
|
+
raise ArgumentError.new(format('\'%s\' is requiered and missing!', var)) if(variable.nil?) if(required == true )
|
32
|
+
raise ArgumentError.new(format('wrong type. \'%s\' must be an %s, given \'%s\'', var, type, variable.class.to_s)) unless( variable.nil? || variable.is_a?(clazz) )
|
33
|
+
|
34
|
+
variable
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
metadata
ADDED
@@ -0,0 +1,246 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: icinga-cert-service
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.18.4
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bodo Schulz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: openssl
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sinatra
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: puma
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.10'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rest-client
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: json
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.1'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sinatra-basic-auth
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '3.7'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '3.7'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec-nc
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.3'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.3'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: guard
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.14'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.14'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard-rspec
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '4.7'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '4.7'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: pry
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0.9'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0.9'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: pry-remote
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0.1'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0.1'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: pry-nav
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0.2'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0.2'
|
195
|
+
description: 'Ruby Class to create an provide a Icinga2 Certificate for Satellites
|
196
|
+
or Agents '
|
197
|
+
email: bodo@boone-schulz.de
|
198
|
+
executables: []
|
199
|
+
extensions: []
|
200
|
+
extra_rdoc_files: []
|
201
|
+
files:
|
202
|
+
- LICENSE
|
203
|
+
- README.md
|
204
|
+
- bin/icinga2-cert-service.rb
|
205
|
+
- bin/installer.sh
|
206
|
+
- bin/test.rb
|
207
|
+
- lib/cert-service.rb
|
208
|
+
- lib/cert-service/backup.rb
|
209
|
+
- lib/cert-service/certificate_handler.rb
|
210
|
+
- lib/cert-service/configure_icinga.rb
|
211
|
+
- lib/cert-service/download.rb
|
212
|
+
- lib/cert-service/endpoint_handler.rb
|
213
|
+
- lib/cert-service/executor.rb
|
214
|
+
- lib/cert-service/in-memory-cache.rb
|
215
|
+
- lib/cert-service/templates.rb
|
216
|
+
- lib/cert-service/version.rb
|
217
|
+
- lib/cert-service/zone_handler.rb
|
218
|
+
- lib/logging.rb
|
219
|
+
- lib/monkey_patches.rb
|
220
|
+
- lib/util.rb
|
221
|
+
- lib/validator.rb
|
222
|
+
homepage: https://github.com/bodsch/ruby-icinga-cert-service
|
223
|
+
licenses:
|
224
|
+
- LGPL-2.1+
|
225
|
+
metadata: {}
|
226
|
+
post_install_message:
|
227
|
+
rdoc_options: []
|
228
|
+
require_paths:
|
229
|
+
- lib
|
230
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
231
|
+
requirements:
|
232
|
+
- - "~>"
|
233
|
+
- !ruby/object:Gem::Version
|
234
|
+
version: '2.0'
|
235
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
requirements:
|
237
|
+
- - ">="
|
238
|
+
- !ruby/object:Gem::Version
|
239
|
+
version: '0'
|
240
|
+
requirements: []
|
241
|
+
rubyforge_project:
|
242
|
+
rubygems_version: 2.7.6
|
243
|
+
signing_key:
|
244
|
+
specification_version: 4
|
245
|
+
summary: Icinga Certificate Service
|
246
|
+
test_files: []
|