summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2020-01-10 02:51:51 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-10 02:51:51 -0500
commit8df4213da5b8ff9faff6194a06bd2c9c00dbad16 (patch)
tree53b234d79175a28a0b36aae11a34a5b395df2376 /dht/src/Network/Tox.hs
parent8ddaf16880b3dcc8cb30a36c46c7edd1f9fe4b3c (diff)
First successful TCP relay mediated chat link!
Diffstat (limited to 'dht/src/Network/Tox.hs')
-rw-r--r--dht/src/Network/Tox.hs12
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)