Class: Site

Inherits:
Object
  • Object
show all
Defined in:
lib/brisk/server/site.rb

Class Method Summary collapse

Class Method Details

.build_secure_caddy_file(url) ⇒ Object


46
47
48
49
50
51
52
53
# File 'lib/brisk/server/site.rb', line 46

def self.build_secure_caddy_file(url)
  path = File.expand_path("../../../stubs/secureCaddyfile", __dir__)
  file = File.read(path)
  new_file = file.gsub("BRISK_SITE", url)
  new_file = new_file.gsub("BRISK_CERT", "#{certificates_path}/#{url}.crt")
  new_file = new_file.gsub("BRISK_KEY", "#{certificates_path}/#{url}.key")
  return new_file
end

.certificates_pathObject


96
97
98
# File 'lib/brisk/server/site.rb', line 96

def self.certificates_path
  Constants.valet_home + '/Certificates'
end

.create_certificate(url) ⇒ Object


17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/brisk/server/site.rb', line 17

def self.create_certificate(url)
  key_path = certificates_path + "/#{url}.key"
  csr_path = certificates_path + "/#{url}.csr"
  crt_path = certificates_path + "/#{url}.crt"

  create_private_key(key_path)
  create_signing_request(url, key_path, csr_path)

  system "openssl x509 -req -days 365 -in #{csr_path} -signkey #{key_path} -out #{crt_path}"

  trust_certificate(crt_path)
end

.create_private_key(key_path) ⇒ Object


34
35
36
# File 'lib/brisk/server/site.rb', line 34

def self.create_private_key(key_path)
  system "openssl genrsa -out #{key_path} 2048"
end

.create_signing_request(url, key_path, csr_path) ⇒ Object


38
39
40
# File 'lib/brisk/server/site.rb', line 38

def self.create_signing_request(url, key_path, csr_path)
  system "openssl req -new -subj \"/C=/ST=/O=/localityName=/commonName=#{url}/organizationalUnitName=/emailAddress=/\" -key #{key_path} -out #{csr_path} -passin pass:"
end

.get_site_paths(config, site) ⇒ Object


82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/brisk/server/site.rb', line 82

def self.get_site_paths(config, site)
  site_path = nil

  config['paths'].each do |path|
    if File.directory?("/#{path}/#{site}")
      if File.file?("/#{path}/#{site}/config.ru")
        site_path = "/#{path}/#{site}"
      end
    end
  end

  site_path
end

.is_secured?(config, site) ⇒ Boolean

Returns:

  • (Boolean)

30
31
32
# File 'lib/brisk/server/site.rb', line 30

def self.is_secured?(config, site)
  config['secured'].include?(site)
end

.read_site(path) ⇒ Object


72
73
74
75
76
# File 'lib/brisk/server/site.rb', line 72

def self.read_site(path)
  if site_file_exists?(path)
    return File.read("#{path}/site.txt")
  end
end

.secure(url) ⇒ Object


6
7
8
9
10
11
12
13
14
15
# File 'lib/brisk/server/site.rb', line 6

def self.secure(url)
  unsecure(url)

  FileSystem.create_dir(certificates_path)
  create_certificate(url)

  caddy_file = build_secure_caddy_file(url)

  FileSystem.write("#{Constants.valet_home}/Caddy/#{url}", caddy_file)
end

.site_file_exists?(path) ⇒ Boolean

Returns:

  • (Boolean)

78
79
80
# File 'lib/brisk/server/site.rb', line 78

def self.site_file_exists?(path)
  File.file?("#{path}/site.txt")
end

.trust_certificate(crt_path) ⇒ Object


42
43
44
# File 'lib/brisk/server/site.rb', line 42

def self.trust_certificate(crt_path)
  system "sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain #{crt_path}"
end

.unsecure(url) ⇒ Object


55
56
57
58
59
60
61
62
63
64
# File 'lib/brisk/server/site.rb', line 55

def self.unsecure(url)
  if File.exists?("#{certificates_path}/#{url}.crt")
    File.delete("#{Constants.valet_home}/Caddy/#{url}")

    File.delete("#{certificates_path}/#{url}.key")
    File.delete("#{certificates_path}/#{url}.csr")
    File.delete("#{certificates_path}/#{url}.crt")
    system "sudo security delete-certificate -c #{url} -t"
  end
end

.write_site(path, site) ⇒ Object


66
67
68
69
70
# File 'lib/brisk/server/site.rb', line 66

def self.write_site(path, site)
  File.open("#{path}/site.txt", "w+") do |f|
    f.write(site)
  end
end