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.
- checksums.yaml +7 -0
- data/lib/opnsense_api/client.rb +125 -0
- data/lib/opnsense_api/core/captive_portal/access.rb +25 -0
- data/lib/opnsense_api/core/captive_portal/service.rb +33 -0
- data/lib/opnsense_api/core/captive_portal/session.rb +29 -0
- data/lib/opnsense_api/core/captive_portal/settings.rb +41 -0
- data/lib/opnsense_api/core/captive_portal/voucher.rb +41 -0
- data/lib/opnsense_api/core/captive_portal.rb +36 -0
- data/lib/opnsense_api/core/core/firmware.rb +70 -0
- data/lib/opnsense_api/core/core/menu.rb +21 -0
- data/lib/opnsense_api/core/core/system.rb +29 -0
- data/lib/opnsense_api/core/core.rb +26 -0
- data/lib/opnsense_api/core/cron/service.rb +17 -0
- data/lib/opnsense_api/core/cron/settings.rb +45 -0
- data/lib/opnsense_api/core/cron.rb +21 -0
- data/lib/opnsense_api/core/diagnostics/activity.rb +17 -0
- data/lib/opnsense_api/core/diagnostics/dns.rb +17 -0
- data/lib/opnsense_api/core/diagnostics/dns_diagnostics.rb +25 -0
- data/lib/opnsense_api/core/diagnostics/firewall.rb +57 -0
- data/lib/opnsense_api/core/diagnostics/interface.rb +81 -0
- data/lib/opnsense_api/core/diagnostics/lv_template.rb +41 -0
- data/lib/opnsense_api/core/diagnostics/netflow.rb +37 -0
- data/lib/opnsense_api/core/diagnostics/network_insight.rb +29 -0
- data/lib/opnsense_api/core/diagnostics/packet_capture.rb +53 -0
- data/lib/opnsense_api/core/diagnostics/system.rb +17 -0
- data/lib/opnsense_api/core/diagnostics/system_health.rb +21 -0
- data/lib/opnsense_api/core/diagnostics/traffic.rb +21 -0
- data/lib/opnsense_api/core/diagnostics.rb +71 -0
- data/lib/opnsense_api/core/firewall/alias.rb +83 -0
- data/lib/opnsense_api/core/firewall/alias_util.rb +43 -0
- data/lib/opnsense_api/core/firewall/category.rb +46 -0
- data/lib/opnsense_api/core/firewall/filter_util.rb +18 -0
- data/lib/opnsense_api/core/firewall.rb +31 -0
- data/lib/opnsense_api/core/ids/service.rb +58 -0
- data/lib/opnsense_api/core/ids/settings.rb +142 -0
- data/lib/opnsense_api/core/ids.rb +21 -0
- data/lib/opnsense_api/core/interfaces/base.rb +44 -0
- data/lib/opnsense_api/core/interfaces/loopback_settings.rb +12 -0
- data/lib/opnsense_api/core/interfaces/vip_settings.rb +16 -0
- data/lib/opnsense_api/core/interfaces/vlan_settings.rb +12 -0
- data/lib/opnsense_api/core/interfaces/vxlan_settings.rb +12 -0
- data/lib/opnsense_api/core/interfaces.rb +32 -0
- data/lib/opnsense_api/core/ipsec/key_pairs.rb +46 -0
- data/lib/opnsense_api/core/ipsec/leases.rb +22 -0
- data/lib/opnsense_api/core/ipsec/legacy_subsystem.rb +22 -0
- data/lib/opnsense_api/core/ipsec/pre_shared_keys.rb +46 -0
- data/lib/opnsense_api/core/ipsec/sad.rb +22 -0
- data/lib/opnsense_api/core/ipsec/service.rb +34 -0
- data/lib/opnsense_api/core/ipsec/sessions.rb +30 -0
- data/lib/opnsense_api/core/ipsec/spd.rb +22 -0
- data/lib/opnsense_api/core/ipsec/tunnel.rb +42 -0
- data/lib/opnsense_api/core/ipsec.rb +56 -0
- data/lib/opnsense_api/core/monit/service.rb +38 -0
- data/lib/opnsense_api/core/monit/settings.rb +98 -0
- data/lib/opnsense_api/core/monit/status.rb +18 -0
- data/lib/opnsense_api/core/monit.rb +26 -0
- data/lib/opnsense_api/core/open_vpn/export.rb +38 -0
- data/lib/opnsense_api/core/open_vpn.rb +16 -0
- data/lib/opnsense_api/core/proxy/service.rb +50 -0
- data/lib/opnsense_api/core/proxy/settings.rb +114 -0
- data/lib/opnsense_api/core/proxy/template.rb +26 -0
- data/lib/opnsense_api/core/proxy.rb +26 -0
- data/lib/opnsense_api/core/routes/gateway.rb +18 -0
- data/lib/opnsense_api/core/routes/routes.rb +50 -0
- data/lib/opnsense_api/core/routes.rb +21 -0
- data/lib/opnsense_api/core/syslog/service.rb +38 -0
- data/lib/opnsense_api/core/syslog/settings.rb +46 -0
- data/lib/opnsense_api/core/syslog.rb +21 -0
- data/lib/opnsense_api/core/traffic_shaping/service.rb +26 -0
- data/lib/opnsense_api/core/traffic_shaping/settings.rb +94 -0
- data/lib/opnsense_api/core/traffic_shaping.rb +21 -0
- data/lib/opnsense_api/core/unbound/diagnostics.rb +38 -0
- data/lib/opnsense_api/core/unbound/service.rb +38 -0
- data/lib/opnsense_api/core/unbound/settings.rb +122 -0
- data/lib/opnsense_api/core/unbound.rb +26 -0
- data/lib/opnsense_api/core.rb +27 -0
- data/lib/opnsense_api/error.rb +5 -0
- data/lib/opnsense_api/version.rb +5 -0
- data/lib/opnsense_api.rb +10 -0
- data/sig/lib/opnsense_api/client.rbs +55 -0
- data/sig/lib/opnsense_api/core/captive_portal/access.rbs +17 -0
- data/sig/lib/opnsense_api/core/captive_portal/service.rbs +21 -0
- data/sig/lib/opnsense_api/core/captive_portal/session.rbs +19 -0
- data/sig/lib/opnsense_api/core/captive_portal/settings.rbs +25 -0
- data/sig/lib/opnsense_api/core/captive_portal/voucher.rbs +25 -0
- data/sig/lib/opnsense_api/core/captive_portal.rbs +17 -0
- data/sig/lib/opnsense_api/core/core/firmware.rbs +37 -0
- data/sig/lib/opnsense_api/core/core/menu.rbs +15 -0
- data/sig/lib/opnsense_api/core/core/system.rbs +19 -0
- data/sig/lib/opnsense_api/core/core.rbs +13 -0
- data/sig/lib/opnsense_api/core/cron/service.rbs +13 -0
- data/sig/lib/opnsense_api/core/cron/settings.rbs +27 -0
- data/sig/lib/opnsense_api/core/cron.rbs +11 -0
- data/sig/lib/opnsense_api/core/diagnostics/activity.rbs +13 -0
- data/sig/lib/opnsense_api/core/diagnostics/dns.rbs +13 -0
- data/sig/lib/opnsense_api/core/diagnostics/dns_diagnostics.rbs +15 -0
- data/sig/lib/opnsense_api/core/diagnostics/firewall.rbs +33 -0
- data/sig/lib/opnsense_api/core/diagnostics/interface.rbs +45 -0
- data/sig/lib/opnsense_api/core/diagnostics/lv_template.rbs +25 -0
- data/sig/lib/opnsense_api/core/diagnostics/netflow.rbs +23 -0
- data/sig/lib/opnsense_api/core/diagnostics/network_insight.rbs +19 -0
- data/sig/lib/opnsense_api/core/diagnostics/packet_capture.rbs +29 -0
- data/sig/lib/opnsense_api/core/diagnostics/system.rbs +13 -0
- data/sig/lib/opnsense_api/core/diagnostics/system_health.rbs +15 -0
- data/sig/lib/opnsense_api/core/diagnostics/traffic.rbs +15 -0
- data/sig/lib/opnsense_api/core/diagnostics.rbs +31 -0
- data/sig/lib/opnsense_api/core/firewall/alias.rbs +45 -0
- data/sig/lib/opnsense_api/core/firewall/alias_util.rbs +25 -0
- data/sig/lib/opnsense_api/core/firewall/category.rbs +27 -0
- data/sig/lib/opnsense_api/core/firewall/filter_util.rbs +13 -0
- data/sig/lib/opnsense_api/core/firewall.rbs +15 -0
- data/sig/lib/opnsense_api/core/ids/service.rbs +33 -0
- data/sig/lib/opnsense_api/core/ids/settings.rbs +75 -0
- data/sig/lib/opnsense_api/core/ids.rbs +11 -0
- data/sig/lib/opnsense_api/core/interfaces/base.rbs +25 -0
- data/sig/lib/opnsense_api/core/interfaces/loopback_settings.rbs +9 -0
- data/sig/lib/opnsense_api/core/interfaces/vip_settings.rbs +11 -0
- data/sig/lib/opnsense_api/core/interfaces/vlan_settings.rbs +9 -0
- data/sig/lib/opnsense_api/core/interfaces/vxlan_settings.rbs +9 -0
- data/sig/lib/opnsense_api/core/interfaces.rbs +15 -0
- data/sig/lib/opnsense_api/core/ipsec/key_pairs.rbs +27 -0
- data/sig/lib/opnsense_api/core/ipsec/leases.rbs +15 -0
- data/sig/lib/opnsense_api/core/ipsec/legacy_subsystem.rbs +15 -0
- data/sig/lib/opnsense_api/core/ipsec/pre_shared_keys.rbs +27 -0
- data/sig/lib/opnsense_api/core/ipsec/sad.rbs +15 -0
- data/sig/lib/opnsense_api/core/ipsec/service.rbs +21 -0
- data/sig/lib/opnsense_api/core/ipsec/sessions.rbs +19 -0
- data/sig/lib/opnsense_api/core/ipsec/spd.rbs +15 -0
- data/sig/lib/opnsense_api/core/ipsec/tunnel.rbs +25 -0
- data/sig/lib/opnsense_api/core/ipsec.rbs +25 -0
- data/sig/lib/opnsense_api/core/monit/service.rbs +23 -0
- data/sig/lib/opnsense_api/core/monit/settings.rbs +53 -0
- data/sig/lib/opnsense_api/core/monit/status.rbs +13 -0
- data/sig/lib/opnsense_api/core/monit.rbs +13 -0
- data/sig/lib/opnsense_api/core/open_vpn/export.rbs +23 -0
- data/sig/lib/opnsense_api/core/open_vpn.rbs +9 -0
- data/sig/lib/opnsense_api/core/proxy/service.rbs +29 -0
- data/sig/lib/opnsense_api/core/proxy/settings.rbs +61 -0
- data/sig/lib/opnsense_api/core/proxy/template.rbs +17 -0
- data/sig/lib/opnsense_api/core/proxy.rbs +13 -0
- data/sig/lib/opnsense_api/core/routes/gateway.rbs +13 -0
- data/sig/lib/opnsense_api/core/routes/routes.rbs +29 -0
- data/sig/lib/opnsense_api/core/routes.rbs +11 -0
- data/sig/lib/opnsense_api/core/syslog/service.rbs +23 -0
- data/sig/lib/opnsense_api/core/syslog/settings.rbs +27 -0
- data/sig/lib/opnsense_api/core/syslog.rbs +11 -0
- data/sig/lib/opnsense_api/core/traffic_shaping/service.rbs +17 -0
- data/sig/lib/opnsense_api/core/traffic_shaping/settings.rbs +51 -0
- data/sig/lib/opnsense_api/core/traffic_shaping.rbs +11 -0
- data/sig/lib/opnsense_api/core/unbound/diagnostics.rbs +23 -0
- data/sig/lib/opnsense_api/core/unbound/service.rbs +23 -0
- data/sig/lib/opnsense_api/core/unbound/settings.rbs +65 -0
- data/sig/lib/opnsense_api/core/unbound.rbs +13 -0
- data/sig/lib/opnsense_api/core.rbs +7 -0
- data/sig/lib/opnsense_api/version.rbs +3 -0
- 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
|