sshkg 0.1.0 → 0.2.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.
data/README.rdoc ADDED
@@ -0,0 +1,41 @@
1
+ = SSH Key Generator
2
+
3
+ A little wrapper over secure shell private/public key generator utility
4
+
5
+
6
+ == Installing
7
+
8
+ The latest stable version is published in gemcutter/rubygems.
9
+
10
+ gem install sshkg
11
+
12
+
13
+ == How to use
14
+
15
+ Help is your friend RTFM
16
+
17
+ sshkg --help
18
+
19
+
20
+ == License
21
+
22
+ Copyright (c) 2010-2030 Javier Juarez Martinez
23
+
24
+ Permission is hereby granted, free of charge, to any person obtaining
25
+ a copy of this software and associated documentation files (the
26
+ "Software"), to deal in the Software without restriction, including
27
+ without limitation the rights to use, copy, modify, merge, publish,
28
+ distribute, sublicense, and/or sell copies of the Software, and to
29
+ permit persons to whom the Software is furnished to do so, subject to
30
+ the following conditions:
31
+
32
+ The above copyright notice and this permission notice shall be
33
+ included in all copies or substantial portions of the Software.
34
+
35
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
37
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
39
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
40
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
41
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/bin/sshkg CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $:.unshift( File.join( File.dirname( __FILE__ ), "..", "lib" ) )
4
- require 'sshkg'
3
+ $:.unshift( File.join( File.dirname( __FILE__ ), %w[.. lib] ) )
4
+
5
+ require 'loader'
5
6
 
6
7
  ##
7
8
  # ::Main::
8
- if( Choice.choices[:config] && Choice.choices[:user] )
9
+ ConfigContext.user = Choice.choices[:user]
9
10
 
10
- SSHKeyGenerator::Config.load( Choice.choices[:user], Choice.choices[:config] )
11
- SSHKeyGenerator::generate( )
12
- end
11
+ ConfigContext.load( File.expand_path( Choice.choices[:config] ) )
12
+ SSHKeyGenerator.generate( ConfigContext.all )
data/lib/loader.rb ADDED
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+
3
+ $:.unshift( File.join( File.dirname( __FILE__ ), 'sshkg' ) )
4
+
5
+ begin
6
+ Dir.glob( File.join( File.dirname( __FILE__ ), "**", "*.rb" ) ).each do |library|
7
+
8
+ require library
9
+ end
10
+ rescue LoadError => le
11
+ MiniLogger.error( le.message )
12
+ end
@@ -1,10 +1,24 @@
1
+ require 'rubygems'
2
+ require 'config_context'
3
+
4
+
1
5
  module SSHKeyGenerator
2
6
  extend self
3
7
 
4
- SSH_KEYGEN = "/usr/bin/ssh-keygen"
8
+ DEFAULT_TYPE = :dsa
9
+ DEFAULT_BITS = 1024
10
+ DEFAULT_COMMENT = "example.com"
11
+
12
+ def generate( atts = { } )
5
13
 
6
- def self.generate( options=Config.to_h )
14
+ raise ArgumentError.new( "There is an argument problem" ) if atts.empty?
15
+ raise ArgumentError.new( "You need an user id" ) unless atts[:user]
7
16
 
8
- `#{SSH_KEYGEN} -t #{options[:type]} -f #{options[:file]} -C "#{options[:comment]}" 2>/dev/null </dev/null` if options
17
+ user = atts[:user]
18
+ type = atts[:type] ? atts[:type] : DEFAULT_TYPE
19
+ bits = atts[:bits] ? atts[:bits] : DEFAULT_BITS
20
+ comment = atts[:comment] ? atts[:comment] : DEFAULT_COMMENT
21
+
22
+ %x{ssh-keygen -q -b #{bits} -t #{type} -f id_#{type}.#{user} -C #{user}@#{comment} 2>/dev/null </dev/null}
9
23
  end
10
24
  end
@@ -1,18 +1,20 @@
1
+ require 'rubygems'
1
2
  require 'choice'
2
3
 
4
+
3
5
  Choice.options do
4
6
  header ''
5
7
  header ' Specific options:'
6
8
 
7
- option :config do
9
+ option :config, :required=>true do
8
10
  short '-c'
9
- long '--config=DOMAIN'
11
+ long '--config'
10
12
  desc 'The yaml config file'
11
13
  end
12
14
 
13
- option :user do
15
+ option :user, :required=>true do
14
16
  short '-u'
15
- long '--user=USER_ID'
17
+ long '--user'
16
18
  desc 'The user identificator'
17
19
  end
18
20
 
data/lib/sshkg/version.rb CHANGED
@@ -1,12 +1,12 @@
1
- module SSHKeyGenerator
1
+ module SSHKeyGenerator
2
2
  module Version
3
- MAJOR = 0
4
- MINOR = 1
5
- PATCH = 0
3
+ INFO = {
4
+ :major =>0,
5
+ :minor =>2,
6
+ :patch =>0
7
+ }
6
8
 
7
- STRING = [MAJOR, MINOR, PATCH ].compact.join(".")
9
+ NAME = 'sshkg'
10
+ VERSION = INFO.values.join( '.' )
8
11
  end
9
-
10
- NAME = "sshkg"
11
- VERSION = Version::STRING
12
- end
12
+ end
@@ -0,0 +1,78 @@
1
+ $:.unshift( File.join( File.dirname( __FILE__ ), %w[.. .. lib sshkg] ) )
2
+
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'shoulda'
7
+ require 'fileutils'
8
+ require 'generator'
9
+
10
+
11
+ class TestSSHKeyGenerator < Test::Unit::TestCase
12
+
13
+ context "A SSH key generator context" do
14
+
15
+ setup do
16
+
17
+ @test_dsa_user = "dsauser"
18
+ @test_dsa_comment = "dsacomment"
19
+ @test_dsa_key_file_name = "id_dsa.#{@test_dsa_user}"
20
+ @test_dsa_public_key_file_name = "id_dsa.#{@test_dsa_user}.pub"
21
+
22
+ @test_rsa_user = "rsauser"
23
+ @test_rsa_comment = "rsacomment"
24
+ @test_rsa_key_file_name = "id_rsa.#{@test_rsa_user}"
25
+ @test_rsa_public_key_file_name = "id_rsa.#{@test_rsa_user}.pub"
26
+ end
27
+
28
+
29
+ teardown do
30
+
31
+ FileUtils.rm_f( @test_dsa_key_file_name )
32
+ FileUtils.rm_f( @test_dsa_public_key_file_name )
33
+
34
+ FileUtils.rm_f( @test_rsa_key_file_name )
35
+ FileUtils.rm_f( @test_rsa_public_key_file_name )
36
+ end
37
+
38
+
39
+ should "raise an ArgumentError" do
40
+
41
+ assert_raises( ArgumentError ) { SSHKeyGenerator.generate( ) }
42
+ assert_raises( ArgumentError ) { SSHKeyGenerator.generate( :type=>:dsa, :comment=>@test_dsa_comment ) }
43
+ assert_raises( ArgumentError ) { SSHKeyGenerator.generate( :type=>:rsa, :comment=>@test_rsa_comment ) }
44
+ end
45
+
46
+
47
+ should "generate a default key" do
48
+
49
+ SSHKeyGenerator.generate( :user=>@test_dsa_user )
50
+
51
+ assert( File.exist?( @test_dsa_key_file_name ) )
52
+
53
+ assert( File.exist?( @test_dsa_public_key_file_name ) )
54
+ assert( File.read( @test_dsa_public_key_file_name ) =~ /^ssh-dss (.+) #{@test_dsa_user}\@example.com$/ )
55
+
56
+ FileUtils.rm_f( @test_dsa_key_file_name )
57
+ FileUtils.rm_f( @test_dsa_public_key_file_name )
58
+ end
59
+
60
+
61
+ should "generate a pair of DSA keys" do
62
+
63
+ SSHKeyGenerator.generate( :user=>@test_dsa_user, :type=>:dsa, :bits=>1024, :comment=>@test_dsa_comment )
64
+
65
+ assert( File.exist?( @test_dsa_public_key_file_name ) )
66
+ assert( File.read( @test_dsa_public_key_file_name ) =~ /^ssh-dss (.+) #{@test_dsa_user}\@#{@test_dsa_comment}$/ )
67
+ end
68
+
69
+
70
+ should "generate a pair of RSA keys" do
71
+
72
+ SSHKeyGenerator.generate( :user=>@test_rsa_user, :type=>:rsa, :bits=>2048, :comment=>@test_rsa_comment )
73
+
74
+ assert( File.exist?( @test_rsa_public_key_file_name ) )
75
+ assert( File.read( @test_rsa_public_key_file_name ) =~ /ssh-rsa (.+) #{@test_rsa_user}\@#{@test_rsa_comment}$/ )
76
+ end
77
+ end
78
+ end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sshkg
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
4
+ prerelease:
5
+ version: 0.2.0
11
6
  platform: ruby
12
7
  authors:
13
8
  - Javier Juarez
@@ -15,10 +10,53 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-10-04 00:00:00 +02:00
13
+ date: 2011-03-31 00:00:00 +02:00
19
14
  default_executable: sshkg
20
- dependencies: []
21
-
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: choice
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: config_context
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: choice
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ type: :runtime
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: config_context
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: *id004
22
60
  description: A wrapper over ssh-keygem for rubyists
23
61
  email: javier.juarez@gmail.com
24
62
  executables:
@@ -26,22 +64,22 @@ executables:
26
64
  extensions: []
27
65
 
28
66
  extra_rdoc_files:
29
- - README.textile
67
+ - README.rdoc
30
68
  files:
31
69
  - bin/sshkg
32
- - lib/sshkg.rb
33
- - lib/sshkg/config.rb
70
+ - lib/loader.rb
34
71
  - lib/sshkg/generator.rb
72
+ - lib/sshkg/options_parser.rb
35
73
  - lib/sshkg/version.rb
36
- - lib/util/opt_parser.rb
37
- - README.textile
74
+ - test/unit/tc_generator.rb
75
+ - README.rdoc
38
76
  has_rdoc: true
39
77
  homepage: http://github.com/jjuarez/sshkg
40
78
  licenses: []
41
79
 
42
80
  post_install_message:
43
- rdoc_options:
44
- - --charset=UTF-8
81
+ rdoc_options: []
82
+
45
83
  require_paths:
46
84
  - lib
47
85
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -49,25 +87,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
87
  requirements:
50
88
  - - ">="
51
89
  - !ruby/object:Gem::Version
52
- hash: 3
53
- segments:
54
- - 0
55
90
  version: "0"
56
91
  required_rubygems_version: !ruby/object:Gem::Requirement
57
92
  none: false
58
93
  requirements:
59
94
  - - ">="
60
95
  - !ruby/object:Gem::Version
61
- hash: 3
62
- segments:
63
- - 0
64
96
  version: "0"
65
97
  requirements: []
66
98
 
67
- rubyforge_project:
68
- rubygems_version: 1.3.7
99
+ rubyforge_project: http://github.com/jjuarez/sshkg
100
+ rubygems_version: 1.6.2
69
101
  signing_key:
70
102
  specification_version: 3
71
103
  summary: A very simple gem that helps to automate the generation of SSH Keys
72
- test_files: []
73
-
104
+ test_files:
105
+ - test/unit/tc_generator.rb
data/README.textile DELETED
File without changes
data/lib/sshkg/config.rb DELETED
@@ -1,24 +0,0 @@
1
- require 'yaml'
2
-
3
- module SSHKeyGenerator
4
-
5
- class Config
6
- class << self
7
-
8
- def load( user, file_name )
9
- @config = YAML.load_file( file_name )
10
- @config[:user] = user
11
- end
12
-
13
- def [] key
14
- @config[key] ? @config[key] : @config[key.to_s] if @config
15
- end
16
-
17
- def to_h()
18
- { :type =>Config[:type],
19
- :file =>"id_#{Config[:type]}.#{Config[:user]}",
20
- :comment =>"#{Config[:user]}@#{Config[:comment]}" } if @config
21
- end
22
- end
23
- end
24
- end
data/lib/sshkg.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'rubygems'
2
- require 'util/opt_parser'
3
- require 'sshkg/version'
4
- require 'sshkg/config'
5
- require 'sshkg/generator'