oxidized 0.36.0 → 0.37.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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/CHANGELOG.md +26 -0
  4. data/Rakefile +1 -1
  5. data/docs/Configuration.md +10 -1
  6. data/docs/Creating-Models.md +1 -1
  7. data/docs/Hooks.md +92 -67
  8. data/docs/Inputs.md +15 -12
  9. data/docs/Model-Notes/GrandstreamHT8xx.md +8 -0
  10. data/docs/Model-Notes/RouterOS.md +13 -0
  11. data/docs/Model-Notes/TrueNAS.md +11 -7
  12. data/docs/Release.md +6 -1
  13. data/docs/Supported-OS-Types.md +1 -0
  14. data/extra/hooks/modelrulesadvanced.rb +0 -1
  15. data/lib/oxidized/cli/support.rb +152 -0
  16. data/lib/oxidized/cli.rb +9 -0
  17. data/lib/oxidized/hook.rb +2 -0
  18. data/lib/oxidized/input/debugtext.rb +40 -0
  19. data/lib/oxidized/input/debugyaml.rb +82 -0
  20. data/lib/oxidized/input/exec.rb +1 -6
  21. data/lib/oxidized/input/ftp.rb +0 -4
  22. data/lib/oxidized/input/http.rb +1 -8
  23. data/lib/oxidized/input/ssh.rb +28 -21
  24. data/lib/oxidized/input/sshbase.rb +7 -12
  25. data/lib/oxidized/input/telnet.rb +12 -9
  26. data/lib/oxidized/input/tftp.rb +0 -4
  27. data/lib/oxidized/model/aoscx.rb +13 -9
  28. data/lib/oxidized/model/cumulus.rb +3 -3
  29. data/lib/oxidized/model/dlinknextgen.rb +1 -0
  30. data/lib/oxidized/model/fortigate.rb +1 -1
  31. data/lib/oxidized/model/grandstreamht8xx.rb +19 -0
  32. data/lib/oxidized/model/ios.rb +2 -0
  33. data/lib/oxidized/model/junos.rb +2 -2
  34. data/lib/oxidized/model/linuxgeneric.rb +4 -2
  35. data/lib/oxidized/model/nxos.rb +4 -1
  36. data/lib/oxidized/model/routeros.rb +4 -0
  37. data/lib/oxidized/model/tplink.rb +4 -6
  38. data/lib/oxidized/model/truenas.rb +56 -5
  39. data/lib/oxidized/model/vyos.rb +1 -0
  40. data/lib/oxidized/version.rb +2 -2
  41. metadata +6 -1
@@ -9,19 +9,70 @@ class TrueNAS < Oxidized::Model
9
9
  # for TrueNAS SCALE machines, make sure the user you use to connect can run
10
10
  # this command, or if needed, with passwordless sudo. Try putting this in
11
11
  # /etc/sudoers
12
- # oxidized ALL=(ALL) NOPASSWD: /usr/bin/sqlite3 file\:///data/freenas-v1.db?mode\=ro&immutable\=1 .dump
12
+ # oxidized ALL=(ALL) NOPASSWD: /usr/bin/find /mnt/.ix-apps/app_configs *, /usr/bin/sqlite3 -readonly file\:/data/freenas-v1.db *
13
13
 
14
- cmd("sqlite3 'file:///data/freenas-v1.db?mode=ro&immutable=1' .dump") do |cfg|
14
+ cmd("sqlite3 -readonly 'file:/data/freenas-v1.db' .dump") do |cfg|
15
15
  if cfg.include? "Error: unable to open database"
16
- cfg = cmd("sudo sqlite3 'file:///data/freenas-v1.db?mode=ro&immutable=1' .dump")
16
+ # retry with sudo
17
+ cfg = cmd("sudo sqlite3 -readonly 'file:/data/freenas-v1.db' .dump")
17
18
  end
18
19
  cfg.lines.reject do |line|
19
- line.match(/^INSERT INTO storage_replication /) ||
20
+ line.match(/^INSERT INTO storage_replication /) || # ignore storage_replication because repl_status field changes on every run
20
21
  line.match(/^INSERT INTO system_alert /) || # ignore system alerts in db
21
- line.match(/^INSERT INTO sqlite_sequence VALUES\('system_alert',/) # ignore system alerts in db
22
+ line.match(/^INSERT INTO sqlite_sequence VALUES\('system_alert',/) || # ignore system alerts in db
23
+ line.match(/^INSERT INTO tasks_cloudsync /) # ignore cloudsync tasks because job field changes on every run
22
24
  end.join
23
25
  end
24
26
 
27
+ post do
28
+ filter_column("storage_replication", "repl_state")
29
+ end
30
+
31
+ post do
32
+ filter_column("tasks_cloudsync", "job")
33
+ end
34
+
35
+ post do
36
+ collect_ixapps_configurations
37
+ end
38
+
39
+ def filter_column(table_name, column_name)
40
+ sqlite_cmd = "sqlite3 -readonly 'file:/data/freenas-v1.db'"
41
+
42
+ # This SQL command will create a SELECT query with all columns except the one we want to skip.
43
+ generate_select_cmd = "select 'select ' || group_concat(name,', ') || ' FROM #{table_name};' FROM pragma_table_info('#{table_name}') WHERE name != '#{column_name}';"
44
+
45
+ select_stmt = cmd("#{sqlite_cmd} \"#{generate_select_cmd}\"")
46
+ if select_stmt.include? "Error: unable to open database"
47
+ # retry with sudo
48
+ sqlite_cmd = "sudo #{sqlite_cmd}"
49
+ select_stmt = cmd("#{sqlite_cmd} \"#{generate_select_cmd}\"")
50
+ end
51
+
52
+ insert_cmds = "-header '.mode insert #{table_name}' '#{select_stmt}'"
53
+ cmd("#{sqlite_cmd} #{insert_cmds}") do |cfg|
54
+ if cfg.include? "INSERT"
55
+ # Don't add a COMMIT; if the query came up with no rows
56
+ cfg + "COMMIT;\n"
57
+ end
58
+ end
59
+ end
60
+
61
+ def collect_ixapps_configurations
62
+ config_command = <<~'CMDEND'
63
+ if [ -d /mnt/.ix-apps ];
64
+ then
65
+ sudo find /mnt/.ix-apps/app_configs
66
+ \( -name "app.yaml" -or -name "user_config.yaml" -or -name "metadata.yaml" \)
67
+ -printf "\n\n#######################\n# %p\n#######################\n"
68
+ -exec cat {} \; ;
69
+ else
70
+ echo "# No Apps configuration found in /mnt/.ix-apps";
71
+ fi
72
+ CMDEND
73
+ cmd(config_command.gsub("\n", ""))
74
+ end
75
+
25
76
  cfg :ssh do
26
77
  exec true # don't run shell, run each command in exec channel
27
78
  end
@@ -16,6 +16,7 @@ class Vyos < Oxidized::Model
16
16
  cfg.gsub! /secret (\S+).*/, 'secret <secret removed>'
17
17
  cfg.gsub! /password (\S+).*/, 'password <secret removed>'
18
18
  cfg.gsub! /snmp community (\S+)/, 'snmp community <secret removed>'
19
+ cfg.gsub! /snmp trap-target ([^\s\\]*) community (\S+)/, 'snmp trap-target \1 community <secret removed>'
19
20
  cfg.gsub! /preshared-key (\S+).*/, 'preshared-key <secret removed>'
20
21
  cfg.gsub! /private key (\S+).*/, 'private key <secret removed>'
21
22
  cfg.gsub! /private-key (\S+).*/, 'private-key <secret removed>'
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Oxidized
4
- VERSION = '0.36.0'
5
- VERSION_FULL = '0.36.0'
4
+ VERSION = '0.37.0'
5
+ VERSION_FULL = '0.37.0'
6
6
  def self.version_set
7
7
  version_full = %x(git describe --tags).chop rescue ""
8
8
  version = %x(git describe --tags --abbrev=0).chop rescue ""
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.36.0
4
+ version: 0.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saku Ytti
@@ -465,6 +465,7 @@ files:
465
465
  - docs/Model-Notes/ExaLink.md
466
466
  - docs/Model-Notes/FSOS.md
467
467
  - docs/Model-Notes/Fortinet.md
468
+ - docs/Model-Notes/GrandstreamHT8xx.md
468
469
  - docs/Model-Notes/HPEAruba.md
469
470
  - docs/Model-Notes/IOS.md
470
471
  - docs/Model-Notes/IvantiConnectSecure.md
@@ -516,6 +517,7 @@ files:
516
517
  - extra/update-ca-certificates.runit
517
518
  - lib/oxidized.rb
518
519
  - lib/oxidized/cli.rb
520
+ - lib/oxidized/cli/support.rb
519
521
  - lib/oxidized/config.rb
520
522
  - lib/oxidized/config/vars.rb
521
523
  - lib/oxidized/core.rb
@@ -528,6 +530,8 @@ files:
528
530
  - lib/oxidized/hook/slackdiff.rb
529
531
  - lib/oxidized/hook/xmppdiff.rb
530
532
  - lib/oxidized/input/cli.rb
533
+ - lib/oxidized/input/debugtext.rb
534
+ - lib/oxidized/input/debugyaml.rb
531
535
  - lib/oxidized/input/exec.rb
532
536
  - lib/oxidized/input/ftp.rb
533
537
  - lib/oxidized/input/http.rb
@@ -628,6 +632,7 @@ files:
628
632
  - lib/oxidized/model/garderos.rb
629
633
  - lib/oxidized/model/gcombnps.rb
630
634
  - lib/oxidized/model/grandstream.rb
635
+ - lib/oxidized/model/grandstreamht8xx.rb
631
636
  - lib/oxidized/model/h3c.rb
632
637
  - lib/oxidized/model/hatteras.rb
633
638
  - lib/oxidized/model/hios.rb