localhost 1.3.0 → 1.3.1
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +4 -2
- data/lib/localhost/authority.rb +23 -28
- data/lib/localhost/version.rb +1 -1
- data/readme.md +7 -1
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35cad25f5ec79874e21312d5b70e4ffbf8ed616f3b8140a0f22dd6d0e1aa292b
|
4
|
+
data.tar.gz: 0e34a06090414bdd734c7b5ef094fab8a10a6c3286f0bf737e7a9f93a5d0b87a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6d2aa039d439e2e4e38f506335b5d72b80ffcf316886d85c86ecd1780547b156c97ddc060c93c0a9f67543bceb2d28535dde9ed955f28664a95508297433c19
|
7
|
+
data.tar.gz: 0142e748e4d118144d455bef736c2c545f18275f7c4503d118a58d239b20c13ba1c0aa3f0339d244eebd3ce30f42565f1d02246c5dc4f73f6698188c2cc1427a
|
checksums.yaml.gz.sig
CHANGED
@@ -1,2 +1,4 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
���4�i�
|
2
|
+
(��>sE�y;<XYΌh�`��6�P I!8�S(�7�ۘפ��:(�8[fd?]�����Mg���#�uK���bC@_
|
3
|
+
�"�K�:�O��7��w��ćMr>V�e�S��Ȗ��i3�4�S���@_h)�
|
4
|
+
��s�����-n��t0A=�x1[Q!�4(�p�G��gN��Ӳv�[������!h9:po���.L�l�H��W�ØP5L����
|
data/lib/localhost/authority.rb
CHANGED
@@ -17,13 +17,32 @@ module Localhost
|
|
17
17
|
class Authority
|
18
18
|
# Where to store the key pair on the filesystem. This is a subdirectory
|
19
19
|
# of $XDG_STATE_HOME, or ~/.local/state/ when that's not defined.
|
20
|
-
|
21
|
-
|
20
|
+
#
|
21
|
+
# Ensures that the directory to store the certificate exists. If the legacy
|
22
|
+
# directory (~/.localhost/) exists, it is moved into the new XDG Basedir
|
23
|
+
# compliant directory.
|
24
|
+
#
|
25
|
+
# After May 2025, the old_root option may be removed.
|
26
|
+
def self.path(env = ENV, old_root: nil)
|
27
|
+
path = File.expand_path("localhost.rb", env.fetch("XDG_STATE_HOME", "~/.local/state"))
|
28
|
+
|
29
|
+
unless File.directory?(path)
|
30
|
+
FileUtils.mkdir_p(path, mode: 0700)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Migrates the legacy dir ~/.localhost/ to the XDG compliant directory
|
34
|
+
old_root ||= File.expand_path("~/.localhost")
|
35
|
+
if File.directory?(old_root)
|
36
|
+
FileUtils.mv(Dir.glob(File.join(old_root, "*")), path, force: true)
|
37
|
+
FileUtils.rmdir(old_root)
|
38
|
+
end
|
39
|
+
|
40
|
+
return path
|
22
41
|
end
|
23
42
|
|
24
43
|
# List all certificate authorities in the given directory:
|
25
44
|
def self.list(root = self.path)
|
26
|
-
return to_enum(:list) unless block_given?
|
45
|
+
return to_enum(:list, root) unless block_given?
|
27
46
|
|
28
47
|
Dir.glob("*.crt", base: root) do |path|
|
29
48
|
name = File.basename(path, ".crt")
|
@@ -66,10 +85,6 @@ module Localhost
|
|
66
85
|
|
67
86
|
BITS = 1024*2
|
68
87
|
|
69
|
-
def ecdh_key
|
70
|
-
@ecdh_key ||= OpenSSL::PKey::EC.new "prime256v1"
|
71
|
-
end
|
72
|
-
|
73
88
|
def dh_key
|
74
89
|
@dh_key ||= OpenSSL::PKey::DH.new(BITS)
|
75
90
|
end
|
@@ -157,8 +172,6 @@ module Localhost
|
|
157
172
|
|
158
173
|
if context.respond_to? :ecdh_curves=
|
159
174
|
context.ecdh_curves = 'P-256:P-384:P-521'
|
160
|
-
elsif context.respond_to? :tmp_ecdh_callback=
|
161
|
-
context.tmp_ecdh_callback = proc {self.ecdh_key}
|
162
175
|
end
|
163
176
|
|
164
177
|
context.set_params(
|
@@ -180,11 +193,9 @@ module Localhost
|
|
180
193
|
end
|
181
194
|
|
182
195
|
def load(path = @root)
|
183
|
-
ensure_authority_path_exists(path)
|
184
|
-
|
185
196
|
certificate_path = File.join(path, "#{@hostname}.crt")
|
186
197
|
key_path = File.join(path, "#{@hostname}.key")
|
187
|
-
|
198
|
+
|
188
199
|
return false unless File.exist?(certificate_path) and File.exist?(key_path)
|
189
200
|
|
190
201
|
certificate = OpenSSL::X509::Certificate.new(File.read(certificate_path))
|
@@ -200,8 +211,6 @@ module Localhost
|
|
200
211
|
end
|
201
212
|
|
202
213
|
def save(path = @root)
|
203
|
-
ensure_authority_path_exists(path)
|
204
|
-
|
205
214
|
lockfile_path = File.join(path, "#{@hostname}.lock")
|
206
215
|
|
207
216
|
File.open(lockfile_path, File::RDWR|File::CREAT, 0644) do |lockfile|
|
@@ -218,19 +227,5 @@ module Localhost
|
|
218
227
|
)
|
219
228
|
end
|
220
229
|
end
|
221
|
-
|
222
|
-
# Ensures that the directory to store the certificate exists. If the legacy
|
223
|
-
# directory (~/.localhost/) exists, it is moved into the new XDG Basedir
|
224
|
-
# compliant directory.
|
225
|
-
def ensure_authority_path_exists(path = @root)
|
226
|
-
old_root = File.expand_path("~/.localhost")
|
227
|
-
|
228
|
-
if File.directory?(old_root) and not File.directory?(path)
|
229
|
-
# Migrates the legacy dir ~/.localhost/ to the XDG compliant directory
|
230
|
-
File.rename(old_root, path)
|
231
|
-
elsif not File.directory?(path)
|
232
|
-
FileUtils.makedirs(path, mode: 0700)
|
233
|
-
end
|
234
|
-
end
|
235
230
|
end
|
236
231
|
end
|
data/lib/localhost/version.rb
CHANGED
data/readme.md
CHANGED
@@ -12,7 +12,13 @@ I wanted to provide a server-agnostic way of doing this, primarily because I thi
|
|
12
12
|
|
13
13
|
## Usage
|
14
14
|
|
15
|
-
Please see the [project documentation](https://socketry.github.io/localhost/).
|
15
|
+
Please see the [project documentation](https://socketry.github.io/localhost/) for more details.
|
16
|
+
|
17
|
+
- [Getting Started](https://socketry.github.io/localhost/guides/getting-started/index) - This guide explains how to use `localhost` for provisioning local TLS certificates for development.
|
18
|
+
|
19
|
+
- [Browser Configuration](https://socketry.github.io/localhost/guides/browser-configuration/index) - This guide explains how to configure your local browser in order to avoid warnings about insecure self-signed certificates.
|
20
|
+
|
21
|
+
- [Example Server](https://socketry.github.io/localhost/guides/example-server/index) - This guide demonstrates how to use <code class="language-ruby">Localhost::Authority</code> to implement a simple HTTPS client & server.
|
16
22
|
|
17
23
|
## Contributing
|
18
24
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: localhost
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -46,7 +46,7 @@ cert_chain:
|
|
46
46
|
Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
|
47
47
|
voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
|
48
48
|
-----END CERTIFICATE-----
|
49
|
-
date: 2024-04-
|
49
|
+
date: 2024-04-16 00:00:00.000000000 Z
|
50
50
|
dependencies: []
|
51
51
|
description:
|
52
52
|
email:
|
@@ -73,7 +73,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '3.
|
76
|
+
version: '3.1'
|
77
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|