vpnmaker 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -13,17 +13,38 @@ group :development do
13
13
  gem "jeweler" #, "~> 1.8.3"
14
14
  end
15
15
 
16
- gem 'ipaddr_extensions'
17
- #, :git => 'git://github.com/jamesotron/IPAddrExtensions.git'
18
-
19
16
  gem 'haml'
20
- gem 'main', :git => 'git://github.com/ahoward/main.git'
21
17
 
22
- #gem 'hashugar', :git => 'git://github.com/jsuchal/hashugar.git'
18
+ # cli options parser
19
+ gem 'main', :git => 'git://github.com/ahoward/main.git'
23
20
  gem 'highline' #, :git => 'https://github.com/JEG2/highline.git'
24
21
 
22
+ #gem 'hashugar', :git => 'git://github.com/jsuchal/hashugar.git'
25
23
  #gem 'rbcurse-core', :git => 'git://github.com/rkumar/rbcurse-core.git'
26
24
  #gem 'rbcurse-extras', :git => 'git://github.com/rkumar/rbcurse-extras.git'
27
25
 
28
- # gem 'gibberish', :git => 'git://github.com/mdp/gibberish.git'
29
- # gem 'rubyzip', :git => 'git://github.com/aussiegeek/rubyzip.git'
26
+ # openssl wrappers
27
+ gem 'gibberish', :git => 'git://github.com/mdp/gibberish.git'
28
+ gem 'cert_lib', :git => 'git://github.com/victorgrey/cert_lib.git'
29
+
30
+ # model stuff
31
+ gem 'datamapper', "~> 1.2.0"
32
+ # gem 'dm-do-adapter'
33
+ gem 'dm-aggregates'
34
+ gem 'dm-types', "~> 1.2.1"
35
+ gem 'dm-observer'
36
+ gem 'dm-migrations'
37
+ gem 'dm-timestamps'
38
+ gem 'dm-serializer', "~> 1.2.0"
39
+ gem 'dm-validations'
40
+ gem 'dm-mysql-adapter'
41
+
42
+ # support libs
43
+ gem 'chronic'
44
+ gem 'ipaddr_extensions'
45
+ #, :git => 'git://github.com/jamesotron/IPAddrExtensions.git'
46
+ gem 'rubyzip', :git => 'git://github.com/aussiegeek/rubyzip.git'
47
+
48
+ # reporting
49
+ gem 'ruport'
50
+ gem 'ruport-util'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
@@ -55,6 +55,21 @@ module VPNMaker
55
55
  cast :string
56
56
  arity 1
57
57
  }
58
+ argument('organization_unit') {
59
+ required
60
+ cast :string
61
+ arity 1
62
+ }
63
+ argument('common_name') {
64
+ required
65
+ cast :string
66
+ arity 1
67
+ }
68
+ argument('key_name') {
69
+ required
70
+ cast :string
71
+ arity 1
72
+ }
58
73
  argument('email') {
59
74
  required
60
75
  cast :string
@@ -96,6 +111,9 @@ module VPNMaker
96
111
  :province => params['province'].value,
97
112
  :city => params['city'].value,
98
113
  :organization => params['organization'].value,
114
+ :organization_unit => params['organization_unit'].value,
115
+ :common_name => params['common_name'].value,
116
+ :name => params['key_name'].value,
99
117
  :email => params['email'].value
100
118
  },
101
119
  :site => {
@@ -104,7 +122,7 @@ module VPNMaker
104
122
  :client_conf_dir => client_config_dir.split('/').last
105
123
  }
106
124
  }
107
- example_config = YAML.load_file(lib_dir + "/example_vpnmaker_site.config.yaml").to_yaml.gsub(/\n|---/, "\n# ")
125
+ example_config = YAML.load_file(lib_dir + "/example_vpnmaker_site.config.yaml").to_yaml.gsub(/\n|---/, "\n#")
108
126
  File.open((File.expand_path(dir) + "/" + name + ".vpn" + "/" + name + ".config.yaml"), 'w') {|f| f.write(initial_config.to_yaml + example_config)}
109
127
  mgr = VPNMaker::Manager.new((File.expand_path(dir) + "/" + name + ".vpn"))
110
128
  mgr.build_ca
@@ -178,8 +196,9 @@ module VPNMaker
178
196
 
179
197
  def run
180
198
  params['client_name'].values.each_with_index do |c, i|
181
- passwd = params['passwd'].values[i] ? params['passwd'].values[i] : params['passwd'].default
182
- db.create_user(c, c, "#{c}@#{db.config[:key_properties][:email].split('@').last}", passwd) if db.users.select {|r| r =~ /#{c}/}.empty?
199
+ email = "#{c}@#{db.config[:key_properties][:email].split('@').last}"
200
+ passwd = params['passwd'].values[i]
201
+ (passwd ? db.create_user(c, c, email, passwd) : db.create_user(c, c, email)) if db.users.select {|r| r =~ /#{c}/}.empty?
183
202
  end
184
203
  end
185
204
  }
@@ -7,6 +7,7 @@ resolv-retry infinite
7
7
  nobind
8
8
  persist-key
9
9
  persist-tun
10
+ comp-lzo
10
11
  \#
11
12
  \#tls-remote must equal CN of ca in the hosts x509
12
13
  \#
@@ -0,0 +1,47 @@
1
+ module VPNMaker
2
+ module DataStore
3
+ require 'dm-core'
4
+ require 'dm-do-adapter'
5
+ require 'dm-observer'
6
+ require 'dm-migrations'
7
+ require 'dm-timestamps'
8
+ require 'dm-serializer'
9
+ require 'dm-validations'
10
+ require 'dm-aggregates'
11
+ require 'dm-types'
12
+ #require 'do_mysql'
13
+ require 'dm-mysql-adapter'
14
+
15
+ # require 'base64'
16
+ # require 'chronic'
17
+ # require 'phony'
18
+
19
+ # require 'ansi/mixin'
20
+ # require 'ansi/progressbar'
21
+ # require 'ansi/table'
22
+ # require 'percentise'
23
+ # require 'stamp'
24
+
25
+ # require 'munger'
26
+ # require 'ruport'
27
+ # require 'ruport/util'
28
+
29
+ # require 'dm-sqlite-adapter'
30
+ # require 'do_sqlite3'
31
+
32
+ # DataMapper::Logger.new($stdout, :debug)
33
+
34
+ path = (File.dirname File.expand_path(__FILE__)) + "/"
35
+ autoload :User, "#{path}datastore/user"
36
+ autoload :CA, "#{path}datastore/ca"
37
+
38
+ DataMapper.setup(:default, {
39
+ :host => '127.0.0.1',
40
+ :port => 3306,
41
+ :database => 'vpnmaker',
42
+ :adapter => 'mysql',
43
+ :username => 'root',
44
+ :password => 'gavno.123!'})
45
+
46
+ end
47
+ end
@@ -0,0 +1,22 @@
1
+ module VPNMaker
2
+ module DataStore
3
+ class CA
4
+ include DataMapper::Resource
5
+
6
+ property :id, Serial
7
+ property :updated_at, DateTime
8
+ property :created_at, DateTime
9
+
10
+ property :name, String
11
+ property :country, String
12
+ property :province, String
13
+ property :city, String
14
+ property :organization, String
15
+ property :email, String
16
+
17
+ DataMapper::Model.raise_on_save_failure = true
18
+ DataMapper.finalize
19
+ DataMapper.auto_upgrade!
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ module VPNMaker
2
+ module DataStore
3
+ class User
4
+ include DataMapper::Resource
5
+
6
+ property :id, Serial
7
+ property :updated_at, DateTime
8
+ property :created_at, DateTime
9
+
10
+ property :cn, String
11
+ property :name, String
12
+ property :email, String
13
+ property :active_key, Integer
14
+ property :revoked, Object
15
+
16
+ def user; cn; end;
17
+
18
+ DataMapper::Model.raise_on_save_failure = true
19
+ DataMapper.finalize
20
+ DataMapper.auto_upgrade!
21
+ end
22
+ end
23
+ end
@@ -1,23 +1,27 @@
1
1
  \# Auto-generated by vpnmaker on #{gen_host} #{Time.now.to_s}
2
2
  \# See http://github.com/pc/vpnmaker
3
3
  mode server
4
- tls-server
5
- local #{host}
6
- port #{port}
7
- proto udp
8
4
 
9
5
  dev tun0
6
+ local #{host}
7
+ proto udp
8
+ port #{port}
10
9
  server #{base_ip[:net]} #{base_ip[:mask]}
10
+ tls-server
11
+ comp-lzo
11
12
  \
12
13
  \# subnets.each do
13
14
  - subnets.each do |net|
14
15
  route #{net[:net]} #{net[:mask]}
15
- push route #{net[:mask]} #{net[:mask]}
16
+ push route #{net[:net]} #{net[:mask]}
16
17
  \
17
18
  \# bridgednets.each do
18
19
  - bridgednets.each do |net|
19
20
  push route #{net[:net]} #{net[:mask]}
20
21
  \
22
+ push "redirect-gateway"
23
+ client-to-client
24
+ \
21
25
  user #{user}
22
26
  group #{group}
23
27
  - if type == :default
@@ -42,9 +46,9 @@ group #{group}
42
46
  #{crl}
43
47
  </crl-verify>
44
48
 
45
- <ta>
49
+ <tls-auth>
46
50
  #{ta}
47
- </ta>
51
+ </tls-auth>
48
52
 
49
53
  - else
50
54
  dh #{root}/keys/dh.pem
@@ -54,11 +58,7 @@ group #{group}
54
58
  crl-verify #{root}/keys/crl.pem
55
59
 
56
60
  keepalive 10 120
57
-
58
61
  log #{log}
59
-
60
62
  persist-tun
61
63
  persist-key
62
-
63
- tls-auth #{root}/keys/ta.key 0
64
64
  :plain
@@ -34,6 +34,8 @@ end
34
34
  module VPNMaker
35
35
  path = (File.dirname File.expand_path(__FILE__)) + "/"
36
36
 
37
+ autoload :DataStore, "#{path}datastore"
38
+
37
39
  autoload :ConfigGenerator, "#{path}vpnmaker/config_generator"
38
40
  autoload :KeyDB, "#{path}vpnmaker/key_db"
39
41
  autoload :KeyConfig, "#{path}vpnmaker/key_config"
@@ -14,20 +14,27 @@ module VPNMaker
14
14
  :ta => File.read(@dirname + "/ta.key")
15
15
  }
16
16
  end
17
+
17
18
  def client_conf(client)
19
+ fname = client[:user] + '-' + ((client[:revoked].max || - 1) + 1).to_s
20
+ separator = '-----BEGIN CERTIFICATE-----'
21
+ cert = File.read(@dirname + "/#{fname}.crt").split(separator).last.insert(0, separator)
22
+
18
23
  {
19
24
  :gen_host => Socket.gethostname,
20
25
  :server => @mgr.config[:server],
21
26
  :client => @mgr.config[:client]
22
- }.merge(client).merge(:key => File.read(@dirname + "/#{client[:user]}-#{(client[:revoked].max || - 1) + 1}.key" ),
23
- :cert => File.read(@dirname + "/#{client[:user]}-#{(client[:revoked].max || - 1) + 1}.crt")).merge(@runtime_cfg)
27
+ }.merge(client).merge(:key => File.read(@dirname + "/#{fname}.key" ),
28
+ :cert => cert).merge(@runtime_cfg)
24
29
  end
25
30
 
26
31
  def server_conf
32
+ separator = '-----BEGIN CERTIFICATE-----'
33
+ cert = File.read(@dirname + "/server.crt").split(separator).last.insert(0, separator)
27
34
  {
28
35
  :gen_host => Socket.gethostname
29
36
  }.merge(@mgr.config[:server]).merge(@runtime_cfg).merge(:key => File.read(@dirname + "/server.key"),
30
- :cert => File.read(@dirname + "/server.crt"),
37
+ :cert => cert,
31
38
  :crl => File.read(@dirname + "/crl.pem"))
32
39
  end
33
40
 
@@ -47,7 +54,6 @@ module VPNMaker
47
54
  template = File.read(@mgr.tracker.path + \
48
55
  "/" + @mgr.config[:site][:template_dir] + \
49
56
  "/" + 'client.haml')
50
- # template = File.read(__FILE__.path('client.haml'))
51
57
  Haml::Engine.new(template).render(Object.new, haml_vars)
52
58
  end
53
59
  end
@@ -24,9 +24,9 @@ module VPNMaker
24
24
  :key_org => @config[:key_properties][:organization],
25
25
  :key_email => @config[:key_properties][:email],
26
26
  :key_org => @config[:key_properties][:organization],
27
- :key_ou => 'Organization Unit',
28
- :key_cn => 'Common Name',
29
- :key_name => 'Name'
27
+ :key_ou => @config[:key_properties][:organization_unit],
28
+ :key_cn => @config[:key_properties][:common_name],
29
+ :key_name => @config[:key_properties][:name]
30
30
  }
31
31
  end
32
32
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "vpnmaker"
8
- s.version = "1.0.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Voip Scout"]
12
- s.date = "2012-05-09"
12
+ s.date = "2012-05-10"
13
13
  s.description = "haml templates and key tracking"
14
14
  s.email = "voipscout@gmail.com"
15
15
  s.executables = ["vpnmaker"]
@@ -24,6 +24,9 @@ Gem::Specification.new do |s|
24
24
  "VERSION",
25
25
  "bin/vpnmaker",
26
26
  "lib/client.haml",
27
+ "lib/datastore.rb",
28
+ "lib/datastore/ca.rb",
29
+ "lib/datastore/user.rb",
27
30
  "lib/example_vpnmaker_site.config.yaml",
28
31
  "lib/openssl.haml",
29
32
  "lib/server.haml",
@@ -46,10 +49,25 @@ Gem::Specification.new do |s|
46
49
  s.specification_version = 3
47
50
 
48
51
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_runtime_dependency(%q<ipaddr_extensions>, [">= 0"])
50
52
  s.add_runtime_dependency(%q<haml>, [">= 0"])
51
53
  s.add_runtime_dependency(%q<main>, [">= 0"])
52
54
  s.add_runtime_dependency(%q<highline>, [">= 0"])
55
+ s.add_runtime_dependency(%q<gibberish>, [">= 0"])
56
+ s.add_runtime_dependency(%q<cert_lib>, [">= 0"])
57
+ s.add_runtime_dependency(%q<datamapper>, ["~> 1.2.0"])
58
+ s.add_runtime_dependency(%q<dm-aggregates>, [">= 0"])
59
+ s.add_runtime_dependency(%q<dm-types>, ["~> 1.2.1"])
60
+ s.add_runtime_dependency(%q<dm-observer>, [">= 0"])
61
+ s.add_runtime_dependency(%q<dm-migrations>, [">= 0"])
62
+ s.add_runtime_dependency(%q<dm-timestamps>, [">= 0"])
63
+ s.add_runtime_dependency(%q<dm-serializer>, ["~> 1.2.0"])
64
+ s.add_runtime_dependency(%q<dm-validations>, [">= 0"])
65
+ s.add_runtime_dependency(%q<dm-mysql-adapter>, [">= 0"])
66
+ s.add_runtime_dependency(%q<chronic>, [">= 0"])
67
+ s.add_runtime_dependency(%q<ipaddr_extensions>, [">= 0"])
68
+ s.add_runtime_dependency(%q<rubyzip>, [">= 0"])
69
+ s.add_runtime_dependency(%q<ruport>, [">= 0"])
70
+ s.add_runtime_dependency(%q<ruport-util>, [">= 0"])
53
71
  s.add_development_dependency(%q<pry>, [">= 0"])
54
72
  s.add_development_dependency(%q<pry-doc>, [">= 0"])
55
73
  s.add_development_dependency(%q<pry-rails>, [">= 0"])
@@ -61,10 +79,25 @@ Gem::Specification.new do |s|
61
79
  s.add_development_dependency(%q<bundler>, [">= 0"])
62
80
  s.add_development_dependency(%q<jeweler>, [">= 0"])
63
81
  else
64
- s.add_dependency(%q<ipaddr_extensions>, [">= 0"])
65
82
  s.add_dependency(%q<haml>, [">= 0"])
66
83
  s.add_dependency(%q<main>, [">= 0"])
67
84
  s.add_dependency(%q<highline>, [">= 0"])
85
+ s.add_dependency(%q<gibberish>, [">= 0"])
86
+ s.add_dependency(%q<cert_lib>, [">= 0"])
87
+ s.add_dependency(%q<datamapper>, ["~> 1.2.0"])
88
+ s.add_dependency(%q<dm-aggregates>, [">= 0"])
89
+ s.add_dependency(%q<dm-types>, ["~> 1.2.1"])
90
+ s.add_dependency(%q<dm-observer>, [">= 0"])
91
+ s.add_dependency(%q<dm-migrations>, [">= 0"])
92
+ s.add_dependency(%q<dm-timestamps>, [">= 0"])
93
+ s.add_dependency(%q<dm-serializer>, ["~> 1.2.0"])
94
+ s.add_dependency(%q<dm-validations>, [">= 0"])
95
+ s.add_dependency(%q<dm-mysql-adapter>, [">= 0"])
96
+ s.add_dependency(%q<chronic>, [">= 0"])
97
+ s.add_dependency(%q<ipaddr_extensions>, [">= 0"])
98
+ s.add_dependency(%q<rubyzip>, [">= 0"])
99
+ s.add_dependency(%q<ruport>, [">= 0"])
100
+ s.add_dependency(%q<ruport-util>, [">= 0"])
68
101
  s.add_dependency(%q<pry>, [">= 0"])
69
102
  s.add_dependency(%q<pry-doc>, [">= 0"])
70
103
  s.add_dependency(%q<pry-rails>, [">= 0"])
@@ -77,10 +110,25 @@ Gem::Specification.new do |s|
77
110
  s.add_dependency(%q<jeweler>, [">= 0"])
78
111
  end
79
112
  else
80
- s.add_dependency(%q<ipaddr_extensions>, [">= 0"])
81
113
  s.add_dependency(%q<haml>, [">= 0"])
82
114
  s.add_dependency(%q<main>, [">= 0"])
83
115
  s.add_dependency(%q<highline>, [">= 0"])
116
+ s.add_dependency(%q<gibberish>, [">= 0"])
117
+ s.add_dependency(%q<cert_lib>, [">= 0"])
118
+ s.add_dependency(%q<datamapper>, ["~> 1.2.0"])
119
+ s.add_dependency(%q<dm-aggregates>, [">= 0"])
120
+ s.add_dependency(%q<dm-types>, ["~> 1.2.1"])
121
+ s.add_dependency(%q<dm-observer>, [">= 0"])
122
+ s.add_dependency(%q<dm-migrations>, [">= 0"])
123
+ s.add_dependency(%q<dm-timestamps>, [">= 0"])
124
+ s.add_dependency(%q<dm-serializer>, ["~> 1.2.0"])
125
+ s.add_dependency(%q<dm-validations>, [">= 0"])
126
+ s.add_dependency(%q<dm-mysql-adapter>, [">= 0"])
127
+ s.add_dependency(%q<chronic>, [">= 0"])
128
+ s.add_dependency(%q<ipaddr_extensions>, [">= 0"])
129
+ s.add_dependency(%q<rubyzip>, [">= 0"])
130
+ s.add_dependency(%q<ruport>, [">= 0"])
131
+ s.add_dependency(%q<ruport-util>, [">= 0"])
84
132
  s.add_dependency(%q<pry>, [">= 0"])
85
133
  s.add_dependency(%q<pry-doc>, [">= 0"])
86
134
  s.add_dependency(%q<pry-rails>, [">= 0"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vpnmaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,248 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-09 00:00:00.000000000 Z
12
+ date: 2012-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: haml
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: main
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: highline
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: gibberish
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: cert_lib
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: datamapper
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 1.2.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 1.2.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: dm-aggregates
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: dm-types
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.2.1
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.2.1
142
+ - !ruby/object:Gem::Dependency
143
+ name: dm-observer
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: dm-migrations
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: dm-timestamps
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: dm-serializer
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ~>
196
+ - !ruby/object:Gem::Version
197
+ version: 1.2.0
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ~>
204
+ - !ruby/object:Gem::Version
205
+ version: 1.2.0
206
+ - !ruby/object:Gem::Dependency
207
+ name: dm-validations
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: dm-mysql-adapter
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: chronic
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :runtime
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
14
254
  - !ruby/object:Gem::Dependency
15
255
  name: ipaddr_extensions
16
256
  requirement: !ruby/object:Gem::Requirement
@@ -28,7 +268,7 @@ dependencies:
28
268
  - !ruby/object:Gem::Version
29
269
  version: '0'
30
270
  - !ruby/object:Gem::Dependency
31
- name: haml
271
+ name: rubyzip
32
272
  requirement: !ruby/object:Gem::Requirement
33
273
  none: false
34
274
  requirements:
@@ -44,7 +284,7 @@ dependencies:
44
284
  - !ruby/object:Gem::Version
45
285
  version: '0'
46
286
  - !ruby/object:Gem::Dependency
47
- name: main
287
+ name: ruport
48
288
  requirement: !ruby/object:Gem::Requirement
49
289
  none: false
50
290
  requirements:
@@ -60,7 +300,7 @@ dependencies:
60
300
  - !ruby/object:Gem::Version
61
301
  version: '0'
62
302
  - !ruby/object:Gem::Dependency
63
- name: highline
303
+ name: ruport-util
64
304
  requirement: !ruby/object:Gem::Requirement
65
305
  none: false
66
306
  requirements:
@@ -250,6 +490,9 @@ files:
250
490
  - VERSION
251
491
  - bin/vpnmaker
252
492
  - lib/client.haml
493
+ - lib/datastore.rb
494
+ - lib/datastore/ca.rb
495
+ - lib/datastore/user.rb
253
496
  - lib/example_vpnmaker_site.config.yaml
254
497
  - lib/openssl.haml
255
498
  - lib/server.haml
@@ -276,7 +519,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
276
519
  version: '0'
277
520
  segments:
278
521
  - 0
279
- hash: -4049670178564647437
522
+ hash: -1678118915234524788
280
523
  required_rubygems_version: !ruby/object:Gem::Requirement
281
524
  none: false
282
525
  requirements: