diff options
author | Joe Crayne <joe@jerkface.net> | 2018-11-27 22:39:17 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2018-12-16 14:08:26 -0500 |
commit | aa0dd020cee882e218c9ab9eb6b75f142abfd8d5 (patch) | |
tree | 12333ca232fcbdb341c65fc2b3ceb36fd4688afe /examples/dhtd.hs | |
parent | 7e1dff874444dcc4e1e15adb2ef5bd0946526519 (diff) |
group chat invite accepted message.
Diffstat (limited to 'examples/dhtd.hs')
-rw-r--r-- | examples/dhtd.hs | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/examples/dhtd.hs b/examples/dhtd.hs index a602b772..6756b14b 100644 --- a/examples/dhtd.hs +++ b/examples/dhtd.hs | |||
@@ -115,6 +115,7 @@ import qualified Connection.Tcp as Tcp (ConnectionEvent(..),noCleanUp,TCPStatus) | |||
115 | import DPut | 115 | import DPut |
116 | import DebugTag | 116 | import DebugTag |
117 | import LocalChat | 117 | import LocalChat |
118 | import ToxChat | ||
118 | import MUC | 119 | import MUC |
119 | 120 | ||
120 | 121 | ||
@@ -1022,7 +1023,7 @@ clientSession s@Session{..} sock cnum h = do | |||
1022 | ] | 1023 | ] |
1023 | rs = map mkrow cs | 1024 | rs = map mkrow cs |
1024 | return $ do | 1025 | return $ do |
1025 | hPutClient h $ showColumns rs | 1026 | hPutClient h $ "connections\n" ++ showColumns rs |
1026 | 1027 | ||
1027 | ("help", s) | Just DHT{..} <- Map.lookup netname dhts | 1028 | ("help", s) | Just DHT{..} <- Map.lookup netname dhts |
1028 | -> cmd0 $ do | 1029 | -> cmd0 $ do |
@@ -1157,11 +1158,12 @@ newXmmpSink session@(Tox.NCrypto { ncOutgoingQueue = outGoingQVar }) = C.awaitFo | |||
1157 | 1158 | ||
1158 | onNewToxSession :: XMPPServer | 1159 | onNewToxSession :: XMPPServer |
1159 | -> TVar (Map.Map Uniq24 AggregateSession) | 1160 | -> TVar (Map.Map Uniq24 AggregateSession) |
1161 | -> InviteCache IO | ||
1160 | -> ContactInfo extra | 1162 | -> ContactInfo extra |
1161 | -> SockAddr | 1163 | -> SockAddr |
1162 | -> Tox.Session | 1164 | -> Tox.Session |
1163 | -> IO () | 1165 | -> IO () |
1164 | onNewToxSession sv ssvar ContactInfo{accounts} addrTox netcrypto = do | 1166 | onNewToxSession sv ssvar invc ContactInfo{accounts} addrTox netcrypto = do |
1165 | let them s = Tox.longTermKey $ runIdentity cookie -- remote tox key | 1167 | let them s = Tox.longTermKey $ runIdentity cookie -- remote tox key |
1166 | where Tox.Cookie _ cookie = Tox.handshakeCookie (sReceivedHandshake s) | 1168 | where Tox.Cookie _ cookie = Tox.handshakeCookie (sReceivedHandshake s) |
1167 | 1169 | ||
@@ -1193,7 +1195,7 @@ onNewToxSession sv ssvar ContactInfo{accounts} addrTox netcrypto = do | |||
1193 | _ -> retry) | 1195 | _ -> retry) |
1194 | (return ()) | 1196 | (return ()) |
1195 | toxSnk = C.mapM_ (uncurry $ dispatchMessage c) | 1197 | toxSnk = C.mapM_ (uncurry $ dispatchMessage c) |
1196 | xmppSrc = toxSrc .| C.map snd .| toxToXmpp addrTox (me s) (xmppHostname $ them s) | 1198 | xmppSrc = toxSrc .| toxToXmpp (rememberInvite invc c) addrTox (me s) (xmppHostname $ them s) |
1197 | xmppSnk = flushPassThrough xmppToTox | 1199 | xmppSnk = flushPassThrough xmppToTox |
1198 | .| C.mapMaybe (\case Flush -> Nothing | 1200 | .| C.mapMaybe (\case Flush -> Nothing |
1199 | Chunk x -> Just (Nothing,x)) | 1201 | Chunk x -> Just (Nothing,x)) |
@@ -1288,11 +1290,14 @@ selectManager mtman tcp profile = case T.splitAt 43 profile of | |||
1288 | 1290 | ||
1289 | initTox :: Options | 1291 | initTox :: Options |
1290 | -> TVar (Map.Map Uniq24 AggregateSession) | 1292 | -> TVar (Map.Map Uniq24 AggregateSession) |
1291 | -> TVar Tox.AnnouncedKeys -> Maybe XMPPServer -> IO ( Maybe (Tox.Tox JabberClients) , IO () | 1293 | -> TVar Tox.AnnouncedKeys |
1294 | -> Maybe XMPPServer | ||
1295 | -> InviteCache IO | ||
1296 | -> IO ( Maybe (Tox.Tox JabberClients) , IO () | ||
1292 | , Map.Map String DHT | 1297 | , Map.Map String DHT |
1293 | , IO [SockAddr] | 1298 | , IO [SockAddr] |
1294 | , [SockAddr]) | 1299 | , [SockAddr]) |
1295 | initTox opts ssvar keysdb mbxmpp = case porttox opts of | 1300 | initTox opts ssvar keysdb mbxmpp invc = case porttox opts of |
1296 | "" -> return (Nothing,return (), Map.empty, return [],[]) | 1301 | "" -> return (Nothing,return (), Map.empty, return [],[]) |
1297 | toxport -> do | 1302 | toxport -> do |
1298 | addrTox <- getBindAddress toxport (ip6tox opts) | 1303 | addrTox <- getBindAddress toxport (ip6tox opts) |
@@ -1301,7 +1306,7 @@ initTox opts ssvar keysdb mbxmpp = case porttox opts of | |||
1301 | addrTox | 1306 | addrTox |
1302 | (case mbxmpp of | 1307 | (case mbxmpp of |
1303 | Nothing -> \_ _ _ -> return () | 1308 | Nothing -> \_ _ _ -> return () |
1304 | Just xmpp -> onNewToxSession xmpp ssvar) | 1309 | Just xmpp -> onNewToxSession xmpp ssvar invc) |
1305 | (dhtkey opts) | 1310 | (dhtkey opts) |
1306 | (\_ _ -> return ()) -- TODO: TCP relay send | 1311 | (\_ _ -> return ()) -- TODO: TCP relay send |
1307 | (quitTox, toxStrap4, toxStrap6) <- Tox.forkTox tox True | 1312 | (quitTox, toxStrap4, toxStrap6) <- Tox.forkTox tox True |
@@ -1493,11 +1498,12 @@ initJabber :: Options | |||
1493 | -> Announcer | 1498 | -> Announcer |
1494 | -> Maybe (Tox.Tox JabberClients) | 1499 | -> Maybe (Tox.Tox JabberClients) |
1495 | -> Map.Map String DHT | 1500 | -> Map.Map String DHT |
1501 | -> MUC | ||
1496 | -> IO ( Maybe XMPPServer | 1502 | -> IO ( Maybe XMPPServer |
1497 | , Maybe (Manager TCPStatus T.Text) | 1503 | , Maybe (Manager TCPStatus T.Text) |
1498 | , Maybe (PresenceState Pending) | 1504 | , Maybe (PresenceState Pending) |
1499 | ) | 1505 | ) |
1500 | initJabber opts ssvar announcer mbtox toxdhts = case portxmpp opts of | 1506 | initJabber opts ssvar announcer mbtox toxdhts toxchat = case portxmpp opts of |
1501 | "" -> return (Nothing,Nothing,Nothing) | 1507 | "" -> return (Nothing,Nothing,Nothing) |
1502 | p -> do | 1508 | p -> do |
1503 | cport <- getBindAddress p True{-IPv6 supported-} | 1509 | cport <- getBindAddress p True{-IPv6 supported-} |
@@ -1522,7 +1528,8 @@ initJabber opts ssvar announcer mbtox toxdhts = case portxmpp opts of | |||
1522 | state <- newPresenceState cw tman sv (selectManager tman tcp) | 1528 | state <- newPresenceState cw tman sv (selectManager tman tcp) |
1523 | chat <- atomically newMUC | 1529 | chat <- atomically newMUC |
1524 | quitChatService <- forkLocalChat chat | 1530 | quitChatService <- forkLocalChat chat |
1525 | let chats = Map.singleton "chat" chat | 1531 | let chats = Map.fromList [ ("local", chat) |
1532 | , ("ngc", toxchat) ] | ||
1526 | forkXmpp sv (presenceHooks state chats (verbosity opts) (Just cport) (Just sport)) | 1533 | forkXmpp sv (presenceHooks state chats (verbosity opts) (Just cport) (Just sport)) |
1527 | conns <- xmppConnections sv | 1534 | conns <- xmppConnections sv |
1528 | return (Just sv, Just conns, Just state) | 1535 | return (Just sv, Just conns, Just state) |
@@ -1546,6 +1553,9 @@ main = do | |||
1546 | forM ([minBound .. maxBound]::[DebugTag]) setQuiet | 1553 | forM ([minBound .. maxBound]::[DebugTag]) setQuiet |
1547 | forM (verboseTags opts) setVerbose | 1554 | forM (verboseTags opts) setVerbose |
1548 | 1555 | ||
1556 | toxchat <- atomically newMUC | ||
1557 | (quitToxChat,invc) <- forkToxChat toxchat | ||
1558 | |||
1549 | (quitBt,btdhts,btips,baddrs) <- case portbt opts of | 1559 | (quitBt,btdhts,btips,baddrs) <- case portbt opts of |
1550 | "" -> return (return (), Map.empty,return [],[]) | 1560 | "" -> return (return (), Map.empty,return [],[]) |
1551 | p -> do | 1561 | p -> do |
@@ -1638,9 +1648,9 @@ main = do | |||
1638 | ssvar <- atomically $ newTVar Map.empty | 1648 | ssvar <- atomically $ newTVar Map.empty |
1639 | rec (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr]),msv,mconns,mstate) <- do | 1649 | rec (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr]),msv,mconns,mstate) <- do |
1640 | 1650 | ||
1641 | (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr])) <- initTox opts ssvar keysdb msv | 1651 | (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr])) <- initTox opts ssvar keysdb msv invc |
1642 | 1652 | ||
1643 | (msv,mconns,mstate) <- initJabber opts ssvar announcer mbtox toxdhts | 1653 | (msv,mconns,mstate) <- initJabber opts ssvar announcer mbtox toxdhts toxchat |
1644 | 1654 | ||
1645 | return (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr]),msv,mconns,mstate) | 1655 | return (mbtox,quitTox,toxdhts,toxips,(taddrs::[SockAddr]),msv,mconns,mstate) |
1646 | 1656 | ||