abiraj 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/abiraj.rb +122 -0
- data/lib/securden/version.rb +6 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d96e91447aac465771ed31896d6f99e959f61cca70f4bce689a48b15410feef6
|
4
|
+
data.tar.gz: c3bbd736acae1d901bbe6a7185f57aabca7a454a57686a3f08607edf72a05fae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c46a230e1a113a33e2103ca84a1bcb12782934b98f5968dc2ac826e8036ef020aaca4b7afc57f1cbf17463e7223ba81f3593dfaf4ec61a2407f7d80006e8562d
|
7
|
+
data.tar.gz: 23be80da0ad17c335482ea27fdb147f83fe19d3a3d4dd8815fffa830e618d67488df0088a4233b727c8f60954c592acda65e958da4ce987d3cff7272650b5d28
|
data/lib/abiraj.rb
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "json"
|
3
|
+
require 'openssl'
|
4
|
+
|
5
|
+
module Abiraj
|
6
|
+
class Error < StandardError; end
|
7
|
+
|
8
|
+
def self.logger(message:, level: 'info')
|
9
|
+
level = 'warn' if level == 'error'
|
10
|
+
prefix = "[ABIRAJ] "
|
11
|
+
if defined?(Chef) && Chef.const_defined?(:Log)
|
12
|
+
case level.downcase
|
13
|
+
when "error"
|
14
|
+
Chef::Log.error(prefix + message)
|
15
|
+
when "debug"
|
16
|
+
Chef::Log.debug(prefix + message)
|
17
|
+
when "warn"
|
18
|
+
Chef::Log.warn(prefix + message)
|
19
|
+
else
|
20
|
+
Chef::Log.info(prefix + message)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Account
|
26
|
+
def initialize(server_url:, authtoken:, org: nil, certificate: nil)
|
27
|
+
@init = false
|
28
|
+
|
29
|
+
# Validate inputs
|
30
|
+
if server_url.nil? || authtoken.nil? || server_url.strip.empty? || authtoken.strip.empty?
|
31
|
+
Abiraj.logger(message: "Server URL and authtoken are required to initialize Abiraj.", level: "error")
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
unless server_url.start_with?('http://', 'https://')
|
36
|
+
Abiraj.logger(message: "Invalid server URL. It must start with http:// or https://", level: "error")
|
37
|
+
return
|
38
|
+
end
|
39
|
+
|
40
|
+
# Load certificate if provided
|
41
|
+
# if server_url.start_with?('https://') && certificate
|
42
|
+
# begin
|
43
|
+
# cert_content = File.read(certificate)
|
44
|
+
# Abiraj.logger(message: "Loaded certificate content successfully.")
|
45
|
+
# @certificate = OpenSSL::X509::Certificate.new(cert_content)
|
46
|
+
# rescue StandardError => e
|
47
|
+
# Abiraj.logger(message: "Failed to read or parse certificate: #{e.message}", level: "error")
|
48
|
+
# return
|
49
|
+
# end
|
50
|
+
# end
|
51
|
+
|
52
|
+
@server_url = server_url.strip
|
53
|
+
@authtoken = authtoken.strip
|
54
|
+
@org = org&.strip
|
55
|
+
@certificate = certificate if certificate
|
56
|
+
@init = true
|
57
|
+
Abiraj.logger(message: "Abiraj initialized successfully.")
|
58
|
+
end
|
59
|
+
|
60
|
+
def get(account_id: nil, account_name: nil, account_title: nil)
|
61
|
+
return log_and_return_nil("Abiraj is not initialized.") unless @init
|
62
|
+
|
63
|
+
Abiraj.logger(message: "Fetching account data.")
|
64
|
+
|
65
|
+
# Prepare request parameters
|
66
|
+
params = {}
|
67
|
+
params['account_id'] = account_id.to_s if account_id
|
68
|
+
params['account_name'] = account_name unless account_name.to_s.strip.empty?
|
69
|
+
params['account_title'] = account_title unless account_title.to_s.strip.empty?
|
70
|
+
|
71
|
+
# Send GET request
|
72
|
+
account_data = get_request(params, "/api/get_account_details_dict")
|
73
|
+
if account_data
|
74
|
+
Abiraj.logger(message: "Account data fetched successfully.")
|
75
|
+
return account_data
|
76
|
+
else
|
77
|
+
log_and_return_nil("Unable to fetch account data.")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def log_and_return_nil(message)
|
84
|
+
Abiraj.logger(message: message, level: "error")
|
85
|
+
nil
|
86
|
+
end
|
87
|
+
|
88
|
+
def get_request(params, endpoint)
|
89
|
+
Abiraj.logger(message: "Raising API request to Abiraj server.")
|
90
|
+
|
91
|
+
uri = URI(@server_url + endpoint)
|
92
|
+
uri.query = URI.encode_www_form(params) unless params.empty?
|
93
|
+
|
94
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
95
|
+
http.use_ssl = uri.scheme == 'https'
|
96
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
97
|
+
|
98
|
+
if http.use_ssl? && @certificate
|
99
|
+
http.ca_file = @certificate
|
100
|
+
end
|
101
|
+
|
102
|
+
request = Net::HTTP::Get.new(uri)
|
103
|
+
request['authtoken'] = @authtoken
|
104
|
+
request['org'] = @org if @org
|
105
|
+
|
106
|
+
begin
|
107
|
+
response = http.request(request)
|
108
|
+
Abiraj.logger(message: "HTTP response code: #{response.code}", level: "debug")
|
109
|
+
|
110
|
+
if response.code.to_i == 200
|
111
|
+
JSON.parse(response.body)
|
112
|
+
else
|
113
|
+
log_and_return_nil("Unexpected response code #{response.code}: #{response.body}")
|
114
|
+
end
|
115
|
+
rescue JSON::ParserError => e
|
116
|
+
log_and_return_nil("Failed to parse JSON response: #{e.message}")
|
117
|
+
rescue StandardError => e
|
118
|
+
log_and_return_nil("HTTP request failed: #{e.message}")
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: abiraj
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Abiraj
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-12-27 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: This plugin sends a GET request to an API to fetch account data (passwords,
|
14
|
+
etc.) based on the account ID, name, and title.
|
15
|
+
email:
|
16
|
+
- contact@abiraj.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- lib/abiraj.rb
|
22
|
+
- lib/securden/version.rb
|
23
|
+
homepage:
|
24
|
+
licenses: []
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.0.3
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Abiraj Chef plugin tool to extend and securely manage secrets and credential.
|
45
|
+
test_files: []
|