summaryrefslogtreecommitdiff
path: root/dht/examples
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2019-12-14 16:11:03 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-01 23:26:49 -0500
commitd5efdc327bbb69a905043df45415817e318e38ee (patch)
tree7be975048f3e40c27811bdb39ba92d871a42588c /dht/examples
parent8c04d9cca70241bebe4b94b779fe7bbfe6140f51 (diff)
Multi Transports: TCP for DHT/Cookies/Handshakes.
Diffstat (limited to 'dht/examples')
-rw-r--r--dht/examples/dhtd.hs12
-rw-r--r--dht/examples/testTox.hs13
2 files changed, 15 insertions, 10 deletions
diff --git a/dht/examples/dhtd.hs b/dht/examples/dhtd.hs
index 0f95f562..bd12821a 100644
--- a/dht/examples/dhtd.hs
+++ b/dht/examples/dhtd.hs
@@ -35,6 +35,7 @@ import Data.Bits (xor)
35import Data.Char 35import Data.Char
36import Data.Conduit as C 36import Data.Conduit as C
37import qualified Data.Conduit.List as C 37import qualified Data.Conduit.List as C
38import Data.Dependent.Sum
38import Data.Function 39import Data.Function
39import Data.Functor.Identity 40import Data.Functor.Identity
40import Data.Hashable 41import Data.Hashable
@@ -66,6 +67,7 @@ import Announcer.Tox
66import ToxManager 67import ToxManager
67import Codec.AsciiKey256 68import Codec.AsciiKey256
68import Crypto.Tox -- (zeros32,SecretKey,PublicKey, generateSecretKey, toPublic, encodeSecret, decodeSecret, userKeys) 69import Crypto.Tox -- (zeros32,SecretKey,PublicKey, generateSecretKey, toPublic, encodeSecret, decodeSecret, userKeys)
70import qualified Data.Tox.DHT.Multi as Multi
69import DebugUtil 71import DebugUtil
70import Network.UPNP as UPNP 72import Network.UPNP as UPNP
71import Network.Address hiding (NodeId, NodeInfo(..)) 73import Network.Address hiding (NodeId, NodeInfo(..))
@@ -1417,7 +1419,7 @@ initTox opts ssvar keysdb mbxmpp invc = case porttox opts of
1417 { dhtBuckets = bkts (Tox.toxRouting tox) 1419 { dhtBuckets = bkts (Tox.toxRouting tox)
1418 , dhtPing = Map.fromList 1420 , dhtPing = Map.fromList
1419 [ ("ping", DHTPing 1421 [ ("ping", DHTPing
1420 { pingQuery = noArgPing $ fmap (bool Nothing (Just ())) . Tox.ping (Tox.toxDHT tox) 1422 { pingQuery = noArgPing $ fmap (bool Nothing (Just ())) . Tox.pingUDP (Tox.toxDHT tox)
1421 , pingShowResult = show 1423 , pingShowResult = show
1422 }) 1424 })
1423 , ("cookie", DHTPing 1425 , ("cookie", DHTPing
@@ -1426,6 +1428,7 @@ initTox opts ssvar keysdb mbxmpp invc = case porttox opts of
1426 -> Tox.cookieRequest (Tox.toxCryptoKeys tox) 1428 -> Tox.cookieRequest (Tox.toxCryptoKeys tox)
1427 (Tox.toxDHT tox) 1429 (Tox.toxDHT tox)
1428 (Tox.id2key mykey) 1430 (Tox.id2key mykey)
1431 . (Multi.UDP ==>)
1429 _ -> const $ return Nothing 1432 _ -> const $ return Nothing
1430 , pingShowResult = show 1433 , pingShowResult = show
1431 })] 1434 })]
@@ -1434,7 +1437,7 @@ initTox opts ssvar keysdb mbxmpp invc = case porttox opts of
1434 { qsearch = Tox.nodeSearch (Tox.toxDHT tox) 1437 { qsearch = Tox.nodeSearch (Tox.toxDHT tox)
1435 (Tox.nodesOfInterest $ Tox.toxRouting tox) 1438 (Tox.nodesOfInterest $ Tox.toxRouting tox)
1436 , qhandler = (\ni -> fmap Tox.unwrapNodes 1439 , qhandler = (\ni -> fmap Tox.unwrapNodes
1437 . Tox.getNodesH (Tox.toxRouting tox) ni 1440 . Tox.getNodesH (Tox.toxRouting tox) (Multi.UDP ==> ni)
1438 . Tox.GetNodes) 1441 . Tox.GetNodes)
1439 , qshowR = show -- NodeInfo 1442 , qshowR = show -- NodeInfo
1440 , qshowTok = (const Nothing) 1443 , qshowTok = (const Nothing)
@@ -1444,7 +1447,8 @@ initTox opts ssvar keysdb mbxmpp invc = case porttox opts of
1444 , qhandler = -- qhandler :: ni -> nid -> IO ([ni], [r], tok) 1447 , qhandler = -- qhandler :: ni -> nid -> IO ([ni], [r], tok)
1445 (\ni nid -> 1448 (\ni nid ->
1446 Tox.unwrapAnnounceResponse Nothing 1449 Tox.unwrapAnnounceResponse Nothing
1447 <$> clientAddress (Tox.toxDHT tox) Nothing 1450 <$> fmap (fromJust . Multi.udpNode)
1451 (clientAddress (Tox.toxDHT tox) Nothing)
1448 <*> Tox.announceH (Tox.toxRouting tox) 1452 <*> Tox.announceH (Tox.toxRouting tox)
1449 (Tox.toxTokens tox) 1453 (Tox.toxTokens tox)
1450 (Tox.toxAnnouncedKeys tox) 1454 (Tox.toxAnnouncedKeys tox)
@@ -1800,7 +1804,7 @@ main = do
1800 let defaultToxData = do 1804 let defaultToxData = do
1801 rster <- Tox.newContactInfo 1805 rster <- Tox.newContactInfo
1802 crypto <- newCrypto 1806 crypto <- newCrypto
1803 (orouter,_) <- newOnionRouter crypto (dput XMisc) (enableTCPDHT opts) 1807 (orouter,_,_) <- newOnionRouter crypto (dput XMisc) False -- (enableTCPDHT opts)
1804 return (rster, orouter) 1808 return (rster, orouter)
1805 (rstr,orouter) <- fromMaybe defaultToxData $ do 1809 (rstr,orouter) <- fromMaybe defaultToxData $ do
1806 tox <- mbtox 1810 tox <- mbtox
diff --git a/dht/examples/testTox.hs b/dht/examples/testTox.hs
index 6db977be..36162163 100644
--- a/dht/examples/testTox.hs
+++ b/dht/examples/testTox.hs
@@ -13,8 +13,11 @@ import Control.Concurrent.STM.TVar
13import Control.Monad 13import Control.Monad
14import Control.Monad.STM 14import Control.Monad.STM
15import Crypto.Tox 15import Crypto.Tox
16import Data.Dependent.Sum
16import qualified Data.IntMap.Strict as IntMap 17import qualified Data.IntMap.Strict as IntMap
17import Data.Function 18import Data.Function
19import Data.Tox.Msg
20import qualified Data.Tox.DHT.Multi as Multi
18import DebugUtil 21import DebugUtil
19import DPut 22import DPut
20import DebugTag 23import DebugTag
@@ -34,8 +37,6 @@ import qualified Data.HashMap.Strict as HashMap
34import qualified Data.Map.Strict as Map 37import qualified Data.Map.Strict as Map
35import Data.Time.Clock.POSIX 38import Data.Time.Clock.POSIX
36import System.Exit 39import System.Exit
37import Data.Dependent.Sum
38import Data.Tox.Msg
39 40
40makeToxNode :: UDPTransport -> Maybe SecretKey 41makeToxNode :: UDPTransport -> Maybe SecretKey
41 -> ( ContactInfo extra -> SockAddr -> Session -> IO () ) 42 -> ( ContactInfo extra -> SockAddr -> Session -> IO () )
@@ -74,11 +75,11 @@ sessionChan remotes tchan acnt saddr s = do
74 75
75netCrypto :: Tox extra -> SecretKey -> NodeInfo -> PublicKey -> IO () 76netCrypto :: Tox extra -> SecretKey -> NodeInfo -> PublicKey -> IO ()
76netCrypto tox me ni them = do 77netCrypto tox me ni them = do
77 mcookie <- cookieRequest (toxCryptoKeys tox) (toxDHT tox) (toPublic me) ni 78 mcookie <- cookieRequest (toxCryptoKeys tox) (toxDHT tox) (toPublic me) (Multi.UDP ==> ni)
78 case mcookie of 79 case mcookie of
79 Just cookie -> do 80 Just cookie -> do
80 hs <- cacheHandshake (toxHandshakeCache tox) me them ni cookie 81 hs <- cacheHandshake (toxHandshakeCache tox) me them (Multi.UDP ==> ni) cookie
81 sendMessage (toxHandshakes tox) (nodeAddr ni) hs 82 sendMessage (toxHandshakes tox) (Multi.SessionUDP ==> nodeAddr ni) hs
82 Nothing -> do 83 Nothing -> do
83 dput XUnused "Timeout requesting cookie." 84 dput XUnused "Timeout requesting cookie."
84 85
@@ -145,7 +146,7 @@ main = do
145 } 146 }
146 ) 147 )
147 148
148 DHT.ping (toxDHT a_Ct7g5azVcJ8KnvxzbXs9GqeqcjrP7VdZXIC'uHeTlRf) b 149 DHT.pingUDP (toxDHT a_Ct7g5azVcJ8KnvxzbXs9GqeqcjrP7VdZXIC'uHeTlRf) b
149 150
150 -- sendMessage (toxHandshakes a_Ct7g5azVcJ8KnvxzbXs9GqeqcjrP7VdZXIC'uHeTlRf) (nodeAddr b) hs 151 -- sendMessage (toxHandshakes a_Ct7g5azVcJ8KnvxzbXs9GqeqcjrP7VdZXIC'uHeTlRf) (nodeAddr b) hs
151 152