terminalwire 0.1.14 → 0.1.15
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
- data/lib/terminalwire/authority.rb +49 -0
- data/lib/terminalwire/client/entitlement.rb +7 -16
- data/lib/terminalwire/client.rb +0 -9
- data/lib/terminalwire/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7368802178d36d058c4502624e50e831358e6b4bc47bbb40a18a8837063443a7
|
|
4
|
+
data.tar.gz: eaeedd98707062d3a639250cb53e3dd619bcd3d63b1e2a6ee51d916edb5da9df
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e0fb8c62c74528e3de4701ebced6e3e794d973ca67eddfdc140a645e9ecc676ae994095a3d08b4da731f3c87bf258018818d55562325016b4f4eee6dd9f17a6f
|
|
7
|
+
data.tar.gz: d27e62fdcf8582293fb89395acd0e9e9282c616fbb8eb9b8592f95b1a931465011ab9d006b11afa23d1719e1c97e0a61b9ffcb74619aec03f3f1a2286b57e2b6
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require "uri"
|
|
2
|
+
require "base64"
|
|
3
|
+
|
|
4
|
+
# Resolves domains into authorities, which are is used for access
|
|
5
|
+
# identity control in Terminalwire.
|
|
6
|
+
class Terminalwire::Authority
|
|
7
|
+
# Used to seperate path keys in the URL.
|
|
8
|
+
PATH_SEPERATOR = "/".freeze
|
|
9
|
+
|
|
10
|
+
# Used to demark a URL string as authorative.
|
|
11
|
+
SCHEME = "terminalwire://".freeze
|
|
12
|
+
|
|
13
|
+
def initialize(url:)
|
|
14
|
+
@url = URI(url)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Extracted from HTTP. This is so we can
|
|
18
|
+
def domain
|
|
19
|
+
if @url.port == @url.default_port
|
|
20
|
+
@url.host
|
|
21
|
+
else
|
|
22
|
+
"#{@url.host}:#{@url.port}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Useful for identifying the authority in UI without the protocol.
|
|
27
|
+
def name
|
|
28
|
+
[domain, path].join
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Make sure there's always a / at the end of the path.
|
|
32
|
+
def path
|
|
33
|
+
path_keys.join(PATH_SEPERATOR).prepend(PATH_SEPERATOR)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def to_s
|
|
37
|
+
[SCHEME, domain, path].join
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def key
|
|
41
|
+
Base64.urlsafe_encode64(to_s)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
protected
|
|
45
|
+
|
|
46
|
+
def path_keys
|
|
47
|
+
@url.path.scan(/[^\/]+/)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -145,7 +145,8 @@ module Terminalwire::Client
|
|
|
145
145
|
end
|
|
146
146
|
|
|
147
147
|
def authority_path
|
|
148
|
-
|
|
148
|
+
# TODO: Change this so it's per endpoint and not domain
|
|
149
|
+
root_path.join("authorities/#{authority.domain}")
|
|
149
150
|
end
|
|
150
151
|
|
|
151
152
|
def storage_path
|
|
@@ -158,7 +159,7 @@ module Terminalwire::Client
|
|
|
158
159
|
|
|
159
160
|
def serialize
|
|
160
161
|
{
|
|
161
|
-
authority: @authority,
|
|
162
|
+
authority: @authority.to_s,
|
|
162
163
|
schemes: @schemes.serialize,
|
|
163
164
|
paths: @paths.serialize,
|
|
164
165
|
storage_path: storage_path.to_s,
|
|
@@ -203,23 +204,13 @@ module Terminalwire::Client
|
|
|
203
204
|
end
|
|
204
205
|
|
|
205
206
|
def self.from_url(url)
|
|
206
|
-
|
|
207
|
+
authority = Terminalwire::Authority.new(url:)
|
|
207
208
|
|
|
208
|
-
case
|
|
209
|
+
case authority.domain
|
|
209
210
|
when RootPolicy::HOST
|
|
210
|
-
RootPolicy.new
|
|
211
|
+
RootPolicy.new authority:
|
|
211
212
|
else
|
|
212
|
-
Policy.new authority:
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
def self.url_authority(url)
|
|
217
|
-
# I had to lift this from URI::HTTP because `ws://` doesn't
|
|
218
|
-
# have an authority method.
|
|
219
|
-
if url.port == url.default_port
|
|
220
|
-
url.host
|
|
221
|
-
else
|
|
222
|
-
"#{url.host}:#{url.port}"
|
|
213
|
+
Policy.new authority:
|
|
223
214
|
end
|
|
224
215
|
end
|
|
225
216
|
end
|
data/lib/terminalwire/client.rb
CHANGED
|
@@ -53,15 +53,6 @@ module Terminalwire
|
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
# Extracted from HTTP. This is so we can
|
|
57
|
-
def self.authority(url)
|
|
58
|
-
if url.port == url.default_port
|
|
59
|
-
url.host
|
|
60
|
-
else
|
|
61
|
-
"#{url.host}:#{url.port}"
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
56
|
def self.websocket(url:, arguments: ARGV, entitlement: nil)
|
|
66
57
|
url = URI(url)
|
|
67
58
|
|
data/lib/terminalwire/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: terminalwire
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Brad Gessler
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-10-
|
|
11
|
+
date: 2024-10-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: async-websocket
|
|
@@ -161,6 +161,7 @@ files:
|
|
|
161
161
|
- lib/generators/terminalwire/install/templates/main_terminal.rb
|
|
162
162
|
- lib/terminalwire.rb
|
|
163
163
|
- lib/terminalwire/adapter.rb
|
|
164
|
+
- lib/terminalwire/authority.rb
|
|
164
165
|
- lib/terminalwire/client.rb
|
|
165
166
|
- lib/terminalwire/client/entitlement.rb
|
|
166
167
|
- lib/terminalwire/client/exec.rb
|