net-openvpn 0.1 → 0.2

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.
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: []