opnsense_api 0.1.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 (156) hide show
  1. checksums.yaml +7 -0
  2. data/lib/opnsense_api/client.rb +125 -0
  3. data/lib/opnsense_api/core/captive_portal/access.rb +25 -0
  4. data/lib/opnsense_api/core/captive_portal/service.rb +33 -0
  5. data/lib/opnsense_api/core/captive_portal/session.rb +29 -0
  6. data/lib/opnsense_api/core/captive_portal/settings.rb +41 -0
  7. data/lib/opnsense_api/core/captive_portal/voucher.rb +41 -0
  8. data/lib/opnsense_api/core/captive_portal.rb +36 -0
  9. data/lib/opnsense_api/core/core/firmware.rb +70 -0
  10. data/lib/opnsense_api/core/core/menu.rb +21 -0
  11. data/lib/opnsense_api/core/core/system.rb +29 -0
  12. data/lib/opnsense_api/core/core.rb +26 -0
  13. data/lib/opnsense_api/core/cron/service.rb +17 -0
  14. data/lib/opnsense_api/core/cron/settings.rb +45 -0
  15. data/lib/opnsense_api/core/cron.rb +21 -0
  16. data/lib/opnsense_api/core/diagnostics/activity.rb +17 -0
  17. data/lib/opnsense_api/core/diagnostics/dns.rb +17 -0
  18. data/lib/opnsense_api/core/diagnostics/dns_diagnostics.rb +25 -0
  19. data/lib/opnsense_api/core/diagnostics/firewall.rb +57 -0
  20. data/lib/opnsense_api/core/diagnostics/interface.rb +81 -0
  21. data/lib/opnsense_api/core/diagnostics/lv_template.rb +41 -0
  22. data/lib/opnsense_api/core/diagnostics/netflow.rb +37 -0
  23. data/lib/opnsense_api/core/diagnostics/network_insight.rb +29 -0
  24. data/lib/opnsense_api/core/diagnostics/packet_capture.rb +53 -0
  25. data/lib/opnsense_api/core/diagnostics/system.rb +17 -0
  26. data/lib/opnsense_api/core/diagnostics/system_health.rb +21 -0
  27. data/lib/opnsense_api/core/diagnostics/traffic.rb +21 -0
  28. data/lib/opnsense_api/core/diagnostics.rb +71 -0
  29. data/lib/opnsense_api/core/firewall/alias.rb +83 -0
  30. data/lib/opnsense_api/core/firewall/alias_util.rb +43 -0
  31. data/lib/opnsense_api/core/firewall/category.rb +46 -0
  32. data/lib/opnsense_api/core/firewall/filter_util.rb +18 -0
  33. data/lib/opnsense_api/core/firewall.rb +31 -0
  34. data/lib/opnsense_api/core/ids/service.rb +58 -0
  35. data/lib/opnsense_api/core/ids/settings.rb +142 -0
  36. data/lib/opnsense_api/core/ids.rb +21 -0
  37. data/lib/opnsense_api/core/interfaces/base.rb +44 -0
  38. data/lib/opnsense_api/core/interfaces/loopback_settings.rb +12 -0
  39. data/lib/opnsense_api/core/interfaces/vip_settings.rb +16 -0
  40. data/lib/opnsense_api/core/interfaces/vlan_settings.rb +12 -0
  41. data/lib/opnsense_api/core/interfaces/vxlan_settings.rb +12 -0
  42. data/lib/opnsense_api/core/interfaces.rb +32 -0
  43. data/lib/opnsense_api/core/ipsec/key_pairs.rb +46 -0
  44. data/lib/opnsense_api/core/ipsec/leases.rb +22 -0
  45. data/lib/opnsense_api/core/ipsec/legacy_subsystem.rb +22 -0
  46. data/lib/opnsense_api/core/ipsec/pre_shared_keys.rb +46 -0
  47. data/lib/opnsense_api/core/ipsec/sad.rb +22 -0
  48. data/lib/opnsense_api/core/ipsec/service.rb +34 -0
  49. data/lib/opnsense_api/core/ipsec/sessions.rb +30 -0
  50. data/lib/opnsense_api/core/ipsec/spd.rb +22 -0
  51. data/lib/opnsense_api/core/ipsec/tunnel.rb +42 -0
  52. data/lib/opnsense_api/core/ipsec.rb +56 -0
  53. data/lib/opnsense_api/core/monit/service.rb +38 -0
  54. data/lib/opnsense_api/core/monit/settings.rb +98 -0
  55. data/lib/opnsense_api/core/monit/status.rb +18 -0
  56. data/lib/opnsense_api/core/monit.rb +26 -0
  57. data/lib/opnsense_api/core/open_vpn/export.rb +38 -0
  58. data/lib/opnsense_api/core/open_vpn.rb +16 -0
  59. data/lib/opnsense_api/core/proxy/service.rb +50 -0
  60. data/lib/opnsense_api/core/proxy/settings.rb +114 -0
  61. data/lib/opnsense_api/core/proxy/template.rb +26 -0
  62. data/lib/opnsense_api/core/proxy.rb +26 -0
  63. data/lib/opnsense_api/core/routes/gateway.rb +18 -0
  64. data/lib/opnsense_api/core/routes/routes.rb +50 -0
  65. data/lib/opnsense_api/core/routes.rb +21 -0
  66. data/lib/opnsense_api/core/syslog/service.rb +38 -0
  67. data/lib/opnsense_api/core/syslog/settings.rb +46 -0
  68. data/lib/opnsense_api/core/syslog.rb +21 -0
  69. data/lib/opnsense_api/core/traffic_shaping/service.rb +26 -0
  70. data/lib/opnsense_api/core/traffic_shaping/settings.rb +94 -0
  71. data/lib/opnsense_api/core/traffic_shaping.rb +21 -0
  72. data/lib/opnsense_api/core/unbound/diagnostics.rb +38 -0
  73. data/lib/opnsense_api/core/unbound/service.rb +38 -0
  74. data/lib/opnsense_api/core/unbound/settings.rb +122 -0
  75. data/lib/opnsense_api/core/unbound.rb +26 -0
  76. data/lib/opnsense_api/core.rb +27 -0
  77. data/lib/opnsense_api/error.rb +5 -0
  78. data/lib/opnsense_api/version.rb +5 -0
  79. data/lib/opnsense_api.rb +10 -0
  80. data/sig/lib/opnsense_api/client.rbs +55 -0
  81. data/sig/lib/opnsense_api/core/captive_portal/access.rbs +17 -0
  82. data/sig/lib/opnsense_api/core/captive_portal/service.rbs +21 -0
  83. data/sig/lib/opnsense_api/core/captive_portal/session.rbs +19 -0
  84. data/sig/lib/opnsense_api/core/captive_portal/settings.rbs +25 -0
  85. data/sig/lib/opnsense_api/core/captive_portal/voucher.rbs +25 -0
  86. data/sig/lib/opnsense_api/core/captive_portal.rbs +17 -0
  87. data/sig/lib/opnsense_api/core/core/firmware.rbs +37 -0
  88. data/sig/lib/opnsense_api/core/core/menu.rbs +15 -0
  89. data/sig/lib/opnsense_api/core/core/system.rbs +19 -0
  90. data/sig/lib/opnsense_api/core/core.rbs +13 -0
  91. data/sig/lib/opnsense_api/core/cron/service.rbs +13 -0
  92. data/sig/lib/opnsense_api/core/cron/settings.rbs +27 -0
  93. data/sig/lib/opnsense_api/core/cron.rbs +11 -0
  94. data/sig/lib/opnsense_api/core/diagnostics/activity.rbs +13 -0
  95. data/sig/lib/opnsense_api/core/diagnostics/dns.rbs +13 -0
  96. data/sig/lib/opnsense_api/core/diagnostics/dns_diagnostics.rbs +15 -0
  97. data/sig/lib/opnsense_api/core/diagnostics/firewall.rbs +33 -0
  98. data/sig/lib/opnsense_api/core/diagnostics/interface.rbs +45 -0
  99. data/sig/lib/opnsense_api/core/diagnostics/lv_template.rbs +25 -0
  100. data/sig/lib/opnsense_api/core/diagnostics/netflow.rbs +23 -0
  101. data/sig/lib/opnsense_api/core/diagnostics/network_insight.rbs +19 -0
  102. data/sig/lib/opnsense_api/core/diagnostics/packet_capture.rbs +29 -0
  103. data/sig/lib/opnsense_api/core/diagnostics/system.rbs +13 -0
  104. data/sig/lib/opnsense_api/core/diagnostics/system_health.rbs +15 -0
  105. data/sig/lib/opnsense_api/core/diagnostics/traffic.rbs +15 -0
  106. data/sig/lib/opnsense_api/core/diagnostics.rbs +31 -0
  107. data/sig/lib/opnsense_api/core/firewall/alias.rbs +45 -0
  108. data/sig/lib/opnsense_api/core/firewall/alias_util.rbs +25 -0
  109. data/sig/lib/opnsense_api/core/firewall/category.rbs +27 -0
  110. data/sig/lib/opnsense_api/core/firewall/filter_util.rbs +13 -0
  111. data/sig/lib/opnsense_api/core/firewall.rbs +15 -0
  112. data/sig/lib/opnsense_api/core/ids/service.rbs +33 -0
  113. data/sig/lib/opnsense_api/core/ids/settings.rbs +75 -0
  114. data/sig/lib/opnsense_api/core/ids.rbs +11 -0
  115. data/sig/lib/opnsense_api/core/interfaces/base.rbs +25 -0
  116. data/sig/lib/opnsense_api/core/interfaces/loopback_settings.rbs +9 -0
  117. data/sig/lib/opnsense_api/core/interfaces/vip_settings.rbs +11 -0
  118. data/sig/lib/opnsense_api/core/interfaces/vlan_settings.rbs +9 -0
  119. data/sig/lib/opnsense_api/core/interfaces/vxlan_settings.rbs +9 -0
  120. data/sig/lib/opnsense_api/core/interfaces.rbs +15 -0
  121. data/sig/lib/opnsense_api/core/ipsec/key_pairs.rbs +27 -0
  122. data/sig/lib/opnsense_api/core/ipsec/leases.rbs +15 -0
  123. data/sig/lib/opnsense_api/core/ipsec/legacy_subsystem.rbs +15 -0
  124. data/sig/lib/opnsense_api/core/ipsec/pre_shared_keys.rbs +27 -0
  125. data/sig/lib/opnsense_api/core/ipsec/sad.rbs +15 -0
  126. data/sig/lib/opnsense_api/core/ipsec/service.rbs +21 -0
  127. data/sig/lib/opnsense_api/core/ipsec/sessions.rbs +19 -0
  128. data/sig/lib/opnsense_api/core/ipsec/spd.rbs +15 -0
  129. data/sig/lib/opnsense_api/core/ipsec/tunnel.rbs +25 -0
  130. data/sig/lib/opnsense_api/core/ipsec.rbs +25 -0
  131. data/sig/lib/opnsense_api/core/monit/service.rbs +23 -0
  132. data/sig/lib/opnsense_api/core/monit/settings.rbs +53 -0
  133. data/sig/lib/opnsense_api/core/monit/status.rbs +13 -0
  134. data/sig/lib/opnsense_api/core/monit.rbs +13 -0
  135. data/sig/lib/opnsense_api/core/open_vpn/export.rbs +23 -0
  136. data/sig/lib/opnsense_api/core/open_vpn.rbs +9 -0
  137. data/sig/lib/opnsense_api/core/proxy/service.rbs +29 -0
  138. data/sig/lib/opnsense_api/core/proxy/settings.rbs +61 -0
  139. data/sig/lib/opnsense_api/core/proxy/template.rbs +17 -0
  140. data/sig/lib/opnsense_api/core/proxy.rbs +13 -0
  141. data/sig/lib/opnsense_api/core/routes/gateway.rbs +13 -0
  142. data/sig/lib/opnsense_api/core/routes/routes.rbs +29 -0
  143. data/sig/lib/opnsense_api/core/routes.rbs +11 -0
  144. data/sig/lib/opnsense_api/core/syslog/service.rbs +23 -0
  145. data/sig/lib/opnsense_api/core/syslog/settings.rbs +27 -0
  146. data/sig/lib/opnsense_api/core/syslog.rbs +11 -0
  147. data/sig/lib/opnsense_api/core/traffic_shaping/service.rbs +17 -0
  148. data/sig/lib/opnsense_api/core/traffic_shaping/settings.rbs +51 -0
  149. data/sig/lib/opnsense_api/core/traffic_shaping.rbs +11 -0
  150. data/sig/lib/opnsense_api/core/unbound/diagnostics.rbs +23 -0
  151. data/sig/lib/opnsense_api/core/unbound/service.rbs +23 -0
  152. data/sig/lib/opnsense_api/core/unbound/settings.rbs +65 -0
  153. data/sig/lib/opnsense_api/core/unbound.rbs +13 -0
  154. data/sig/lib/opnsense_api/core.rbs +7 -0
  155. data/sig/lib/opnsense_api/version.rbs +3 -0
  156. metadata +242 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: aa0e7a66c7fa38022e9b36abbbfe4b360b6eacf44a3a23882186e5c49cd4c5e7
4
+ data.tar.gz: b27402b19cf88535a3e9801258d9f7e483c16ae57279e4e17397414b8a3967a5
5
+ SHA512:
6
+ metadata.gz: 9de15c076d171d616f9842966fb0cc5a7b266269b9f1d540a340d7b152ac381d5eeeae7086498931e553a4b540f99db037c21b0c2a4402bfd2c4465f24462f96
7
+ data.tar.gz: 2f3167582c2d1d6d8dc31646f3dbff528760e56e9bf76f98ec7ef602558973d0886c6c1b990e0a9bab3b447ed544424e049195ed2046c736015ea3ae3b59cbc5
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'net/http'
5
+
6
+ module OPNsenseAPI
7
+ class Client
8
+ BASE_PATH = '/api'
9
+
10
+ attr_reader :host, :api_key, :api_secret, :options
11
+
12
+ def initialize(host, api_key, api_secret, **options)
13
+ @host = host.is_a?(URI) ? host : URI(host)
14
+ @api_key = api_key
15
+ @api_secret = api_secret
16
+ @options = {
17
+ verify_ssl: options[:verify_ssl] || true,
18
+ debug: options[:debug] || false,
19
+ **options
20
+ }
21
+ end
22
+
23
+ def captive_portal
24
+ Core::CaptivePortal.new(self)
25
+ end
26
+
27
+ def core
28
+ Core::Core.new(self)
29
+ end
30
+
31
+ def cron
32
+ Core::Cron.new(self)
33
+ end
34
+
35
+ def diagnostics
36
+ Core::Diagnostics.new(self)
37
+ end
38
+
39
+ def firewall
40
+ Core::Firewall.new(self)
41
+ end
42
+
43
+ def ids
44
+ Core::IDS.new(self)
45
+ end
46
+
47
+ def interfaces
48
+ Core::Interfaces.new(self)
49
+ end
50
+
51
+ def ipsec
52
+ Core::IPSec.new(self)
53
+ end
54
+
55
+ def monit
56
+ Core::Monit.new(self)
57
+ end
58
+
59
+ def open_vpn
60
+ Core::OpenVPN.new(self)
61
+ end
62
+
63
+ def proxy
64
+ Core::Proxy.new(self)
65
+ end
66
+
67
+ def routes
68
+ Core::Routes.new(self)
69
+ end
70
+
71
+ def syslog
72
+ Core::Syslog.new(self)
73
+ end
74
+
75
+ def traffic_shaping
76
+ Core::TrafficShaping.new(self)
77
+ end
78
+
79
+ def unbound
80
+ Core::Unbound.new(self)
81
+ end
82
+
83
+ def get(path, params = {})
84
+ request = Net::HTTP::Get.new("#{BASE_PATH}#{path}")
85
+ setup_request(request)
86
+ request.params = params if params.any?
87
+ handle_response(http.request(request))
88
+ end
89
+
90
+ def post(path, body = {})
91
+ request = Net::HTTP::Post.new("#{BASE_PATH}#{path}")
92
+ setup_request(request)
93
+ request.body = body.to_json if body.any?
94
+ handle_response(http.request(request))
95
+ end
96
+
97
+ private
98
+
99
+ def http
100
+ return @http if @http
101
+
102
+ @http = Net::HTTP.new(host.host, host.port)
103
+ @http.use_ssl = host.scheme == 'https'
104
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE unless @options[:verify_ssl]
105
+ @http.set_debug_output($stdout) if @options[:debug]
106
+ @http
107
+ end
108
+
109
+ # Set common params for all requests
110
+ def setup_request(request)
111
+ request.basic_auth(api_key, api_secret)
112
+ request['User-Agent'] = "OPNsenseAPI/#{OPNsenseAPI::VERSION}"
113
+ request['Content-Type'] = 'application/json' if request.is_a?(Net::HTTP::Post)
114
+ request['Accept'] = 'application/json'
115
+ end
116
+
117
+ def handle_response(response)
118
+ if (100..299).include?(response.code.to_i)
119
+ JSON.parse(response.body)
120
+ else
121
+ response
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class CaptivePortal
6
+ class Access
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/captiveportal/access'
10
+
11
+ def logoff(zoneid: 0)
12
+ @client.get("#{BASE_PATH}/logoff/#{zoneid}")
13
+ end
14
+
15
+ def logon(zoneid: 0, body: {})
16
+ @client.post("#{BASE_PATH}/logon/#{zoneid}", body)
17
+ end
18
+
19
+ def status(zoneid: 0, body: {})
20
+ @client.post("#{BASE_PATH}/status/#{zoneid}", body)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class CaptivePortal
6
+ class Service
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/captiveportal/service'
10
+
11
+ def del_template(uuid:)
12
+ @client.post("#{BASE_PATH}/delTemplate/#{uuid}")
13
+ end
14
+
15
+ def get_template(fileid: nil)
16
+ @client.get("#{BASE_PATH}/getTemplate/#{fileid}")
17
+ end
18
+
19
+ def reconfigure(body = {})
20
+ @client.post("#{BASE_PATH}/reconfigure", body)
21
+ end
22
+
23
+ def save_template(body = {})
24
+ @client.post("#{BASE_PATH}/saveTemplate", body)
25
+ end
26
+
27
+ def search_templates(body = {})
28
+ @client.post("#{BASE_PATH}/searchTemplates", body)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class CaptivePortal
6
+ class Session
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/captiveportal/session'
10
+
11
+ def connect(zoneid: 0, body: {})
12
+ @client.post("#{BASE_PATH}/connect/#{zoneid}", body)
13
+ end
14
+
15
+ def disconnect(zoneid: 0, body: {})
16
+ @client.post("#{BASE_PATH}/disconnect/#{zoneid}", body)
17
+ end
18
+
19
+ def list(zoneid: 0)
20
+ @client.get("#{BASE_PATH}/list/#{zoneid}")
21
+ end
22
+
23
+ def zones
24
+ @client.get("#{BASE_PATH}/zones")
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class CaptivePortal
6
+ class Settings
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/captiveportal/settings'
10
+
11
+ def add_zone(body = {})
12
+ @client.post("#{BASE_PATH}/addZone", body)
13
+ end
14
+
15
+ def del_zone(uuid:)
16
+ @client.post("#{BASE_PATH}/delZone/#{uuid}")
17
+ end
18
+
19
+ def get
20
+ @client.get(BASE_PATH)
21
+ end
22
+
23
+ def get_zone(uuid:)
24
+ @client.get("#{BASE_PATH}/getZone/#{uuid}")
25
+ end
26
+
27
+ def search_zones(body = {})
28
+ @client.post("#{BASE_PATH}/searchZones", body)
29
+ end
30
+
31
+ def set_zone(uuid:, body: {})
32
+ @client.post("#{BASE_PATH}/setZone/#{uuid}", body)
33
+ end
34
+
35
+ def toggle_zone(uuid:, enabled: nil, body: {})
36
+ @client.post("#{BASE_PATH}/toggleZone/#{uuid}/#{enabled}", body)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class CaptivePortal
6
+ class Voucher
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/captiveportal/voucher'
10
+
11
+ def drop_expired_vouchers(provider:, group:, body: {})
12
+ @client.post("#{BASE_PATH}/dropExpiredVouchers/#{provider}/#{group}", body)
13
+ end
14
+
15
+ def drop_voucher_group(provider:, group:, body: {})
16
+ @client.post("#{BASE_PATH}/dropVoucherGroup/#{provider}/#{group}", body)
17
+ end
18
+
19
+ def expire_voucher(provider:, body: {})
20
+ @client.post("#{BASE_PATH}/expireVoucher/#{provider}", body)
21
+ end
22
+
23
+ def generate_vouchers(provider:, body: {})
24
+ @client.post("#{BASE_PATH}/generateVouchers/#{provider}", body)
25
+ end
26
+
27
+ def list_providers
28
+ @client.get("#{BASE_PATH}/listProviders")
29
+ end
30
+
31
+ def list_voucher_groups(provider:)
32
+ @client.get("#{BASE_PATH}/listVoucherGroups/#{provider}")
33
+ end
34
+
35
+ def list_vouchers(provider:, group:)
36
+ @client.get("#{BASE_PATH}/listVouchers/#{provider}/#{group}")
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ # @see https://docs.opnsense.org/development/api/core/captiveportal.html
6
+ class CaptivePortal
7
+ autoload :Access, 'opnsense_api/core/captive_portal/access'
8
+ autoload :Service, 'opnsense_api/core/captive_portal/service'
9
+ autoload :Session, 'opnsense_api/core/captive_portal/session'
10
+ autoload :Settings, 'opnsense_api/core/captive_portal/settings'
11
+ autoload :Voucher, 'opnsense_api/core/captive_portal/voucher'
12
+
13
+ include OPNsenseAPI::Core
14
+
15
+ def access
16
+ Access.new(@client)
17
+ end
18
+
19
+ def service
20
+ Service.new(@client)
21
+ end
22
+
23
+ def session
24
+ Session.new(@client)
25
+ end
26
+
27
+ def settings
28
+ Settings.new(@client)
29
+ end
30
+
31
+ def voucher
32
+ Voucher.new(@client)
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Core
6
+ # @see https://docs.opnsense.org/development/api/core/firmware.html
7
+ class Firmware
8
+ include OPNsenseAPI::Core
9
+
10
+ BASE_PATH = '/core/firmware'
11
+
12
+ def poweroff(body = {})
13
+ @client.post("#{BASE_PATH}/poweroff", body)
14
+ end
15
+
16
+ def reboot(body = {})
17
+ @client.post("#{BASE_PATH}/reboot", body)
18
+ end
19
+
20
+ def running(params = {})
21
+ @client.get("#{BASE_PATH}/running", params)
22
+ end
23
+
24
+ def get_firmware_config(params = {})
25
+ @client.get("#{BASE_PATH}/getFirmwareConfig", params)
26
+ end
27
+
28
+ def get_firmware_options(params = {})
29
+ @client.get("#{BASE_PATH}/getFirmwareOptions", params)
30
+ end
31
+
32
+ def set_firmware_config(body = {})
33
+ @client.post("#{BASE_PATH}/setFirmwareConfig", body)
34
+ end
35
+
36
+ def info(params = {})
37
+ @client.get("#{BASE_PATH}/info", params)
38
+ end
39
+
40
+ def status(params: {}, body: {})
41
+ if body.any?
42
+ @client.post("#{BASE_PATH}/status", body)
43
+ else
44
+ @client.get("#{BASE_PATH}/status", params)
45
+ end
46
+ end
47
+
48
+ def audit(body = {})
49
+ @client.post("#{BASE_PATH}/audit", body)
50
+ end
51
+
52
+ def update(body = {})
53
+ @client.post("#{BASE_PATH}/update", body)
54
+ end
55
+
56
+ def upgrade(body = {})
57
+ @client.post("#{BASE_PATH}/upgrade", body)
58
+ end
59
+
60
+ def upgrade_status(params = {})
61
+ @client.get("#{BASE_PATH}/upgradeStatus", params)
62
+ end
63
+
64
+ def changelog(version:)
65
+ @client.get("#{BASE_PATH}/changelog/#{version}")
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Core
6
+ class Menu
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/core/menu'
10
+
11
+ def search
12
+ @client.get(BASE_PATH)
13
+ end
14
+
15
+ def tree
16
+ @client.get("#{BASE_PATH}/tree")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Core
6
+ class System
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = 'core/system'
10
+
11
+ def dismiss_status
12
+ @client.get("#{BASE_PATH}/dismissStatus")
13
+ end
14
+
15
+ def halt
16
+ @client.get("#{BASE_PATH}/halt")
17
+ end
18
+
19
+ def reboot
20
+ @client.get("#{BASE_PATH}/reboot")
21
+ end
22
+
23
+ def status
24
+ @client.get("#{BASE_PATH}/status")
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ # @see https://docs.opnsense.org/development/api/core/core.html
6
+ class Core
7
+ autoload :Firmware, 'opnsense_api/core/core/firmware'
8
+ autoload :Menu, 'opnsense_api/core/core/menu'
9
+ autoload :System, 'opnsense_api/core/core/system'
10
+
11
+ include OPNsenseAPI::Core
12
+
13
+ def firmware
14
+ Firmware.new(@client)
15
+ end
16
+
17
+ def menu
18
+ Menu.new(@client)
19
+ end
20
+
21
+ def system
22
+ System.new(@client)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Cron
6
+ class Service
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/cron/service'
10
+
11
+ def reconfigure(body: {})
12
+ @client.post("#{BASE_PATH}/reconfigure", body)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Cron
6
+ class Settings
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/cron/settings'
10
+
11
+ def add_job(body)
12
+ @client.post("#{BASE_PATH}/addJob", body)
13
+ end
14
+
15
+ def del_job(uuid:)
16
+ @client.post("#{BASE_PATH}/delJob/#{uuid}")
17
+ end
18
+
19
+ def get
20
+ @client.get("#{BASE_PATH}/get")
21
+ end
22
+
23
+ def get_job(uuid: nil)
24
+ @client.get("#{BASE_PATH}/getJob/#{uuid}")
25
+ end
26
+
27
+ def search_jobs(body)
28
+ @client.post("#{BASE_PATH}/searchJobs", body)
29
+ end
30
+
31
+ def set(body)
32
+ @client.post("#{BASE_PATH}/set", body)
33
+ end
34
+
35
+ def set_job(uuid:, body: {})
36
+ @client.post("#{BASE_PATH}/setJob/#{uuid}", body)
37
+ end
38
+
39
+ def toggle_job(uuid:, enabled: nil)
40
+ @client.post("#{BASE_PATH}/toggleJob/#{uuid}/#{enabled}")
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ # @see https://docs.opnsense.org/development/api/core/cron.html
6
+ class Cron
7
+ autoload :Service, 'opnsense_api/core/cron/service'
8
+ autoload :Settings, 'opnsense_api/core/cron/settings'
9
+
10
+ include OPNsenseAPI::Core
11
+
12
+ def service
13
+ Service.new(@client)
14
+ end
15
+
16
+ def settings
17
+ Settings.new(@client)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Diagnostics
6
+ class Activity
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/diagnostics/activity'
10
+
11
+ def get_activity
12
+ @client.get("#{BASE_PATH}/getActivity")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Diagnostics
6
+ class DNS
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/diagnostics/dns'
10
+
11
+ def reverse_lookup(params = {})
12
+ @client.get("#{BASE_PATH}/reverseLookup", params)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Diagnostics
6
+ class DNSDiagnostics
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/diagnostics/dns_diagnostics'
10
+
11
+ def get(params = {})
12
+ @client.get("#{BASE_PATH}/get", params)
13
+ end
14
+
15
+ def set(params: {}, body: {})
16
+ if params
17
+ @client.get("#{BASE_PATH}/set", params)
18
+ else
19
+ @client.post("#{BASE_PATH}/set", body)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OPNsenseAPI
4
+ module Core
5
+ class Diagnostics
6
+ class Firewall
7
+ include OPNsenseAPI::Core
8
+
9
+ BASE_PATH = '/diagnostics/firewall'
10
+
11
+ def del_state(stateid:, creatorid:)
12
+ @client.post("#{BASE_PATH}/delState/#{stateid}/#{creatorid}")
13
+ end
14
+
15
+ def flush_sources(body = {})
16
+ @client.post("#{BASE_PATH}/flushSources", body)
17
+ end
18
+
19
+ def flush_states(body = {})
20
+ @client.post("#{BASE_PATH}/flushStates", body)
21
+ end
22
+
23
+ def kill_states(body = {})
24
+ @client.post("#{BASE_PATH}/killStates", body)
25
+ end
26
+
27
+ def list_rule_ids(params = {})
28
+ @client.post("#{BASE_PATH}/listRuleIds", params)
29
+ end
30
+
31
+ def log(params = {})
32
+ @client.get("#{BASE_PATH}/log", params)
33
+ end
34
+
35
+ def log_filters(params = {})
36
+ @client.get("#{BASE_PATH}/logFilters", params)
37
+ end
38
+
39
+ def pf_statistics(section: nil)
40
+ @client.get("#{BASE_PATH}/pfStatistics/#{section}")
41
+ end
42
+
43
+ def query_pf_top(body = {})
44
+ @client.post("#{BASE_PATH}/queryPfTop", body)
45
+ end
46
+
47
+ def query_states(body = {})
48
+ @client.post("#{BASE_PATH}/queryStates", body)
49
+ end
50
+
51
+ def stats(params = {})
52
+ @client.get("#{BASE_PATH}/stats", params)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end