aws_runas 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b42c61f6910d824c789cda5dfd180ee21526a4eb
4
- data.tar.gz: 633b4c171c180074c8236fadbb0b1fd228d28286
3
+ metadata.gz: c0753f807b2e12d78b47b70a2c0ad8a794cdd909
4
+ data.tar.gz: fc978832ef89c676bd8369b078b261b201a6a6dd
5
5
  SHA512:
6
- metadata.gz: 89c0b88c7dc6ac5700b96934db1741c5a6847bb879d05675d6ab7d520d56a1e7ab4e169d216d77912c083062b59043f5596de9f4a51a7c872043f46b07f977e2
7
- data.tar.gz: 950a1ab391f0508b074a824937ded7948b99137022b0d3b8fa69dc93ef5b43f00965e4f7cd1a0406b6937e17c2cb183378ab14ad7b2a24f75f98d4cdbb388881
6
+ metadata.gz: ce7f192507b0633bd339a031d8dc630353358882a8eb1fb78dd51185835538ab2e5da2c8ca2740e3015dc0677f0e06858affc5b069997737603d1bceccfc2761
7
+ data.tar.gz: 7d16f79ea126d0485afa513404c02b3bdcac7437e8caa6ec97e6faf8c84584789d035800100fef32707d7e293ab7629822e1b1cd935d3d207d0aafa9ec0d054b
checksums.yaml.gz.sig CHANGED
Binary file
data/.rubocop.yml CHANGED
@@ -3,3 +3,5 @@ Metrics/LineLength:
3
3
  Style/HashSyntax:
4
4
  Exclude:
5
5
  - Rakefile
6
+ AllCops:
7
+ TargetRubyVersion: 2.1
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  aws_runas CHANGELOG
2
2
  ====================
3
3
 
4
+ 0.2.0 (Sat Jan 16 23:44:56 PST 2016)
5
+ -------------------------------------
6
+
7
+ * `$SHELL` is now supported - if this environment variable exists, the shell
8
+ in it will be launched.
9
+ * Windows support:
10
+ * `cmd.exe` is set as the default shell on non-Cygwin Windows systems.
11
+ * Fixes to support mingw32 such as IO flushing and detection of a lack of
12
+ `noecho` support.
13
+
4
14
  0.1.3 (Fri 27 Nov 2015 08:05:45 PST)
5
15
  -------------------------------------
6
16
 
data/README.md CHANGED
@@ -36,8 +36,8 @@ aws-runas: Run commands under AWS IAM roles
36
36
  Usage:
37
37
  aws-runas [options] COMMAND ARGS
38
38
 
39
- If COMMAND is omitted, the default shell (/bin/sh) will
40
- launch.
39
+ If COMMAND is omitted, the default shell ($SHELL, /bin/sh, or cmd.exe,
40
+ depending on your system) will launch.
41
41
 
42
42
  [options] are:
43
43
  -p, --path=<s> Path to the AWS config file
@@ -52,6 +52,24 @@ following order:
52
52
  * `~/.aws/config`, in your user directory.
53
53
 
54
54
 
55
+ Usage on Windows
56
+ -----------------
57
+
58
+ `aws_runas` works on Windows platforms, but YMMV. The gem has been tested
59
+ lightly on Cygwin and MinGW32, and if I needed to recommend one over the other,
60
+ I would recommend Cygwin.
61
+
62
+ If you want to use the gem on Windows without Cygwin, the following below may
63
+ be necessary:
64
+
65
+ ### OpenSSL Cert Bundle for Windows
66
+
67
+ OpenSSL does not come pre-bundled with a CA certificate bundle on non-Cygwin
68
+ Windows installations. To get this working with that, you will need to get
69
+ the certificate bundle from somewhere like [here](http://curl.haxx.se/docs/caextract.html)
70
+ and set your `SSL_CERT_FILE` environment variable to go to the file.
71
+
72
+
55
73
  Author
56
74
  -------
57
75
 
data/lib/aws_runas/cli.rb CHANGED
@@ -30,8 +30,8 @@ module AwsRunAs
30
30
  Usage:
31
31
  aws-runas [options] COMMAND ARGS
32
32
 
33
- If COMMAND is omitted, the default shell (/bin/sh) will
34
- launch.
33
+ If COMMAND is omitted, the default shell ($SHELL, /bin/sh, or cmd.exe,
34
+ depending on your system) will launch.
35
35
 
36
36
  [options] are:
37
37
  EOS
@@ -57,8 +57,13 @@ module AwsRunAs
57
57
  def read_mfa_if_needed(path: nil, profile: 'default')
58
58
  @cfg = AwsRunAs::Config.new(path: path, profile: profile)
59
59
  return nil unless @cfg.mfa_required?
60
- puts 'Enter MFA code:'
61
- STDIN.noecho(&:gets).chomp
60
+ STDOUT.puts 'Enter MFA code:'
61
+ STDOUT.flush
62
+ begin
63
+ STDIN.noecho(&:gets).chomp
64
+ rescue Errno::EBADF
65
+ STDIN.gets.chomp
66
+ end
62
67
  end
63
68
  end
64
69
  end
@@ -13,19 +13,20 @@
13
13
  # limitations under the License.
14
14
 
15
15
  require 'aws_runas/config'
16
+ require 'aws_runas/utils'
16
17
  require 'aws-sdk'
17
18
 
18
19
  module AwsRunAs
19
20
  # Main program logic for aws-runas - sets up sts asession and assumed role,
20
21
  # and hands off environment to called process.
21
22
  class Main
22
- # Instantiate the object and set up the path, profile, and
23
+ # Instantiate the object and set up the path, profile, and populate MFA
23
24
  def initialize(path: nil, profile: default, mfa_code: nil)
24
- if path
25
- cfg_path = path
26
- else
27
- cfg_path = AwsRunAs::Config.find_config_file
28
- end
25
+ cfg_path = if path
26
+ path
27
+ else
28
+ AwsRunAs::Config.find_config_file
29
+ end
29
30
  @cfg = AwsRunAs::Config.new(path: cfg_path, profile: profile)
30
31
  @mfa_code = mfa_code
31
32
  end
@@ -62,7 +63,7 @@ module AwsRunAs
62
63
 
63
64
  def handoff(command: nil, argv: nil)
64
65
  env = credentials_env
65
- command = '/bin/sh' unless command
66
+ command = AwsRunAs::Utils.shell unless command
66
67
  exec(env, command, *argv)
67
68
  end
68
69
  end
@@ -0,0 +1,32 @@
1
+ # Copyright 2016 Chris Marchesi
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'rbconfig'
16
+
17
+ module AwsRunAs
18
+ # Utility functions that aren't specifically tied to a class.
19
+ module Utils
20
+ # load the shell for a specific operating system.
21
+ # if $SHELL exists, load that.
22
+ def self.shell
23
+ if RbConfig::CONFIG['host_os'] =~ /mswin|windows|mingw32/i
24
+ 'cmd.exe'
25
+ elsif ENV.include?('SHELL')
26
+ ENV['SHELL']
27
+ else
28
+ '/bin/sh'
29
+ end
30
+ end
31
+ end
32
+ end
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module AwsRunAs
16
- VERSION = '0.1.3'
16
+ VERSION = '0.2.0'
17
17
  end
@@ -58,6 +58,7 @@ describe AwsRunAs::Main do
58
58
  describe '#handoff' do
59
59
  before(:context) do
60
60
  @env = @main.credentials_env
61
+ ENV.store('SHELL', '/bin/sh')
61
62
  end
62
63
 
63
64
  it 'calls exec with the environment properly set' do
@@ -0,0 +1,52 @@
1
+ # Copyright 2016 Chris Marchesi
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'spec_helper'
16
+
17
+ describe AwsRunAs::Utils do
18
+ describe '::shell' do
19
+ context 'Non-Windows OS' do
20
+ context 'No $SHELL set' do
21
+ before(:context) do
22
+ ENV.delete('SHELL')
23
+ end
24
+
25
+ it 'returns /bin/sh as the shell' do
26
+ expect(AwsRunAs::Utils.shell).to eq '/bin/sh'
27
+ end
28
+ end
29
+
30
+ context 'With $SHELL set as /bin/bash' do
31
+ before(:context) do
32
+ ENV.store('SHELL', '/bin/bash')
33
+ end
34
+
35
+ it 'returns /bin/bash as the shell' do
36
+ expect(AwsRunAs::Utils.shell).to eq '/bin/bash'
37
+ end
38
+ end
39
+ end
40
+
41
+ context 'Windows OS' do
42
+ before(:context) do
43
+ ENV.delete('SHELL')
44
+ RbConfig::CONFIG.store('host_os', 'windows')
45
+ end
46
+
47
+ it 'returns cmd.exe as the shell' do
48
+ expect(AwsRunAs::Utils.shell).to eq 'cmd.exe'
49
+ end
50
+ end
51
+ end
52
+ end
data.tar.gz.sig CHANGED
@@ -1,2 +1,3 @@
1
- ��t�d�
2
- �#�I��*ԗ t0���Ԧ��ڒ�>���8P�;�׳E27 ��@w"��B��|Y���Vm2����>i_�f������M�YQS���is0ѝ!j�j"U��ʚ�똚�
3
- -q?J�N�5�@ym�d���H��cڥ�_c�n�-(�#��DZ�Bז����Z�HvnT0xMnt ���W�I�
1
+ 1Z����8)2��#�����$�7%�A"�����g
2
+ |*0tut
3
+ Q-\3daZs4�g�N�*ö2�.��a��\Fz
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws_runas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Marchesi
@@ -31,7 +31,7 @@ cert_chain:
31
31
  reriQxVYXGlD8ZDuaKlDyVqUbF026ZHIlHKIgg90O037qFPxCBACTtxtYTP2hwug
32
32
  Yis=
33
33
  -----END CERTIFICATE-----
34
- date: 2015-11-27 00:00:00.000000000 Z
34
+ date: 2016-01-17 00:00:00.000000000 Z
35
35
  dependencies:
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: aws-sdk
@@ -154,10 +154,12 @@ files:
154
154
  - lib/aws_runas/cli.rb
155
155
  - lib/aws_runas/config.rb
156
156
  - lib/aws_runas/main.rb
157
+ - lib/aws_runas/utils.rb
157
158
  - lib/aws_runas/version.rb
158
159
  - spec/aws_runas/cli_spec.rb
159
160
  - spec/aws_runas/config_spec.rb
160
161
  - spec/aws_runas/main_spec.rb
162
+ - spec/aws_runas/utils_spec.rb
161
163
  - spec/helpers/config_spec.rb
162
164
  - spec/helpers/files/aws_config
163
165
  - spec/spec_helper.rb
@@ -181,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
183
  version: '0'
182
184
  requirements: []
183
185
  rubyforge_project:
184
- rubygems_version: 2.4.5.1
186
+ rubygems_version: 2.2.2
185
187
  signing_key:
186
188
  specification_version: 4
187
189
  summary: Run a command or shell under an assumed AWS IAM role
@@ -189,6 +191,7 @@ test_files:
189
191
  - spec/aws_runas/cli_spec.rb
190
192
  - spec/aws_runas/config_spec.rb
191
193
  - spec/aws_runas/main_spec.rb
194
+ - spec/aws_runas/utils_spec.rb
192
195
  - spec/helpers/config_spec.rb
193
196
  - spec/helpers/files/aws_config
194
197
  - spec/spec_helper.rb
metadata.gz.sig CHANGED
Binary file