selfsdk 0.0.171 → 0.0.175
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/acl.rb +5 -1
- data/lib/messages/authentication_req.rb +1 -1
- data/lib/messages/base.rb +10 -1
- data/lib/messages/fact_request.rb +1 -1
- data/lib/messaging.rb +18 -14
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0556e53083b274c5456ab502c20a66bff0ab0c7897b29f794d0f920c7769fd51
|
4
|
+
data.tar.gz: 58ba0a4bbf08bd9ed86c51a84febb542951a67d63aad27b2145cd31fdd160083
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c10a1f4418eefaee9ebe9a1e933c5a3ad00956f2dc9648c6812c4e0da7c1c1783f1cedaae62b0b0366f78954aa6762d57c030f39c0e064a6a7404ed73033147
|
7
|
+
data.tar.gz: ed99a0ace0c55eda3e422c56d1653ad33e4955c6432f3c2f70f631b13b9972d2da43211648fe9500540401090a6368ce109606b4346ea6788e4329d455ec0816
|
data/lib/acl.rb
CHANGED
@@ -11,16 +11,19 @@ module SelfSDK
|
|
11
11
|
def initialize(messaging)
|
12
12
|
@messaging = messaging
|
13
13
|
@jwt = @messaging.jwt
|
14
|
+
@acl_rules = []
|
14
15
|
end
|
15
16
|
|
16
17
|
# Lists allowed connections.
|
17
18
|
def list
|
18
19
|
SelfSDK.logger.info "Listing allowed connections"
|
19
|
-
@messaging.list_acl_rules
|
20
|
+
@acl_rules = @messaging.list_acl_rules if @acl_rules.empty?
|
21
|
+
@acl_rules
|
20
22
|
end
|
21
23
|
|
22
24
|
# Allows incomming messages from the given identity.
|
23
25
|
def allow(id)
|
26
|
+
@acl_rules << id
|
24
27
|
SelfSDK.logger.info "Allowing connections from #{id}"
|
25
28
|
@messaging.add_acl_rule(@jwt.prepare(jti: SecureRandom.uuid,
|
26
29
|
cid: SecureRandom.uuid,
|
@@ -35,6 +38,7 @@ module SelfSDK
|
|
35
38
|
|
36
39
|
# Deny incomming messages from the given identity.
|
37
40
|
def deny(id)
|
41
|
+
@acl_rules.delete(id)
|
38
42
|
SelfSDK.logger.info "Denying connections from #{id}"
|
39
43
|
@messaging.remove_acl_rule(@jwt.prepare(jti: SecureRandom.uuid,
|
40
44
|
cid: SecureRandom.uuid,
|
@@ -43,7 +43,7 @@ module SelfSDK
|
|
43
43
|
def proto(to_device)
|
44
44
|
Msgproto::Message.new(type: Msgproto::MsgType::MSG,
|
45
45
|
sender: "#{@jwt.id}:#{@messaging.device_id}",
|
46
|
-
id:
|
46
|
+
id: SecureRandom.uuid,
|
47
47
|
recipient: "#{@to}:#{to_device}",
|
48
48
|
ciphertext: encrypt_message(@jwt.prepare(body), @to, to_device))
|
49
49
|
end
|
data/lib/messages/base.rb
CHANGED
@@ -21,8 +21,13 @@ module SelfSDK
|
|
21
21
|
msgs = []
|
22
22
|
devices.each do |d|
|
23
23
|
msgs << proto(d)
|
24
|
-
SelfSDK.logger.info "synchronously messaging to #{@to}:#{d}"
|
25
24
|
end
|
25
|
+
current_devices.each do |d|
|
26
|
+
if d != @messaging.device_id
|
27
|
+
msgs << proto(d)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
SelfSDK.logger.info "synchronously messaging to #{@to}"
|
26
31
|
res = @messaging.send_and_wait_for_response(msgs, self)
|
27
32
|
res
|
28
33
|
end
|
@@ -84,6 +89,10 @@ module SelfSDK
|
|
84
89
|
@client.devices(@intermediary)
|
85
90
|
end
|
86
91
|
|
92
|
+
def current_devices
|
93
|
+
@client.devices(@jwt.id)
|
94
|
+
end
|
95
|
+
|
87
96
|
def check_credits!
|
88
97
|
app = @client.app(@jwt.id)
|
89
98
|
raise "Your credits have expired, please log in to the developer portal and top up your account." if app[:paid_actions] == false
|
data/lib/messaging.rb
CHANGED
@@ -101,15 +101,27 @@ module SelfSDK
|
|
101
101
|
# @param type [string] message type
|
102
102
|
# @param request [hash] original message requesing information
|
103
103
|
def send_custom(recipient, request_body)
|
104
|
-
|
105
|
-
|
106
|
-
send_message msg = Msgproto::Message.new(
|
104
|
+
@client.devices(recipient).each do |to_device|
|
105
|
+
send_message Msgproto::Message.new(
|
107
106
|
type: Msgproto::MsgType::MSG,
|
108
107
|
id: SecureRandom.uuid,
|
109
108
|
sender: "#{@jwt.id}:#{@device_id}",
|
110
|
-
recipient: "#{recipient}:#{
|
109
|
+
recipient: "#{recipient}:#{to_device}",
|
111
110
|
ciphertext: @jwt.prepare(request_body),
|
112
111
|
)
|
112
|
+
end
|
113
|
+
|
114
|
+
@client.devices(@jwt.id).each do |to_device|
|
115
|
+
if to-device != @device_id
|
116
|
+
send_message Msgproto::Message.new(
|
117
|
+
type: Msgproto::MsgType::MSG,
|
118
|
+
id: SecureRandom.uuid,
|
119
|
+
sender: "#{@jwt.id}:#{@device_id}",
|
120
|
+
recipient: "#{recipient}:#{to_device}",
|
121
|
+
ciphertext: @jwt.prepare(request_body),
|
122
|
+
)
|
123
|
+
end
|
124
|
+
end
|
113
125
|
end
|
114
126
|
|
115
127
|
# Allows incomming messages from the given identity
|
@@ -281,10 +293,6 @@ module SelfSDK
|
|
281
293
|
loop { sleep 10; clean_timeouts }
|
282
294
|
end
|
283
295
|
|
284
|
-
Thread.new do
|
285
|
-
loop { sleep 30; ping }
|
286
|
-
end
|
287
|
-
|
288
296
|
@mon.synchronize do
|
289
297
|
@acks[auth_id][:waiting_cond].wait_while { @acks[auth_id][:waiting] }
|
290
298
|
@acks.delete(auth_id)
|
@@ -351,11 +359,6 @@ module SelfSDK
|
|
351
359
|
end
|
352
360
|
end
|
353
361
|
|
354
|
-
# Pings the websocket server to keep the connection alive.
|
355
|
-
def ping
|
356
|
-
# SelfSDK.logger.info "ping"
|
357
|
-
@ws&.ping
|
358
|
-
end
|
359
362
|
|
360
363
|
# Process an event when it arrives through the websocket connection.
|
361
364
|
def on_message(event)
|
@@ -363,7 +366,8 @@ module SelfSDK
|
|
363
366
|
SelfSDK.logger.info " - received #{input.id} (#{input.type})"
|
364
367
|
case input.type
|
365
368
|
when :ERR
|
366
|
-
SelfSDK.logger.
|
369
|
+
SelfSDK.logger.warn "error #{input.sender} on #{input.id}"
|
370
|
+
SelfSDK.logger.warn "#{input.to_json}"
|
367
371
|
mark_as_arrived(input.id)
|
368
372
|
when :ACK
|
369
373
|
SelfSDK.logger.info "#{input.id} acknowledged"
|