openvpn_management 0.9.0.pre → 0.9.4.pre
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.
- data/README.rdoc +62 -27
- data/lib/openvpn_management/version.rb +1 -1
- data/lib/openvpn_management.rb +9 -8
- data/openvpn_management.gemspec +60 -0
- metadata +89 -100
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
|
-
|
9
|
+
= Installation
|
10
10
|
|
11
|
-
|
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
|
-
|
18
|
+
== Via Rubygems
|
19
19
|
|
20
20
|
~# gem install openvpn_management --pre
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
|
data/lib/openvpn_management.rb
CHANGED
@@ -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
|
64
|
+
if l == "ROUTING TABLE"
|
65
65
|
client_list_flag = 0
|
66
66
|
end
|
67
67
|
|
68
|
-
if l == "GLOBAL STATS
|
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
|
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
|
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("
|
110
|
-
:
|
111
|
-
:
|
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
|
-
|
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
|
-
|
20
|
-
|
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
|
-
|
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
|
-
|
36
|
-
|
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
|
-
|
52
|
-
|
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
|
-
|
58
|
-
|
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
|
-
|
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
|
-
|
68
|
-
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
57
|
none: false
|
70
|
-
requirements:
|
71
|
-
- -
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
|
74
|
-
|
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
|
-
|
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
|
-
|
82
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
83
73
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
|
88
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
129
|
-
segments:
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
segments:
|
130
126
|
- 0
|
131
|
-
|
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.
|
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
|
-
|