mydrive-aws-mfa 1.0.1 → 1.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 +5 -5
- data/lib/aws_mfa.rb +10 -13
- data/lib/aws_mfa/config_loader.rb +32 -0
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5776f52ef1b781f9aeea4996019358182f49502f27ed0ad943e0a1a55ce8e2d6
|
4
|
+
data.tar.gz: b1e19ee73a61ace3c884f984e0967a539ae2302efb7503dff7aeb31f810a75fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcb52467e7e567861ba18101affbcad5c508dba8f9e0acbe7db1bd921b26fc65b94fe95a250e3979ffacd811492e0c1040626cadaeb4966f69c892b79dc89ae8
|
7
|
+
data.tar.gz: b01e529138a2ff94dbeca9abd6dc3111af935819c8fe781562733bdf2559eca0795e060f8648e58c4196a1c7a0367cceec635c2ab67978cbe5d1b7dc5b41cc68
|
data/lib/aws_mfa.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require 'aws-sdk-core/ini_parser'
|
2
1
|
require 'fileutils'
|
3
2
|
require 'json'
|
3
|
+
require_relative 'aws_mfa/config_loader'
|
4
4
|
require_relative 'aws_mfa/credentials_output_executor'
|
5
5
|
require_relative 'aws_mfa/credentials_loader'
|
6
6
|
require_relative 'aws_mfa/errors'
|
@@ -8,17 +8,16 @@ require_relative 'aws_mfa/profile_config'
|
|
8
8
|
require_relative 'aws_mfa/shell_command'
|
9
9
|
|
10
10
|
class AwsMfa
|
11
|
-
ARN_CONFIG_FILE_PATH = ".aws/config"
|
12
11
|
MYDRIVE_CREDENTIALS_FILE_PATH = '.mydrive-aws'
|
13
12
|
|
14
13
|
def initialize
|
15
14
|
verify_aws_installed
|
16
|
-
|
15
|
+
verify_config_file
|
17
16
|
@mydrive_credentials_cache_dir = set_mydrive_credentials_cache_dir
|
18
17
|
end
|
19
18
|
|
20
19
|
def execute(execution_output = :set_env, profile = nil)
|
21
|
-
aws_profile = profile || ENV['AWS_PROFILE'] ||
|
20
|
+
aws_profile = profile || ENV['AWS_PROFILE'] || "default"
|
22
21
|
profile_config = load_profile_config(aws_profile)
|
23
22
|
credentials = load_credentials(profile_config)
|
24
23
|
execute_output(execution_output, credentials)
|
@@ -26,7 +25,7 @@ class AwsMfa
|
|
26
25
|
|
27
26
|
private
|
28
27
|
|
29
|
-
attr_reader :
|
28
|
+
attr_reader :mydrive_credentials_cache_dir
|
30
29
|
|
31
30
|
def verify_aws_installed
|
32
31
|
unless AwsMfa::ShellCommand.new("which aws").call.success?
|
@@ -34,13 +33,8 @@ class AwsMfa
|
|
34
33
|
end
|
35
34
|
end
|
36
35
|
|
37
|
-
def
|
38
|
-
|
39
|
-
unless File.readable?(aws_config_file)
|
40
|
-
raise Errors::ConfigurationNotFound, 'Aws configuration not found. You must run `aws configure`'
|
41
|
-
end
|
42
|
-
|
43
|
-
aws_config_file
|
36
|
+
def verify_config_file
|
37
|
+
aws_config
|
44
38
|
end
|
45
39
|
|
46
40
|
def set_mydrive_credentials_cache_dir
|
@@ -50,7 +44,6 @@ class AwsMfa
|
|
50
44
|
end
|
51
45
|
|
52
46
|
def load_profile_config(profile)
|
53
|
-
aws_config = Aws::IniParser.ini_parse(File.read(aws_config_file))
|
54
47
|
if profile_config = aws_config[profile]
|
55
48
|
AwsMfa::ProfileConfig.new(profile_config, profile)
|
56
49
|
else
|
@@ -72,4 +65,8 @@ class AwsMfa
|
|
72
65
|
def expiration_buffer_minutes
|
73
66
|
ENV.fetch("MYDRIVE_MFA_TOKEN_EXPIRATION_BUFFER", 0).to_i
|
74
67
|
end
|
68
|
+
|
69
|
+
def aws_config
|
70
|
+
@aws_config ||= ConfigLoader.build.load
|
71
|
+
end
|
75
72
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "inifile"
|
2
|
+
require_relative "errors"
|
3
|
+
|
4
|
+
class ConfigLoader
|
5
|
+
ARN_CONFIG_FILE_PATH = ".aws/config".freeze
|
6
|
+
|
7
|
+
def self.build
|
8
|
+
config_file = File.join(ENV["HOME"], ARN_CONFIG_FILE_PATH)
|
9
|
+
|
10
|
+
raise AwsMfa::Errors::ConfigurationNotFound, "Configuration not found." unless File.readable?(config_file)
|
11
|
+
|
12
|
+
new(config_file)
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(config_file)
|
16
|
+
@config_file = config_file
|
17
|
+
end
|
18
|
+
|
19
|
+
def load
|
20
|
+
config = IniFile.load(@config_file).to_h
|
21
|
+
config.each_with_object({}) do |(key, value), acc|
|
22
|
+
key =
|
23
|
+
if key.start_with?("profile ")
|
24
|
+
key.gsub("profile ", "")
|
25
|
+
else
|
26
|
+
key
|
27
|
+
end
|
28
|
+
|
29
|
+
acc[key] = value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mydrive-aws-mfa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- MyDrive Solutions Ltd
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: inifile
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,6 +63,7 @@ files:
|
|
63
63
|
- README.md
|
64
64
|
- bin/mydrive-aws-mfa
|
65
65
|
- lib/aws_mfa.rb
|
66
|
+
- lib/aws_mfa/config_loader.rb
|
66
67
|
- lib/aws_mfa/credentials_loader.rb
|
67
68
|
- lib/aws_mfa/credentials_output_executor.rb
|
68
69
|
- lib/aws_mfa/errors.rb
|
@@ -91,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
92
|
requirements:
|
92
93
|
- aws-cli
|
93
94
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.6
|
95
|
+
rubygems_version: 2.7.6
|
95
96
|
signing_key:
|
96
97
|
specification_version: 4
|
97
98
|
summary: Run AWS commands with MFA (MyDrive fork)
|