selfsdk 0.0.216 → 0.0.217
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/messaging.rb +0 -29
- data/lib/selfsdk.rb +0 -1
- data/lib/services/messaging.rb +0 -35
- data/lib/services/requester.rb +0 -3
- metadata +1 -2
- data/lib/acl.rb +0 -67
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b46d28c22f1f2bc5580d68f247bec53aac495765ea0199e59e21ecefd6f29e9
|
4
|
+
data.tar.gz: b0b84f89bdda28f94c2a81e56c71c420c480fe3b69e9425ab393e85e92a0e199
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77173c08e398e75416d6711da44edc8a12062fae4dcf51e7b302dd9fab7fb8654af3904bd504aad7a980dd269fe6bd831453d005ec6352f7d60c0d08b754bb71
|
7
|
+
data.tar.gz: c9c443f7570a352bcfd5c65250e7b6b7ca5b3c9bc0dd1017170186df0bf706aa227e74924a24427dfd350ff0f967e126fd55da1517e7e8a6c1d6541cd982a6b1
|
data/lib/messaging.rb
CHANGED
@@ -246,17 +246,6 @@ module SelfSDK
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
|
-
# Sends a command to list ACL rules.
|
250
|
-
def list_acl_rules
|
251
|
-
wait_for 'acl_list' do
|
252
|
-
a = SelfMsg::Acl.new
|
253
|
-
a.id = SecureRandom.uuid
|
254
|
-
a.command = SelfMsg::AclCommandLIST
|
255
|
-
|
256
|
-
@ws.send a
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
249
|
# Sends a message and waits for the response
|
261
250
|
#
|
262
251
|
# @params msg [SelfMsg::Message] message object to be sent
|
@@ -387,7 +376,6 @@ module SelfSDK
|
|
387
376
|
|
388
377
|
private
|
389
378
|
|
390
|
-
|
391
379
|
# Cleans expired messages
|
392
380
|
def clean_timeouts
|
393
381
|
clean_observers
|
@@ -413,7 +401,6 @@ module SelfSDK
|
|
413
401
|
@ws.start
|
414
402
|
end
|
415
403
|
|
416
|
-
|
417
404
|
# Process an event when it arrives through the websocket connection.
|
418
405
|
def on_message(event)
|
419
406
|
data = event.data.pack('c*')
|
@@ -438,27 +425,11 @@ module SelfSDK
|
|
438
425
|
@messages[hdr.id][:response] = {error: e.error}
|
439
426
|
mark_as_acknowledged(hdr.id)
|
440
427
|
mark_as_arrived(hdr.id)
|
441
|
-
when SelfMsg::MsgTypeACL
|
442
|
-
SelfSDK.logger.debug "#{hdr.id} ACL received"
|
443
|
-
a = SelfMsg::Acl.new(data: data)
|
444
|
-
process_incomming_acl a
|
445
428
|
end
|
446
429
|
rescue TypeError
|
447
430
|
SelfSDK.logger.debug "invalid array message"
|
448
431
|
end
|
449
432
|
|
450
|
-
def process_incomming_acl(input)
|
451
|
-
list = JSON.parse(input.payload)
|
452
|
-
|
453
|
-
@messages['acl_list'][:response] = list
|
454
|
-
mark_as_arrived 'acl_list'
|
455
|
-
rescue StandardError => e
|
456
|
-
p "Error processing incoming ACL #{input.id} #{input.payload}"
|
457
|
-
SelfSDK.logger.debug e
|
458
|
-
SelfSDK.logger.debug e.backtrace
|
459
|
-
nil
|
460
|
-
end
|
461
|
-
|
462
433
|
def process_incomming_message(input)
|
463
434
|
message = parse_and_write_offset(input)
|
464
435
|
|
data/lib/selfsdk.rb
CHANGED
data/lib/services/messaging.rb
CHANGED
@@ -32,37 +32,6 @@ module SelfSDK
|
|
32
32
|
@client.subscribe(type, &block)
|
33
33
|
end
|
34
34
|
|
35
|
-
# Permits incoming messages from the a identity.
|
36
|
-
#
|
37
|
-
# @param [String] selfid to be allowed.
|
38
|
-
# @return [Boolean] success / failure
|
39
|
-
def permit_connection(selfid)
|
40
|
-
acl.allow selfid
|
41
|
-
end
|
42
|
-
|
43
|
-
# Lists app allowed connections.
|
44
|
-
# @return [Array] array of self ids allowed to connect to your app.
|
45
|
-
def allowed_connections
|
46
|
-
acl.list
|
47
|
-
end
|
48
|
-
|
49
|
-
# Checks if you're permitting messages from a specific self identifier
|
50
|
-
# @return [Boolean] yes|no
|
51
|
-
def is_permitted?(id)
|
52
|
-
conns = allowed_connections
|
53
|
-
return true if conns.include? "*"
|
54
|
-
return true if conns.include? id
|
55
|
-
return false
|
56
|
-
end
|
57
|
-
|
58
|
-
# Revokes incoming messages from the given identity.
|
59
|
-
#
|
60
|
-
# @param [String] selfid to be denied
|
61
|
-
# @return [Boolean] success / failure
|
62
|
-
def revoke_connection(selfid)
|
63
|
-
acl.deny selfid
|
64
|
-
end
|
65
|
-
|
66
35
|
# Gets the device id for the authenticated app.
|
67
36
|
#
|
68
37
|
# @return [String] device_id of the running app.
|
@@ -101,10 +70,6 @@ module SelfSDK
|
|
101
70
|
end
|
102
71
|
|
103
72
|
private
|
104
|
-
|
105
|
-
def acl
|
106
|
-
@acl ||= ACL.new(@client)
|
107
|
-
end
|
108
73
|
end
|
109
74
|
end
|
110
75
|
end
|
data/lib/services/requester.rb
CHANGED
@@ -48,9 +48,6 @@ module SelfSDK
|
|
48
48
|
def request(selfid, facts, opts = {}, &block)
|
49
49
|
SelfSDK.logger.info "authenticating #{selfid}"
|
50
50
|
rq = opts.fetch(:request, true)
|
51
|
-
if rq
|
52
|
-
raise "You're not permitting connections from #{selfid}" unless @messaging_service.is_permitted?(selfid)
|
53
|
-
end
|
54
51
|
|
55
52
|
req = SelfSDK::Messages::FactRequest.new(@messaging)
|
56
53
|
req.populate(selfid, prepare_facts(facts), opts)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selfsdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.217
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Self Group Ltd.
|
@@ -350,7 +350,6 @@ executables: []
|
|
350
350
|
extensions: []
|
351
351
|
extra_rdoc_files: []
|
352
352
|
files:
|
353
|
-
- lib/acl.rb
|
354
353
|
- lib/authenticated.rb
|
355
354
|
- lib/chat/file_object.rb
|
356
355
|
- lib/chat/group.rb
|
data/lib/acl.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# Copyright 2020 Self Group Ltd. All Rights Reserved.
|
2
|
-
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
|
-
require 'date'
|
6
|
-
|
7
|
-
# Namespace for classes and modules that handle Self interactions.
|
8
|
-
module SelfSDK
|
9
|
-
# Access control list
|
10
|
-
class ACL
|
11
|
-
def initialize(messaging)
|
12
|
-
@messaging = messaging
|
13
|
-
@jwt = @messaging.jwt
|
14
|
-
@acl_rules = []
|
15
|
-
end
|
16
|
-
|
17
|
-
# Lists allowed connections.
|
18
|
-
def list
|
19
|
-
SelfSDK.logger.info "Listing allowed connections"
|
20
|
-
@acl_rules = @messaging.list_acl_rules if @acl_rules.empty?
|
21
|
-
@acl_rules
|
22
|
-
end
|
23
|
-
|
24
|
-
# Allows incomming messages from the given identity.
|
25
|
-
def allow(id)
|
26
|
-
@acl_rules << id
|
27
|
-
SelfSDK.logger.info "Allowing connections from #{id}"
|
28
|
-
payload = @jwt.prepare(jti: SecureRandom.uuid,
|
29
|
-
cid: SecureRandom.uuid,
|
30
|
-
typ: 'acl.permit',
|
31
|
-
iss: @jwt.id,
|
32
|
-
sub: @jwt.id,
|
33
|
-
iat: (SelfSDK::Time.now - 5).strftime('%FT%TZ'),
|
34
|
-
exp: (SelfSDK::Time.now + 60).strftime('%FT%TZ'),
|
35
|
-
acl_source: id,
|
36
|
-
acl_exp: (SelfSDK::Time.now + 360_000).to_datetime.rfc3339)
|
37
|
-
|
38
|
-
a = SelfMsg::Acl.new
|
39
|
-
a.id = SecureRandom.uuid
|
40
|
-
a.command = SelfMsg::AclCommandPERMIT
|
41
|
-
a.payload = payload
|
42
|
-
|
43
|
-
@messaging.send_message a
|
44
|
-
end
|
45
|
-
|
46
|
-
# Deny incomming messages from the given identity.
|
47
|
-
def deny(id)
|
48
|
-
@acl_rules.delete(id)
|
49
|
-
SelfSDK.logger.info "Denying connections from #{id}"
|
50
|
-
payload = @jwt.prepare(jti: SecureRandom.uuid,
|
51
|
-
cid: SecureRandom.uuid,
|
52
|
-
typ: 'acl.revoke',
|
53
|
-
iss: @jwt.id,
|
54
|
-
sub: @jwt.id,
|
55
|
-
iat: (SelfSDK::Time.now - 5).strftime('%FT%TZ'),
|
56
|
-
exp: (SelfSDK::Time.now + 60).strftime('%FT%TZ'),
|
57
|
-
acl_source: id,
|
58
|
-
acl_exp: (SelfSDK::Time.now + 360_000).to_datetime.rfc3339)
|
59
|
-
|
60
|
-
a = SelfMsg::Acl.new
|
61
|
-
a.id = SecureRandom.uuid
|
62
|
-
a.command = SelfMsg::AclCommandREVOKE
|
63
|
-
a.payload = payload
|
64
|
-
@messaging.send_message a
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|