openvpn_management 0.9.0.pre → 0.9.4.pre

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -6,43 +6,78 @@ Ruby gem for openVPN (server) management interface interaction.
6
6
 
7
7
  Please keep in mind that this software is in alpha development stage.
8
8
 
9
- == Installation
9
+ = Installation
10
10
 
11
- === Via Github, for development
11
+ == Via Github, for development
12
12
 
13
13
  ~# git clone git://github.com/dguerri/openvpn_management.git
14
14
  ~# cd openvpn_management
15
15
  ~# bundle install
16
16
  ~# rake install
17
17
 
18
- === Via Rubygems
18
+ == Via Rubygems
19
19
 
20
20
  ~# gem install openvpn_management --pre
21
21
 
22
- == Usage
23
-
24
- === Receiving data from an exporter (with eventmachine)
25
-
26
- require 'Rubygems'
27
- require 'openvpn_management'
28
-
29
- s = OpenvpnManagement.new :host => "localhost", :port => 1234, :timeout => 10, :password => "password"
30
- s.version
31
- s.status
32
- s.stats
33
- s.destroy
34
-
35
- == Contributing to openvpn_management
36
-
37
- * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
38
- * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
39
- * Fork the project
40
- * Start a feature/bugfix branch
41
- * Commit and push until you are happy with your contribution
42
- * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
43
- * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
44
-
45
- == Copyright
22
+ = Usage
23
+
24
+ == Sample code
25
+
26
+ require 'Rubygems'
27
+ require 'openvpn_management'
28
+ require 'pp'
29
+
30
+ # Assuming you've a VPN server with management interface on TCP port 1194 protected with
31
+ # password 'mypassword'
32
+ vpn1 = OpenvpnManagement.new :host => 'localhost', :port => 1194, :password => 'mypassword'
33
+ pp vpn1.version
34
+ pp vpn1.stats
35
+ pp vpn1.status
36
+
37
+ pp vpn1.status[:clients].keys
38
+ pp vpn1.status[:routes].keys
39
+
40
+ vpn1.destroy
41
+
42
+ == Sample output
43
+
44
+ # vpn1.version
45
+ "OpenVPN Version: OpenVPN 2.x-master x86_64-unknown-linux-gnu [SSL] [LZO2] [EPOLL] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110522-1 (2.2.0)] built on Sep 15 2011\nManagement Version: 1\nEND\n"
46
+ # vpn1.stats
47
+ {:clients=>1, :bytes_input=>1335293, :bytes_output=>140845}
48
+ # vpn1.status
49
+ {:clients=>
50
+ {"l2vpn_client_1_1_1"=>
51
+ [{:real_address=>"217.72.97.51:37698",
52
+ :bytes_received=>"1438510",
53
+ :bytes_sent=>"1456452",
54
+ :connected_since=>"Mon Mar 5 16:52:40 2012"}]},
55
+ :routes=>
56
+ {"e4:ce:8f:26:5f:8e"=>
57
+ {:real_address=>"217.72.97.51:37698",
58
+ :last_ref=>"Tue Mar 6 09:51:18 2012",
59
+ :common_name=>"l2vpn_client_1_1_1"},
60
+ "dc:2b:61:29:d2:d0"=>
61
+ {:real_address=>"217.72.97.51:37698",
62
+ :last_ref=>"Tue Mar 6 09:51:33 2012",
63
+ :common_name=>"l2vpn_client_1_1_1"}}}
64
+ # vpn1.status[:clients].keys
65
+ ["l2vpn_client_1_1_1"]
66
+ # vpn1.status[:routes].keys
67
+ ["e4:ce:8f:00:11:22", "dc:2b:61:aa:bb:cc"]
68
+
69
+ = Note
70
+
71
+ OpenVPN management interface isn't multi-client so destroy the OpenvpnManagement object as soon as you've finish using it.
72
+
73
+ = Acknowledgements
74
+
75
+ Thanks go to the following people who have contributed to this project:
76
+ * Antonio Davoli
77
+ * Alessandro Celestini
78
+ * Ryan Huber (rawdigits)
79
+
80
+ = Copyright
46
81
 
47
82
  Copyright (C) 2012 Davide Guerri <davide.guerri@gmail.com>. See LICENSE.txt for further details.
48
83
 
@@ -19,7 +19,7 @@ class OpenvpnManagement
19
19
  module Version
20
20
  MAJOR = 0
21
21
  MINOR = 9
22
- PATCH = 0
22
+ PATCH = 4
23
23
  BUILD = 'pre'
24
24
 
25
25
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -58,14 +58,14 @@ class OpenvpnManagement
58
58
  routes = {}
59
59
 
60
60
  c = issue_command "status"
61
- c.each do |l|
61
+ c.split("\n").each do |l|
62
62
 
63
63
  # End Information Markers
64
- if l == "ROUTING TABLE\n"
64
+ if l == "ROUTING TABLE"
65
65
  client_list_flag = 0
66
66
  end
67
67
 
68
- if l == "GLOBAL STATS\n"
68
+ if l == "GLOBAL STATS"
69
69
  routing_list_flag = 0
70
70
  end
71
71
 
@@ -85,16 +85,17 @@ class OpenvpnManagement
85
85
  # Update Routing Info List
86
86
  # Virtual Address,Common Name,Real Address,Last Ref
87
87
  if routing_list_flag == 1
88
+ route = []
88
89
  route << l.split(',')
89
90
  routes[route[0]] = { :common_name => route[1], :real_address=> route[2], :last_ref => route[3] }
90
91
  end
91
92
 
92
93
  # Start Information Markers
93
- if l == "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since\n"
94
+ if l == "Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since"
94
95
  client_list_flag = 1
95
96
  end
96
97
 
97
- if l == "Virtual Address,Common Name,Real Address,Last Ref\n"
98
+ if l == "Virtual Address,Common Name,Real Address,Last Ref"
98
99
  routing_list_flag = 1
99
100
  end
100
101
  end
@@ -106,9 +107,9 @@ class OpenvpnManagement
106
107
  def stats
107
108
  stats_info = issue_command("load-stats").split(',')
108
109
  {
109
- :clients => stats_info[0].gsub("SUCCESS: nclients=", "").to_i,
110
- :bytes_input => stats_info[1].gsub("bytesin=", "").to_i,
111
- :bytes_output => stats_info[2].chop!.gsub("bytesout=", "").to_i
110
+ :clients => stats_info[0].gsub("nclients=", "").to_i,
111
+ :bytes_download => stats_info[1].gsub("bytesin=", "").to_i,
112
+ :bytes_upload => stats_info[2].chop!.gsub("bytesout=", "").to_i
112
113
  }
113
114
  end
114
115
 
@@ -0,0 +1,60 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "openvpn_management"
8
+ s.version = "0.9.4.pre"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Davide Guerri"]
12
+ s.date = "2013-05-03"
13
+ s.description = "openvpn_management is a ruby gem for openVPN (server) management interface interaction."
14
+ s.email = "davide.guerri@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ "GPLv3.txt",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "lib/openvpn_management.rb",
27
+ "lib/openvpn_management/version.rb",
28
+ "openvpn_management.gemspec"
29
+ ]
30
+ s.homepage = "https://github.com/dguerri/openvpn_management"
31
+ s.licenses = ["GPLv3"]
32
+ s.require_paths = ["lib"]
33
+ s.rubygems_version = "1.8.24"
34
+ s.summary = "openvpn_management a ruby gem for openVPN management interface interaction."
35
+
36
+ if s.respond_to? :specification_version then
37
+ s.specification_version = 3
38
+
39
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
40
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
41
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
42
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
43
+ s.add_development_dependency(%q<rcov>, [">= 0"])
44
+ s.add_development_dependency(%q<rdoc>, [">= 2.4.2"])
45
+ else
46
+ s.add_dependency(%q<shoulda>, [">= 0"])
47
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
48
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
49
+ s.add_dependency(%q<rcov>, [">= 0"])
50
+ s.add_dependency(%q<rdoc>, [">= 2.4.2"])
51
+ end
52
+ else
53
+ s.add_dependency(%q<shoulda>, [">= 0"])
54
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
55
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
+ s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<rdoc>, [">= 2.4.2"])
58
+ end
59
+ end
60
+
metadata CHANGED
@@ -1,109 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: openvpn_management
3
- version: !ruby/object:Gem::Version
4
- hash: 961915916
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.4.pre
5
5
  prerelease: 6
6
- segments:
7
- - 0
8
- - 9
9
- - 0
10
- - pre
11
- version: 0.9.0.pre
12
6
  platform: ruby
13
- authors:
7
+ authors:
14
8
  - Davide Guerri
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2012-03-04 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- version_requirements: *id001
12
+ date: 2013-05-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
32
15
  name: shoulda
33
- prerelease: false
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
34
22
  type: :development
35
- - !ruby/object:Gem::Dependency
36
- requirement: &id002 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
37
25
  none: false
38
- requirements:
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
39
35
  - - ~>
40
- - !ruby/object:Gem::Version
41
- hash: 23
42
- segments:
43
- - 1
44
- - 0
45
- - 0
36
+ - !ruby/object:Gem::Version
46
37
  version: 1.0.0
47
- version_requirements: *id002
48
- name: bundler
49
- prerelease: false
50
38
  type: :development
51
- - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
53
41
  none: false
54
- requirements:
42
+ requirements:
55
43
  - - ~>
56
- - !ruby/object:Gem::Version
57
- hash: 7
58
- segments:
59
- - 1
60
- - 6
61
- - 4
62
- version: 1.6.4
63
- version_requirements: *id003
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ - !ruby/object:Gem::Dependency
64
47
  name: jeweler
65
- prerelease: false
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.6.4
66
54
  type: :development
67
- - !ruby/object:Gem::Dependency
68
- requirement: &id004 !ruby/object:Gem::Requirement
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
69
57
  none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
77
- version_requirements: *id004
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.6.4
62
+ - !ruby/object:Gem::Dependency
78
63
  name: rcov
79
- prerelease: false
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
80
70
  type: :development
81
- - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
83
73
  none: false
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- hash: 27
88
- segments:
89
- - 2
90
- - 4
91
- - 2
92
- version: 2.4.2
93
- version_requirements: *id005
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
94
79
  name: rdoc
95
- prerelease: false
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 2.4.2
96
86
  type: :development
97
- description: openvpn_management is a ruby gem for openVPN (server) management interface interaction.
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 2.4.2
94
+ description: openvpn_management is a ruby gem for openVPN (server) management interface
95
+ interaction.
98
96
  email: davide.guerri@gmail.com
99
97
  executables: []
100
-
101
98
  extensions: []
102
-
103
- extra_rdoc_files:
99
+ extra_rdoc_files:
104
100
  - LICENSE.txt
105
101
  - README.rdoc
106
- files:
102
+ files:
107
103
  - GPLv3.txt
108
104
  - Gemfile
109
105
  - Gemfile.lock
@@ -112,40 +108,33 @@ files:
112
108
  - Rakefile
113
109
  - lib/openvpn_management.rb
114
110
  - lib/openvpn_management/version.rb
111
+ - openvpn_management.gemspec
115
112
  homepage: https://github.com/dguerri/openvpn_management
116
- licenses:
113
+ licenses:
117
114
  - GPLv3
118
115
  post_install_message:
119
116
  rdoc_options: []
120
-
121
- require_paths:
117
+ require_paths:
122
118
  - lib
123
- required_ruby_version: !ruby/object:Gem::Requirement
119
+ required_ruby_version: !ruby/object:Gem::Requirement
124
120
  none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ segments:
130
126
  - 0
131
- version: "0"
132
- required_rubygems_version: !ruby/object:Gem::Requirement
127
+ hash: 1301214139549345267
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
129
  none: false
134
- requirements:
135
- - - ">"
136
- - !ruby/object:Gem::Version
137
- hash: 25
138
- segments:
139
- - 1
140
- - 3
141
- - 1
130
+ requirements:
131
+ - - ! '>'
132
+ - !ruby/object:Gem::Version
142
133
  version: 1.3.1
143
134
  requirements: []
144
-
145
135
  rubyforge_project:
146
- rubygems_version: 1.8.15
136
+ rubygems_version: 1.8.24
147
137
  signing_key:
148
138
  specification_version: 3
149
139
  summary: openvpn_management a ruby gem for openVPN management interface interaction.
150
140
  test_files: []
151
-