|
|
|
@ -10,6 +10,7 @@ import (
|
|
|
|
|
"errors"
|
|
|
|
|
"git.openprivacy.ca/openprivacy/libricochet-go/connectivity"
|
|
|
|
|
"git.openprivacy.ca/openprivacy/libricochet-go/log"
|
|
|
|
|
"git.openprivacy.ca/openprivacy/libricochet-go/utils"
|
|
|
|
|
"github.com/golang/protobuf/proto"
|
|
|
|
|
"golang.org/x/crypto/ed25519"
|
|
|
|
|
"sync"
|
|
|
|
@ -73,6 +74,7 @@ func NewProtocolEngine(identity primitives.Identity, privateKey ed25519.PrivateK
|
|
|
|
|
|
|
|
|
|
engine.eventManager.Subscribe(event.ProtocolEngineStartListen, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.PeerRequest, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.RetryPeerRequest, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.InvitePeerToGroup, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.JoinServer, engine.queue)
|
|
|
|
|
engine.eventManager.Subscribe(event.SendMessageToGroup, engine.queue)
|
|
|
|
@ -111,8 +113,16 @@ func (e *engine) eventHandler() {
|
|
|
|
|
case event.StatusRequest:
|
|
|
|
|
e.eventManager.Publish(event.Event{EventType: event.ProtocolEngineStatus, EventID: ev.EventID})
|
|
|
|
|
case event.PeerRequest:
|
|
|
|
|
e.blocked.Store(ev.Data[event.RemotePeer], false)
|
|
|
|
|
go e.peerWithOnion(ev.Data[event.RemotePeer])
|
|
|
|
|
if utils.IsValidHostname(ev.Data[event.RemotePeer]) {
|
|
|
|
|
e.blocked.Store(ev.Data[event.RemotePeer], false)
|
|
|
|
|
go e.peerWithOnion(ev.Data[event.RemotePeer])
|
|
|
|
|
}
|
|
|
|
|
case event.RetryPeerRequest:
|
|
|
|
|
// This event allows engine to treat (automated) retry peering requests differently to user-specified
|
|
|
|
|
// peer events
|
|
|
|
|
if utils.IsValidHostname(ev.Data[event.RemotePeer]) {
|
|
|
|
|
go e.peerWithOnion(ev.Data[event.RemotePeer])
|
|
|
|
|
}
|
|
|
|
|
case event.InvitePeerToGroup:
|
|
|
|
|
e.sendMessageToPeer(ev.EventID, ev.Data[event.RemotePeer], event.ContextInvite, []byte(ev.Data[event.GroupInvite]))
|
|
|
|
|
case event.JoinServer:
|
|
|
|
|