diff options
46 files changed, 73 insertions, 303 deletions
diff --git a/Announcer.hs b/Announcer.hs index 1b6cd631..e4b19bd7 100644 --- a/Announcer.hs +++ b/Announcer.hs | |||
@@ -27,10 +27,7 @@ module Announcer | |||
27 | , ScheduledItem(ScheduledItem) | 27 | , ScheduledItem(ScheduledItem) |
28 | ) where | 28 | ) where |
29 | 29 | ||
30 | import qualified Data.MinMaxPSQ as MM | ||
31 | import Data.Wrapper.PSQ as PSQ | 30 | import Data.Wrapper.PSQ as PSQ |
32 | import Network.Kademlia.Routing as R | ||
33 | import Network.Kademlia.Search | ||
34 | 31 | ||
35 | import Control.Concurrent.Lifted.Instrument | 32 | import Control.Concurrent.Lifted.Instrument |
36 | import Control.Concurrent.STM | 33 | import Control.Concurrent.STM |
@@ -38,14 +35,10 @@ import Control.Monad | |||
38 | import Control.Applicative | 35 | import Control.Applicative |
39 | import Data.ByteString (ByteString) | 36 | import Data.ByteString (ByteString) |
40 | import qualified Data.ByteString.Char8 as Char8 | 37 | import qualified Data.ByteString.Char8 as Char8 |
41 | import Data.Function | ||
42 | import Data.Hashable | 38 | import Data.Hashable |
43 | import Data.Maybe | ||
44 | import Data.Ord | ||
45 | import Data.Time.Clock.POSIX | 39 | import Data.Time.Clock.POSIX |
46 | import qualified GHC.Generics as Generics | 40 | import qualified GHC.Generics as Generics |
47 | -- import Generic.Data.Internal.Meta as Lyxia | 41 | -- import Generic.Data.Internal.Meta as Lyxia |
48 | import System.IO | ||
49 | 42 | ||
50 | newtype AnnounceKey = AnnounceKey ByteString | 43 | newtype AnnounceKey = AnnounceKey ByteString |
51 | deriving (Hashable,Ord,Eq) | 44 | deriving (Hashable,Ord,Eq) |
diff --git a/Announcer/Tox.hs b/Announcer/Tox.hs index 38741d10..f8343f8d 100644 --- a/Announcer/Tox.hs +++ b/Announcer/Tox.hs | |||
@@ -13,7 +13,6 @@ module Announcer.Tox where | |||
13 | import Announcer | 13 | import Announcer |
14 | import qualified Data.MinMaxPSQ as MM | 14 | import qualified Data.MinMaxPSQ as MM |
15 | import Data.Wrapper.PSQ as PSQ | 15 | import Data.Wrapper.PSQ as PSQ |
16 | import InterruptibleDelay | ||
17 | import Network.Kademlia.Search | 16 | import Network.Kademlia.Search |
18 | 17 | ||
19 | import Control.Concurrent.Lifted.Instrument | 18 | import Control.Concurrent.Lifted.Instrument |
@@ -23,7 +22,6 @@ import Data.Hashable | |||
23 | import Data.Maybe | 22 | import Data.Maybe |
24 | import Data.Ord | 23 | import Data.Ord |
25 | import Data.Time.Clock.POSIX | 24 | import Data.Time.Clock.POSIX |
26 | import System.IO | ||
27 | 25 | ||
28 | 26 | ||
29 | announceK :: Int | 27 | announceK :: Int |
diff --git a/Connection/Tcp.hs b/Connection/Tcp.hs index 9a44f34f..e6be15b7 100644 --- a/Connection/Tcp.hs +++ b/Connection/Tcp.hs | |||
@@ -60,10 +60,7 @@ import System.IO | |||
60 | , hWaitForInput | 60 | , hWaitForInput |
61 | , hClose | 61 | , hClose |
62 | , hIsEOF | 62 | , hIsEOF |
63 | , stderr | ||
64 | , Handle | 63 | , Handle |
65 | , hFlush | ||
66 | , hPutStrLn | ||
67 | ) | 64 | ) |
68 | import Network.Socket as Socket | 65 | import Network.Socket as Socket |
69 | import Network.BSD | 66 | import Network.BSD |
@@ -759,7 +756,7 @@ bshow :: Show a => a -> ByteString | |||
759 | bshow e = S.pack . show $ e | 756 | bshow e = S.pack . show $ e |
760 | 757 | ||
761 | warn :: ByteString -> IO () | 758 | warn :: ByteString -> IO () |
762 | warn str =dputB XMisc str >> hFlush stderr | 759 | warn str =dputB XMisc str |
763 | 760 | ||
764 | debugNoise :: Monad m => t -> m () | 761 | debugNoise :: Monad m => t -> m () |
765 | debugNoise str = return () | 762 | debugNoise str = return () |
diff --git a/Data/BitSyntax.hs b/Data/BitSyntax.hs index dbb43f45..6d14d0c1 100644 --- a/Data/BitSyntax.hs +++ b/Data/BitSyntax.hs | |||
@@ -131,15 +131,15 @@ data BitBlock = -- | Unsigned 8-bit int | |||
131 | 131 | ||
132 | -- Encodes a member of the Bits class as a series of bytes and returns the | 132 | -- Encodes a member of the Bits class as a series of bytes and returns the |
133 | -- ByteString of those bytes. | 133 | -- ByteString of those bytes. |
134 | getBytes :: (Integral a, Bounded a, Bits a) => a -> BS.ByteString | 134 | getBytes :: (Integral a, Bounded a, FiniteBits a) => a -> BS.ByteString |
135 | getBytes input = | 135 | getBytes input = |
136 | let getByte _ 0 = [] | 136 | let getByte _ 0 = [] |
137 | getByte x remaining = (fromIntegral $ (x .&. 0xff)) : | 137 | getByte x remaining = (fromIntegral $ (x .&. 0xff)) : |
138 | getByte (shiftR x 8) (remaining - 1) | 138 | getByte (shiftR x 8) (remaining - 1) |
139 | in | 139 | in |
140 | if (bitSize input `mod` 8) /= 0 | 140 | if (finiteBitSize input `mod` 8) /= 0 |
141 | then error "Input data bit size must be a multiple of 8" | 141 | then error "Input data bit size must be a multiple of 8" |
142 | else BS.pack $ getByte input (bitSize input `div` 8) | 142 | else BS.pack $ getByte input (finiteBitSize input `div` 8) |
143 | 143 | ||
144 | -- Performs the work behind PackBits | 144 | -- Performs the work behind PackBits |
145 | packBits :: (Word8, Int, [Word8]) -- ^ The current byte, the number of bits | 145 | packBits :: (Word8, Int, [Word8]) -- ^ The current byte, the number of bits |
diff --git a/OnionRouter.hs b/OnionRouter.hs index f8271239..330e083a 100644 --- a/OnionRouter.hs +++ b/OnionRouter.hs | |||
@@ -11,14 +11,11 @@ import Network.QueryResponse | |||
11 | import Network.Tox.NodeId | 11 | import Network.Tox.NodeId |
12 | import Network.Tox.Onion.Transport | 12 | import Network.Tox.Onion.Transport |
13 | 13 | ||
14 | import Control.Arrow | ||
15 | import Control.Concurrent.STM | 14 | import Control.Concurrent.STM |
16 | import Control.Monad | 15 | import Control.Monad |
17 | import Crypto.PubKey.Curve25519 | ||
18 | import Crypto.Random | 16 | import Crypto.Random |
19 | import Data.Bits | 17 | import Data.Bits |
20 | import qualified Data.ByteString as B | 18 | import qualified Data.ByteString as B |
21 | import Data.Hashable | ||
22 | import qualified Data.HashMap.Strict as HashMap | 19 | import qualified Data.HashMap.Strict as HashMap |
23 | ;import Data.HashMap.Strict (HashMap) | 20 | ;import Data.HashMap.Strict (HashMap) |
24 | import qualified Data.IntMap as IntMap | 21 | import qualified Data.IntMap as IntMap |
diff --git a/PingMachine.hs b/PingMachine.hs index 4a1cb008..ccf5b1d3 100644 --- a/PingMachine.hs +++ b/PingMachine.hs | |||
@@ -2,7 +2,6 @@ | |||
2 | {-# LANGUAGE TupleSections #-} | 2 | {-# LANGUAGE TupleSections #-} |
3 | module PingMachine where | 3 | module PingMachine where |
4 | 4 | ||
5 | import Control.Applicative | ||
6 | import Control.Monad | 5 | import Control.Monad |
7 | import Data.Function | 6 | import Data.Function |
8 | #ifdef THREAD_DEBUG | 7 | #ifdef THREAD_DEBUG |
diff --git a/Presence/ControlMaybe.hs b/Presence/ControlMaybe.hs index c98a6fb9..a101d667 100644 --- a/Presence/ControlMaybe.hs +++ b/Presence/ControlMaybe.hs | |||
@@ -7,7 +7,6 @@ module ControlMaybe | |||
7 | 7 | ||
8 | -- import GHC.IO.Exception (IOException(..)) | 8 | -- import GHC.IO.Exception (IOException(..)) |
9 | import Control.Monad | 9 | import Control.Monad |
10 | import Control.Exception as Exception (IOException(..),catch) | ||
11 | import Data.Functor | 10 | import Data.Functor |
12 | import System.IO.Error | 11 | import System.IO.Error |
13 | 12 | ||
diff --git a/Presence/DNSCache.hs b/Presence/DNSCache.hs index afcc227c..ce35752e 100644 --- a/Presence/DNSCache.hs +++ b/Presence/DNSCache.hs | |||
@@ -43,7 +43,6 @@ import Data.Function | |||
43 | import Data.List | 43 | import Data.List |
44 | import Data.Ord | 44 | import Data.Ord |
45 | import Data.Maybe | 45 | import Data.Maybe |
46 | import System.IO | ||
47 | import System.IO.Error | 46 | import System.IO.Error |
48 | 47 | ||
49 | import SockAddr () | 48 | import SockAddr () |
diff --git a/Presence/PeerResolve.hs b/Presence/PeerResolve.hs index 0854b365..900688c3 100644 --- a/Presence/PeerResolve.hs +++ b/Presence/PeerResolve.hs | |||
@@ -6,24 +6,12 @@ module PeerResolve | |||
6 | , withPort | 6 | , withPort |
7 | ) where | 7 | ) where |
8 | 8 | ||
9 | import Data.List ( nub ) | ||
10 | import Data.Text ( Text ) | 9 | import Data.Text ( Text ) |
11 | import Network.Socket ( SockAddr(..) ) | 10 | import Network.Socket ( SockAddr(..) ) |
12 | import System.Endian ( fromBE32, toBE32 ) | ||
13 | import System.IO.Error ( isDoesNotExistError ) | ||
14 | import Control.Exception ( handle, ErrorCall(..) ) | ||
15 | import qualified Network.BSD as BSD | ||
16 | import qualified Data.Text as Text | ||
17 | import Control.Concurrent | ||
18 | import Control.Concurrent.STM | ||
19 | import Control.Monad | ||
20 | import Data.Maybe | ||
21 | import System.IO.Unsafe | 11 | import System.IO.Unsafe |
22 | 12 | ||
23 | import GetHostByAddr | ||
24 | import DNSCache | 13 | import DNSCache |
25 | import ConnectionKey | 14 | import ConnectionKey |
26 | import ControlMaybe | ||
27 | 15 | ||
28 | {-# NOINLINE global_dns_cache #-} | 16 | {-# NOINLINE global_dns_cache #-} |
29 | global_dns_cache :: DNSCache | 17 | global_dns_cache :: DNSCache |
diff --git a/Presence/Presence.hs b/Presence/Presence.hs index 697c1476..af6597b6 100644 --- a/Presence/Presence.hs +++ b/Presence/Presence.hs | |||
@@ -6,32 +6,27 @@ | |||
6 | module Presence where | 6 | module Presence where |
7 | 7 | ||
8 | import System.Directory | 8 | import System.Directory |
9 | import System.Environment | ||
10 | import System.IO.Error | 9 | import System.IO.Error |
11 | import System.Posix.Signals | 10 | #ifndef THREAD_DEBUG |
12 | import Control.Concurrent (threadDelay,forkIO,forkOS,killThread,throwTo) | 11 | import Control.Concurrent |
12 | #else | ||
13 | import Control.Concurrent.Lifted.Instrument | ||
14 | #endif | ||
15 | |||
13 | import Control.Concurrent.STM | 16 | import Control.Concurrent.STM |
14 | import Control.Concurrent.STM.TMVar | ||
15 | import Control.Monad.Trans | 17 | import Control.Monad.Trans |
16 | import Control.Monad.IO.Class (MonadIO, liftIO) | 18 | import Network.Socket ( SockAddr(..) ) |
17 | import Network.Socket ( SockAddr(..), PortNumber ) | ||
18 | import System.Endian (fromBE32) | ||
19 | import Data.Char | 19 | import Data.Char |
20 | import Data.List (nub, (\\), intersect, groupBy, sort, sortBy ) | 20 | import Data.List (nub, (\\), intersect, groupBy, sort, sortBy ) |
21 | import Data.Ord (comparing ) | 21 | import Data.Ord (comparing ) |
22 | import Data.Monoid ( (<>), Sum(..), getSum ) | 22 | import Data.Monoid ((<>)) |
23 | import qualified Data.Text as Text | 23 | import qualified Data.Text as Text |
24 | import qualified Data.Text.IO as Text | ||
25 | import qualified Data.Text.Encoding as Text | 24 | import qualified Data.Text.Encoding as Text |
26 | import Control.Monad | 25 | import Control.Monad |
27 | import Control.Monad.Fix | ||
28 | import qualified Network.BSD as BSD | ||
29 | import qualified Data.Text as Text | ||
30 | import Data.Text (Text) | 26 | import Data.Text (Text) |
31 | import qualified Data.Map as Map | 27 | import qualified Data.Map as Map |
32 | import Data.Map (Map) | 28 | import Data.Map (Map) |
33 | import Control.Exception ({-evaluate,-}handle,SomeException(..),bracketOnError,ErrorCall(..)) | 29 | import Control.Exception ({-evaluate,-}handle,SomeException(..)) |
34 | import System.IO.Error (isDoesNotExistError) | ||
35 | import System.Posix.User (getUserEntryForID,userName) | 30 | import System.Posix.User (getUserEntryForID,userName) |
36 | import qualified Data.ByteString.Lazy.Char8 as L | 31 | import qualified Data.ByteString.Lazy.Char8 as L |
37 | import qualified ConfigFiles | 32 | import qualified ConfigFiles |
@@ -41,14 +36,7 @@ import Data.Int (Int8) | |||
41 | import Data.XML.Types (Event) | 36 | import Data.XML.Types (Event) |
42 | import System.Posix.Types (UserID,CPid) | 37 | import System.Posix.Types (UserID,CPid) |
43 | import Control.Applicative | 38 | import Control.Applicative |
44 | #ifdef CRYPTONITE_BACKPORT | ||
45 | import Crypto.Error.Types (CryptoFailable (..)) | ||
46 | #else | ||
47 | import Crypto.Error | ||
48 | #endif | ||
49 | import Crypto.PubKey.Curve25519 (SecretKey,toPublic) | 39 | import Crypto.PubKey.Curve25519 (SecretKey,toPublic) |
50 | import Text.Read (readMaybe) | ||
51 | import System.IO | ||
52 | 40 | ||
53 | import ControlMaybe | 41 | import ControlMaybe |
54 | import LockedChan (LockedChan) | 42 | import LockedChan (LockedChan) |
@@ -61,7 +49,7 @@ import ConsoleWriter | |||
61 | import ClientState | 49 | import ClientState |
62 | import Util | 50 | import Util |
63 | import qualified Connection | 51 | import qualified Connection |
64 | import Network.Tox.NodeId (id2key,key2id) | 52 | import Network.Tox.NodeId (key2id) |
65 | import Crypto.Tox (decodeSecret) | 53 | import Crypto.Tox (decodeSecret) |
66 | import DPut | 54 | import DPut |
67 | 55 | ||
diff --git a/Presence/SockAddr.hs b/Presence/SockAddr.hs index 91a03870..b5fbf16e 100644 --- a/Presence/SockAddr.hs +++ b/Presence/SockAddr.hs | |||
@@ -2,10 +2,11 @@ | |||
2 | {-# LANGUAGE StandaloneDeriving #-} | 2 | {-# LANGUAGE StandaloneDeriving #-} |
3 | module SockAddr () where | 3 | module SockAddr () where |
4 | 4 | ||
5 | import Network.Socket ( SockAddr(..) ) | ||
6 | |||
7 | #if MIN_VERSION_network(2,4,0) | 5 | #if MIN_VERSION_network(2,4,0) |
6 | import Network.Socket () | ||
8 | #else | 7 | #else |
8 | import Network.Socket ( SockAddr(..) ) | ||
9 | |||
9 | deriving instance Ord SockAddr | 10 | deriving instance Ord SockAddr |
10 | #endif | 11 | #endif |
11 | 12 | ||
diff --git a/Presence/XMPPServer.hs b/Presence/XMPPServer.hs index cf7aca70..8d294698 100644 --- a/Presence/XMPPServer.hs +++ b/Presence/XMPPServer.hs | |||
@@ -48,10 +48,8 @@ import PeerResolve | |||
48 | import qualified Connection | 48 | import qualified Connection |
49 | import Util | 49 | import Util |
50 | import Network.Address (getBindAddress, sockAddrPort) | 50 | import Network.Address (getBindAddress, sockAddrPort) |
51 | import Blaze.ByteString.Builder (Builder) | ||
52 | 51 | ||
53 | import Debug.Trace | 52 | import Debug.Trace |
54 | import System.IO (hFlush,stdout) | ||
55 | import Control.Monad.Trans (lift) | 53 | import Control.Monad.Trans (lift) |
56 | import Control.Monad.IO.Class (MonadIO, liftIO) | 54 | import Control.Monad.IO.Class (MonadIO, liftIO) |
57 | import Control.Monad.Fix (fix) | 55 | import Control.Monad.Fix (fix) |
@@ -66,7 +64,6 @@ import Control.Concurrent.STM | |||
66 | -- import Control.Concurrent.STM.TChan | 64 | -- import Control.Concurrent.STM.TChan |
67 | import Network.SocketLike | 65 | import Network.SocketLike |
68 | import Text.Printf | 66 | import Text.Printf |
69 | import System.Posix.Signals | ||
70 | import Data.ByteString (ByteString) | 67 | import Data.ByteString (ByteString) |
71 | import qualified Data.ByteString.Char8 as Strict8 | 68 | import qualified Data.ByteString.Char8 as Strict8 |
72 | -- import qualified Data.ByteString.Lazy.Char8 as Lazy8 | 69 | -- import qualified Data.ByteString.Lazy.Char8 as Lazy8 |
@@ -86,21 +83,16 @@ import qualified Text.XML.Stream.Render as XML hiding (content) | |||
86 | import qualified Text.XML.Stream.Parse as XML | 83 | import qualified Text.XML.Stream.Parse as XML |
87 | import Data.XML.Types as XML | 84 | import Data.XML.Types as XML |
88 | import Data.Maybe | 85 | import Data.Maybe |
89 | import Data.List (nub) | ||
90 | import Data.Monoid ( (<>) ) | 86 | import Data.Monoid ( (<>) ) |
91 | import Data.Text (Text) | 87 | import Data.Text (Text) |
92 | import qualified Data.Text as Text (pack,unpack,words,intercalate) | 88 | import qualified Data.Text as Text (pack,unpack,words,intercalate) |
93 | import Data.Char (toUpper,chr,ord) | 89 | import Data.Char (chr,ord) |
94 | import Data.Map (Map) | ||
95 | import qualified Data.Map as Map | 90 | import qualified Data.Map as Map |
96 | import Data.Set (Set, (\\) ) | 91 | import Data.Set (Set, (\\) ) |
97 | import qualified Data.Set as Set | 92 | import qualified Data.Set as Set |
98 | import Data.String ( IsString(..) ) | 93 | import Data.String ( IsString(..) ) |
99 | import qualified System.Random | 94 | import qualified System.Random |
100 | import Data.Void (Void) | 95 | import Data.Void (Void) |
101 | import System.Endian (toBE32) | ||
102 | import Control.Applicative | ||
103 | import System.IO | ||
104 | import DPut | 96 | import DPut |
105 | 97 | ||
106 | -- peerport :: PortNumber | 98 | -- peerport :: PortNumber |
diff --git a/ToxManager.hs b/ToxManager.hs index 04695894..6ffa4840 100644 --- a/ToxManager.hs +++ b/ToxManager.hs | |||
@@ -14,8 +14,6 @@ import qualified Data.HashMap.Strict as HashMap | |||
14 | import qualified Data.Map as Map | 14 | import qualified Data.Map as Map |
15 | import Data.Maybe | 15 | import Data.Maybe |
16 | import qualified Data.Text as T | 16 | import qualified Data.Text as T |
17 | import Data.Time.Clock.POSIX | ||
18 | import Network.Address | ||
19 | import Network.Kademlia.Routing as R | 17 | import Network.Kademlia.Routing as R |
20 | import Network.Kademlia.Search | 18 | import Network.Kademlia.Search |
21 | import qualified Network.Tox as Tox | 19 | import qualified Network.Tox as Tox |
@@ -26,18 +24,11 @@ import qualified Network.Tox.DHT.Transport as Tox | |||
26 | import qualified Network.Tox.Onion.Handlers as Tox | 24 | import qualified Network.Tox.Onion.Handlers as Tox |
27 | import qualified Network.Tox.Onion.Transport as Tox | 25 | import qualified Network.Tox.Onion.Transport as Tox |
28 | import Presence | 26 | import Presence |
29 | import System.IO | ||
30 | import Text.Read | 27 | import Text.Read |
31 | import ToxToXMPP | 28 | import ToxToXMPP |
32 | import XMPPServer (ConnectionKey) | 29 | import XMPPServer (ConnectionKey) |
33 | import DPut | 30 | import DPut |
34 | 31 | ||
35 | #ifdef THREAD_DEBUG | ||
36 | import Control.Concurrent.Lifted.Instrument | ||
37 | #else | ||
38 | import Control.Concurrent.Lifted | ||
39 | import GHC.Conc (labelThread) | ||
40 | #endif | ||
41 | 32 | ||
42 | toxAnnounceSendData :: Tox.Tox JabberClients | 33 | toxAnnounceSendData :: Tox.Tox JabberClients |
43 | -> PublicKey | 34 | -> PublicKey |
diff --git a/ToxToXMPP.hs b/ToxToXMPP.hs index e2cefc9d..b004083f 100644 --- a/ToxToXMPP.hs +++ b/ToxToXMPP.hs | |||
@@ -14,7 +14,6 @@ module ToxToXMPP | |||
14 | , interweave | 14 | , interweave |
15 | ) where | 15 | ) where |
16 | 16 | ||
17 | import Control.Monad.IO.Class | ||
18 | import Data.Conduit as C | 17 | import Data.Conduit as C |
19 | import qualified Data.Conduit.List as CL | 18 | import qualified Data.Conduit.List as CL |
20 | import Data.XML.Types as XML | 19 | import Data.XML.Types as XML |
@@ -43,31 +42,22 @@ import qualified Network.Tox as Tox | |||
43 | import Network.Tox.ContactInfo as Tox | 42 | import Network.Tox.ContactInfo as Tox |
44 | import qualified Network.Tox.Crypto.Handlers as Tox | 43 | import qualified Network.Tox.Crypto.Handlers as Tox |
45 | -- import qualified Network.Tox.DHT.Handlers as Tox | 44 | -- import qualified Network.Tox.DHT.Handlers as Tox |
46 | import Announcer | ||
47 | import ClientState | 45 | import ClientState |
48 | import Control.Concurrent.STM | ||
49 | import Control.Monad | ||
50 | import Crypto.Tox | ||
51 | import Data.Bits | 46 | import Data.Bits |
52 | import Data.Function | 47 | import Data.Function |
53 | import qualified Data.Map as Map | 48 | import qualified Data.Map as Map |
54 | import qualified Data.Set as Set | 49 | import Data.Text (Text) |
55 | import qualified Data.Text as T | ||
56 | ;import Data.Text (Text) | ||
57 | import Data.Word | 50 | import Data.Word |
58 | import qualified Network.Kademlia.Routing as R | 51 | import qualified Network.Kademlia.Routing as R |
59 | import Network.Tox | 52 | import Network.Tox |
60 | import Network.Tox.ContactInfo | ||
61 | import Network.Tox.DHT.Handlers | 53 | import Network.Tox.DHT.Handlers |
62 | import qualified Network.Tox.DHT.Transport as Tox | 54 | import qualified Network.Tox.DHT.Transport as Tox |
63 | ;import Network.Tox.DHT.Transport (dhtpk, FriendRequest (..)) | 55 | ;import Network.Tox.DHT.Transport (FriendRequest (..), dhtpk) |
64 | import Network.Tox.NodeId | 56 | import Network.Tox.NodeId |
65 | import qualified Network.Tox.Onion.Handlers as Tox | 57 | import qualified Network.Tox.Onion.Handlers as Tox |
66 | import qualified Network.Tox.Onion.Transport as Tox | 58 | import qualified Network.Tox.Onion.Transport as Tox |
67 | ;import Network.Tox.Onion.Transport (OnionData (..)) | 59 | ;import Network.Tox.Onion.Transport (OnionData (..)) |
68 | import Presence | 60 | import Presence |
69 | import Presence | ||
70 | import System.IO | ||
71 | import Text.Read | 61 | import Text.Read |
72 | import XMPPServer (ConnectionKey) | 62 | import XMPPServer (ConnectionKey) |
73 | #ifdef THREAD_DEBUG | 63 | #ifdef THREAD_DEBUG |
diff --git a/examples/dhtd.hs b/examples/dhtd.hs index 4a246660..f96f0ba7 100644 --- a/examples/dhtd.hs +++ b/examples/dhtd.hs | |||
@@ -27,7 +27,6 @@ import Control.Concurrent.STM.TMChan | |||
27 | import Control.Exception | 27 | import Control.Exception |
28 | import Control.Monad | 28 | import Control.Monad |
29 | import Control.Monad.IO.Class (liftIO) | 29 | import Control.Monad.IO.Class (liftIO) |
30 | import Control.Monad.Trans.Control | ||
31 | import Data.Bool | 30 | import Data.Bool |
32 | import Data.Char | 31 | import Data.Char |
33 | import Data.Conduit as C | 32 | import Data.Conduit as C |
@@ -60,7 +59,6 @@ import Control.Concurrent.Lifted | |||
60 | import GHC.Conc (labelThread) | 59 | import GHC.Conc (labelThread) |
61 | #endif | 60 | #endif |
62 | import qualified Data.HashMap.Strict as HashMap | 61 | import qualified Data.HashMap.Strict as HashMap |
63 | import qualified Data.Vector as V | ||
64 | import qualified Data.Text as T | 62 | import qualified Data.Text as T |
65 | import qualified Data.Text.Encoding as T | 63 | import qualified Data.Text.Encoding as T |
66 | import System.Posix.Signals | 64 | import System.Posix.Signals |
@@ -82,7 +80,6 @@ import qualified Network.BitTorrent.MainlineDHT as Mainline | |||
82 | import qualified Network.Tox as Tox | 80 | import qualified Network.Tox as Tox |
83 | import qualified Data.ByteString.Lazy as L | 81 | import qualified Data.ByteString.Lazy as L |
84 | import qualified Data.ByteString.Char8 as B | 82 | import qualified Data.ByteString.Char8 as B |
85 | import qualified Data.Text as T | ||
86 | import qualified Data.Text.Encoding as E | 83 | import qualified Data.Text.Encoding as E |
87 | import qualified Data.Text.Encoding.Error as E | 84 | import qualified Data.Text.Encoding.Error as E |
88 | import Control.Concurrent.Tasks | 85 | import Control.Concurrent.Tasks |
@@ -98,7 +95,7 @@ import qualified Network.Tox.DHT.Transport as Tox | |||
98 | import qualified Network.Tox.DHT.Handlers as Tox | 95 | import qualified Network.Tox.DHT.Handlers as Tox |
99 | import qualified Network.Tox.Onion.Transport as Tox | 96 | import qualified Network.Tox.Onion.Transport as Tox |
100 | import qualified Network.Tox.Onion.Handlers as Tox | 97 | import qualified Network.Tox.Onion.Handlers as Tox |
101 | import qualified Network.Tox.Crypto.Transport as Tox (CryptoMessage(..),CryptoData(..), isOFFLINE, isKillPacket) | 98 | import qualified Network.Tox.Crypto.Transport as Tox (CryptoMessage(..)) |
102 | import qualified Network.Tox.Crypto.Handlers as Tox | 99 | import qualified Network.Tox.Crypto.Handlers as Tox |
103 | import Data.Typeable | 100 | import Data.Typeable |
104 | import Network.Tox.ContactInfo as Tox | 101 | import Network.Tox.ContactInfo as Tox |
@@ -1,9 +1,35 @@ | |||
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | |||
3 | rootname=$(cat /etc/debian_chroot 2>/dev/null) | ||
4 | echo $PATH | grep '\.stack' >/dev/null && rootname="stack" | ||
5 | BUILDB= | ||
6 | for b in build/b/Presence/monitortty.o .stack-work/dist/x86_64-linux/Cabal-*/build/Presence/monitortty.o; do | ||
7 | if [ -f $b ]; then | ||
8 | BUILDB=$(dirname $(dirname $b)) | ||
9 | break | ||
10 | fi | ||
11 | done | ||
12 | [ -z "$BUILDB" ] && { echo "Where is monitortty.o?"; exit 1; } | ||
13 | |||
14 | opts="-rtsopts -hisuf p_hi -osuf p_o -prof -fprof-auto -fprof-auto-exported" | ||
2 | warn="-freverse-errors -fwarn-unused-imports -Wmissing-signatures -fdefer-typed-holes" | 15 | warn="-freverse-errors -fwarn-unused-imports -Wmissing-signatures -fdefer-typed-holes" |
3 | exts="-XOverloadedStrings -XRecordWildCards" | 16 | exts="-XOverloadedStrings -XRecordWildCards" |
4 | defs="-DBENCODE_AESON -DTHREAD_DEBUG" | 17 | defs="-DBENCODE_AESON -DTHREAD_DEBUG" |
5 | hide="-hide-package crypto-random -hide-package crypto-api -hide-package crypto-numbers -hide-package cryptohash -hide-package prettyclass" | 18 | hidden="crypto-random crypto-api crypto-numbers cryptohash prettyclass" |
6 | opts="-rtsopts -hisuf p_hi -osuf p_o -prof -fprof-auto -fprof-auto-exported" | 19 | [ "$rootname" == "stack" ] && hidden="" |
20 | hide="" | ||
21 | for h in $hidden;do | ||
22 | # too slow. | ||
23 | # ghc-pkg latest $h && hide="$hide -hide-package $h" | ||
24 | hide="$hide -hide-package $h" | ||
25 | done | ||
26 | |||
27 | if [ "$rootname" == "stretch" ] | ||
28 | then | ||
29 | echo "Building with cryptonite backport. (chroot = $rootname)" | ||
30 | defs="$defs -DCRYPTONITE_BACKPORT -icryptonite-backport" | ||
31 | warn="$BUILDB/cbits/cryptonite_salsa.o $BUILDB/cbits/cryptonite_xsalsa.o $warn" | ||
32 | fi | ||
7 | 33 | ||
8 | root=${0%/*} | 34 | root=${0%/*} |
9 | cd "$root" | 35 | cd "$root" |
@@ -11,15 +37,15 @@ cd "$root" | |||
11 | me=${0##*/} | 37 | me=${0##*/} |
12 | me=${me%.*} | 38 | me=${me%.*} |
13 | set -x | 39 | set -x |
14 | ghc \ | 40 | ghc -threaded \ |
15 | $opts \ | 41 | $opts \ |
16 | $hide \ | 42 | $hide \ |
17 | $exts \ | 43 | $exts \ |
18 | $defs \ | 44 | $defs \ |
19 | -hidir build/$me -odir build/$me \ | 45 | -hidir build/$me$rootname -odir build/$me$rootname \ |
20 | -iPresence \ | 46 | -iPresence \ |
21 | -iArchive \ | 47 | -iArchive \ |
22 | -isrc \ | 48 | -isrc \ |
23 | build/b/Presence/monitortty.o \ | 49 | $BUILDB/Presence/monitortty.o \ |
24 | $warn \ | 50 | $warn \ |
25 | "$@" | 51 | "$@" |
diff --git a/src/Control/Concurrent/Lifted/Instrument.hs b/src/Control/Concurrent/Lifted/Instrument.hs index 187b9276..4aa9268f 100644 --- a/src/Control/Concurrent/Lifted/Instrument.hs +++ b/src/Control/Concurrent/Lifted/Instrument.hs | |||
@@ -20,8 +20,6 @@ import Control.Monad.Base | |||
20 | import qualified GHC.Conc as GHC | 20 | import qualified GHC.Conc as GHC |
21 | import Data.Time() | 21 | import Data.Time() |
22 | import Data.Time.Clock | 22 | import Data.Time.Clock |
23 | import System.IO | ||
24 | import Control.Monad.IO.Class | ||
25 | import DPut | 23 | import DPut |
26 | 24 | ||
27 | 25 | ||
diff --git a/src/Crypto/Tox.hs b/src/Crypto/Tox.hs index a1741a1f..a1f40c76 100644 --- a/src/Crypto/Tox.hs +++ b/src/Crypto/Tox.hs | |||
@@ -89,7 +89,6 @@ import Foreign.Marshal.Alloc | |||
89 | import Foreign.Ptr | 89 | import Foreign.Ptr |
90 | import Foreign.Storable | 90 | import Foreign.Storable |
91 | import System.Endian | 91 | import System.Endian |
92 | import qualified Data.ByteString.Internal | ||
93 | import Control.Concurrent.STM | 92 | import Control.Concurrent.STM |
94 | #ifdef CRYPTONITE_BACKPORT | 93 | #ifdef CRYPTONITE_BACKPORT |
95 | import Crypto.ECC.Class | 94 | import Crypto.ECC.Class |
diff --git a/src/DPut.hs b/src/DPut.hs index 73d142b7..e02f8ce6 100644 --- a/src/DPut.hs +++ b/src/DPut.hs | |||
@@ -1,11 +1,9 @@ | |||
1 | module DPut where | 1 | module DPut where |
2 | 2 | ||
3 | import Control.Monad.IO.Class | 3 | import Control.Monad.IO.Class |
4 | import Control.Concurrent.STM | ||
5 | import qualified Data.Map.Strict as Map | 4 | import qualified Data.Map.Strict as Map |
6 | import Data.Maybe | 5 | import Data.Maybe |
7 | import Data.IORef | 6 | import Data.IORef |
8 | import System.IO (stderr,hPutStrLn) | ||
9 | import System.IO.Unsafe (unsafePerformIO) | 7 | import System.IO.Unsafe (unsafePerformIO) |
10 | import System.Log.Logger | 8 | import System.Log.Logger |
11 | import qualified Data.ByteString.Char8 as B | 9 | import qualified Data.ByteString.Char8 as B |
diff --git a/src/Data/BEncode/Pretty.hs b/src/Data/BEncode/Pretty.hs index 89fcb489..8beb101b 100644 --- a/src/Data/BEncode/Pretty.hs +++ b/src/Data/BEncode/Pretty.hs | |||
@@ -4,11 +4,9 @@ module Data.BEncode.Pretty where -- (showBEncode) where | |||
4 | import Data.BEncode.Types | 4 | import Data.BEncode.Types |
5 | import qualified Data.ByteString as BS | 5 | import qualified Data.ByteString as BS |
6 | import qualified Data.ByteString.Lazy as BL | 6 | import qualified Data.ByteString.Lazy as BL |
7 | import qualified Data.ByteString.Lazy.Char8 as BL8 | ||
8 | import Data.Text (Text) | 7 | import Data.Text (Text) |
9 | import qualified Data.Text as T | 8 | import qualified Data.Text as T |
10 | import Data.Text.Encoding | 9 | import Data.Text.Encoding |
11 | import Text.Printf | ||
12 | import qualified Data.ByteString.Base16 as Base16 | 10 | import qualified Data.ByteString.Base16 as Base16 |
13 | #ifdef BENCODE_AESON | 11 | #ifdef BENCODE_AESON |
14 | import Data.BEncode.BDict hiding (map) | 12 | import Data.BEncode.BDict hiding (map) |
diff --git a/src/Data/CyclicBuffer.hs b/src/Data/CyclicBuffer.hs index 0cc87459..92b6bacc 100644 --- a/src/Data/CyclicBuffer.hs +++ b/src/Data/CyclicBuffer.hs | |||
@@ -4,9 +4,7 @@ module Data.CyclicBuffer {- TODO: export list -} where | |||
4 | 4 | ||
5 | 5 | ||
6 | import Control.Concurrent.STM | 6 | import Control.Concurrent.STM |
7 | import Control.Concurrent.STM.TArray | ||
8 | import Control.Monad | 7 | import Control.Monad |
9 | import Control.Applicative | ||
10 | import Data.Word | 8 | import Data.Word |
11 | import Data.Array.MArray | 9 | import Data.Array.MArray |
12 | import Data.Maybe | 10 | import Data.Maybe |
diff --git a/src/Data/PacketQueue.hs b/src/Data/PacketQueue.hs index ffe00d7d..93f9ba14 100644 --- a/src/Data/PacketQueue.hs +++ b/src/Data/PacketQueue.hs | |||
@@ -30,9 +30,7 @@ module Data.PacketQueue | |||
30 | ) where | 30 | ) where |
31 | 31 | ||
32 | import Control.Concurrent.STM | 32 | import Control.Concurrent.STM |
33 | import Control.Concurrent.STM.TArray | ||
34 | import Control.Monad | 33 | import Control.Monad |
35 | import Control.Applicative | ||
36 | import Data.Word | 34 | import Data.Word |
37 | import Data.Array.MArray | 35 | import Data.Array.MArray |
38 | import Data.Maybe | 36 | import Data.Maybe |
diff --git a/src/Data/Torrent.hs b/src/Data/Torrent.hs index dbe248eb..a746b54c 100644 --- a/src/Data/Torrent.hs +++ b/src/Data/Torrent.hs | |||
@@ -195,7 +195,6 @@ import System.FilePath | |||
195 | import System.Posix.Types | 195 | import System.Posix.Types |
196 | 196 | ||
197 | import Network.Address | 197 | import Network.Address |
198 | import Network.Kademlia.Routing | ||
199 | 198 | ||
200 | 199 | ||
201 | {----------------------------------------------------------------------- | 200 | {----------------------------------------------------------------------- |
diff --git a/src/Data/Word64RangeMap.hs b/src/Data/Word64RangeMap.hs index 0b25f56d..f4736d59 100644 --- a/src/Data/Word64RangeMap.hs +++ b/src/Data/Word64RangeMap.hs | |||
@@ -12,11 +12,9 @@ import Data.Word | |||
12 | import Data.Array.Unboxed | 12 | import Data.Array.Unboxed |
13 | import qualified Data.Array.MArray as MA | 13 | import qualified Data.Array.MArray as MA |
14 | import Data.Array.MArray (MArray(..)) | 14 | import Data.Array.MArray (MArray(..)) |
15 | import qualified Data.Array.Base as Base | ||
16 | import Data.Reference | 15 | import Data.Reference |
17 | import Debug.Trace | 16 | import Debug.Trace |
18 | import Control.Concurrent.STM | 17 | import Control.Concurrent.STM |
19 | import Control.Concurrent.STM.TArray | ||
20 | import Data.Array.IO | 18 | import Data.Array.IO |
21 | import Data.IORef | 19 | import Data.IORef |
22 | 20 | ||
diff --git a/src/Data/Wrapper/PSQ.hs b/src/Data/Wrapper/PSQ.hs index 631af6ec..5d32e16c 100644 --- a/src/Data/Wrapper/PSQ.hs +++ b/src/Data/Wrapper/PSQ.hs | |||
@@ -19,8 +19,8 @@ fold' f a q = PSQueue.foldr f' a q | |||
19 | #else | 19 | #else |
20 | ( module Data.Wrapper.PSQ , module HashPSQ ) where | 20 | ( module Data.Wrapper.PSQ , module HashPSQ ) where |
21 | 21 | ||
22 | import Data.OrdPSQ as OrdPSQ hiding (insert, map, singleton, minView) | 22 | -- import Data.OrdPSQ as OrdPSQ hiding (insert, map, singleton, minView) |
23 | import qualified Data.OrdPSQ as OrdPSQ | 23 | -- import qualified Data.OrdPSQ as OrdPSQ |
24 | 24 | ||
25 | import Data.HashPSQ as HashPSQ hiding (insert, map, singleton, minView) | 25 | import Data.HashPSQ as HashPSQ hiding (insert, map, singleton, minView) |
26 | import qualified Data.HashPSQ as Q | 26 | import qualified Data.HashPSQ as Q |
diff --git a/src/Network/Address.hs b/src/Network/Address.hs index 367f608b..3adfdc91 100644 --- a/src/Network/Address.hs +++ b/src/Network/Address.hs | |||
@@ -110,10 +110,9 @@ import Data.IP | |||
110 | #endif | 110 | #endif |
111 | import Data.List as L | 111 | import Data.List as L |
112 | import Data.List.Split as L | 112 | import Data.List.Split as L |
113 | import Data.Maybe (fromMaybe, catMaybes, mapMaybe) | 113 | import Data.Maybe (fromMaybe, catMaybes) |
114 | import Data.Monoid | 114 | import Data.Monoid |
115 | import Data.Hashable | 115 | import Data.Hashable |
116 | import Data.Ord | ||
117 | import Data.Serialize as S | 116 | import Data.Serialize as S |
118 | import Data.String | 117 | import Data.String |
119 | import Data.Time | 118 | import Data.Time |
@@ -130,7 +129,6 @@ import Text.PrettyPrint.HughesPJClass hiding ((<>),($$)) | |||
130 | import System.Locale (defaultTimeLocale) | 129 | import System.Locale (defaultTimeLocale) |
131 | #endif | 130 | #endif |
132 | import System.Entropy | 131 | import System.Entropy |
133 | import System.IO (stderr) | ||
134 | import DPut | 132 | import DPut |
135 | 133 | ||
136 | -- import Paths_bittorrent (version) | 134 | -- import Paths_bittorrent (version) |
diff --git a/src/Network/BitTorrent/DHT/ContactInfo.hs b/src/Network/BitTorrent/DHT/ContactInfo.hs index ed38caf7..ec7e6658 100644 --- a/src/Network/BitTorrent/DHT/ContactInfo.hs +++ b/src/Network/BitTorrent/DHT/ContactInfo.hs | |||
@@ -20,7 +20,6 @@ import Data.Wrapper.PSQ as PSQ | |||
20 | import Data.Time.Clock.POSIX | 20 | import Data.Time.Clock.POSIX |
21 | import Data.ByteString (ByteString) | 21 | import Data.ByteString (ByteString) |
22 | import Data.Word | 22 | import Data.Word |
23 | import Network.Socket (SockAddr(..)) | ||
24 | 23 | ||
25 | import Data.Torrent | 24 | import Data.Torrent |
26 | import Network.Address | 25 | import Network.Address |
diff --git a/src/Network/BitTorrent/DHT/Token.hs b/src/Network/BitTorrent/DHT/Token.hs index 3da59c53..171cc8be 100644 --- a/src/Network/BitTorrent/DHT/Token.hs +++ b/src/Network/BitTorrent/DHT/Token.hs | |||
@@ -61,7 +61,6 @@ import Data.String | |||
61 | import Data.Time | 61 | import Data.Time |
62 | import System.Random | 62 | import System.Random |
63 | import Control.Concurrent.STM | 63 | import Control.Concurrent.STM |
64 | import Network.Address | ||
65 | 64 | ||
66 | -- TODO use ShortByteString | 65 | -- TODO use ShortByteString |
67 | 66 | ||
diff --git a/src/Network/BitTorrent/MainlineDHT.hs b/src/Network/BitTorrent/MainlineDHT.hs index 626f980f..c5b99234 100644 --- a/src/Network/BitTorrent/MainlineDHT.hs +++ b/src/Network/BitTorrent/MainlineDHT.hs | |||
@@ -23,10 +23,9 @@ import qualified Data.BEncode.BDict as BE | |||
23 | import Data.BEncode.Pretty | 23 | import Data.BEncode.Pretty |
24 | import Data.BEncode.Types (BDict) | 24 | import Data.BEncode.Types (BDict) |
25 | import Data.Bits | 25 | import Data.Bits |
26 | import Data.Bits.ByteString | 26 | import Data.Bits.ByteString () |
27 | import Data.Bool | 27 | import Data.Bool |
28 | import qualified Data.ByteArray as BA | 28 | import Data.ByteArray (ByteArrayAccess) |
29 | ;import Data.ByteArray (ByteArrayAccess) | ||
30 | import qualified Data.ByteString as B | 29 | import qualified Data.ByteString as B |
31 | ;import Data.ByteString (ByteString) | 30 | ;import Data.ByteString (ByteString) |
32 | import qualified Data.ByteString.Base16 as Base16 | 31 | import qualified Data.ByteString.Base16 as Base16 |
@@ -45,7 +44,6 @@ import Data.IP hiding (fromSockAddr) | |||
45 | #else | 44 | #else |
46 | import Data.IP | 45 | import Data.IP |
47 | #endif | 46 | #endif |
48 | import Data.List | ||
49 | import Data.Maybe | 47 | import Data.Maybe |
50 | import Data.Monoid | 48 | import Data.Monoid |
51 | import Data.Ord | 49 | import Data.Ord |
@@ -53,14 +51,13 @@ import qualified Data.Serialize as S | |||
53 | import Data.Set (Set) | 51 | import Data.Set (Set) |
54 | import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) | 52 | import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) |
55 | import Data.Torrent | 53 | import Data.Torrent |
56 | import Data.Typeable | ||
57 | import Data.Word | 54 | import Data.Word |
58 | import qualified Data.Wrapper.PSQInt as Int | 55 | import qualified Data.Wrapper.PSQInt as Int |
59 | import Debug.Trace | 56 | import Debug.Trace |
60 | import Network.BitTorrent.MainlineDHT.Symbols | 57 | import Network.BitTorrent.MainlineDHT.Symbols |
61 | import Network.Kademlia | 58 | import Network.Kademlia |
62 | import Network.Kademlia.Bootstrap | 59 | import Network.Kademlia.Bootstrap |
63 | import Network.Address (Address, fromAddr, fromSockAddr, | 60 | import Network.Address (fromSockAddr, |
64 | setPort, sockAddrPort, testIdBit, | 61 | setPort, sockAddrPort, testIdBit, |
65 | toSockAddr, genBucketSample', WantIP(..), | 62 | toSockAddr, genBucketSample', WantIP(..), |
66 | un4map,either4or6,ipFamily) | 63 | un4map,either4or6,ipFamily) |
@@ -68,10 +65,9 @@ import Network.BitTorrent.DHT.ContactInfo as Peers | |||
68 | import Network.Kademlia.Search (Search (..)) | 65 | import Network.Kademlia.Search (Search (..)) |
69 | import Network.BitTorrent.DHT.Token as Token | 66 | import Network.BitTorrent.DHT.Token as Token |
70 | import qualified Network.Kademlia.Routing as R | 67 | import qualified Network.Kademlia.Routing as R |
71 | ;import Network.Kademlia.Routing (Timestamp, getTimestamp) | 68 | ;import Network.Kademlia.Routing (getTimestamp) |
72 | import Network.QueryResponse | 69 | import Network.QueryResponse |
73 | import Network.Socket | 70 | import Network.Socket |
74 | import System.IO | ||
75 | import System.IO.Error | 71 | import System.IO.Error |
76 | import System.IO.Unsafe (unsafeInterleaveIO) | 72 | import System.IO.Unsafe (unsafeInterleaveIO) |
77 | import qualified Text.ParserCombinators.ReadP as RP | 73 | import qualified Text.ParserCombinators.ReadP as RP |
@@ -81,7 +77,6 @@ import Control.Concurrent.Lifted.Instrument | |||
81 | import Control.Concurrent.Lifted | 77 | import Control.Concurrent.Lifted |
82 | import GHC.Conc (labelThread) | 78 | import GHC.Conc (labelThread) |
83 | #endif | 79 | #endif |
84 | import Control.Exception (SomeException (..), handle) | ||
85 | import qualified Data.Aeson as JSON | 80 | import qualified Data.Aeson as JSON |
86 | ;import Data.Aeson (FromJSON, ToJSON, (.=)) | 81 | ;import Data.Aeson (FromJSON, ToJSON, (.=)) |
87 | import Text.Read | 82 | import Text.Read |
diff --git a/src/Network/Kademlia.hs b/src/Network/Kademlia.hs index 50c98967..44ef2ec1 100644 --- a/src/Network/Kademlia.hs +++ b/src/Network/Kademlia.hs | |||
@@ -6,11 +6,8 @@ | |||
6 | {-# LANGUAGE PatternSynonyms #-} | 6 | {-# LANGUAGE PatternSynonyms #-} |
7 | module Network.Kademlia where | 7 | module Network.Kademlia where |
8 | 8 | ||
9 | import Data.Function | ||
10 | import Data.Maybe | 9 | import Data.Maybe |
11 | import qualified Data.Set as Set | 10 | import Data.Time.Clock.POSIX |
12 | import Data.Time.Clock (getCurrentTime) | ||
13 | import Data.Time.Clock.POSIX (getPOSIXTime, utcTimeToPOSIXSeconds) | ||
14 | import Network.Kademlia.Routing as R | 11 | import Network.Kademlia.Routing as R |
15 | #ifdef THREAD_DEBUG | 12 | #ifdef THREAD_DEBUG |
16 | import Control.Concurrent.Lifted.Instrument | 13 | import Control.Concurrent.Lifted.Instrument |
@@ -20,24 +17,7 @@ import GHC.Conc (labelThread) | |||
20 | #endif | 17 | #endif |
21 | import Control.Concurrent.STM | 18 | import Control.Concurrent.STM |
22 | import Control.Monad | 19 | import Control.Monad |
23 | import Data.Bits | ||
24 | import Data.Hashable | ||
25 | #if MIN_VERSION_iproute(1,7,4) | ||
26 | import Data.IP hiding (fromSockAddr) | ||
27 | #else | ||
28 | import Data.IP | ||
29 | #endif | ||
30 | import Data.Monoid | ||
31 | import Data.Serialize (Serialize) | ||
32 | import Data.Time.Clock.POSIX (POSIXTime) | 20 | import Data.Time.Clock.POSIX (POSIXTime) |
33 | import Network.Address (bucketRange,genBucketSample) | ||
34 | import Network.Kademlia.Search | ||
35 | import System.Entropy | ||
36 | import System.Timeout | ||
37 | import Text.PrettyPrint as PP hiding (($$), (<>)) | ||
38 | import Text.PrettyPrint.HughesPJClass hiding (($$), (<>)) | ||
39 | import System.IO | ||
40 | import Control.Concurrent.Tasks | ||
41 | 21 | ||
42 | -- | The status of a given node with respect to a given routint table. | 22 | -- | The status of a given node with respect to a given routint table. |
43 | data RoutingStatus | 23 | data RoutingStatus |
@@ -147,7 +127,7 @@ accepted (_,y) = RoutingTransition y Accepted | |||
147 | insertNode :: Kademlia nid ni -> ni -> IO () | 127 | insertNode :: Kademlia nid ni -> ni -> IO () |
148 | insertNode (Kademlia reporter space io) node = do | 128 | insertNode (Kademlia reporter space io) node = do |
149 | 129 | ||
150 | tm <- utcTimeToPOSIXSeconds <$> getCurrentTime | 130 | tm <- getPOSIXTime |
151 | 131 | ||
152 | (ps,reaction) <- atomically $ do | 132 | (ps,reaction) <- atomically $ do |
153 | tbl <- tblRead io | 133 | tbl <- tblRead io |
diff --git a/src/Network/Kademlia/Bootstrap.hs b/src/Network/Kademlia/Bootstrap.hs index 4197e06e..1a70a9c5 100644 --- a/src/Network/Kademlia/Bootstrap.hs +++ b/src/Network/Kademlia/Bootstrap.hs | |||
@@ -16,8 +16,7 @@ module Network.Kademlia.Bootstrap where | |||
16 | import Data.Function | 16 | import Data.Function |
17 | import Data.Maybe | 17 | import Data.Maybe |
18 | import qualified Data.Set as Set | 18 | import qualified Data.Set as Set |
19 | import Data.Time.Clock (getCurrentTime) | 19 | import Data.Time.Clock.POSIX (getPOSIXTime) |
20 | import Data.Time.Clock.POSIX (getPOSIXTime, utcTimeToPOSIXSeconds) | ||
21 | import Network.Kademlia.Routing as R | 20 | import Network.Kademlia.Routing as R |
22 | #ifdef THREAD_DEBUG | 21 | #ifdef THREAD_DEBUG |
23 | import Control.Concurrent.Lifted.Instrument | 22 | import Control.Concurrent.Lifted.Instrument |
@@ -27,27 +26,16 @@ import GHC.Conc (labelThread) | |||
27 | #endif | 26 | #endif |
28 | import Control.Concurrent.STM | 27 | import Control.Concurrent.STM |
29 | import Control.Monad | 28 | import Control.Monad |
30 | import Data.Bits | ||
31 | import Data.Hashable | 29 | import Data.Hashable |
32 | #if MIN_VERSION_iproute(1,7,4) | ||
33 | import Data.IP hiding (fromSockAddr) | ||
34 | #else | ||
35 | import Data.IP | ||
36 | #endif | ||
37 | import Data.Monoid | ||
38 | import Data.Serialize (Serialize) | ||
39 | import Data.Time.Clock.POSIX (POSIXTime) | 30 | import Data.Time.Clock.POSIX (POSIXTime) |
40 | import Data.Ord | 31 | import Data.Ord |
41 | import System.Entropy | 32 | import System.Entropy |
42 | import System.Timeout | 33 | import System.Timeout |
43 | import Text.PrettyPrint as PP hiding (($$), (<>)) | ||
44 | import Text.PrettyPrint.HughesPJClass hiding (($$), (<>)) | ||
45 | import System.IO | ||
46 | import DPut | 34 | import DPut |
47 | 35 | ||
48 | import qualified Data.Wrapper.PSQInt as Int | 36 | import qualified Data.Wrapper.PSQInt as Int |
49 | ;import Data.Wrapper.PSQInt (pattern (:->)) | 37 | ;import Data.Wrapper.PSQInt (pattern (:->)) |
50 | import Network.Address (bucketRange,genBucketSample) | 38 | import Network.Address (bucketRange) |
51 | import Network.Kademlia.Search | 39 | import Network.Kademlia.Search |
52 | import Control.Concurrent.Tasks | 40 | import Control.Concurrent.Tasks |
53 | import Network.Kademlia | 41 | import Network.Kademlia |
diff --git a/src/Network/Kademlia/Search.hs b/src/Network/Kademlia/Search.hs index 29a8fc61..e13e0742 100644 --- a/src/Network/Kademlia/Search.hs +++ b/src/Network/Kademlia/Search.hs | |||
@@ -8,25 +8,18 @@ module Network.Kademlia.Search where | |||
8 | 8 | ||
9 | import Control.Concurrent.Tasks | 9 | import Control.Concurrent.Tasks |
10 | import Control.Concurrent.STM | 10 | import Control.Concurrent.STM |
11 | import Control.Exception | ||
12 | import Control.Monad | 11 | import Control.Monad |
13 | import Data.Bool | ||
14 | import Data.Function | 12 | import Data.Function |
15 | import Data.List | ||
16 | import qualified Data.Map.Strict as Map | ||
17 | ;import Data.Map.Strict (Map) | ||
18 | import Data.Maybe | 13 | import Data.Maybe |
19 | import qualified Data.Set as Set | 14 | import qualified Data.Set as Set |
20 | ;import Data.Set (Set) | 15 | ;import Data.Set (Set) |
21 | import Data.Hashable (Hashable(..)) -- for type sigs | 16 | import Data.Hashable (Hashable(..)) -- for type sigs |
22 | import System.IO | ||
23 | import System.IO.Error | 17 | import System.IO.Error |
24 | 18 | ||
25 | import qualified Data.MinMaxPSQ as MM | 19 | import qualified Data.MinMaxPSQ as MM |
26 | ;import Data.MinMaxPSQ (MinMaxPSQ, MinMaxPSQ') | 20 | ;import Data.MinMaxPSQ (MinMaxPSQ, MinMaxPSQ') |
27 | import qualified Data.Wrapper.PSQ as PSQ | 21 | import qualified Data.Wrapper.PSQ as PSQ |
28 | ;import Data.Wrapper.PSQ (pattern (:->), Binding, pattern Binding, Binding', PSQ, PSQKey) | 22 | ;import Data.Wrapper.PSQ (pattern (:->), Binding, pattern Binding, Binding', PSQKey) |
29 | import Network.Address hiding (NodeId) | ||
30 | import Network.Kademlia.Routing as R | 23 | import Network.Kademlia.Routing as R |
31 | #ifdef THREAD_DEBUG | 24 | #ifdef THREAD_DEBUG |
32 | import Control.Concurrent.Lifted.Instrument | 25 | import Control.Concurrent.Lifted.Instrument |
diff --git a/src/Network/StreamServer.hs b/src/Network/StreamServer.hs index 01680b77..2734f0cd 100644 --- a/src/Network/StreamServer.hs +++ b/src/Network/StreamServer.hs | |||
@@ -15,21 +15,9 @@ module Network.StreamServer | |||
15 | 15 | ||
16 | import Data.Monoid | 16 | import Data.Monoid |
17 | import Network.Socket as Socket | 17 | import Network.Socket as Socket |
18 | import Data.ByteString.Char8 | ||
19 | ( hGetNonBlocking | ||
20 | ) | ||
21 | import qualified Data.ByteString.Char8 as S | ||
22 | ( hPutStrLn | ||
23 | ) | ||
24 | import System.Directory (removeFile) | 18 | import System.Directory (removeFile) |
25 | import System.IO | 19 | import System.IO |
26 | ( IOMode(..) | 20 | ( IOMode(..) |
27 | , hSetBuffering | ||
28 | , BufferMode(..) | ||
29 | , hWaitForInput | ||
30 | , hClose | ||
31 | , hIsEOF | ||
32 | , hPutStrLn | ||
33 | , stderr | 21 | , stderr |
34 | , hFlush | 22 | , hFlush |
35 | ) | 23 | ) |
@@ -45,14 +33,12 @@ import Control.Concurrent | |||
45 | ( forkIO, threadDelay, ThreadId, mkWeakThreadId, myThreadId | 33 | ( forkIO, threadDelay, ThreadId, mkWeakThreadId, myThreadId |
46 | , killThread ) | 34 | , killThread ) |
47 | #endif | 35 | #endif |
48 | import Control.Exception (catch,handle,try,finally) | 36 | import Control.Exception (handle,finally) |
49 | import System.IO.Error (tryIOError) | 37 | import System.IO.Error (tryIOError) |
50 | import System.Mem.Weak | 38 | import System.Mem.Weak |
51 | import System.IO.Error | 39 | import System.IO.Error |
52 | 40 | ||
53 | -- import Data.Conduit | 41 | -- import Data.Conduit |
54 | import Control.Monad.IO.Class (MonadIO (liftIO)) | ||
55 | import qualified Data.ByteString as S (ByteString) | ||
56 | import System.IO (Handle) | 42 | import System.IO (Handle) |
57 | import Control.Concurrent.MVar (newMVar) | 43 | import Control.Concurrent.MVar (newMVar) |
58 | 44 | ||
diff --git a/src/Network/Tox.hs b/src/Network/Tox.hs index fcfa872f..f7cf7b1e 100644 --- a/src/Network/Tox.hs +++ b/src/Network/Tox.hs | |||
@@ -17,10 +17,6 @@ | |||
17 | {-# LANGUAGE ViewPatterns #-} | 17 | {-# LANGUAGE ViewPatterns #-} |
18 | module Network.Tox where | 18 | module Network.Tox where |
19 | 19 | ||
20 | import Debug.Trace | ||
21 | import Control.Exception hiding (Handler) | ||
22 | import Control.Applicative | ||
23 | import Control.Arrow | ||
24 | #ifdef THREAD_DEBUG | 20 | #ifdef THREAD_DEBUG |
25 | import Control.Concurrent.Lifted.Instrument | 21 | import Control.Concurrent.Lifted.Instrument |
26 | #else | 22 | #else |
@@ -28,79 +24,27 @@ import Control.Concurrent.Lifted | |||
28 | #endif | 24 | #endif |
29 | import Control.Concurrent.STM | 25 | import Control.Concurrent.STM |
30 | import Control.Monad | 26 | import Control.Monad |
31 | import Control.Monad.Fix | ||
32 | import qualified Crypto.Cipher.ChaChaPoly1305 as Symmetric | ||
33 | import qualified Crypto.Cipher.Salsa as Salsa | ||
34 | import qualified Crypto.Cipher.XSalsa as XSalsa | ||
35 | import qualified Crypto.Error as Cryptonite | ||
36 | #ifdef CRYPTONITE_BACKPORT | ||
37 | import Crypto.ECC.Class | ||
38 | import Crypto.Error.Types | ||
39 | #else | ||
40 | import Crypto.ECC | ||
41 | import Crypto.Error | ||
42 | #endif | ||
43 | import qualified Crypto.MAC.Poly1305 as Poly1305 | ||
44 | import Crypto.PubKey.Curve25519 | 27 | import Crypto.PubKey.Curve25519 |
45 | import Crypto.PubKey.ECC.Types | ||
46 | import Crypto.Random | 28 | import Crypto.Random |
47 | import qualified Data.Aeson as JSON | ||
48 | ;import Data.Aeson (FromJSON, ToJSON, (.=)) | ||
49 | import Data.Bitraversable (bisequence) | ||
50 | import Data.Bits | ||
51 | import Data.Bits.ByteString () | 29 | import Data.Bits.ByteString () |
52 | import Data.Bool | ||
53 | import qualified Data.ByteArray as BA | ||
54 | ;import Data.ByteArray (ByteArrayAccess, Bytes) | ||
55 | import qualified Data.ByteString as B | 30 | import qualified Data.ByteString as B |
56 | ;import Data.ByteString (ByteString) | 31 | ;import Data.ByteString (ByteString) |
57 | import qualified Data.ByteString.Base16 as Base16 | ||
58 | import qualified Data.ByteString.Char8 as C8 | 32 | import qualified Data.ByteString.Char8 as C8 |
59 | import Data.ByteString.Lazy (toStrict) | ||
60 | import Data.Char | ||
61 | import Data.Conduit (Source,Sink,Flush(..)) | ||
62 | import Data.Data | 33 | import Data.Data |
63 | import Data.Functor.Contravariant | 34 | import Data.Functor.Contravariant |
64 | import Data.Hashable | ||
65 | #if MIN_VERSION_iproute(1,7,4) | ||
66 | import Data.IP hiding (fromSockAddr) | ||
67 | #else | ||
68 | import Data.IP | ||
69 | #endif | ||
70 | import Data.Maybe | 35 | import Data.Maybe |
71 | import qualified Data.MinMaxPSQ as MinMaxPSQ | 36 | import qualified Data.MinMaxPSQ as MinMaxPSQ |
72 | ;import Data.MinMaxPSQ (MinMaxPSQ') | ||
73 | import Data.Monoid | ||
74 | import Data.Ord | ||
75 | import qualified Data.Serialize as S | 37 | import qualified Data.Serialize as S |
76 | import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) | 38 | import Data.Time.Clock.POSIX (getPOSIXTime) |
77 | import Data.Typeable | ||
78 | import Data.Word | 39 | import Data.Word |
79 | import qualified Data.Wrapper.PSQ as PSQ | 40 | import qualified Data.Wrapper.PSQ as PSQ |
80 | ;import Data.Wrapper.PSQ (PSQ) | ||
81 | import qualified Data.Wrapper.PSQInt as Int | ||
82 | import Foreign.Marshal.Alloc | ||
83 | import Foreign.Ptr | ||
84 | import Foreign.Storable | ||
85 | import GHC.Generics (Generic) | ||
86 | import System.Global6 | 41 | import System.Global6 |
87 | import Network.Kademlia | 42 | import Network.Address (WantIP (..)) |
88 | import Network.Address (Address, WantIP (..), either4or6, | ||
89 | fromSockAddr, ipFamily, setPort, | ||
90 | sockAddrPort, testIdBit, | ||
91 | toSockAddr, un4map) | ||
92 | import Network.Kademlia.Search (Search (..)) | ||
93 | import qualified Network.Kademlia.Routing as R | 43 | import qualified Network.Kademlia.Routing as R |
94 | import Network.QueryResponse | 44 | import Network.QueryResponse |
95 | import Network.Socket | 45 | import Network.Socket |
96 | import System.Endian | 46 | import System.Endian |
97 | import System.IO | ||
98 | import qualified Text.ParserCombinators.ReadP as RP | ||
99 | import Text.Printf | ||
100 | import Text.Read | ||
101 | import Control.TriadCommittee | ||
102 | import Network.BitTorrent.DHT.Token as Token | 47 | import Network.BitTorrent.DHT.Token as Token |
103 | import GHC.TypeLits | ||
104 | 48 | ||
105 | import Connection | 49 | import Connection |
106 | import Connection.Tox | 50 | import Connection.Tox |
@@ -108,7 +52,7 @@ import Crypto.Tox | |||
108 | import Data.Word64Map (fitsInInt) | 52 | import Data.Word64Map (fitsInInt) |
109 | import qualified Data.Word64Map (empty) | 53 | import qualified Data.Word64Map (empty) |
110 | import Network.Kademlia.Bootstrap (forkPollForRefresh, bootstrap) | 54 | import Network.Kademlia.Bootstrap (forkPollForRefresh, bootstrap) |
111 | import Network.Tox.Crypto.Transport (CryptoMessage, HandshakeData(..), Handshake(..),CryptoPacket) | 55 | import Network.Tox.Crypto.Transport (Handshake(..),CryptoPacket) |
112 | import Network.Tox.Handshake | 56 | import Network.Tox.Handshake |
113 | import Network.Tox.Crypto.Handlers | 57 | import Network.Tox.Crypto.Handlers |
114 | import qualified Network.Tox.DHT.Handlers as DHT | 58 | import qualified Network.Tox.DHT.Handlers as DHT |
@@ -121,7 +65,6 @@ import OnionRouter | |||
121 | import Network.Tox.ContactInfo | 65 | import Network.Tox.ContactInfo |
122 | import Text.XXD | 66 | import Text.XXD |
123 | import qualified Data.HashMap.Strict as HashMap | 67 | import qualified Data.HashMap.Strict as HashMap |
124 | import Data.HashMap.Strict (HashMap) | ||
125 | import qualified Data.Map.Strict as Map | 68 | import qualified Data.Map.Strict as Map |
126 | import DPut | 69 | import DPut |
127 | import Network.Tox.Avahi | 70 | import Network.Tox.Avahi |
diff --git a/src/Network/Tox/Avahi.hs b/src/Network/Tox/Avahi.hs index ed52de74..7fe87db2 100644 --- a/src/Network/Tox/Avahi.hs +++ b/src/Network/Tox/Avahi.hs | |||
@@ -7,10 +7,8 @@ module Network.Tox.Avahi | |||
7 | ) where | 7 | ) where |
8 | 8 | ||
9 | import Data.Foldable | 9 | import Data.Foldable |
10 | import GHC.Word (Word16) | ||
11 | import Network.Address | 10 | import Network.Address |
12 | import Network.Avahi | 11 | import Network.Avahi |
13 | import Network.Socket | ||
14 | import Network.Tox.NodeId | 12 | import Network.Tox.NodeId |
15 | import Text.Read | 13 | import Text.Read |
16 | 14 | ||
diff --git a/src/Network/Tox/ContactInfo.hs b/src/Network/Tox/ContactInfo.hs index e76e2f1b..3f794197 100644 --- a/src/Network/Tox/ContactInfo.hs +++ b/src/Network/Tox/ContactInfo.hs | |||
@@ -1,7 +1,6 @@ | |||
1 | {-# LANGUAGE NamedFieldPuns #-} | 1 | {-# LANGUAGE NamedFieldPuns #-} |
2 | module Network.Tox.ContactInfo where | 2 | module Network.Tox.ContactInfo where |
3 | 3 | ||
4 | import ConnectionKey | ||
5 | import Connection | 4 | import Connection |
6 | 5 | ||
7 | import Data.Time.Clock.POSIX | 6 | import Data.Time.Clock.POSIX |
@@ -11,13 +10,10 @@ import Crypto.PubKey.Curve25519 | |||
11 | import qualified Data.HashMap.Strict as HashMap | 10 | import qualified Data.HashMap.Strict as HashMap |
12 | ;import Data.HashMap.Strict (HashMap) | 11 | ;import Data.HashMap.Strict (HashMap) |
13 | import Data.Maybe | 12 | import Data.Maybe |
14 | import qualified Data.Set as Set | ||
15 | ;import Data.Set (Set) | ||
16 | import Network.Socket | 13 | import Network.Socket |
17 | import Network.Tox.DHT.Transport as DHT | 14 | import Network.Tox.DHT.Transport as DHT |
18 | import Network.Tox.NodeId (id2key) | 15 | import Network.Tox.NodeId (id2key) |
19 | import Network.Tox.Onion.Transport as Onion | 16 | import Network.Tox.Onion.Transport as Onion |
20 | import System.IO | ||
21 | import DPut | 17 | import DPut |
22 | 18 | ||
23 | newtype ContactInfo extra = ContactInfo | 19 | newtype ContactInfo extra = ContactInfo |
diff --git a/src/Network/Tox/Crypto/Handlers.hs b/src/Network/Tox/Crypto/Handlers.hs index 73e5f686..282a7dce 100644 --- a/src/Network/Tox/Crypto/Handlers.hs +++ b/src/Network/Tox/Crypto/Handlers.hs | |||
@@ -9,20 +9,16 @@ module Network.Tox.Crypto.Handlers where | |||
9 | 9 | ||
10 | import Network.Tox.NodeId | 10 | import Network.Tox.NodeId |
11 | import Network.Tox.Crypto.Transport | 11 | import Network.Tox.Crypto.Transport |
12 | import Network.Tox.DHT.Transport (Cookie(..),CookieData(..), CookieRequest(..), NoSpam(..)) | 12 | import Network.Tox.DHT.Transport (Cookie(..), NoSpam(..)) |
13 | import Network.Tox.DHT.Handlers (Client, cookieRequest, createCookieSTM ) | ||
14 | import Crypto.Tox | 13 | import Crypto.Tox |
15 | import Control.Arrow | 14 | import Control.Arrow |
16 | import Control.Concurrent.STM | 15 | import Control.Concurrent.STM |
17 | import Control.Concurrent.STM.TMChan | 16 | import Control.Concurrent.STM.TMChan |
18 | import Network.Address | 17 | import Network.Address |
19 | import qualified Data.Map.Strict as Map | 18 | import qualified Data.Map.Strict as Map |
20 | import Crypto.Hash | ||
21 | import Control.Applicative | ||
22 | import Control.Monad | 19 | import Control.Monad |
23 | import Data.Time.Clock.POSIX | 20 | import Data.Time.Clock.POSIX |
24 | import qualified Data.ByteString as B | 21 | import qualified Data.ByteString as B |
25 | import System.IO | ||
26 | import Data.ByteString (ByteString) | 22 | import Data.ByteString (ByteString) |
27 | import Control.Lens | 23 | import Control.Lens |
28 | import Data.Function | 24 | import Data.Function |
@@ -39,10 +35,8 @@ import qualified Data.Set as Set | |||
39 | import qualified Data.Array.Unboxed as A | 35 | import qualified Data.Array.Unboxed as A |
40 | import SensibleDir | 36 | import SensibleDir |
41 | import System.FilePath | 37 | import System.FilePath |
42 | import System.IO.Temp | ||
43 | import System.Environment | 38 | import System.Environment |
44 | import System.Directory | 39 | import System.Directory |
45 | import System.Random -- for ping fuzz | ||
46 | #ifdef THREAD_DEBUG | 40 | #ifdef THREAD_DEBUG |
47 | import Control.Concurrent.Lifted.Instrument | 41 | import Control.Concurrent.Lifted.Instrument |
48 | #else | 42 | #else |
@@ -54,11 +48,9 @@ import qualified Data.IntMap.Strict as IntMap | |||
54 | import Control.Concurrent.Supply | 48 | import Control.Concurrent.Supply |
55 | import Data.InOrOut | 49 | import Data.InOrOut |
56 | import DPut | 50 | import DPut |
57 | import Debug.Trace | ||
58 | import Text.Printf | 51 | import Text.Printf |
59 | import Data.Bool | 52 | import Data.Bool |
60 | import Connection (Status(..), Policy(..)) | 53 | import Connection (Status(..), Policy(..)) |
61 | import Network.Tox.ContactInfo | ||
62 | import Network.Tox.Handshake | 54 | import Network.Tox.Handshake |
63 | 55 | ||
64 | -- | This type indicates the progress of a tox encrypted friend link | 56 | -- | This type indicates the progress of a tox encrypted friend link |
diff --git a/src/Network/Tox/DHT/Handlers.hs b/src/Network/Tox/DHT/Handlers.hs index 6c29e958..09d6f66b 100644 --- a/src/Network/Tox/DHT/Handlers.hs +++ b/src/Network/Tox/DHT/Handlers.hs | |||
@@ -14,7 +14,7 @@ import Network.Kademlia.Search | |||
14 | import qualified Data.Wrapper.PSQInt as Int | 14 | import qualified Data.Wrapper.PSQInt as Int |
15 | import Network.Kademlia | 15 | import Network.Kademlia |
16 | import Network.Kademlia.Bootstrap | 16 | import Network.Kademlia.Bootstrap |
17 | import Network.Address (WantIP (..), ipFamily, testIdBit,fromSockAddr, sockAddrPort) | 17 | import Network.Address (WantIP (..), ipFamily, fromSockAddr, sockAddrPort) |
18 | import qualified Network.Kademlia.Routing as R | 18 | import qualified Network.Kademlia.Routing as R |
19 | import Control.TriadCommittee | 19 | import Control.TriadCommittee |
20 | import System.Global6 | 20 | import System.Global6 |
@@ -29,7 +29,6 @@ import Control.Concurrent.Lifted.Instrument | |||
29 | import Control.Concurrent.STM | 29 | import Control.Concurrent.STM |
30 | import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) | 30 | import Data.Time.Clock.POSIX (POSIXTime, getPOSIXTime) |
31 | import Network.Socket | 31 | import Network.Socket |
32 | import Data.Hashable | ||
33 | import qualified Data.HashMap.Strict as HashMap | 32 | import qualified Data.HashMap.Strict as HashMap |
34 | ;import Data.HashMap.Strict (HashMap) | 33 | ;import Data.HashMap.Strict (HashMap) |
35 | #if MIN_VERSION_iproute(1,7,4) | 34 | #if MIN_VERSION_iproute(1,7,4) |
@@ -37,13 +36,9 @@ import Data.IP hiding (fromSockAddr) | |||
37 | #else | 36 | #else |
38 | import Data.IP | 37 | import Data.IP |
39 | #endif | 38 | #endif |
40 | import Data.Ord | ||
41 | import Data.Maybe | 39 | import Data.Maybe |
42 | import Data.Bits | ||
43 | import Data.Serialize (Serialize) | 40 | import Data.Serialize (Serialize) |
44 | import Data.Word | 41 | import Data.Word |
45 | import Data.List | ||
46 | import System.IO | ||
47 | import DPut | 42 | import DPut |
48 | 43 | ||
49 | data TransactionId = TransactionId | 44 | data TransactionId = TransactionId |
diff --git a/src/Network/Tox/DHT/Transport.hs b/src/Network/Tox/DHT/Transport.hs index 9ff1839c..c6fe121c 100644 --- a/src/Network/Tox/DHT/Transport.hs +++ b/src/Network/Tox/DHT/Transport.hs | |||
@@ -21,7 +21,6 @@ module Network.Tox.DHT.Transport | |||
21 | , DHTPublicKey(..) | 21 | , DHTPublicKey(..) |
22 | , FriendRequest(..) | 22 | , FriendRequest(..) |
23 | , NoSpam(..) | 23 | , NoSpam(..) |
24 | , verifyChecksum | ||
25 | , CookieRequest(..) | 24 | , CookieRequest(..) |
26 | , CookieResponse(..) | 25 | , CookieResponse(..) |
27 | , Cookie(..) | 26 | , Cookie(..) |
@@ -45,7 +44,6 @@ import Control.Arrow | |||
45 | import Control.Concurrent.STM | 44 | import Control.Concurrent.STM |
46 | import Control.Monad | 45 | import Control.Monad |
47 | import Data.Bool | 46 | import Data.Bool |
48 | import qualified Data.ByteString.Char8 as B8 | ||
49 | import qualified Data.ByteString as B | 47 | import qualified Data.ByteString as B |
50 | ;import Data.ByteString (ByteString) | 48 | ;import Data.ByteString (ByteString) |
51 | import Data.Functor.Contravariant | 49 | import Data.Functor.Contravariant |
@@ -54,11 +52,7 @@ import Data.Monoid | |||
54 | import Data.Serialize as S | 52 | import Data.Serialize as S |
55 | import Data.Tuple | 53 | import Data.Tuple |
56 | import Data.Word | 54 | import Data.Word |
57 | import Foreign.C (CTime(..)) | ||
58 | import Network.Socket | 55 | import Network.Socket |
59 | import qualified Data.ByteString.Base64 as Base64 | ||
60 | import qualified Data.ByteString.Base16 as Base16 | ||
61 | import Data.Char (isSpace) | ||
62 | 56 | ||
63 | type DHTTransport = Transport String NodeInfo (DHTMessage Encrypted8) | 57 | type DHTTransport = Transport String NodeInfo (DHTMessage Encrypted8) |
64 | type HandleHi a = Maybe (Either String (DHTMessage Encrypted8, NodeInfo)) -> IO a | 58 | type HandleHi a = Maybe (Either String (DHTMessage Encrypted8, NodeInfo)) -> IO a |
diff --git a/src/Network/Tox/NodeId.hs b/src/Network/Tox/NodeId.hs index 2f836b8e..f9cf22a8 100644 --- a/src/Network/Tox/NodeId.hs +++ b/src/Network/Tox/NodeId.hs | |||
@@ -35,7 +35,6 @@ module Network.Tox.NodeId | |||
35 | , nospam16 | 35 | , nospam16 |
36 | , verifyChecksum) where | 36 | , verifyChecksum) where |
37 | 37 | ||
38 | import Debug.Trace | ||
39 | import Control.Applicative | 38 | import Control.Applicative |
40 | import Control.Arrow | 39 | import Control.Arrow |
41 | import Control.Monad | 40 | import Control.Monad |
@@ -83,7 +82,6 @@ import System.Endian | |||
83 | import qualified Data.Text as Text | 82 | import qualified Data.Text as Text |
84 | ;import Data.Text (Text) | 83 | ;import Data.Text (Text) |
85 | import Util (splitJID) | 84 | import Util (splitJID) |
86 | import Text.Printf | ||
87 | 85 | ||
88 | -- | perform io for hashes that do allocation and ffi. | 86 | -- | perform io for hashes that do allocation and ffi. |
89 | -- unsafeDupablePerformIO is used when possible as the | 87 | -- unsafeDupablePerformIO is used when possible as the |
diff --git a/src/Network/Tox/Onion/Handlers.hs b/src/Network/Tox/Onion/Handlers.hs index f497a1bf..80a6ae3a 100644 --- a/src/Network/Tox/Onion/Handlers.hs +++ b/src/Network/Tox/Onion/Handlers.hs | |||
@@ -12,23 +12,9 @@ import qualified Network.QueryResponse as QR (Client) | |||
12 | import Crypto.Tox | 12 | import Crypto.Tox |
13 | import qualified Data.Wrapper.PSQ as PSQ | 13 | import qualified Data.Wrapper.PSQ as PSQ |
14 | ;import Data.Wrapper.PSQ (PSQ,pattern (:->)) | 14 | ;import Data.Wrapper.PSQ (PSQ,pattern (:->)) |
15 | #ifdef CRYPTONITE_BACKPORT | ||
16 | import Crypto.Error.Types (CryptoFailable (..), | ||
17 | throwCryptoError) | ||
18 | #else | ||
19 | import Crypto.Error | ||
20 | #endif | ||
21 | import Control.Arrow | 15 | import Control.Arrow |
22 | 16 | ||
23 | import System.IO | ||
24 | import qualified Data.ByteArray as BA | ||
25 | import Data.Function | 17 | import Data.Function |
26 | import Data.Serialize as S | ||
27 | import qualified Data.Wrapper.PSQInt as Int | ||
28 | import Network.Kademlia | ||
29 | import Network.Address (WantIP (..), ipFamily, testIdBit) | ||
30 | import qualified Network.Kademlia.Routing as R | ||
31 | import Control.TriadCommittee | ||
32 | import qualified Data.MinMaxPSQ as MinMaxPSQ | 18 | import qualified Data.MinMaxPSQ as MinMaxPSQ |
33 | ;import Data.MinMaxPSQ (MinMaxPSQ') | 19 | ;import Data.MinMaxPSQ (MinMaxPSQ') |
34 | import Network.BitTorrent.DHT.Token as Token | 20 | import Network.BitTorrent.DHT.Token as Token |
@@ -50,8 +36,6 @@ import Data.IP hiding (fromSockAddr) | |||
50 | import Data.IP | 36 | import Data.IP |
51 | #endif | 37 | #endif |
52 | import Data.Maybe | 38 | import Data.Maybe |
53 | import Data.Bits | ||
54 | import Data.Ord | ||
55 | import Data.Functor.Identity | 39 | import Data.Functor.Identity |
56 | import DPut | 40 | import DPut |
57 | 41 | ||
diff --git a/src/Network/Tox/Onion/Transport.hs b/src/Network/Tox/Onion/Transport.hs index 70714465..e2e136ae 100644 --- a/src/Network/Tox/Onion/Transport.hs +++ b/src/Network/Tox/Onion/Transport.hs | |||
@@ -62,7 +62,6 @@ import Control.Concurrent.STM | |||
62 | import Control.Monad | 62 | import Control.Monad |
63 | import qualified Data.ByteString as B | 63 | import qualified Data.ByteString as B |
64 | ;import Data.ByteString (ByteString) | 64 | ;import Data.ByteString (ByteString) |
65 | import Data.Coerce | ||
66 | import Data.Function | 65 | import Data.Function |
67 | import Data.Functor.Contravariant | 66 | import Data.Functor.Contravariant |
68 | import Data.Functor.Identity | 67 | import Data.Functor.Identity |
@@ -77,11 +76,9 @@ import Data.Serialize as S | |||
77 | import Data.Type.Equality | 76 | import Data.Type.Equality |
78 | import Data.Typeable | 77 | import Data.Typeable |
79 | import Data.Word | 78 | import Data.Word |
80 | import Debug.Trace | ||
81 | import GHC.Generics () | 79 | import GHC.Generics () |
82 | import GHC.TypeLits | 80 | import GHC.TypeLits |
83 | import Network.Socket | 81 | import Network.Socket |
84 | import System.IO | ||
85 | import qualified Text.ParserCombinators.ReadP as RP | 82 | import qualified Text.ParserCombinators.ReadP as RP |
86 | import Data.Hashable | 83 | import Data.Hashable |
87 | import DPut | 84 | import DPut |
diff --git a/src/Network/Tox/Transport.hs b/src/Network/Tox/Transport.hs index 57f07aad..0b03ed19 100644 --- a/src/Network/Tox/Transport.hs +++ b/src/Network/Tox/Transport.hs | |||
@@ -8,7 +8,6 @@ | |||
8 | {-# LANGUAGE TypeOperators #-} | 8 | {-# LANGUAGE TypeOperators #-} |
9 | module Network.Tox.Transport (toxTransport, RouteId) where | 9 | module Network.Tox.Transport (toxTransport, RouteId) where |
10 | 10 | ||
11 | import Data.ByteString (ByteString) | ||
12 | import Network.QueryResponse | 11 | import Network.QueryResponse |
13 | import Crypto.Tox | 12 | import Crypto.Tox |
14 | import Network.Tox.DHT.Transport | 13 | import Network.Tox.DHT.Transport |
diff --git a/src/Network/UPNP.hs b/src/Network/UPNP.hs index f053369f..e89471c2 100644 --- a/src/Network/UPNP.hs +++ b/src/Network/UPNP.hs | |||
@@ -4,7 +4,6 @@ import Data.Maybe | |||
4 | import Network.Address (sockAddrPort) | 4 | import Network.Address (sockAddrPort) |
5 | import Network.Socket | 5 | import Network.Socket |
6 | import System.Directory | 6 | import System.Directory |
7 | import System.IO | ||
8 | import System.Process as Process | 7 | import System.Process as Process |
9 | import DPut | 8 | import DPut |
10 | 9 | ||
diff --git a/src/System/Global6.hs b/src/System/Global6.hs index f9073482..38a90a59 100644 --- a/src/System/Global6.hs +++ b/src/System/Global6.hs | |||
@@ -10,10 +10,8 @@ import Data.IP | |||
10 | #endif | 10 | #endif |
11 | import Data.List | 11 | import Data.List |
12 | import Data.Maybe | 12 | import Data.Maybe |
13 | import Network.Socket | ||
14 | import System.Process | 13 | import System.Process |
15 | import Text.Read | 14 | import Text.Read |
16 | import System.IO | ||
17 | 15 | ||
18 | parseIpAddr :: String -> Maybe IPv6 | 16 | parseIpAddr :: String -> Maybe IPv6 |
19 | parseIpAddr s = do | 17 | parseIpAddr s = do |
@@ -33,6 +31,8 @@ global6 = do | |||
33 | addrs <- lines <$> readProcess "ip" ["-o","-6","addr"] "" | 31 | addrs <- lines <$> readProcess "ip" ["-o","-6","addr"] "" |
34 | return $ foldr1 mplus $ map parseIpAddr addrs | 32 | return $ foldr1 mplus $ map parseIpAddr addrs |
35 | 33 | ||
34 | |||
35 | everyOther :: [a] -> [a] | ||
36 | everyOther (x:_:xs) = x : everyOther xs | 36 | everyOther (x:_:xs) = x : everyOther xs |
37 | everyOther xs = xs | 37 | everyOther xs = xs |
38 | 38 | ||
diff --git a/src/Text/XXD.hs b/src/Text/XXD.hs index b73a1ea2..77606bfa 100644 --- a/src/Text/XXD.hs +++ b/src/Text/XXD.hs | |||
@@ -2,15 +2,11 @@ | |||
2 | {-# LANGUAGE ScopedTypeVariables #-} | 2 | {-# LANGUAGE ScopedTypeVariables #-} |
3 | module Text.XXD (xxd, xxd2) where | 3 | module Text.XXD (xxd, xxd2) where |
4 | 4 | ||
5 | import qualified Data.ByteString.Base16 as Base16 | 5 | import Data.ByteArray (ByteArrayAccess) |
6 | import Data.ByteString (ByteString) | ||
7 | import qualified Data.ByteString as B | ||
8 | import Data.ByteArray (ByteArrayAccess,ByteArray) | ||
9 | import qualified Data.ByteArray as BA | 6 | import qualified Data.ByteArray as BA |
10 | import Data.Word | 7 | import Data.Word |
11 | import Data.Bits | 8 | import Data.Bits |
12 | import Data.Char | 9 | import Data.Char |
13 | import Data.List | ||
14 | import Text.Printf | 10 | import Text.Printf |
15 | 11 | ||
16 | nibble :: Word8 -> Char | 12 | nibble :: Word8 -> Char |