diff options
author | Joe Crayne <joe@jerkface.net> | 2020-01-10 02:51:51 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-10 02:51:51 -0500 |
commit | 8df4213da5b8ff9faff6194a06bd2c9c00dbad16 (patch) | |
tree | 53b234d79175a28a0b36aae11a34a5b395df2376 /dht/src/Network/Tox.hs | |
parent | 8ddaf16880b3dcc8cb30a36c46c7edd1f9fe4b3c (diff) |
First successful TCP relay mediated chat link!
Diffstat (limited to 'dht/src/Network/Tox.hs')
-rw-r--r-- | dht/src/Network/Tox.hs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/dht/src/Network/Tox.hs b/dht/src/Network/Tox.hs index 270a9036..1a3bee79 100644 --- a/dht/src/Network/Tox.hs +++ b/dht/src/Network/Tox.hs | |||
@@ -315,8 +315,9 @@ newToxOverTransport keydb addr onNewSession (crypto,roster) udp tcp = do | |||
315 | let lookupClose _ = return Nothing | 315 | let lookupClose _ = return Nothing |
316 | 316 | ||
317 | mkrouting <- DHT.newRouting addr crypto updateIP updateIP | 317 | mkrouting <- DHT.newRouting addr crypto updateIP updateIP |
318 | (orouter,relaynet,onioncryptTCP) <- newOnionRouter crypto (dput XRoutes) (maybe False (const True) tcp) | 318 | (orouter,relaynet,onioncryptTCP0) <- newOnionRouter crypto (dput XRoutes) (maybe False (const True) tcp) |
319 | (cryptonet,dhtcrypt,onioncryptUDP,dtacrypt,handshakes) | 319 | (dtacryptTCP,onioncryptTCP) <- partitionTransportM (Onion.parseDataToRoute crypto) (Onion.encodeDataToRoute crypto) onioncryptTCP0 |
320 | (cryptonet,dhtcrypt,onioncryptUDP,dtacryptUDP,handshakes) | ||
320 | <- toxTransport crypto orouter lookupClose addr udp relaynet | 321 | <- toxTransport crypto orouter lookupClose addr udp relaynet |
321 | (\dst x -> sendMessage (clientNet $ tcpClient $ tcpKademliaClient orouter) dst (True,x)) | 322 | (\dst x -> sendMessage (clientNet $ tcpClient $ tcpKademliaClient orouter) dst (True,x)) |
322 | (fromMaybe (\_ _ -> return ()) tcp) | 323 | (fromMaybe (\_ _ -> return ()) tcp) |
@@ -358,6 +359,10 @@ newToxOverTransport keydb addr onNewSession (crypto,roster) udp tcp = do | |||
358 | onioncrypt <- mergeTransports $ DMap.fromList | 359 | onioncrypt <- mergeTransports $ DMap.fromList |
359 | [ Multi.OnionUDP :=> ByAddress onioncryptUDP | 360 | [ Multi.OnionUDP :=> ByAddress onioncryptUDP |
360 | , Multi.OnionTCP :=> ByAddress {- $ onInbound updateOnTCP -} onioncryptTCP ] | 361 | , Multi.OnionTCP :=> ByAddress {- $ onInbound updateOnTCP -} onioncryptTCP ] |
362 | dtacrypt0 <- mergeTransports $ DMap.fromList | ||
363 | [ Multi.RendezvousUDP :=> ByAddress dtacryptUDP | ||
364 | , Multi.RendezvousTCP :=> ByAddress dtacryptTCP | ||
365 | ] | ||
361 | oniondrg <- drgNew | 366 | oniondrg <- drgNew |
362 | let onionnet = layerTransportM | 367 | let onionnet = layerTransportM |
363 | (\msg od -> Onion.decrypt crypto msg $ Multi.untagOnion od) | 368 | (\msg od -> Onion.decrypt crypto msg $ Multi.untagOnion od) |
@@ -373,6 +378,9 @@ newToxOverTransport keydb addr onNewSession (crypto,roster) udp tcp = do | |||
373 | _ -> return Nothing | 378 | _ -> return Nothing |
374 | return (msg', maybe (Multi.OnionUDP ==> od') (const $ Multi.OnionTCP ==> od') mtcp)) | 379 | return (msg', maybe (Multi.OnionUDP ==> od') (const $ Multi.OnionTCP ==> od') mtcp)) |
375 | onioncrypt | 380 | onioncrypt |
381 | dtacrypt = layerTransport (\msg addr -> Right (msg,Multi.untagRendezvous addr)) | ||
382 | (\msg addr -> (msg, Multi.RendezvousUDP ==> addr)) | ||
383 | dtacrypt0 | ||
376 | onionclient <- newClient oniondrg onionnet (const Onion.classify) | 384 | onionclient <- newClient oniondrg onionnet (const Onion.classify) |
377 | (getOnionAlias crypto $ R.thisNode <$> readTVar (DHT.routing4 $ mkrouting dhtclient)) | 385 | (getOnionAlias crypto $ R.thisNode <$> readTVar (DHT.routing4 $ mkrouting dhtclient)) |
378 | (const $ Onion.handlers onionnet (mkrouting dhtclient) toks keydb) | 386 | (const $ Onion.handlers onionnet (mkrouting dhtclient) toks keydb) |