oxidized 0.29.1 → 0.30.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 +4 -4
- data/.github/workflows/codeql.yml +4 -4
- data/.github/workflows/publishdocker.yml +3 -0
- data/.github/workflows/ruby.yml +1 -1
- data/.github/workflows/stale.yml +4 -1
- data/.rubocop.yml +6 -3
- data/.rubocop_todo.yml +10 -93
- data/CHANGELOG.md +66 -4
- data/CONTRIBUTING.md +174 -0
- data/Dockerfile +12 -1
- data/README.md +18 -36
- data/bin/oxidized +2 -5
- data/docs/Hooks.md +37 -1
- data/docs/Model-Notes/APC_AOS.md +52 -0
- data/docs/Model-Notes/FSOS.md +11 -0
- data/docs/Model-Notes/FortiOS.md +28 -0
- data/docs/Model-Notes/README.md +1 -20
- data/docs/Model-Notes/XGS4600-Zyxel.md +5 -0
- data/docs/Ruby-API.md +1 -1
- data/docs/Sources.md +13 -0
- data/docs/Supported-OS-Types.md +178 -270
- data/docs/Troubleshooting.md +16 -0
- data/examples/podman-compose/Makefile +61 -0
- data/examples/podman-compose/README.md +58 -0
- data/examples/podman-compose/docker-compose.yml +21 -0
- data/examples/podman-compose/model-simulation/Dockerfile-model +13 -0
- data/examples/podman-compose/model-simulation/asternos.sh +34 -0
- data/examples/podman-compose/oxidized-config/.gitignore +8 -0
- data/examples/podman-compose/oxidized-config/config +46 -0
- data/examples/podman-compose/oxidized-config/router.db +1 -0
- data/examples/podman-compose/oxidized-ssh/README.md +14 -0
- data/extra/rest_client.rb +2 -2
- data/extra/syslog.rb +2 -2
- data/lib/oxidized/cli.rb +6 -4
- data/lib/oxidized/config.rb +17 -14
- data/lib/oxidized/core.rb +22 -3
- data/lib/oxidized/hook.rb +3 -3
- data/lib/oxidized/input/exec.rb +1 -1
- data/lib/oxidized/input/ftp.rb +2 -2
- data/lib/oxidized/input/http.rb +32 -8
- data/lib/oxidized/input/input.rb +1 -1
- data/lib/oxidized/input/scp.rb +52 -0
- data/lib/oxidized/input/ssh.rb +10 -7
- data/lib/oxidized/input/telnet.rb +3 -2
- data/lib/oxidized/input/tftp.rb +1 -1
- data/lib/oxidized/jobs.rb +11 -1
- data/lib/oxidized/manager.rb +6 -6
- data/lib/oxidized/model/acos.rb +1 -1
- data/lib/oxidized/model/addpack.rb +26 -0
- data/lib/oxidized/model/adtran.rb +5 -1
- data/lib/oxidized/model/adva.rb +2 -2
- data/lib/oxidized/model/aoscx.rb +2 -1
- data/lib/oxidized/model/apc_aos.rb +2 -1
- data/lib/oxidized/model/aricentiss.rb +7 -0
- data/lib/oxidized/model/asternos.rb +22 -0
- data/lib/oxidized/model/asyncos.rb +2 -2
- data/lib/oxidized/model/awplus.rb +2 -2
- data/lib/oxidized/model/bdcom.rb +1 -0
- data/lib/oxidized/model/c4cmts.rb +1 -2
- data/lib/oxidized/model/ciscosma.rb +1 -1
- data/lib/oxidized/model/ciscosmb.rb +6 -1
- data/lib/oxidized/model/comware.rb +2 -2
- data/lib/oxidized/model/cumulus.rb +1 -1
- data/lib/oxidized/model/dellx.rb +1 -1
- data/lib/oxidized/model/dlink.rb +4 -2
- data/lib/oxidized/model/dlinknextgen.rb +51 -0
- data/lib/oxidized/model/dnos.rb +3 -0
- data/lib/oxidized/model/edgecos.rb +1 -1
- data/lib/oxidized/model/eltex.rb +2 -0
- data/lib/oxidized/model/enterasys800.rb +1 -1
- data/lib/oxidized/model/eos.rb +1 -1
- data/lib/oxidized/model/firebrick.rb +2 -2
- data/lib/oxidized/model/firewareos.rb +1 -1
- data/lib/oxidized/model/fortios.rb +9 -2
- data/lib/oxidized/model/fsos.rb +44 -0
- data/lib/oxidized/model/ios.rb +1 -1
- data/lib/oxidized/model/iosxr.rb +2 -2
- data/lib/oxidized/model/junos.rb +3 -2
- data/lib/oxidized/model/mimosab11.rb +34 -0
- data/lib/oxidized/model/ml66.rb +33 -0
- data/lib/oxidized/model/model.rb +3 -3
- data/lib/oxidized/model/netgear.rb +1 -1
- data/lib/oxidized/model/netscaler.rb +1 -1
- data/lib/oxidized/model/nxos.rb +4 -3
- data/lib/oxidized/model/ocnos.rb +42 -0
- data/lib/oxidized/model/onefinity.rb +18 -0
- data/lib/oxidized/model/openbsd.rb +1 -1
- data/lib/oxidized/model/opengear.rb +36 -1
- data/lib/oxidized/model/opnsense.rb +1 -1
- data/lib/oxidized/model/panos.rb +2 -0
- data/lib/oxidized/model/pfsense.rb +1 -0
- data/lib/oxidized/model/procurve.rb +3 -1
- data/lib/oxidized/model/rgos.rb +33 -0
- data/lib/oxidized/model/routeros.rb +10 -8
- data/lib/oxidized/model/slxos.rb +2 -2
- data/lib/oxidized/model/sonicos.rb +18 -17
- data/lib/oxidized/model/sros.rb +3 -3
- data/lib/oxidized/model/tplink.rb +4 -3
- data/lib/oxidized/model/truenas.rb +2 -1
- data/lib/oxidized/model/vrp.rb +3 -1
- data/lib/oxidized/model/vyatta.rb +6 -0
- data/lib/oxidized/model/zynos.rb +67 -3
- data/lib/oxidized/model/zynosadsl.rb +14 -0
- data/lib/oxidized/model/zynosgs.rb +2 -0
- data/lib/oxidized/model/zynosmgs.rb +32 -0
- data/lib/oxidized/node.rb +7 -7
- data/lib/oxidized/nodes.rb +17 -12
- data/lib/oxidized/output/file.rb +1 -1
- data/lib/oxidized/output/git.rb +5 -3
- data/lib/oxidized/output/gitcrypt.rb +4 -3
- data/lib/oxidized/signals.rb +44 -0
- data/lib/oxidized/source/csv.rb +1 -1
- data/lib/oxidized/source/http.rb +26 -5
- data/lib/oxidized/source/source.rb +2 -2
- data/lib/oxidized/source/sql.rb +3 -3
- data/lib/oxidized/version.rb +2 -2
- data/lib/oxidized/worker.rb +8 -1
- data/lib/oxidized.rb +3 -2
- data/lib/refinements.rb +1 -1
- data/oxidized.gemspec +6 -3
- metadata +77 -9
data/lib/oxidized/output/file.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Oxidized
|
|
|
12
12
|
def setup
|
|
13
13
|
return unless @cfg.empty?
|
|
14
14
|
|
|
15
|
-
Oxidized.asetus.user.output.file.directory = File.join(Config::
|
|
15
|
+
Oxidized.asetus.user.output.file.directory = File.join(Config::ROOT, 'configs')
|
|
16
16
|
Oxidized.asetus.save :user
|
|
17
17
|
raise NoConfig, 'no output file config, edit ~/.config/oxidized/config'
|
|
18
18
|
end
|
data/lib/oxidized/output/git.rb
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
module Oxidized
|
|
2
2
|
class Git < Output
|
|
3
|
+
using Refinements
|
|
4
|
+
|
|
3
5
|
class GitError < OxidizedError; end
|
|
4
6
|
begin
|
|
5
7
|
require 'rugged'
|
|
@@ -18,7 +20,7 @@ module Oxidized
|
|
|
18
20
|
if @cfg.empty?
|
|
19
21
|
Oxidized.asetus.user.output.git.user = 'Oxidized'
|
|
20
22
|
Oxidized.asetus.user.output.git.email = 'o@example.com'
|
|
21
|
-
Oxidized.asetus.user.output.git.repo = File.join(Config::
|
|
23
|
+
Oxidized.asetus.user.output.git.repo = File.join(Config::ROOT, 'oxidized.git')
|
|
22
24
|
Oxidized.asetus.save :user
|
|
23
25
|
raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
|
|
24
26
|
end
|
|
@@ -34,8 +36,8 @@ module Oxidized
|
|
|
34
36
|
|
|
35
37
|
def store(file, outputs, opt = {})
|
|
36
38
|
@msg = opt[:msg]
|
|
37
|
-
@user =
|
|
38
|
-
@email =
|
|
39
|
+
@user = opt[:user] || @cfg.user
|
|
40
|
+
@email = opt[:email] || @cfg.email
|
|
39
41
|
@opt = opt
|
|
40
42
|
@commitref = nil
|
|
41
43
|
repo = @cfg.repo
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
module Oxidized
|
|
2
2
|
class GitCrypt < Output
|
|
3
|
+
using Refinements
|
|
3
4
|
class GitCryptError < OxidizedError; end
|
|
4
5
|
begin
|
|
5
6
|
require 'git'
|
|
@@ -23,7 +24,7 @@ module Oxidized
|
|
|
23
24
|
if @cfg.empty?
|
|
24
25
|
Oxidized.asetus.user.output.gitcrypt.user = 'Oxidized'
|
|
25
26
|
Oxidized.asetus.user.output.gitcrypt.email = 'o@example.com'
|
|
26
|
-
Oxidized.asetus.user.output.gitcrypt.repo = File.join(Config::
|
|
27
|
+
Oxidized.asetus.user.output.gitcrypt.repo = File.join(Config::ROOT, 'oxidized.git')
|
|
27
28
|
Oxidized.asetus.save :user
|
|
28
29
|
raise NoConfig, 'no output git config, edit ~/.config/oxidized/config'
|
|
29
30
|
end
|
|
@@ -63,8 +64,8 @@ module Oxidized
|
|
|
63
64
|
|
|
64
65
|
def store(file, outputs, opt = {})
|
|
65
66
|
@msg = opt[:msg]
|
|
66
|
-
@user =
|
|
67
|
-
@email =
|
|
67
|
+
@user = opt[:user] || @cfg.user
|
|
68
|
+
@email = opt[:email] || @cfg.email
|
|
68
69
|
@opt = opt
|
|
69
70
|
@commitref = nil
|
|
70
71
|
repo = @cfg.repo
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Monkey patch Signal.trap for Puma to keep it from overriding our handlers
|
|
2
|
+
# Also prevent Puma from registering its own SIGHUP handler
|
|
3
|
+
module Puma
|
|
4
|
+
class Signal
|
|
5
|
+
class << self
|
|
6
|
+
alias os_trap trap
|
|
7
|
+
def Signal.trap(sig, &block)
|
|
8
|
+
sigshortname = sig.gsub "SIG", ''
|
|
9
|
+
Oxidized::Signals.register_signal(sig, block) unless sigshortname.eql? 'HUP'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module Oxidized
|
|
16
|
+
class Signals
|
|
17
|
+
@handlers = Hash.new { |h, k| h[k] = [] }
|
|
18
|
+
class << self
|
|
19
|
+
attr_accessor :handlers
|
|
20
|
+
|
|
21
|
+
def register_signal(sig, procobj)
|
|
22
|
+
# Compute short name of the signal (without SIG prefix)
|
|
23
|
+
sigshortname = sig.gsub "SIG", ''
|
|
24
|
+
signum = Signal.list[sigshortname]
|
|
25
|
+
|
|
26
|
+
# Register the handler with OS
|
|
27
|
+
Signal.trap signum do
|
|
28
|
+
Oxidized::Signals.handle_signal(signum)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Add the proc to the handler list for the requested signal
|
|
32
|
+
@handlers[signum].push(procobj)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def handle_signal(signum)
|
|
36
|
+
return unless handlers.has_key?(signum)
|
|
37
|
+
|
|
38
|
+
@handlers[signum].each do |handler|
|
|
39
|
+
handler.call
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/lib/oxidized/source/csv.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Oxidized
|
|
|
7
7
|
|
|
8
8
|
def setup
|
|
9
9
|
if @cfg.empty?
|
|
10
|
-
Oxidized.asetus.user.source.csv.file = File.join(Config::
|
|
10
|
+
Oxidized.asetus.user.source.csv.file = File.join(Config::ROOT, 'router.db')
|
|
11
11
|
Oxidized.asetus.user.source.csv.delimiter = /:/
|
|
12
12
|
Oxidized.asetus.user.source.csv.map.name = 0
|
|
13
13
|
Oxidized.asetus.user.source.csv.map.model = 1
|
data/lib/oxidized/source/http.rb
CHANGED
|
@@ -6,6 +6,7 @@ module Oxidized
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
def setup
|
|
9
|
+
Oxidized.setup_logger
|
|
9
10
|
return unless @cfg.url.empty?
|
|
10
11
|
|
|
11
12
|
raise NoConfig, 'no source http url config, edit ~/.config/oxidized/config'
|
|
@@ -18,9 +19,14 @@ module Oxidized
|
|
|
18
19
|
|
|
19
20
|
def load(node_want = nil)
|
|
20
21
|
nodes = []
|
|
21
|
-
|
|
22
|
-
data =
|
|
23
|
-
|
|
22
|
+
uri = URI.parse(@cfg.url)
|
|
23
|
+
data = JSON.parse(read_http(uri, node_want))
|
|
24
|
+
node_data = data
|
|
25
|
+
node_data = string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
|
26
|
+
node_data = pagination(data, node_want) if @cfg.pagination?
|
|
27
|
+
|
|
28
|
+
# at this point we have all the nodes; pagination or not
|
|
29
|
+
node_data.each do |node|
|
|
24
30
|
next if node.empty?
|
|
25
31
|
|
|
26
32
|
# map node parameters
|
|
@@ -56,8 +62,23 @@ module Oxidized
|
|
|
56
62
|
object
|
|
57
63
|
end
|
|
58
64
|
|
|
59
|
-
def
|
|
60
|
-
|
|
65
|
+
def pagination(data, node_want)
|
|
66
|
+
node_data = []
|
|
67
|
+
raise Oxidized::OxidizedError, "if using pagination, 'pagination_key_name' setting must be set" unless @cfg.pagination_key_name?
|
|
68
|
+
|
|
69
|
+
next_key = @cfg.pagination_key_name
|
|
70
|
+
loop do
|
|
71
|
+
node_data += string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
|
72
|
+
break if data[next_key].nil?
|
|
73
|
+
|
|
74
|
+
new_uri = URI.parse(data[next_key]) if data.has_key?(next_key)
|
|
75
|
+
data = JSON.parse(read_http(new_uri, node_want))
|
|
76
|
+
node_data += string_navigate(data, @cfg.hosts_location) if @cfg.hosts_location?
|
|
77
|
+
end
|
|
78
|
+
node_data
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def read_http(uri, node_want)
|
|
61
82
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
62
83
|
http.use_ssl = true if uri.scheme == 'https'
|
|
63
84
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @cfg.secure
|
|
@@ -3,8 +3,8 @@ module Oxidized
|
|
|
3
3
|
class NoConfig < OxidizedError; end
|
|
4
4
|
|
|
5
5
|
def initialize
|
|
6
|
-
@model_map =
|
|
7
|
-
@group_map =
|
|
6
|
+
@model_map = Oxidized.config.model_map || {}
|
|
7
|
+
@group_map = Oxidized.config.group_map || {}
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def map_model(model)
|
data/lib/oxidized/source/sql.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Oxidized
|
|
|
10
10
|
return unless @cfg.empty?
|
|
11
11
|
|
|
12
12
|
Oxidized.asetus.user.source.sql.adapter = 'sqlite'
|
|
13
|
-
Oxidized.asetus.user.source.sql.database = File.join(Config::
|
|
13
|
+
Oxidized.asetus.user.source.sql.database = File.join(Config::ROOT, 'sqlite.db')
|
|
14
14
|
Oxidized.asetus.user.source.sql.table = 'devices'
|
|
15
15
|
Oxidized.asetus.user.source.sql.map.name = 'name'
|
|
16
16
|
Oxidized.asetus.user.source.sql.map.model = 'rancid'
|
|
@@ -68,8 +68,8 @@ module Oxidized
|
|
|
68
68
|
sslkey: @cfg.ssl_key?)
|
|
69
69
|
end
|
|
70
70
|
Sequel.connect(options)
|
|
71
|
-
rescue Sequel::AdapterNotFound =>
|
|
72
|
-
raise OxidizedError, "SQL adapter gem not installed: " +
|
|
71
|
+
rescue Sequel::AdapterNotFound => e
|
|
72
|
+
raise OxidizedError, "SQL adapter gem not installed: " + e.message
|
|
73
73
|
end
|
|
74
74
|
end
|
|
75
75
|
end
|
data/lib/oxidized/version.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Oxidized
|
|
2
|
-
VERSION = '0.
|
|
3
|
-
VERSION_FULL = '0.
|
|
2
|
+
VERSION = '0.30.0'.freeze
|
|
3
|
+
VERSION_FULL = '0.30.0'.freeze
|
|
4
4
|
def self.version_set
|
|
5
5
|
version_full = %x(git describe --tags).chop rescue ""
|
|
6
6
|
version = %x(git describe --tags --abbrev=0).chop rescue ""
|
data/lib/oxidized/worker.rb
CHANGED
|
@@ -33,7 +33,10 @@ module Oxidized
|
|
|
33
33
|
Oxidized.logger.debug "lib/oxidized/worker.rb: Added #{node.group}/#{node.name} to the job queue"
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
if cycle_finished?
|
|
37
|
+
run_done_hook
|
|
38
|
+
exit 0 if Oxidized.config.run_once
|
|
39
|
+
end
|
|
37
40
|
Oxidized.logger.debug("lib/oxidized/worker.rb: #{@jobs.size} jobs running in parallel") unless @jobs.empty?
|
|
38
41
|
end
|
|
39
42
|
|
|
@@ -52,6 +55,10 @@ module Oxidized
|
|
|
52
55
|
Oxidized.logger.warn "#{node.group}/#{node.name} not found, removed while collecting?"
|
|
53
56
|
end
|
|
54
57
|
|
|
58
|
+
def reload
|
|
59
|
+
@nodes.load
|
|
60
|
+
end
|
|
61
|
+
|
|
55
62
|
private
|
|
56
63
|
|
|
57
64
|
def process_success(node, job)
|
data/lib/oxidized.rb
CHANGED
|
@@ -13,6 +13,7 @@ module Oxidized
|
|
|
13
13
|
require 'oxidized/nodes'
|
|
14
14
|
require 'oxidized/manager'
|
|
15
15
|
require 'oxidized/hook'
|
|
16
|
+
require 'oxidized/signals'
|
|
16
17
|
require 'oxidized/core'
|
|
17
18
|
|
|
18
19
|
def self.asetus
|
|
@@ -36,7 +37,7 @@ module Oxidized
|
|
|
36
37
|
end
|
|
37
38
|
|
|
38
39
|
def self.setup_logger
|
|
39
|
-
FileUtils.mkdir_p(Config::
|
|
40
|
+
FileUtils.mkdir_p(Config::LOG) unless File.directory?(Config::LOG)
|
|
40
41
|
self.logger = if config.has_key?('use_syslog') && config.use_syslog
|
|
41
42
|
require 'syslog/logger'
|
|
42
43
|
Syslog::Logger.new('oxidized')
|
|
@@ -45,7 +46,7 @@ module Oxidized
|
|
|
45
46
|
if config.has_key?('log')
|
|
46
47
|
Logger.new(File.expand_path(config.log))
|
|
47
48
|
else
|
|
48
|
-
Logger.new(
|
|
49
|
+
Logger.new($stderr)
|
|
49
50
|
end
|
|
50
51
|
end
|
|
51
52
|
logger.level = Logger::INFO unless config.debug
|
data/lib/refinements.rb
CHANGED
data/oxidized.gemspec
CHANGED
|
@@ -24,19 +24,22 @@ Gem::Specification.new do |s|
|
|
|
24
24
|
s.add_runtime_dependency 'asetus', '~> 0.1'
|
|
25
25
|
s.add_runtime_dependency 'bcrypt_pbkdf', '~> 1.0'
|
|
26
26
|
s.add_runtime_dependency 'ed25519', '~> 1.2'
|
|
27
|
+
s.add_runtime_dependency 'net-ftp', '~> 0.2'
|
|
28
|
+
s.add_runtime_dependency 'net-scp', '~> 4.0'
|
|
27
29
|
s.add_runtime_dependency 'net-ssh', '~> 7.1'
|
|
28
30
|
s.add_runtime_dependency 'net-telnet', '~> 0.2'
|
|
31
|
+
s.add_runtime_dependency 'psych', '~> 3.3.2'
|
|
29
32
|
s.add_runtime_dependency 'rugged', '~> 1.6'
|
|
30
33
|
s.add_runtime_dependency 'slop', '~> 4.6'
|
|
31
34
|
|
|
32
35
|
s.add_development_dependency 'bundler', '~> 2.2'
|
|
33
36
|
s.add_development_dependency 'git', '~> 1'
|
|
34
37
|
s.add_development_dependency 'minitest', '~> 5.18'
|
|
35
|
-
s.add_development_dependency 'mocha', '~> 1
|
|
38
|
+
s.add_development_dependency 'mocha', '~> 2.1'
|
|
36
39
|
s.add_development_dependency 'pry', '~> 0.14.2'
|
|
37
40
|
s.add_development_dependency 'rake', '~> 13.0'
|
|
38
|
-
s.add_development_dependency 'rubocop', '~> 1.
|
|
39
|
-
s.add_development_dependency 'rubocop-minitest', '~> 0.
|
|
41
|
+
s.add_development_dependency 'rubocop', '~> 1.62.0'
|
|
42
|
+
s.add_development_dependency 'rubocop-minitest', '~> 0.35.0'
|
|
40
43
|
s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
|
41
44
|
s.add_development_dependency 'simplecov', '~> 0.22.0'
|
|
42
45
|
s.add_development_dependency 'simplecov-cobertura', '~> 2.1.0'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: oxidized
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.30.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Saku Ytti
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2024-04-11 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: asetus
|
|
@@ -54,6 +54,34 @@ dependencies:
|
|
|
54
54
|
- - "~>"
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
56
|
version: '1.2'
|
|
57
|
+
- !ruby/object:Gem::Dependency
|
|
58
|
+
name: net-ftp
|
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
|
60
|
+
requirements:
|
|
61
|
+
- - "~>"
|
|
62
|
+
- !ruby/object:Gem::Version
|
|
63
|
+
version: '0.2'
|
|
64
|
+
type: :runtime
|
|
65
|
+
prerelease: false
|
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - "~>"
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0.2'
|
|
71
|
+
- !ruby/object:Gem::Dependency
|
|
72
|
+
name: net-scp
|
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
|
74
|
+
requirements:
|
|
75
|
+
- - "~>"
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '4.0'
|
|
78
|
+
type: :runtime
|
|
79
|
+
prerelease: false
|
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - "~>"
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '4.0'
|
|
57
85
|
- !ruby/object:Gem::Dependency
|
|
58
86
|
name: net-ssh
|
|
59
87
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -82,6 +110,20 @@ dependencies:
|
|
|
82
110
|
- - "~>"
|
|
83
111
|
- !ruby/object:Gem::Version
|
|
84
112
|
version: '0.2'
|
|
113
|
+
- !ruby/object:Gem::Dependency
|
|
114
|
+
name: psych
|
|
115
|
+
requirement: !ruby/object:Gem::Requirement
|
|
116
|
+
requirements:
|
|
117
|
+
- - "~>"
|
|
118
|
+
- !ruby/object:Gem::Version
|
|
119
|
+
version: 3.3.2
|
|
120
|
+
type: :runtime
|
|
121
|
+
prerelease: false
|
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
123
|
+
requirements:
|
|
124
|
+
- - "~>"
|
|
125
|
+
- !ruby/object:Gem::Version
|
|
126
|
+
version: 3.3.2
|
|
85
127
|
- !ruby/object:Gem::Dependency
|
|
86
128
|
name: rugged
|
|
87
129
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -158,14 +200,14 @@ dependencies:
|
|
|
158
200
|
requirements:
|
|
159
201
|
- - "~>"
|
|
160
202
|
- !ruby/object:Gem::Version
|
|
161
|
-
version: '1
|
|
203
|
+
version: '2.1'
|
|
162
204
|
type: :development
|
|
163
205
|
prerelease: false
|
|
164
206
|
version_requirements: !ruby/object:Gem::Requirement
|
|
165
207
|
requirements:
|
|
166
208
|
- - "~>"
|
|
167
209
|
- !ruby/object:Gem::Version
|
|
168
|
-
version: '1
|
|
210
|
+
version: '2.1'
|
|
169
211
|
- !ruby/object:Gem::Dependency
|
|
170
212
|
name: pry
|
|
171
213
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -200,28 +242,28 @@ dependencies:
|
|
|
200
242
|
requirements:
|
|
201
243
|
- - "~>"
|
|
202
244
|
- !ruby/object:Gem::Version
|
|
203
|
-
version: 1.
|
|
245
|
+
version: 1.62.0
|
|
204
246
|
type: :development
|
|
205
247
|
prerelease: false
|
|
206
248
|
version_requirements: !ruby/object:Gem::Requirement
|
|
207
249
|
requirements:
|
|
208
250
|
- - "~>"
|
|
209
251
|
- !ruby/object:Gem::Version
|
|
210
|
-
version: 1.
|
|
252
|
+
version: 1.62.0
|
|
211
253
|
- !ruby/object:Gem::Dependency
|
|
212
254
|
name: rubocop-minitest
|
|
213
255
|
requirement: !ruby/object:Gem::Requirement
|
|
214
256
|
requirements:
|
|
215
257
|
- - "~>"
|
|
216
258
|
- !ruby/object:Gem::Version
|
|
217
|
-
version: 0.
|
|
259
|
+
version: 0.35.0
|
|
218
260
|
type: :development
|
|
219
261
|
prerelease: false
|
|
220
262
|
version_requirements: !ruby/object:Gem::Requirement
|
|
221
263
|
requirements:
|
|
222
264
|
- - "~>"
|
|
223
265
|
- !ruby/object:Gem::Version
|
|
224
|
-
version: 0.
|
|
266
|
+
version: 0.35.0
|
|
225
267
|
- !ruby/object:Gem::Dependency
|
|
226
268
|
name: rubocop-rake
|
|
227
269
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -299,6 +341,7 @@ files:
|
|
|
299
341
|
- ".rubocop.yml"
|
|
300
342
|
- ".rubocop_todo.yml"
|
|
301
343
|
- CHANGELOG.md
|
|
344
|
+
- CONTRIBUTING.md
|
|
302
345
|
- Dockerfile
|
|
303
346
|
- Gemfile
|
|
304
347
|
- LICENSE
|
|
@@ -311,11 +354,14 @@ files:
|
|
|
311
354
|
- docs/Creating-Models.md
|
|
312
355
|
- docs/Hooks.md
|
|
313
356
|
- docs/Model-Notes/ADVA.md
|
|
357
|
+
- docs/Model-Notes/APC_AOS.md
|
|
314
358
|
- docs/Model-Notes/AireOS.md
|
|
315
359
|
- docs/Model-Notes/ArbOS.md
|
|
316
360
|
- docs/Model-Notes/Comware.md
|
|
317
361
|
- docs/Model-Notes/Cumulus.md
|
|
318
362
|
- docs/Model-Notes/EOS.md
|
|
363
|
+
- docs/Model-Notes/FSOS.md
|
|
364
|
+
- docs/Model-Notes/FortiOS.md
|
|
319
365
|
- docs/Model-Notes/IOS.md
|
|
320
366
|
- docs/Model-Notes/JunOS.md
|
|
321
367
|
- docs/Model-Notes/LenovoNOS.md
|
|
@@ -335,6 +381,15 @@ files:
|
|
|
335
381
|
- docs/Sources.md
|
|
336
382
|
- docs/Supported-OS-Types.md
|
|
337
383
|
- docs/Troubleshooting.md
|
|
384
|
+
- examples/podman-compose/Makefile
|
|
385
|
+
- examples/podman-compose/README.md
|
|
386
|
+
- examples/podman-compose/docker-compose.yml
|
|
387
|
+
- examples/podman-compose/model-simulation/Dockerfile-model
|
|
388
|
+
- examples/podman-compose/model-simulation/asternos.sh
|
|
389
|
+
- examples/podman-compose/oxidized-config/.gitignore
|
|
390
|
+
- examples/podman-compose/oxidized-config/config
|
|
391
|
+
- examples/podman-compose/oxidized-config/router.db
|
|
392
|
+
- examples/podman-compose/oxidized-ssh/README.md
|
|
338
393
|
- extra/auto-reload-config.runit
|
|
339
394
|
- extra/gitdiff-msteams.sh
|
|
340
395
|
- extra/nagios_check_failing_nodes.rb
|
|
@@ -371,6 +426,7 @@ files:
|
|
|
371
426
|
- lib/oxidized/input/ftp.rb
|
|
372
427
|
- lib/oxidized/input/http.rb
|
|
373
428
|
- lib/oxidized/input/input.rb
|
|
429
|
+
- lib/oxidized/input/scp.rb
|
|
374
430
|
- lib/oxidized/input/ssh.rb
|
|
375
431
|
- lib/oxidized/input/telnet.rb
|
|
376
432
|
- lib/oxidized/input/tftp.rb
|
|
@@ -380,6 +436,7 @@ files:
|
|
|
380
436
|
- lib/oxidized/model/acmepacket.rb
|
|
381
437
|
- lib/oxidized/model/acos.rb
|
|
382
438
|
- lib/oxidized/model/acsw.rb
|
|
439
|
+
- lib/oxidized/model/addpack.rb
|
|
383
440
|
- lib/oxidized/model/adtran.rb
|
|
384
441
|
- lib/oxidized/model/adva.rb
|
|
385
442
|
- lib/oxidized/model/aen.rb
|
|
@@ -396,6 +453,7 @@ files:
|
|
|
396
453
|
- lib/oxidized/model/arbos.rb
|
|
397
454
|
- lib/oxidized/model/aricentiss.rb
|
|
398
455
|
- lib/oxidized/model/asa.rb
|
|
456
|
+
- lib/oxidized/model/asternos.rb
|
|
399
457
|
- lib/oxidized/model/asyncos.rb
|
|
400
458
|
- lib/oxidized/model/audiocodes.rb
|
|
401
459
|
- lib/oxidized/model/audiocodesmp.rb
|
|
@@ -426,6 +484,7 @@ files:
|
|
|
426
484
|
- lib/oxidized/model/dcnos.rb
|
|
427
485
|
- lib/oxidized/model/dellx.rb
|
|
428
486
|
- lib/oxidized/model/dlink.rb
|
|
487
|
+
- lib/oxidized/model/dlinknextgen.rb
|
|
429
488
|
- lib/oxidized/model/dnos.rb
|
|
430
489
|
- lib/oxidized/model/eciapollo.rb
|
|
431
490
|
- lib/oxidized/model/edgecos.rb
|
|
@@ -443,6 +502,7 @@ files:
|
|
|
443
502
|
- lib/oxidized/model/firewareos.rb
|
|
444
503
|
- lib/oxidized/model/fortios.rb
|
|
445
504
|
- lib/oxidized/model/fortiwlc.rb
|
|
505
|
+
- lib/oxidized/model/fsos.rb
|
|
446
506
|
- lib/oxidized/model/ftos.rb
|
|
447
507
|
- lib/oxidized/model/fujitsupy.rb
|
|
448
508
|
- lib/oxidized/model/gaiaos.rb
|
|
@@ -469,6 +529,8 @@ files:
|
|
|
469
529
|
- lib/oxidized/model/linksyssrw.rb
|
|
470
530
|
- lib/oxidized/model/linuxgeneric.rb
|
|
471
531
|
- lib/oxidized/model/masteros.rb
|
|
532
|
+
- lib/oxidized/model/mimosab11.rb
|
|
533
|
+
- lib/oxidized/model/ml66.rb
|
|
472
534
|
- lib/oxidized/model/mlnxos.rb
|
|
473
535
|
- lib/oxidized/model/model.rb
|
|
474
536
|
- lib/oxidized/model/mtrlrfs.rb
|
|
@@ -482,6 +544,8 @@ files:
|
|
|
482
544
|
- lib/oxidized/model/nsxconfig.rb
|
|
483
545
|
- lib/oxidized/model/nsxfirewall.rb
|
|
484
546
|
- lib/oxidized/model/nxos.rb
|
|
547
|
+
- lib/oxidized/model/ocnos.rb
|
|
548
|
+
- lib/oxidized/model/onefinity.rb
|
|
485
549
|
- lib/oxidized/model/oneos.rb
|
|
486
550
|
- lib/oxidized/model/openbsd.rb
|
|
487
551
|
- lib/oxidized/model/opengear.rb
|
|
@@ -499,6 +563,7 @@ files:
|
|
|
499
563
|
- lib/oxidized/model/qtech.rb
|
|
500
564
|
- lib/oxidized/model/quantaos.rb
|
|
501
565
|
- lib/oxidized/model/raisecom.rb
|
|
566
|
+
- lib/oxidized/model/rgos.rb
|
|
502
567
|
- lib/oxidized/model/routeros.rb
|
|
503
568
|
- lib/oxidized/model/saos.rb
|
|
504
569
|
- lib/oxidized/model/screenos.rb
|
|
@@ -534,8 +599,10 @@ files:
|
|
|
534
599
|
- lib/oxidized/model/zteolt.rb
|
|
535
600
|
- lib/oxidized/model/zy1308.rb
|
|
536
601
|
- lib/oxidized/model/zynos.rb
|
|
602
|
+
- lib/oxidized/model/zynosadsl.rb
|
|
537
603
|
- lib/oxidized/model/zynoscli.rb
|
|
538
604
|
- lib/oxidized/model/zynosgs.rb
|
|
605
|
+
- lib/oxidized/model/zynosmgs.rb
|
|
539
606
|
- lib/oxidized/node.rb
|
|
540
607
|
- lib/oxidized/node/stats.rb
|
|
541
608
|
- lib/oxidized/nodes.rb
|
|
@@ -544,6 +611,7 @@ files:
|
|
|
544
611
|
- lib/oxidized/output/gitcrypt.rb
|
|
545
612
|
- lib/oxidized/output/http.rb
|
|
546
613
|
- lib/oxidized/output/output.rb
|
|
614
|
+
- lib/oxidized/signals.rb
|
|
547
615
|
- lib/oxidized/source/csv.rb
|
|
548
616
|
- lib/oxidized/source/http.rb
|
|
549
617
|
- lib/oxidized/source/source.rb
|
|
@@ -572,7 +640,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
572
640
|
- !ruby/object:Gem::Version
|
|
573
641
|
version: '0'
|
|
574
642
|
requirements: []
|
|
575
|
-
rubygems_version: 3.
|
|
643
|
+
rubygems_version: 3.3.15
|
|
576
644
|
signing_key:
|
|
577
645
|
specification_version: 4
|
|
578
646
|
summary: feeble attempt at rancid
|