wazuh-ruby-client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/CHANGELOG.md +0 -0
  6. data/Gemfile +5 -0
  7. data/LICENSE +21 -0
  8. data/README.md +74 -0
  9. data/Rakefile +6 -0
  10. data/docs/.nojekyll +0 -0
  11. data/docs/Wazuh/Api/Endpoints/ActiveResponse.html +278 -0
  12. data/docs/Wazuh/Api/Endpoints/Agents.html +1877 -0
  13. data/docs/Wazuh/Api/Endpoints/Cache.html +415 -0
  14. data/docs/Wazuh/Api/Endpoints/Ciscat.html +418 -0
  15. data/docs/Wazuh/Api/Endpoints/Cluster.html +2270 -0
  16. data/docs/Wazuh/Api/Endpoints/Decoders.html +860 -0
  17. data/docs/Wazuh/Api/Endpoints/Experimental.html +2610 -0
  18. data/docs/Wazuh/Api/Endpoints/Lists.html +452 -0
  19. data/docs/Wazuh/Api/Endpoints/Manager.html +1596 -0
  20. data/docs/Wazuh/Api/Endpoints/Rootcheck.html +1025 -0
  21. data/docs/Wazuh/Api/Endpoints/Rules.html +872 -0
  22. data/docs/Wazuh/Api/Endpoints/SecurityConfigurationAssessment.html +680 -0
  23. data/docs/Wazuh/Api/Endpoints/Summary.html +199 -0
  24. data/docs/Wazuh/Api/Endpoints/Syscheck.html +755 -0
  25. data/docs/Wazuh/Api/Endpoints/Syscollector.html +2069 -0
  26. data/docs/Wazuh/Api/Endpoints.html +292 -0
  27. data/docs/Wazuh/Api/Errors/TooManyRequestsError.html +398 -0
  28. data/docs/Wazuh/Api/Errors/WazuhError.html +290 -0
  29. data/docs/Wazuh/Api/Errors.html +117 -0
  30. data/docs/Wazuh/Api.html +133 -0
  31. data/docs/Wazuh/Client.html +521 -0
  32. data/docs/Wazuh/Config.html +223 -0
  33. data/docs/Wazuh/Faraday/Connection.html +110 -0
  34. data/docs/Wazuh/Faraday/Request.html +335 -0
  35. data/docs/Wazuh/Faraday/Response/RaiseError.html +191 -0
  36. data/docs/Wazuh/Faraday/Response.html +115 -0
  37. data/docs/Wazuh/Faraday.html +117 -0
  38. data/docs/Wazuh/Logger.html +201 -0
  39. data/docs/Wazuh.html +256 -0
  40. data/docs/WazuhRubyClient.html +121 -0
  41. data/docs/_index.html +391 -0
  42. data/docs/class_list.html +51 -0
  43. data/docs/css/common.css +1 -0
  44. data/docs/css/full_list.css +58 -0
  45. data/docs/css/style.css +496 -0
  46. data/docs/file.README.html +142 -0
  47. data/docs/file_list.html +56 -0
  48. data/docs/frames.html +17 -0
  49. data/docs/index.html +142 -0
  50. data/docs/js/app.js +292 -0
  51. data/docs/js/full_list.js +216 -0
  52. data/docs/js/jquery.js +4 -0
  53. data/docs/method_list.html +1059 -0
  54. data/docs/top-level-namespace.html +110 -0
  55. data/lib/tasks/api.rake +78 -0
  56. data/lib/wazuh/api/endpoints/active_response.rb +22 -0
  57. data/lib/wazuh/api/endpoints/agents.rb +175 -0
  58. data/lib/wazuh/api/endpoints/cache.rb +38 -0
  59. data/lib/wazuh/api/endpoints/ciscat.rb +43 -0
  60. data/lib/wazuh/api/endpoints/cluster.rb +199 -0
  61. data/lib/wazuh/api/endpoints/decoders.rb +91 -0
  62. data/lib/wazuh/api/endpoints/experimental.rb +309 -0
  63. data/lib/wazuh/api/endpoints/lists.rb +42 -0
  64. data/lib/wazuh/api/endpoints/manager.rb +156 -0
  65. data/lib/wazuh/api/endpoints/rootcheck.rb +93 -0
  66. data/lib/wazuh/api/endpoints/rules.rb +80 -0
  67. data/lib/wazuh/api/endpoints/security_configuration_assessment.rb +73 -0
  68. data/lib/wazuh/api/endpoints/summary.rb +15 -0
  69. data/lib/wazuh/api/endpoints/syscheck.rb +75 -0
  70. data/lib/wazuh/api/endpoints/syscollector.rb +227 -0
  71. data/lib/wazuh/api/endpoints.rb +37 -0
  72. data/lib/wazuh/api/error.rb +6 -0
  73. data/lib/wazuh/api/errors/too_many_requests_error.rb +22 -0
  74. data/lib/wazuh/api/errors/wazuh_error.rb +14 -0
  75. data/lib/wazuh/client.rb +27 -0
  76. data/lib/wazuh/config.rb +42 -0
  77. data/lib/wazuh/faraday/connection.rb +38 -0
  78. data/lib/wazuh/faraday/request.rb +38 -0
  79. data/lib/wazuh/faraday/response/raise_error.rb +11 -0
  80. data/lib/wazuh/logger.rb +13 -0
  81. data/lib/wazuh/version.rb +4 -0
  82. data/lib/wazuh-ruby-client/version.rb +3 -0
  83. data/lib/wazuh-ruby-client.rb +17 -0
  84. data/lib/wazuh_ruby_client.rb +2 -0
  85. data/wazuh-ruby-client.gemspec +43 -0
  86. metadata +200 -0
@@ -0,0 +1,93 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module Rootcheck
5
+ #
6
+ # Clear rootcheck database
7
+ # Clears the rootcheck database for all agents.
8
+ #
9
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#clear-rootcheck-database
10
+ def clear_rootcheck_database
11
+ delete '/rootcheck'
12
+ end
13
+
14
+ # Clear rootcheck database of an agent
15
+ # Clears the rootcheck database for a specific agent.
16
+ #
17
+ # @param [String] agent_id
18
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#clear-rootcheck-database-of-an-agent
19
+ def cleak_rootcheck_database_for_agent(agent_id)
20
+ delete "/rootcheck/#{agent_id}"
21
+ end
22
+
23
+ # Get last rootcheck scan
24
+ # Returns the timestamp of the last rootcheck scan.
25
+ #
26
+ # @param [String] agent_id
27
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-last-rootcheck-scan
28
+ def rootcheck_last_scan(agent_id)
29
+ get "/rootcheck/#{agent_id}/last_scan"
30
+ end
31
+
32
+ # Get rootcheck CIS requirements
33
+ # Returns the CIS requirements of all rootchecks of the specified agent.
34
+ #
35
+ # @param [String] agent_id
36
+ # @option options [offset] :offset
37
+ # @option options [limit] :limit
38
+ # @option options [sort] :sort
39
+ # @option options [search] :search
40
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-cis-requirements
41
+ def rootcheck_cis_requirements(agent_id, options = {})
42
+ get "/rootcheck/#{agent_id}/cis", options
43
+ end
44
+
45
+ # Get rootcheck database
46
+ # Returns the rootcheck database of an agent.
47
+ #
48
+ # @param [String] agent_id
49
+ # @option options [pci] :pci
50
+ # @option options [cis] :cis
51
+ # @option options [offset] :offset
52
+ # @option options [limit] :limit
53
+ # @option options [sort] :sort
54
+ # @option options [search] :search
55
+ # @option options [status] :status
56
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-database
57
+ def rootcheck_database(agent_id, options = {})
58
+ get "/rootcheck/#{agent_id}", options
59
+ end
60
+
61
+ # Get rootcheck pci requirements
62
+ # Returns the PCI requirements of all rootchecks of the agent.
63
+ #
64
+ # @param [String] agent_id
65
+ # @option options [offset] :offset
66
+ # @option options [limit] :limit
67
+ # @option options [sort] :sort
68
+ # @option options [search] :search
69
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rootcheck-pci-requirements
70
+ def rootcheck_pic_requirements(agent_id, options = {})
71
+ get "/rootcheck/#{agent_id}/pci", options
72
+ end
73
+
74
+ # Run rootcheck scan in all agents
75
+ # Runs syscheck and rootcheck on all agents (Wazuh launches both processes simultaneously).
76
+ #
77
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#run-rootcheck-scan-in-all-agents
78
+ def run_rootcheck_all_agents
79
+ put '/rootcheck'
80
+ end
81
+
82
+ # Run rootcheck scan in an agent
83
+ # Runs syscheck and rootcheck on a specified agent (Wazuh launches both processes simultaneously)
84
+ #
85
+ # @param [String] agent_id
86
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#run-rootcheck-scan-in-an-agent
87
+ def run_rootcheck(agent_id)
88
+ put "/rootcheck/#{agent_id}"
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,80 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module Rules
5
+ #
6
+ # Returns all rules.
7
+ #
8
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-all-rules
9
+ def all_rules(options = {})
10
+ get '/rules', options
11
+ end
12
+
13
+ # Returns the files of all rules.
14
+ #
15
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-files-of-rules
16
+ def rule_files(options = {})
17
+ get '/rules/files', options
18
+ end
19
+
20
+ # Returns the GDPR requirements of all rules.
21
+ #
22
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-gdpr-requirements
23
+ def gdpr_rules(options = {})
24
+ get '/rules/gdpr', options
25
+ end
26
+
27
+ # Returns the GPG13 requirements of all rules.
28
+ #
29
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-gpg13-requirements
30
+ def gpg13_rules(options = {})
31
+ get '/rules/gpg13', options
32
+ end
33
+
34
+ # Returns the groups of all rules.
35
+ #
36
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-groups
37
+ def rules_groups(options = {})
38
+ get '/rules/groups', options
39
+ end
40
+
41
+ # Returns the HIPAA requirements of all rules.
42
+ #
43
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-hipaa-requirements
44
+ def hipaa_rules(options = {})
45
+ get '/rules/hipaa', options
46
+ end
47
+
48
+ # Returns the NIST-800-53 requirements of all rules.
49
+ #
50
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-nist-800-53-requirements
51
+ def nist_800_53_rules(options = {})
52
+ get '/rules/nist-800-53', options
53
+ end
54
+
55
+ # Returns the PCI requirements of all rules
56
+ #
57
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rule-pci-requirements
58
+ def pic_rules(options = {})
59
+ get '/rules/pci', options
60
+ end
61
+
62
+ # Returns the rules with the specified id.
63
+ #
64
+ # @param [String] rule_id
65
+ # @option options [offset] :offset
66
+ # First element to return in the collection.
67
+ # @option options [limit] :limit
68
+ # Maximum number of elements to return.
69
+ # @option options [sort] :sort
70
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
71
+ # @option options [search] :search
72
+ # Looks for elements with the specified string.
73
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-rules-by-id
74
+ def rule_by_id(rule_id, options = {})
75
+ get "/rules/#{rule_id}", options
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,73 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module SecurityConfigurationAssessment
5
+ #
6
+ # Get security configuration assessment (SCA) checks database
7
+ # Returns the sca checks of an agent.
8
+ # @param [String] agent_id
9
+ # ID to agent
10
+ # @param [String] policy_id
11
+ # ID to policy
12
+ # @option options [title] :title
13
+ # Filters by title
14
+ # @option options [description] :description
15
+ # Filters by policy description
16
+ # @option options [rationale] :rationale
17
+ # Filters by rationale
18
+ # @option options [remediation] :remediation
19
+ # Filters by remediation
20
+ # @option options [file] :file
21
+ # Filters by file
22
+ # @option options [process] :process
23
+ # Filters by process
24
+ # @option options [directory] :directory
25
+ # Filters by directory
26
+ # @option options [registry] :registry
27
+ # Filters by registry
28
+ # @option options [references] :references
29
+ # Filters by references
30
+ # @option options [result] :result
31
+ # Filters by result
32
+ # @option options [offset] :offset
33
+ # First element to return in the collection.
34
+ # @option options [limit] :limit
35
+ # Maximum number of elements to return.
36
+ # @option options [sort] :sort
37
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
38
+ # @option options [search] :search
39
+ # Looks for elements with the specified string.
40
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-security-configuration-assessment-sca-checks-database
41
+ def checks_sca_database(agent_id, policy_id, options = {})
42
+ get "/sca/#{agent_id}/checks/#{policy_id}", options
43
+ end
44
+
45
+ # Get security configuration assessment (SCA) database
46
+ # Returns the sca database of an agent
47
+ #
48
+ # @param [String] agent_id
49
+ # ID to agent
50
+ # @option options [name] :name
51
+ # Filters by policy name.
52
+ # @option options [description] :description
53
+ # Filters by policy description
54
+ # @option options [references] :references
55
+ # Filters by references
56
+ # @option options [offset] :offset
57
+ # First element to return in the collection.
58
+ # @option options [limit] :limit
59
+ # Maximum number of elements to return.
60
+ # @option options [sort] :sort
61
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
62
+ # @option options [search] :search
63
+ # Looks for elements with the specified string.
64
+ # @option options [q] :q
65
+ # Query to filter results by. This is specially useful to filter by total checks passed, failed or total score (fields pass, fail, score).
66
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-security-configuration-assessment-sca-database
67
+ def sca_database(agent_id, options = {})
68
+ get "/sca/#{agent_id}", options
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,15 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module Summary
5
+ #
6
+ # Returns a dictionary with a full summary of agents.
7
+ #
8
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-a-full-summary-of-agents
9
+ def summary
10
+ get '/summary/agents'
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,75 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module Syscheck
5
+ #
6
+ # Clears the syscheck database for the specified agent.
7
+ #
8
+ # @param [String] agent_id
9
+ # ID to agent
10
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#clear-syscheck-database-of-an-agent
11
+ def clear_syscheck_database(agent_id)
12
+ delete "/syscheck/#{agent_id}"
13
+ end
14
+
15
+ # Return the timestamp of the last syscheck scan.
16
+ #
17
+ # @param [String] agent_id
18
+ # ID to agent
19
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-last-syscheck-scan
20
+ def last_syscheck_scan(agent_id)
21
+ get "/syscheck/#{agent_id}/last_scan"
22
+ end
23
+
24
+ # Returns the syscheck files of an agent.
25
+ #
26
+ # @param [String] agent_id
27
+ # ID to agent
28
+ # @option options [offset] :offset
29
+ # First element to return in the collection.
30
+ # @option options [limit] :limit
31
+ # Maximum number of elements to return.
32
+ # @option options [sort] :sort
33
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
34
+ # @option options [search] :search
35
+ # Looks for elements with the specified string.
36
+ # @option options [file] :file
37
+ # Filters file by filename.
38
+ # @option options [type] :type
39
+ # Selects type of file. Allowed values: file, registry
40
+ # @option options [summary] :summary
41
+ # Returns a summary grouping by filename. Allowed values: yes, no
42
+ # @option options [select] :select
43
+ # List of selected fields separated by commas.
44
+ # @option options [md5] :md5
45
+ # Returns the files with the specified md5 hash.
46
+ # @option options [sha1] :sha1
47
+ # Returns the files with the specified sha1 hash.
48
+ # @option options [sha256] :sha256
49
+ # Returns the files with the specified sha256 hash.
50
+ # @option options [hash] :hash
51
+ # Returns the files with the specified hash (md5, sha1 or sha256).
52
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-syscheck-files
53
+ def syscheck_files(agent_id, options)
54
+ get "/syscheck/#{agent_id}", options
55
+ end
56
+
57
+ # Runs syscheck and rootcheck on all agents (Wazuh launches both processes simultaneously).
58
+ #
59
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#run-syscheck-scan-in-all-agents
60
+ def run_syscheck_all_agents
61
+ put '/syscheck'
62
+ end
63
+
64
+ # Runs syscheck and rootcheck on an agent (Wazuh launches both processes simultaneously).
65
+ #
66
+ # @param [String] agent_id
67
+ # ID to agent
68
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#run-syscheck-scan-in-an-agent
69
+ def run_syscheck(agent_id)
70
+ put "/syscheck/#{agent_id}"
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,227 @@
1
+ module Wazuh
2
+ module Api
3
+ module Endpoints
4
+ module Syscollector
5
+ #
6
+ # Returns the agent’s hardware info.
7
+ #
8
+ # @param [String] agent_id
9
+ # @option options [select] :select
10
+ # List of selected fields separated by commas.
11
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-hardware-info
12
+ def hardware(agent_id, options = {})
13
+ get "/syscollector/#{agent_id}/hardware", options
14
+ end
15
+
16
+ # Returns the agent’s network address info.
17
+ #
18
+ # @param [String] agent_id
19
+ # @option options [offset] :offset
20
+ # First element to return in the collection.
21
+ # @option options [limit] :limit
22
+ # Maximum number of elements to return.
23
+ # @option options [sort] :sort
24
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
25
+ # @option options [search] :search
26
+ # Looks for elements with the specified string.
27
+ # @option options [select] :select
28
+ # List of selected fields separated by commas.
29
+ # @option options [iface] :iface
30
+ # Filters by interface name.
31
+ # @option options [proto] :proto
32
+ # Filters by proto.
33
+ # @option options [address] :address
34
+ # Filters by address.
35
+ # @option options [broadcast] :broadcast
36
+ # Filters by broadcast.
37
+ # @option options [netmask] :netmask
38
+ # Filters by netmask.
39
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-address-info-of-an-agent
40
+ def netaddr(agent_id, options = {})
41
+ get "/syscollector/#{agent_id}/netaddr", options
42
+ end
43
+
44
+ # Returns the agent’s network interface info
45
+ #
46
+ # @param [String] agent_id
47
+ # @option options [offset] :offset
48
+ # First element to return in the collection.
49
+ # @option options [limit] :limit
50
+ # Maximum number of elements to return.
51
+ # @option options [sort] :sort
52
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
53
+ # @option options [search] :search
54
+ # Looks for elements with the specified string.
55
+ # @option options [select] :select
56
+ # List of selected fields separated by commas.
57
+ # @option options [name] :name
58
+ # Filters by name.
59
+ # @option options [adapter] :adapter
60
+ # Filters by adapter.
61
+ # @option options [type] :type
62
+ # Filters by type.
63
+ # @option options [state] :state
64
+ # Filters by state.
65
+ # @option options [mtu] :mtu
66
+ # Filters by mtu.
67
+ # @option options [tx_packets] :tx_packets
68
+ # @option options [rx_packets] :rx_packets
69
+ # @option options [tx_bytes] :tx_bytes
70
+ # @option options [rx_bytes] :rx_bytes
71
+ # @option options [tx_errors] :tx_errors
72
+ # @option options [rx_errors] :rx_errors
73
+ # @option options [tx_dropped] :tx_dropped
74
+ # @option options [rx_dropped] :rx_dropped
75
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-interface-info-of-an-agent
76
+ def netiface(agent_id, options = {})
77
+ get "/syscollector/#{agent_id}/netiface", options
78
+ end
79
+
80
+ # Returns the agent’s network protocol info.
81
+ #
82
+ # @param [String] agent_id
83
+ # @option options [offset] :offset
84
+ # First element to return in the collection.
85
+ # @option options [limit] :limit
86
+ # Maximum number of elements to return.
87
+ # @option options [sort] :sort
88
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
89
+ # @option options [search] :search
90
+ # Looks for elements with the specified string.
91
+ # @option options [select] :select
92
+ # List of selected fields separated by commas.
93
+ # @option options [iface] :iface
94
+ # Filters by interface name.
95
+ # @option options [type] :type
96
+ # Filters by type.
97
+ # @option options [gateway] :gateway
98
+ # Filters by gateway.
99
+ # @option options [dhcp] :dhcp
100
+ # Filters by dhcp.
101
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-network-protocol-info-of-an-agent
102
+ def netproto(agent_id, options = {})
103
+ get "/syscollector/#{agent_id}/netproto", options
104
+ end
105
+
106
+ # Returns the agent’s OS info.
107
+ #
108
+ # @param [String] agent_id
109
+ # @option options [select] :select
110
+ # List of selected fields separated by commas.
111
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-os-info
112
+ def os(agent_id, options = {})
113
+ get "/syscollector/#{agent_id}/os", options
114
+ end
115
+
116
+ # Returns the agent’s packages info.
117
+ #
118
+ # @param [String] agent_id
119
+ # @option options [offset] :offset
120
+ # First element to return in the collection.
121
+ # @option options [limit] :limit
122
+ # Maximum number of elements to return.
123
+ # @option options [sort] :sort
124
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
125
+ # @option options [search] :search
126
+ # Looks for elements with the specified string.
127
+ # @option options [select] :select
128
+ # List of selected fields separated by commas.
129
+ # @option options [vendor] :vendor
130
+ # Filters by vendor.
131
+ # @option options [name] :name
132
+ # Filters by name.
133
+ # @option options [architecture] :architecture
134
+ # Filters by architecture.
135
+ # @option options [format] :format
136
+ # Filters by format.
137
+ # @option options [version] :version
138
+ # Filters by format.
139
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-packages-info
140
+ def packages(agent_id, options = {})
141
+ get "/syscollector/#{agent_id}/packages", options
142
+ end
143
+
144
+ # Get ports info of an agent
145
+ # Returns the agent’s ports info.
146
+ #
147
+ # @param [String] agent_id
148
+ # @option options [offset] :offset
149
+ # First element to return in the collection.
150
+ # @option options [limit] :limit
151
+ # Maximum number of elements to return.
152
+ # @option options [sort] :sort
153
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
154
+ # @option options [search] :search
155
+ # Looks for elements with the specified string.
156
+ # @option options [select] :select
157
+ # List of selected fields separated by commas.
158
+ # @option options [pid] :pid
159
+ # Filters by pid.
160
+ # @option options [protocol] :protocol
161
+ # Filters by protocol.
162
+ # @option options [local_ip] :local_ip
163
+ # Filters by local_ip.
164
+ # @option options [local_port] :local_port
165
+ # Filters by local_port.
166
+ # @option options [remote_ip] :remote_ip
167
+ # Filters by remote_ip.
168
+ # @option options [tx_queue] :tx_queue
169
+ # Filters by tx_queue.
170
+ # @option options [state] :state
171
+ # Filters by state.
172
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-ports-info-of-an-agent
173
+ def ports(agent_id, options = {})
174
+ get "/syscollector/#{agent_id}/ports", options
175
+ end
176
+
177
+ # Get processes info
178
+ # Returns the agent's processes info.
179
+ #
180
+ # @param [String] agent_id
181
+ # @option options [offset] :offset
182
+ # First element to return in the collection.
183
+ # @option options [limit] :limit
184
+ # Maximum number of elements to return.
185
+ # @option options [sort] :sort
186
+ # Sorts the collection by a field or fields (separated by comma). Use +/- at the beginning to list in ascending or descending order.
187
+ # @option options [search] :search
188
+ # Looks for elements with the specified string.
189
+ # @option options [select] :select
190
+ # List of selected fields separated by commas.
191
+ # @option options [pid] :pid
192
+ # Filters by pid.
193
+ # @option options [state] :state
194
+ # Filters by process state.
195
+ # @option options [ppid] :ppid
196
+ # Filters by process parent pid.
197
+ # @option options [egroup] :egroup
198
+ # Filters by process egroup.
199
+ # @option options [euser] :euser
200
+ # Filters by process euser.
201
+ # @option options [fgroup] :fgroup
202
+ # Filters by process fgroup.
203
+ # @option options [name] :name
204
+ # Filters by process name.
205
+ # @option options [nlwp] :nlwp
206
+ # Filters by process nlwp.
207
+ # @option options [pgrp] :pgrp
208
+ # Filters by process pgrp.
209
+ # @option options [priority] :priority
210
+ # Filters by process priority.
211
+ # @option options [rgroup] :rgroup
212
+ # Filters by process rgroup.
213
+ # @option options [ruser] :ruser
214
+ # Filters by process ruser.
215
+ # @option options [sgroup] :sgroup
216
+ # Filters by process sgroup.
217
+ # @option options [suser] :suser
218
+ # Filters by process suser.
219
+ #
220
+ # @see https://documentation.wazuh.com/3.10/user-manual/api/reference.html#get-processes-info
221
+ def processes(agent_id, options = {})
222
+ get "/syscollector/#{agent_id}/processes", options
223
+ end
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,37 @@
1
+ require_relative 'endpoints/active_response'
2
+ require_relative 'endpoints/agents'
3
+ require_relative 'endpoints/cache'
4
+ require_relative 'endpoints/ciscat'
5
+ require_relative 'endpoints/cluster'
6
+ require_relative 'endpoints/decoders'
7
+ require_relative 'endpoints/experimental'
8
+ require_relative 'endpoints/lists'
9
+ require_relative 'endpoints/manager'
10
+ require_relative 'endpoints/rootcheck'
11
+ require_relative 'endpoints/rules'
12
+ require_relative 'endpoints/security_configuration_assessment'
13
+ require_relative 'endpoints/summary'
14
+ require_relative 'endpoints/syscheck'
15
+ require_relative 'endpoints/syscollector'
16
+
17
+ module Wazuh
18
+ module Api
19
+ module Endpoints
20
+ include ActiveResponse
21
+ include Agents
22
+ include Cache
23
+ include Ciscat
24
+ include Cluster
25
+ include Decoders
26
+ include Experimental
27
+ include Lists
28
+ include Manager
29
+ include Rootcheck
30
+ include Rules
31
+ include Summary
32
+ include Syscheck
33
+ include Syscollector
34
+ include SecurityConfigurationAssessment
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+ module Wazuh
3
+ module Api
4
+ Error = Errors::WazuhError
5
+ end
6
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ module Wazuh
3
+ module Api
4
+ module Errors
5
+ class TooManyRequestsError < ::Faraday::Error
6
+ attr_reader :response
7
+
8
+ def initialize(response)
9
+ @response = response
10
+ end
11
+
12
+ def message
13
+ "Retry after #{retry_after} seconds"
14
+ end
15
+
16
+ def retry_after
17
+ response.headers['retry-after'].to_i
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module Wazuh
2
+ module Api
3
+ module Errors
4
+ class WazuhError < ::Faraday::Error
5
+ attr_reader :response
6
+
7
+ def initialize(message, response = nil)
8
+ @response = response
9
+ super message
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ module Wazuh
2
+ class Client
3
+ include Faraday::Connection
4
+ include Faraday::Request
5
+ include Api::Endpoints
6
+
7
+ attr_accessor(*Config::ATTRIBUTES)
8
+
9
+ def initialize(options = {})
10
+ Wazuh::Config::ATTRIBUTES.each do |key|
11
+ send("#{key}=", options[key] || Wazuh.config.send(key))
12
+ end
13
+ @logger ||= Wazuh::Config.logger || Wazuh::Logger.default
14
+ end
15
+
16
+ class << self
17
+ def configure
18
+ block_given? ? yield(Config) : Config
19
+ end
20
+
21
+ def config
22
+ Config
23
+ end
24
+ end
25
+ end
26
+ end
27
+