Class: Kytoon::Vpn::VpnConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/kytoon/vpn/vpn_connection.rb

Direct Known Subclasses

VpnNetworkManager, VpnOpenVpn

Constant Summary collapse

CERT_DIR =
File.join(ENV['HOME'], '.pki', 'openvpn')

Instance Method Summary collapse

Constructor Details

#initialize(group, client = nil) ⇒ VpnConnection

Returns a new instance of VpnConnection.



8
9
10
11
# File 'lib/kytoon/vpn/vpn_connection.rb', line 8

def initialize(group, client = nil)
  @group = group
  @client = client
end

Instance Method Details

#create_certsObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/kytoon/vpn/vpn_connection.rb', line 13

def create_certs
    @ca_cert=get_cfile('ca.crt')
    @client_cert=get_cfile('client.crt')
    @client_key=get_cfile('client.key')

    vpn_interface = @client.vpn_network_interfaces[0]

    FileUtils.mkdir_p(get_cfile)
    File::chmod(0700, File.join(ENV['HOME'], '.pki'))
    File::chmod(0700, CERT_DIR)

    File.open(@ca_cert, 'w') { |f| f.write(vpn_interface.ca_cert) }
    File.open(@client_cert, 'w') { |f| f.write(vpn_interface.client_cert) }
    File.open(@client_key, 'w') do |f|
f.write(vpn_interface.client_key)
f.chmod(0600)
    end
end

#delete_certsObject



32
33
34
# File 'lib/kytoon/vpn/vpn_connection.rb', line 32

def delete_certs
  FileUtils.rm_rf(get_cfile)
end

#get_cfile(file = nil) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/kytoon/vpn/vpn_connection.rb', line 36

def get_cfile(file = nil)
  if file
    File.join(CERT_DIR, @group.id.to_s, file)
  else
    File.join(CERT_DIR, @group.id.to_s)
  end
end