diff options
author | Joe Crayne <joe@jerkface.net> | 2019-12-14 16:11:03 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-01 23:26:49 -0500 |
commit | d5efdc327bbb69a905043df45415817e318e38ee (patch) | |
tree | 7be975048f3e40c27811bdb39ba92d871a42588c /dht/examples | |
parent | 8c04d9cca70241bebe4b94b779fe7bbfe6140f51 (diff) |
Multi Transports: TCP for DHT/Cookies/Handshakes.
Diffstat (limited to 'dht/examples')
-rw-r--r-- | dht/examples/dhtd.hs | 12 | ||||
-rw-r--r-- | dht/examples/testTox.hs | 13 |
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) | |||
35 | import Data.Char | 35 | import Data.Char |
36 | import Data.Conduit as C | 36 | import Data.Conduit as C |
37 | import qualified Data.Conduit.List as C | 37 | import qualified Data.Conduit.List as C |
38 | import Data.Dependent.Sum | ||
38 | import Data.Function | 39 | import Data.Function |
39 | import Data.Functor.Identity | 40 | import Data.Functor.Identity |
40 | import Data.Hashable | 41 | import Data.Hashable |
@@ -66,6 +67,7 @@ import Announcer.Tox | |||
66 | import ToxManager | 67 | import ToxManager |
67 | import Codec.AsciiKey256 | 68 | import Codec.AsciiKey256 |
68 | import Crypto.Tox -- (zeros32,SecretKey,PublicKey, generateSecretKey, toPublic, encodeSecret, decodeSecret, userKeys) | 69 | import Crypto.Tox -- (zeros32,SecretKey,PublicKey, generateSecretKey, toPublic, encodeSecret, decodeSecret, userKeys) |
70 | import qualified Data.Tox.DHT.Multi as Multi | ||
69 | import DebugUtil | 71 | import DebugUtil |
70 | import Network.UPNP as UPNP | 72 | import Network.UPNP as UPNP |
71 | import Network.Address hiding (NodeId, NodeInfo(..)) | 73 | import 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 | |||
13 | import Control.Monad | 13 | import Control.Monad |
14 | import Control.Monad.STM | 14 | import Control.Monad.STM |
15 | import Crypto.Tox | 15 | import Crypto.Tox |
16 | import Data.Dependent.Sum | ||
16 | import qualified Data.IntMap.Strict as IntMap | 17 | import qualified Data.IntMap.Strict as IntMap |
17 | import Data.Function | 18 | import Data.Function |
19 | import Data.Tox.Msg | ||
20 | import qualified Data.Tox.DHT.Multi as Multi | ||
18 | import DebugUtil | 21 | import DebugUtil |
19 | import DPut | 22 | import DPut |
20 | import DebugTag | 23 | import DebugTag |
@@ -34,8 +37,6 @@ import qualified Data.HashMap.Strict as HashMap | |||
34 | import qualified Data.Map.Strict as Map | 37 | import qualified Data.Map.Strict as Map |
35 | import Data.Time.Clock.POSIX | 38 | import Data.Time.Clock.POSIX |
36 | import System.Exit | 39 | import System.Exit |
37 | import Data.Dependent.Sum | ||
38 | import Data.Tox.Msg | ||
39 | 40 | ||
40 | makeToxNode :: UDPTransport -> Maybe SecretKey | 41 | makeToxNode :: 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 | ||
75 | netCrypto :: Tox extra -> SecretKey -> NodeInfo -> PublicKey -> IO () | 76 | netCrypto :: Tox extra -> SecretKey -> NodeInfo -> PublicKey -> IO () |
76 | netCrypto tox me ni them = do | 77 | netCrypto 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 | ||