diff --git a/go.mod b/go.mod index dfc0fbe..441eb16 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module git.openprivacy.ca/flutter/libcwtch-go go 1.15 require ( - cwtch.im/cwtch v0.6.5 - git.openprivacy.ca/openprivacy/connectivity v1.4.0 + cwtch.im/cwtch v0.6.6 + git.openprivacy.ca/openprivacy/connectivity v1.4.2 git.openprivacy.ca/openprivacy/log v1.0.2 -) +) \ No newline at end of file diff --git a/go.sum b/go.sum index 5374324..419c83d 100644 --- a/go.sum +++ b/go.sum @@ -12,10 +12,16 @@ cwtch.im/cwtch v0.6.4 h1:7P7+c7pBw2/aGE1cVWWLlLWhkVrGwuhQomIRbWB840E= cwtch.im/cwtch v0.6.4/go.mod h1:snHZIZwRQPAZG2LRZsN5SpAIbeR597VJoDS+KHm7q9w= cwtch.im/cwtch v0.6.5 h1:s2sTn7rmHzAEGYje/oWv2AvM58++x7WNauC9GxyTtho= cwtch.im/cwtch v0.6.5/go.mod h1:YnNbfZlOhEWXEEZvWpWr1G+KhuwODZkSSmdqg2/8lOI= +cwtch.im/cwtch v0.6.6 h1:GlEoAYfastcimhYsctLSbqql0RNz9t1jphAxTcCvu0M= +cwtch.im/cwtch v0.6.6/go.mod h1:KDy4lWWxcYAjeKclwVFkoTQ2dWnZcM0k3Xck+zEuBmE= cwtch.im/tapir v0.2.1 h1:t1YJB9q5sV1A9xwiiwL6WVfw3dwQWLoecunuzT1PQtw= cwtch.im/tapir v0.2.1/go.mod h1:xzzZ28adyUXNkYL1YodcHsAiTt3IJ8Loc29YVn9mIEQ= git.openprivacy.ca/cwtch.im/tapir v0.3.2 h1:thLWqqY1LkirWFcy9Tg6NgWeYbvo9xBm+s2XVnCIvpY= git.openprivacy.ca/cwtch.im/tapir v0.3.2/go.mod h1:q6RMI/TQvRN8SCtRY3GryOawMcB0uG6NjP6M77oSMx8= +git.openprivacy.ca/cwtch.im/tapir v0.3.3 h1:Q7F8JijgOMMYSy3IdZl7+r6qkWckEWV1+EY7q6MAkVs= +git.openprivacy.ca/cwtch.im/tapir v0.3.3/go.mod h1:ZMg9Jzh0n3Os2aSF4z+bx/n8WBCJBN7KCQESXperYts= +git.openprivacy.ca/cwtch.im/tapir v0.3.4 h1:g7yZkfz/vWr/t2tFXa/t0Ebr/w665uIKpxpCZ3lIPCo= +git.openprivacy.ca/cwtch.im/tapir v0.3.4/go.mod h1:+Niy2AHhQC351ZTtfhC0uLjViCICyOxCJZsIlGKKNAU= git.openprivacy.ca/openprivacy/bine v0.0.4 h1:CO7EkGyz+jegZ4ap8g5NWRuDHA/56KKvGySR6OBPW+c= git.openprivacy.ca/openprivacy/bine v0.0.4/go.mod h1:13ZqhKyqakDsN/ZkQkIGNULsmLyqtXc46XBcnuXm/mU= git.openprivacy.ca/openprivacy/connectivity v1.2.0/go.mod h1:B7vzuVmChJtSKoh0ezph5vu6DQ0gIk0zHUNG6IgXCcA= @@ -23,6 +29,10 @@ git.openprivacy.ca/openprivacy/connectivity v1.3.3 h1:OKHZ/pzY95+UNOhF74DisSYPh7 git.openprivacy.ca/openprivacy/connectivity v1.3.3/go.mod h1:DL9QitHjpyNspMUe3wjIej9gFgDK2FdRKP2JE4+7T90= git.openprivacy.ca/openprivacy/connectivity v1.4.0 h1:c7AANUCrlA4hIqXxIGDOWMtSe8CpDleD1877PShScbM= git.openprivacy.ca/openprivacy/connectivity v1.4.0/go.mod h1:bR0Myx9nm2YzWtsThRelkNMV4Pp7sPDa123O1qsAbVo= +git.openprivacy.ca/openprivacy/connectivity v1.4.1 h1:zoM+j7PFj8mQeUCNiDNMe7Uq9dhcJDOhaZcSANfeDL4= +git.openprivacy.ca/openprivacy/connectivity v1.4.1/go.mod h1:bR0Myx9nm2YzWtsThRelkNMV4Pp7sPDa123O1qsAbVo= +git.openprivacy.ca/openprivacy/connectivity v1.4.2 h1:rQFIjWunLlRmXL5Efsv+7+1cA70T6Uza6RCy2PRm9zc= +git.openprivacy.ca/openprivacy/connectivity v1.4.2/go.mod h1:bR0Myx9nm2YzWtsThRelkNMV4Pp7sPDa123O1qsAbVo= git.openprivacy.ca/openprivacy/log v1.0.0/go.mod h1:gGYK8xHtndRLDymFtmjkG26GaMQNgyhioNS82m812Iw= git.openprivacy.ca/openprivacy/log v1.0.1/go.mod h1:gGYK8xHtndRLDymFtmjkG26GaMQNgyhioNS82m812Iw= git.openprivacy.ca/openprivacy/log v1.0.2 h1:HLP4wsw4ljczFAelYnbObIs821z+jgMPCe8uODPnGQM= diff --git a/lib.go b/lib.go index a057491..775cbb1 100644 --- a/lib.go +++ b/lib.go @@ -11,6 +11,7 @@ import ( "cwtch.im/cwtch/model/attr" "cwtch.im/cwtch/peer" contact "git.openprivacy.ca/flutter/libcwtch-go/features/contacts" + "git.openprivacy.ca/openprivacy/connectivity" "encoding/json" "fmt" @@ -31,6 +32,7 @@ var application app.Application var eventHandler *utils.EventHandler var acnQueue event.Queue var contactEventsQueue event.Queue +var globalACN connectivity.ACN //export c_StartCwtch func c_StartCwtch(dir_c *C.char, len C.int, tor_c *C.char, torLen C.int) { @@ -68,7 +70,7 @@ func StartCwtch(appDir string, torPath string) { log.Errorf("\nError connecting to Tor: %v\n", err) } //acn.WaitTillBootstrapped() - + globalACN = acn newApp := app.NewApp(acn, appDir) acnQueue = event.NewQueue() newApp.GetPrimaryBus().Subscribe(event.ACNStatus, acnQueue) @@ -90,6 +92,7 @@ func StartCwtch(appDir string, torPath string) { event.NewRetValMessageFromPeer, event.NewGroupInvite, event.ServerStateChange, + event.ProtocolEngineStopped, } settings := utils.ReadGlobalSettings() settingsJson, _ := json.Marshal(settings) @@ -442,5 +445,14 @@ func SendMessage(profile, handle, msg string) { application.GetPeer(profile).SendMessageToPeer(handle, msg) } +//export c_ResetTor +func c_ResetTor() { + ResetTor() +} + +func ResetTor() { + globalACN.Restart() +} + // Leave as is, needed by ffi func main() {} diff --git a/utils/eventHandler.go b/utils/eventHandler.go index a9fc0a1..c5bd492 100644 --- a/utils/eventHandler.go +++ b/utils/eventHandler.go @@ -54,6 +54,14 @@ func (eh *EventHandler) GetNextEvent() string { func (eh *EventHandler) handleAppBusEvent(e *event.Event) string { log.Debugf("New AppBus Event to Handle: %v", e) switch e.EventType { + case event.ACNStatus: + if e.Data[event.Progress] == "100" { + for onion := range eh.app.ListPeers() { + // launch a listen thread (internally this does a check that the protocol engine is not listening) + // and as such is safe to call. + eh.app.GetPeer(onion).Listen() + } + } case event.NewPeer: onion := e.Data[event.Identity] profile := eh.app.GetPeer(e.Data[event.Identity])