From 37a7fa4978f89072d9231bcc9bd0848bb52c676c Mon Sep 17 00:00:00 2001 From: joe Date: Thu, 12 Oct 2017 05:41:09 -0400 Subject: WIP Onion routing. --- examples/dhtd.hs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'examples') diff --git a/examples/dhtd.hs b/examples/dhtd.hs index 0b208362..1ab2778a 100644 --- a/examples/dhtd.hs +++ b/examples/dhtd.hs @@ -45,6 +45,7 @@ import Control.Concurrent.Lifted import GHC.Conc (labelThread) #endif +import Crypto.Tox (zeros32) import Network.UPNP as UPNP import Network.Address hiding (NodeId, NodeInfo(..)) import Network.Kademlia.Search @@ -68,6 +69,7 @@ import Data.Ord import Data.Time.Clock.POSIX import qualified Network.Tox.DHT.Transport as Tox import qualified Network.Tox.DHT.Handlers as Tox +import qualified Network.Tox.Onion.Transport as Tox import qualified Network.Tox.Onion.Handlers as Tox import Data.Typeable @@ -99,7 +101,7 @@ data DHTQuery nid ni = forall addr r tok. , Typeable r )=> DHTQuery { qsearch :: Search nid addr tok ni r - , qhandler :: ni -> nid -> IO ([ni], [r], tok) + , qhandler :: ni -> nid -> IO ([ni], [r], tok) -- ^ Invoked on local node, when there is no query destination. , qshowR :: r -> String , qshowTok :: tok -> Maybe String } @@ -585,8 +587,21 @@ main = do (\ni -> fmap Tox.unwrapNodes . Tox.getNodesH (Tox.toxRouting tox) ni . Tox.GetNodes) - show + show -- NodeInfo (const Nothing)) + , ("toxid", DHTQuery (Tox.toxidSearch (Tox.onionTimeout tox) $ Tox.toxOnion tox) + -- qhandler :: ni -> nid -> IO ([ni], [r], tok) + (\ni nid -> + -- _todo :: IO Tox.AnnounceResponse + -- -> IO ([Tox.NodeInfo], [Crypto.PubKey.Curve25519.PublicKey], b0) + Tox.unwrapAnnounceResponse + <$> Tox.announceH (Tox.toxRouting tox) + (Tox.toxTokens tox) + (Tox.toxAnnouncedKeys tox) + (Tox.OnionDestination ni Nothing) + (Tox.AnnounceRequest zeros32 nid Tox.zeroID)) + show -- PublicKey + (const Nothing)) -- TODO: show token ] , dhtParseId = readEither :: String -> Either String Tox.NodeId , dhtSearches = toxSearches -- cgit v1.2.3