|
|
@@ -75,6 +75,8 @@ func NewProtocolEngine(identity identity.Identity, privateKey ed25519.PrivateKey |
|
|
|
engine.eventManager.Subscribe(event.JoinServer, engine.queue.EventChannel) |
|
|
|
engine.eventManager.Subscribe(event.SendMessageToGroup, engine.queue.EventChannel) |
|
|
|
engine.eventManager.Subscribe(event.SendMessageToPeer, engine.queue.EventChannel) |
|
|
|
engine.eventManager.Subscribe(event.DeleteContact, engine.queue.EventChannel) |
|
|
|
engine.eventManager.Subscribe(event.DeleteGroup, engine.queue.EventChannel) |
|
|
|
|
|
|
|
engine.eventManager.Subscribe(event.BlockPeer, engine.queue.EventChannel) |
|
|
|
for _, peer := range blockedPeers { |
|
|
@@ -108,6 +110,11 @@ func (e *engine) eventHandler() { |
|
|
|
e.sendMessageToPeer(ev.EventID, ev.Data[event.RemotePeer], event.ContextInvite, []byte(ev.Data[event.GroupInvite])) |
|
|
|
case event.JoinServer: |
|
|
|
e.joinServer(ev.Data[event.GroupServer]) |
|
|
|
case event.DeleteContact: |
|
|
|
onion := ev.Data[event.RemotePeer] |
|
|
|
e.deleteConnection(onion) |
|
|
|
case event.DeleteGroup: |
|
|
|
// TODO: There isn't a way here to determine if other Groups are using a server connection... |
|
|
|
case event.SendMessageToGroup: |
|
|
|
e.sendMessageToGroup(ev.Data[event.GroupServer], []byte(ev.Data[event.Ciphertext]), []byte(ev.Data[event.Signature])) |
|
|
|
case event.SendMessageToPeer: |
|
|
@@ -254,6 +261,13 @@ func (e *engine) sendMessageToPeer(eventID string, onion string, context string, |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
func (e *engine) deleteConnection(id string) { |
|
|
|
conn, err := e.service.GetConnection(id) |
|
|
|
if err == nil { |
|
|
|
conn.Close() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// receiveGroupMessage is a callback function that processes GroupMessages from a given server |
|
|
|
func (e *engine) receiveGroupMessage(server string, gm *protocol.GroupMessage) { |
|
|
|
// Publish Event so that a Profile Engine can deal with it. |
|
|
|