recon 0.0.1

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.
@@ -0,0 +1,15 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ README.rdoc
4
+ Rakefile
5
+ bin/recon
6
+ lib/recon.rb
7
+ lib/recon/connection.rb
8
+ lib/recon/console.rb
9
+ lib/recon/infrastructure.rb
10
+ lib/recon/machine.rb
11
+ lib/recon/machine/remote.rb
12
+ lib/recon/tasks.rb
13
+ lib/recon/tasks/infrastructure.rake
14
+ recon.gemspec
15
+ Manifest
@@ -0,0 +1,3 @@
1
+ = Recon
2
+
3
+ Infrasture console.
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ Echoe.new('recon', '0.0.1') do |p|
6
+ p.description = 'Infrastructure Console'
7
+ p.summary = 'Exposes your infrastructure locally as Ruby objects'
8
+ p.url = 'http://github.com/khy/recon'
9
+ p.author = 'Kevin Hyland'
10
+ p.email = 'khy@me.com'
11
+ p.ignore_pattern = ['tmp/*']
12
+ p.development_dependencies = []
13
+ end
14
+
15
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../lib/recon'
3
+ Recon::Console.start
@@ -0,0 +1,10 @@
1
+ $:.unshift(File.expand_path('..', __FILE__))
2
+
3
+ require 'rubygems'
4
+
5
+ module Recon
6
+ autoload :Connection, 'recon/connection'
7
+ autoload :Console, 'recon/console'
8
+ autoload :Infrastructure, 'recon/infrastructure'
9
+ autoload :Machine, 'recon/machine'
10
+ end
@@ -0,0 +1,17 @@
1
+ require 'net/ssh'
2
+
3
+ module Recon
4
+ class Connection
5
+ def initialize(host, user, password = nil)
6
+ @raw_connection = Net::SSH.start(host, user, :password => password)
7
+ end
8
+
9
+ def raw
10
+ @raw_connection
11
+ end
12
+
13
+ def execute(command)
14
+ @raw_connection.exec!(command)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ require 'optparse'
2
+ require 'irb'
3
+ require 'irb/completion'
4
+
5
+ module Recon
6
+ module Console
7
+ def self.start
8
+ options = {}
9
+
10
+ OptionParser.new do |opt|
11
+ opt.banner = 'Usage: recon [options]'
12
+ opt.on('-d', '--directory', 'Specify infrastructure load directory') { |v| options[:directory] = v }
13
+ opt.parse!(ARGV)
14
+ end
15
+
16
+ puts 'Loading infrastructure environment'
17
+ Recon::Infrastructure.load(options[:directory])
18
+
19
+ ARGV << '--simple-prompt'
20
+ IRB.start
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,20 @@
1
+ module Recon
2
+ module Infrastructure
3
+ LOAD_FILES = %w|config infrastructure|
4
+
5
+ def self.load(load_path = nil)
6
+ [load_path, '~/.reconrc', Dir.pwd].each{|path| load_directory(path) if path}
7
+ end
8
+
9
+ def self.load_directory(path)
10
+ LOAD_FILES.each do |file|
11
+ full_path = File.join(File.expand_path(path), file)
12
+ require("#{full_path}.rb") if File.exists?("#{full_path}.rb")
13
+
14
+ if File.directory? full_path
15
+ Dir[File.join(full_path, '*.rb')].each{|sub_file| require sub_file}
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ module Recon
2
+ module Machine
3
+ autoload :Remote, 'recon/machine/remote'
4
+ end
5
+ end
@@ -0,0 +1,22 @@
1
+ module Recon
2
+ module Machine
3
+ module Remote
4
+ def self.included(base)
5
+ base.class_eval do
6
+ attr_accessor :host, :user, :password
7
+ end
8
+ end
9
+
10
+ def execute(command)
11
+ connection.execute(command)
12
+ end
13
+ alias_method :exec, :execute
14
+ alias_method :/, :execute
15
+
16
+ protected
17
+ def connection
18
+ @connection ||= Recon::Connection.new(@host, @user, @password)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,2 @@
1
+ require 'recon'
2
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].each{|path| load path}
@@ -0,0 +1,4 @@
1
+ desc 'Load infrastructure environment specified by DIRECTORY, ~/.reconrc or the current directory'
2
+ task :infrastructure do
3
+ Recon::Infrastructure.load(ENV['DIRECTORY'])
4
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{recon}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Kevin Hyland"]
9
+ s.date = %q{2010-03-13}
10
+ s.default_executable = %q{recon}
11
+ s.description = %q{Infrastructure Console}
12
+ s.email = %q{khy@me.com}
13
+ s.executables = ["recon"]
14
+ s.extra_rdoc_files = ["README.rdoc", "bin/recon", "lib/recon.rb", "lib/recon/connection.rb", "lib/recon/console.rb", "lib/recon/infrastructure.rb", "lib/recon/machine.rb", "lib/recon/machine/remote.rb", "lib/recon/tasks.rb", "lib/recon/tasks/infrastructure.rake"]
15
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "bin/recon", "lib/recon.rb", "lib/recon/connection.rb", "lib/recon/console.rb", "lib/recon/infrastructure.rb", "lib/recon/machine.rb", "lib/recon/machine/remote.rb", "lib/recon/tasks.rb", "lib/recon/tasks/infrastructure.rake", "recon.gemspec"]
16
+ s.homepage = %q{http://github.com/khy/recon}
17
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Recon", "--main", "README.rdoc"]
18
+ s.require_paths = ["lib"]
19
+ s.rubyforge_project = %q{recon}
20
+ s.rubygems_version = %q{1.3.5}
21
+ s.summary = %q{Exposes your infrastructure locally as Ruby objects}
22
+
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 3
26
+
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ else
29
+ end
30
+ else
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: recon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Hyland
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-03-13 00:00:00 -05:00
13
+ default_executable: recon
14
+ dependencies: []
15
+
16
+ description: Infrastructure Console
17
+ email: khy@me.com
18
+ executables:
19
+ - recon
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ - bin/recon
25
+ - lib/recon.rb
26
+ - lib/recon/connection.rb
27
+ - lib/recon/console.rb
28
+ - lib/recon/infrastructure.rb
29
+ - lib/recon/machine.rb
30
+ - lib/recon/machine/remote.rb
31
+ - lib/recon/tasks.rb
32
+ - lib/recon/tasks/infrastructure.rake
33
+ files:
34
+ - Manifest
35
+ - README.rdoc
36
+ - Rakefile
37
+ - bin/recon
38
+ - lib/recon.rb
39
+ - lib/recon/connection.rb
40
+ - lib/recon/console.rb
41
+ - lib/recon/infrastructure.rb
42
+ - lib/recon/machine.rb
43
+ - lib/recon/machine/remote.rb
44
+ - lib/recon/tasks.rb
45
+ - lib/recon/tasks/infrastructure.rake
46
+ - recon.gemspec
47
+ has_rdoc: true
48
+ homepage: http://github.com/khy/recon
49
+ licenses: []
50
+
51
+ post_install_message:
52
+ rdoc_options:
53
+ - --line-numbers
54
+ - --inline-source
55
+ - --title
56
+ - Recon
57
+ - --main
58
+ - README.rdoc
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: "0"
66
+ version:
67
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "1.2"
72
+ version:
73
+ requirements: []
74
+
75
+ rubyforge_project: recon
76
+ rubygems_version: 1.3.5
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Exposes your infrastructure locally as Ruby objects
80
+ test_files: []
81
+