skyscape-vpn 0.0.4 → 0.0.5

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: b1666bd0b4195dea2b0a681bbe2b457ecceb2ef0
4
- data.tar.gz: c7897a91233652ca6a0c5b8d3c8fa9a6bb526785
3
+ metadata.gz: a072a576f027e00aa7e7bf038869fea21d8d1db9
4
+ data.tar.gz: 44e3fb53bddf8988d1943f20e06d1f906a29e7b0
5
5
  SHA512:
6
- metadata.gz: 5e97677b8431c392ff5e0c163ef8e284e38ce4eb23d56f4922686d12e5cf931bc645bab55e0ddf35c69111a2eff5f2614198c8739d77285db739bdaea552554b
7
- data.tar.gz: 21e9e5f26e8a48abd8d15a930c65f717e0e34e585fd08510446029d4803bb5f6f23046938e6e8662f3796e4367fab3f7f547f543a42eacc0c3b3941c695d3d75
6
+ metadata.gz: 83c23fb510ec1d01e42825db7e5ff5c3fb8ecc1aed79dcd56287464eb12282f203fa1f4936d32fac4569b5fe9e4273eaadcb2aec6c4c10ee66e087ebc539135a
7
+ data.tar.gz: bb61d511315c1467cc06e76d27501c559d40843f10441557bac5d3d90a8b53c4f25738f12bb0d19b2b309314ac38a3e1eb1d4afd417657976254ee4a20702d88
data/Rakefile CHANGED
@@ -1,13 +1,13 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
- require 'cucumber'
4
- require 'cucumber/rake/task'
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
- Cucumber::Rake::Task.new(:features) do |t|
8
- t.cucumber_opts = "features --format pretty"
9
- end
10
-
11
- task :default => :spec
12
- task :test => :spec
13
- task :test => :features
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require 'cucumber'
4
+ require 'cucumber/rake/task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+ Cucumber::Rake::Task.new(:features) do |t|
8
+ t.cucumber_opts = "features --format pretty"
9
+ end
10
+
11
+ task :default => :spec
12
+ task :test => :spec
13
+ task :test => :features
data/bin/skyscape-vpn CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
3
- require 'cli'
4
- Skyscape::Vcloud::Ipsec::Cli.start(ARGV)
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
3
+ require 'cli'
4
+ Skyscape::Vcloud::Ipsec::Cli.start(ARGV)
data/lib/cli.rb CHANGED
@@ -1,28 +1,28 @@
1
- require 'thor'
2
- require 'main'
3
- require 'version'
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Cli < Thor
9
- desc "version", "Print skyscape-vpn version"
10
-
11
-
12
- def version
13
- puts Skyscape::Vcloud::Ipsec::VERSION
14
- end
15
-
16
-
17
- desc "apply <location>", "Begin configuration of IPSec tunnels"
18
- def apply(path)
19
- begin
20
- Skyscape::Vcloud::Ipsec::Main.new(path)
21
- rescue Exception => e
22
- puts e.message
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
1
+ require 'thor'
2
+ require 'main'
3
+ require 'version'
4
+
5
+ module Skyscape
6
+ module Vcloud
7
+ module Ipsec
8
+ class Cli < Thor
9
+ desc "version", "Print skyscape-vpn version"
10
+
11
+
12
+ def version
13
+ puts Skyscape::Vcloud::Ipsec::VERSION
14
+ end
15
+
16
+
17
+ desc "apply <location>", "Begin configuration of IPSec tunnels"
18
+ def apply(path)
19
+ begin
20
+ Skyscape::Vcloud::Ipsec::Main.new(path)
21
+ rescue Exception => e
22
+ puts e.message
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
data/lib/configuration.rb CHANGED
@@ -1,40 +1,40 @@
1
- require 'yaml'
2
- require 'active_support/hash_with_indifferent_access'
3
-
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Configuration
9
- attr_accessor :file_location, :full_config, :firewalls
10
- def initialize(file_location = "#{Dir.pwd}/firewalls.yml")
11
- @file_location = file_location
12
- raise("Configuration File Not Found At #{file_location}") unless File.exists?(file_location)
13
-
14
- @full_config = load_yaml
15
- @firewalls = parse_config
16
- end
17
-
18
- def load_yaml
19
- file = File.open(@file_location)
20
- conf = YAML.load(file)
21
- file.close
22
-
23
- conf.deep_symbolize_keys! unless conf == false
24
- end
25
-
26
- def parse_config
27
- raise("No firewalls In Config File: #{@file_location}") unless @full_config.is_a?(Hash) && @full_config[:Firewalls]
28
- raise("No firewalls In Config File: #{@file_location}") unless @full_config[:Firewalls].is_a?(Array) && @full_config[:Firewalls].length > 0
29
- #To Do: Add Config Schema?
30
- @full_config[:Firewalls]
31
-
32
-
33
- end
34
-
35
-
36
-
37
- end
38
- end
39
- end
1
+ require 'yaml'
2
+ require 'active_support/hash_with_indifferent_access'
3
+
4
+
5
+ module Skyscape
6
+ module Vcloud
7
+ module Ipsec
8
+ class Configuration
9
+ attr_accessor :file_location, :full_config, :firewalls
10
+ def initialize(file_location = "#{Dir.pwd}/firewalls.yml")
11
+ @file_location = file_location
12
+ raise("Configuration File Not Found At #{file_location}") unless File.exists?(file_location)
13
+
14
+ @full_config = load_yaml
15
+ @firewalls = parse_config
16
+ end
17
+
18
+ def load_yaml
19
+ file = File.open(@file_location)
20
+ conf = YAML.load(file)
21
+ file.close
22
+
23
+ conf.deep_symbolize_keys! unless conf == false
24
+ end
25
+
26
+ def parse_config
27
+ raise("No firewalls In Config File: #{@file_location}") unless @full_config.is_a?(Hash) && @full_config[:Firewalls]
28
+ raise("No firewalls In Config File: #{@file_location}") unless @full_config[:Firewalls].is_a?(Array) && @full_config[:Firewalls].length > 0
29
+ #To Do: Add Config Schema?
30
+ @full_config[:Firewalls]
31
+
32
+
33
+ end
34
+
35
+
36
+
37
+ end
38
+ end
39
+ end
40
40
  end
data/lib/main.rb CHANGED
@@ -1,83 +1,83 @@
1
- require 'fog'
2
- require 'configuration'
3
-
4
-
5
- module Skyscape
6
- module Vcloud
7
- module Ipsec
8
- class Main
9
- attr_accessor :config
10
- def initialize(config_file)
11
- @config = Skyscape::Vcloud::Ipsec::Configuration.new(config_file)
12
- configure_firewalls(@config.firewalls)
13
-
14
- end
15
-
16
- def configure_firewalls(firewalls)
17
- firewalls.each do |firewall|
18
- configure_firewall(firewall)
19
- end
20
- end
21
-
22
- def configure_firewall(firewall)
23
- creds = firewall[:Creds]
24
- connection = vcloud_login(creds)
25
- edge_id = get_edge_href(creds[:Edge],connection).split('/').last
26
-
27
- puts "Configuring VPN Service For Firewall: #{creds[:Edge]}"
28
- task = connection.post_configure_edge_gateway_services(edge_id,firewall).body
29
- monitor_task(task[:href].split('/').last,connection)
30
- puts "Finished Configuring VPN Service For Firewall: #{creds[:Edge]}"
31
-
32
- #TO DO: SUPPORT MERGING CONFIG WITH EXISTING
33
- #current_config = get_current_config(edge_href,connection)
34
- #new_config = merge_configs(current_config, new_config)
35
-
36
- end
37
-
38
- def vcloud_login(creds)
39
- puts "Connecting to vCloud Director API"
40
- connection = Fog::Compute::VcloudDirector.new(
41
- :vcloud_director_username => "#{creds[:User]}@#{creds[:Org]}",
42
- :vcloud_director_password => creds[:Password],
43
- :vcloud_director_host => creds[:Url],
44
- :vcloud_director_show_progress => true, # task progress bar on/off
45
- :connection_options => {
46
- :omit_default_port => true
47
- }
48
- )
49
- puts "Connected to vCloud Director API"
50
-
51
- connection
52
- end
53
-
54
- def get_edge_href(edge_name, connection)
55
- puts "Getting vShield Edge HREF From Query"
56
- results = connection.get_execute_query(type="edgeGateway", :filter => "name==#{edge_name}").body
57
-
58
- raise "Edge #{edge_name} Not Found!" unless results[:total] == "1"
59
- raise "Edge Name #{edge_name} Not Unique!" if results[:total].to_i > 1
60
- puts "Finished Getting vShield Edge HREF From Query"
61
- result = results[:EdgeGatewayRecord][:href]
62
- end
63
-
64
- def get_current_config(edge_href,connection)
65
- configuration = connection.get_edge_gateway(edge_href.split('/').last).body
66
-
67
- vpn_service = configuration[:Configuration][:EdgeGatewayServiceConfiguration][:GatewayIpsecVpnService]
68
- end
69
-
70
- def monitor_task(task_id,connection)
71
- task = connection.get_task(task_id).body
72
- while(task[:status] == "running") do
73
- puts " Task: #{task[:operation]} Still Running"
74
- task = connection.get_task(task_id).body
75
- sleep(3)
76
- end
77
-
78
- puts " Task: #{task[:operation]} Completed With Status: #{task[:status]}"
79
- end
80
- end
81
- end
82
- end
83
- end
1
+ require 'fog'
2
+ require 'configuration'
3
+
4
+
5
+ module Skyscape
6
+ module Vcloud
7
+ module Ipsec
8
+ class Main
9
+ attr_accessor :config
10
+ def initialize(config_file)
11
+ @config = Skyscape::Vcloud::Ipsec::Configuration.new(config_file)
12
+ configure_firewalls(@config.firewalls)
13
+
14
+ end
15
+
16
+ def configure_firewalls(firewalls)
17
+ firewalls.each do |firewall|
18
+ configure_firewall(firewall)
19
+ end
20
+ end
21
+
22
+ def configure_firewall(firewall)
23
+ creds = firewall[:Creds]
24
+ connection = vcloud_login(creds)
25
+ edge_id = get_edge_href(creds[:Edge],connection).split('/').last
26
+
27
+ puts "Configuring VPN Service For Firewall: #{creds[:Edge]}"
28
+ task = connection.post_configure_edge_gateway_services(edge_id,firewall).body
29
+ monitor_task(task[:href].split('/').last,connection)
30
+ puts "Finished Configuring VPN Service For Firewall: #{creds[:Edge]}"
31
+
32
+ #TO DO: SUPPORT MERGING CONFIG WITH EXISTING
33
+ #current_config = get_current_config(edge_href,connection)
34
+ #new_config = merge_configs(current_config, new_config)
35
+
36
+ end
37
+
38
+ def vcloud_login(creds)
39
+ puts "Connecting to vCloud Director API"
40
+ connection = Fog::Compute::VcloudDirector.new(
41
+ :vcloud_director_username => "#{creds[:User]}@#{creds[:Org]}",
42
+ :vcloud_director_password => creds[:Password],
43
+ :vcloud_director_host => creds[:Url],
44
+ :vcloud_director_show_progress => true, # task progress bar on/off
45
+ :connection_options => {
46
+ :omit_default_port => true
47
+ }
48
+ )
49
+ puts "Connected to vCloud Director API"
50
+
51
+ connection
52
+ end
53
+
54
+ def get_edge_href(edge_name, connection)
55
+ puts "Getting vShield Edge HREF From Query"
56
+ results = connection.get_execute_query(type="edgeGateway", :filter => "name==#{edge_name}").body
57
+
58
+ raise "Edge #{edge_name} Not Found!" unless results[:total] == "1"
59
+ raise "Edge Name #{edge_name} Not Unique!" if results[:total].to_i > 1
60
+ puts "Finished Getting vShield Edge HREF From Query"
61
+ result = results[:EdgeGatewayRecord][:href]
62
+ end
63
+
64
+ def get_current_config(edge_href,connection)
65
+ configuration = connection.get_edge_gateway(edge_href.split('/').last).body
66
+
67
+ vpn_service = configuration[:Configuration][:EdgeGatewayServiceConfiguration][:GatewayIpsecVpnService]
68
+ end
69
+
70
+ def monitor_task(task_id,connection)
71
+ task = connection.get_task(task_id).body
72
+ while(task[:status] == "running") do
73
+ puts " Task: #{task[:operation]} Still Running"
74
+ task = connection.get_task(task_id).body
75
+ sleep(3)
76
+ end
77
+
78
+ puts " Task: #{task[:operation]} Completed With Status: #{task[:status]}"
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
data/lib/version.rb CHANGED
@@ -1,7 +1,7 @@
1
- module Skyscape
2
- module Vcloud
3
- module Ipsec
4
- VERSION = "0.0.4"
5
- end
6
- end
7
- end
1
+ module Skyscape
2
+ module Vcloud
3
+ module Ipsec
4
+ VERSION = "0.0.5"
5
+ end
6
+ end
7
+ end
data/skyscape-vpn.gemspec CHANGED
@@ -1,36 +1,36 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "skyscape-vpn"
8
- spec.version = Skyscape::Vcloud::Ipsec::VERSION
9
- spec.authors = ["Tim Lawrence"]
10
- spec.email = ["tlawrence@skyscapecloud.com"]
11
-
12
- spec.summary = %q{Configure vCloud Director IPSec VPNs}
13
- spec.homepage = "https://github.com/skyscape-cloud-services"
14
-
15
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
16
- # delete this section to allow pushing this gem to any host.
17
- if spec.respond_to?(:metadata)
18
- spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
- else
20
- raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
21
- end
22
-
23
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
- spec.bindir = "bin"
25
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
- spec.require_paths = ["lib"]
27
-
28
- spec.add_development_dependency "bundler", "~> 1.10"
29
- spec.add_development_dependency "rake", "~> 10.0"
30
- spec.add_development_dependency "rspec"
31
- spec.add_development_dependency "aruba"
32
-
33
- spec.add_runtime_dependency 'fog', '>=1.26.0'
34
- spec.add_runtime_dependency 'activesupport'
35
- spec.add_runtime_dependency 'thor'
36
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "skyscape-vpn"
8
+ spec.version = Skyscape::Vcloud::Ipsec::VERSION
9
+ spec.authors = ["Tim Lawrence"]
10
+ spec.email = ["tlawrence@skyscapecloud.com"]
11
+
12
+ spec.summary = %q{Configure vCloud Director IPSec VPNs}
13
+ spec.homepage = "https://github.com/skyscape-cloud-services"
14
+
15
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
16
+ # delete this section to allow pushing this gem to any host.
17
+ if spec.respond_to?(:metadata)
18
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
19
+ else
20
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
21
+ end
22
+
23
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
+ spec.bindir = "bin"
25
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
27
+
28
+ spec.add_development_dependency "bundler", "~> 1.10"
29
+ spec.add_development_dependency "rake", "~> 10.0"
30
+ spec.add_development_dependency "rspec"
31
+ spec.add_development_dependency "aruba"
32
+
33
+ spec.add_runtime_dependency 'fog', '>=1.26.0'
34
+ spec.add_runtime_dependency 'activesupport'
35
+ spec.add_runtime_dependency 'thor'
36
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skyscape-vpn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lawrence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -113,7 +113,6 @@ email:
113
113
  - tlawrence@skyscapecloud.com
114
114
  executables:
115
115
  - skyscape-vpn
116
- - skyscape-vpn.bat
117
116
  extensions: []
118
117
  extra_rdoc_files: []
119
118
  files:
@@ -124,7 +123,6 @@ files:
124
123
  - README.md
125
124
  - Rakefile
126
125
  - bin/skyscape-vpn
127
- - bin/skyscape-vpn.bat
128
126
  - lib/cli.rb
129
127
  - lib/configuration.rb
130
128
  - lib/main.rb
@@ -150,8 +148,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
148
  version: '0'
151
149
  requirements: []
152
150
  rubyforge_project:
153
- rubygems_version: 2.4.8
151
+ rubygems_version: 2.0.3
154
152
  signing_key:
155
153
  specification_version: 4
156
154
  summary: Configure vCloud Director IPSec VPNs
157
155
  test_files: []
156
+ has_rdoc:
data/bin/skyscape-vpn.bat DELETED
@@ -1,7 +0,0 @@
1
- @ECHO OFF
2
- IF NOT "%~f0" == "~f0" GOTO :WinNT
3
- @"ruby.exe" "C:/Ruby200/bin/skyscape-vpn" %1 %2 %3 %4 %5 %6 %7 %8 %9
4
- GOTO :EOF
5
- :WinNT
6
- @"ruby.exe" "%~dpn0" %*
7
-