net-openvpn 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZTEyMzk1ODQyMTMwYWE0MTRjNzZjYWUzZDFhYTExNzY2MGNjZGU1NA==
5
+ data.tar.gz: !binary |-
6
+ ZTBkOTU4NzFhYjlmNzYwNjVkY2M5YzYyZmE1NGEwMzE3OGJkYTk2OQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ Yjg1MWFlNWUwZmQ3YWNmOTQ4MGRiZTIzN2U5ZDgzNDQ1NTI3MmRiODAzNWQz
10
+ NGJmNTIyMzhkNmU1NjE4YzhiZThkNzk3ODljNmZjZmNiMWYyYmIwNTJjYWIx
11
+ NTZkY2I5NjMzNjI5ZmM0ZDRkYTAxZjUzMWJkMWNjZTMzNDFlN2I=
12
+ data.tar.gz: !binary |-
13
+ YTM5MDFkYzIzMzRmZjE0MzMxOTZlZDM5ZWJmMDllZmFkYjcyMjYxYTY0YWVi
14
+ MzQzZDkyMWQ5ODY5NjJlYzVjZTEyMTZmZGQ5Yzk5MzIzMDBlODBmOTJlMmQ1
15
+ YzQ3ZjM0YmNlNzA1OThlYjFkZGZjYTkyODgyMDU5MTlhY2M4ZWU=
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in net-openvpn.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,29 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ net-openvpn (0.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.2.5)
10
+ fakefs (0.5.0)
11
+ rake (10.1.1)
12
+ rspec (2.14.1)
13
+ rspec-core (~> 2.14.0)
14
+ rspec-expectations (~> 2.14.0)
15
+ rspec-mocks (~> 2.14.0)
16
+ rspec-core (2.14.7)
17
+ rspec-expectations (2.14.5)
18
+ diff-lcs (>= 1.1.3, < 2.0)
19
+ rspec-mocks (2.14.5)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ bundler (~> 1.5)
26
+ fakefs
27
+ net-openvpn!
28
+ rake
29
+ rspec
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require "rspec/core/rake_task"
4
+
5
+ RSpec::Core::RakeTask.new
6
+
7
+ task :default => :spec
8
+ task :test => :spec
@@ -35,6 +35,10 @@ module Net
35
35
  raise ArgumentError, "No network set!" if @network.nil? or @network.empty?
36
36
  end
37
37
 
38
+ def remove
39
+ File.delete path
40
+ end
41
+
38
42
  def save
39
43
  validate!
40
44
 
@@ -27,6 +27,14 @@ module Net
27
27
  @config.save
28
28
  end
29
29
 
30
+ def remove
31
+ @config.remove
32
+ end
33
+
34
+ def new?
35
+ !@config.exists?
36
+ end
37
+
30
38
  end
31
39
  end
32
40
  end
@@ -4,10 +4,10 @@ module Net
4
4
  module ServerConfig
5
5
  class << self
6
6
 
7
- def parse(path)
7
+ def parse(text)
8
8
  config = {}
9
9
 
10
- File.read(path).each_line do |line|
10
+ text.each_line do |line|
11
11
  next if line =~ /^$/
12
12
  parts = line.split(" ")
13
13
  key = parts.first
@@ -18,12 +18,12 @@ module Net
18
18
  config
19
19
  end
20
20
 
21
- def save(path, config)
22
- File.open(path, "w") do |f|
23
- config.each do |key, value|
24
- f.puts "#{key} #{value}"
25
- end
21
+ def generate(config)
22
+ text = ""
23
+ config.each do |key, value|
24
+ text.concat "#{key} #{value}\n"
26
25
  end
26
+ text
27
27
  end
28
28
 
29
29
  end
@@ -8,7 +8,7 @@ module Net
8
8
  end
9
9
 
10
10
  def load
11
- @config = Net::Openvpn::Parser::ServerConfig.parse(path)
11
+ @config = Net::Openvpn::Parser::ServerConfig.parse(File.read(path))
12
12
  end
13
13
 
14
14
  def get(key)
@@ -28,7 +28,10 @@ module Net
28
28
  end
29
29
 
30
30
  def save
31
- Net::Openvpn::Parser::ServerConfig.save(path, @config)
31
+ text = Net::Openvpn::Parser::ServerConfig.generate(@config)
32
+ File.open(path, "w") do |f|
33
+ f.puts text
34
+ end
32
35
  end
33
36
 
34
37
  end
data/net-openvpn.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "net-openvpn"
7
- spec.version = "0.1"
7
+ spec.version = "0.2"
8
8
  spec.authors = ["Robert McLeod"]
9
9
  spec.email = ["robert@penguinpower.co.nz"]
10
10
  spec.description = %q{Net-Openvpn is an openvpn library for configuring a local OpenVPN service}
@@ -13,6 +13,11 @@ Gem::Specification.new do |spec|
13
13
  spec.license = "MIT"
14
14
 
15
15
  spec.files = `git ls-files`.split($/)
16
- spec.require_paths = ["lib", "lib/net", "lib/net/openvpn"]
16
+ spec.require_paths = ["lib"]
17
+
18
+ spec.add_development_dependency "bundler", "~> 1.5"
19
+ spec.add_development_dependency "rake"
20
+ spec.add_development_dependency "rspec"
21
+ spec.add_development_dependency "fakefs"
17
22
  end
18
23
 
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'fileutils'
3
+
4
+ describe Net::Openvpn::Host, fakefs: true do
5
+
6
+ let(:network) { "10.8.0.0" }
7
+ let(:ip) { "10.8.0.10" }
8
+
9
+ before(:each) do
10
+ FileUtils.mkdir_p("/etc/openvpn/ccd")
11
+ end
12
+
13
+ def create_a_host
14
+ host = Net::Openvpn.host("test")
15
+ host.ip = ip
16
+ host.network = network
17
+ host.save
18
+ host
19
+ end
20
+
21
+ it "should create a host client configuration" do
22
+ create_a_host
23
+
24
+ expect(File.exist?("/etc/openvpn/ccd/test")).to be_true
25
+ end
26
+
27
+ it "should remove a host client configuration" do
28
+ host = create_a_host
29
+
30
+ host.remove
31
+ expect(File.exist?("/etc/openvpn/ccd/test")).to be_false
32
+ end
33
+
34
+ it "should have the correct info in the CCD file" do
35
+ host = create_a_host
36
+
37
+ expect(File.read("/etc/openvpn/ccd/test")).to include ip
38
+ expect(File.read("/etc/openvpn/ccd/test")).to include network
39
+ end
40
+
41
+ it "should be new when it hasn't been saved" do
42
+ host = Net::Openvpn.host("test")
43
+ host.ip = ip
44
+ host.network = network
45
+
46
+ expect(host.new?).to be_true
47
+ end
48
+
49
+ it "should not be new when it has been saved" do
50
+ host = create_a_host
51
+
52
+ expect(host.new?).to be_false
53
+ end
54
+
55
+ end
@@ -0,0 +1,6 @@
1
+ require 'net/openvpn'
2
+ require 'fakefs/spec_helpers'
3
+
4
+ RSpec.configure do |config|
5
+ config.include FakeFS::SpecHelpers, fakefs: true
6
+ end
metadata CHANGED
@@ -1,16 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-openvpn
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
5
- prerelease:
4
+ version: '0.2'
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robert McLeod
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-07 00:00:00.000000000 Z
13
- dependencies: []
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fakefs
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
14
69
  description: Net-Openvpn is an openvpn library for configuring a local OpenVPN service
15
70
  email:
16
71
  - robert@penguinpower.co.nz
@@ -18,38 +73,40 @@ executables: []
18
73
  extensions: []
19
74
  extra_rdoc_files: []
20
75
  files:
76
+ - Gemfile
77
+ - Gemfile.lock
21
78
  - README.md
79
+ - Rakefile
22
80
  - lib/net/openvpn.rb
23
81
  - lib/net/openvpn/client_config.rb
24
82
  - lib/net/openvpn/host.rb
25
83
  - lib/net/openvpn/parser/server_config.rb
26
84
  - lib/net/openvpn/server.rb
27
85
  - net-openvpn.gemspec
86
+ - spec/lib/net/openvpn/host_spec.rb
87
+ - spec/spec_helper.rb
28
88
  homepage: https://github.com/penguinpowernz/net-openvpn
29
89
  licenses:
30
90
  - MIT
91
+ metadata: {}
31
92
  post_install_message:
32
93
  rdoc_options: []
33
94
  require_paths:
34
95
  - lib
35
- - lib/net
36
- - lib/net/openvpn
37
96
  required_ruby_version: !ruby/object:Gem::Requirement
38
- none: false
39
97
  requirements:
40
98
  - - ! '>='
41
99
  - !ruby/object:Gem::Version
42
100
  version: '0'
43
101
  required_rubygems_version: !ruby/object:Gem::Requirement
44
- none: false
45
102
  requirements:
46
103
  - - ! '>='
47
104
  - !ruby/object:Gem::Version
48
105
  version: '0'
49
106
  requirements: []
50
107
  rubyforge_project:
51
- rubygems_version: 1.8.25
108
+ rubygems_version: 2.2.1
52
109
  signing_key:
53
- specification_version: 3
110
+ specification_version: 4
54
111
  summary: Local OpenVPN configurator
55
112
  test_files: []