mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-08-25 18:20:34 +00:00
explicit exports (#1719)
* explicit exports * more empty exports * add exports * reorder * use correct ControlProtocol type for xftp router --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
This commit is contained in:
co-authored by
Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com>
parent
3ecb901e3e
commit
f3408d9bb6
@@ -1,4 +1,14 @@
|
||||
module Simplex.FileTransfer.Chunks where
|
||||
module Simplex.FileTransfer.Chunks
|
||||
( serverChunkSizes,
|
||||
chunkSize0,
|
||||
chunkSize1,
|
||||
chunkSize2,
|
||||
chunkSize3,
|
||||
kb,
|
||||
toKB,
|
||||
mb,
|
||||
gb,
|
||||
) where
|
||||
|
||||
import Data.Word (Word32)
|
||||
|
||||
|
||||
@@ -9,7 +9,28 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.FileTransfer.Client where
|
||||
module Simplex.FileTransfer.Client
|
||||
( XFTPClient (..),
|
||||
XFTPClientConfig (..),
|
||||
XFTPChunkSpec (..),
|
||||
XFTPClientError,
|
||||
defaultXFTPClientConfig,
|
||||
getXFTPClient,
|
||||
closeXFTPClient,
|
||||
xftpClientServer,
|
||||
xftpTransportHost,
|
||||
createXFTPChunk,
|
||||
addXFTPRecipients,
|
||||
uploadXFTPChunk,
|
||||
downloadXFTPChunk,
|
||||
deleteXFTPChunk,
|
||||
ackXFTPChunk,
|
||||
pingXFTP,
|
||||
singleChunkSize,
|
||||
prepareChunkSizes,
|
||||
prepareChunkSpecs,
|
||||
getChunkDigest,
|
||||
) where
|
||||
|
||||
import Control.Logger.Simple
|
||||
import Control.Monad
|
||||
|
||||
@@ -5,7 +5,17 @@
|
||||
{-# LANGUAGE NumericUnderscores #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.FileTransfer.Client.Agent where
|
||||
module Simplex.FileTransfer.Client.Agent
|
||||
( XFTPClientVar,
|
||||
XFTPClientAgent (..),
|
||||
XFTPClientAgentConfig (..),
|
||||
XFTPClientAgentError (..),
|
||||
defaultXFTPClientAgentConfig,
|
||||
newXFTPAgent,
|
||||
getXFTPServerClient,
|
||||
showServer,
|
||||
closeXFTPServerClient,
|
||||
) where
|
||||
|
||||
import Control.Logger.Simple (logInfo)
|
||||
import Control.Monad
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
{-# LANGUAGE OverloadedLists #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.FileTransfer.Client.Presets where
|
||||
module Simplex.FileTransfer.Client.Presets
|
||||
( defaultXFTPServers,
|
||||
) where
|
||||
|
||||
import Data.List.NonEmpty (NonEmpty)
|
||||
import Simplex.Messaging.Protocol (XFTPServerWithAuth)
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.FileTransfer.Crypto where
|
||||
module Simplex.FileTransfer.Crypto
|
||||
( encryptFile,
|
||||
decryptChunks,
|
||||
readChunks,
|
||||
) where
|
||||
|
||||
import Control.Monad
|
||||
import Control.Monad.Except
|
||||
|
||||
@@ -14,7 +14,25 @@
|
||||
{-# LANGUAGE TypeFamilies #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}
|
||||
|
||||
module Simplex.FileTransfer.Protocol where
|
||||
module Simplex.FileTransfer.Protocol
|
||||
( FileParty (..),
|
||||
SFileParty (..),
|
||||
AFileParty (..),
|
||||
FilePartyI (..),
|
||||
FileCommand (..),
|
||||
FileCmd (..),
|
||||
FileInfo (..),
|
||||
XFTPFileId,
|
||||
FileResponse (..),
|
||||
xftpBlockSize,
|
||||
toFileParty,
|
||||
aFileParty,
|
||||
checkParty,
|
||||
xftpEncodeAuthTransmission,
|
||||
xftpEncodeTransmission,
|
||||
xftpDecodeTServer,
|
||||
xftpDecodeTClient,
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson.TH as J
|
||||
import Data.Bifunctor (first)
|
||||
|
||||
@@ -13,7 +13,10 @@
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
|
||||
module Simplex.FileTransfer.Server where
|
||||
module Simplex.FileTransfer.Server
|
||||
( runXFTPServer,
|
||||
runXFTPServerBlocking,
|
||||
) where
|
||||
|
||||
import Control.Logger.Simple
|
||||
import Control.Monad
|
||||
@@ -44,7 +47,7 @@ import Network.HPACK.Token (tokenKey)
|
||||
import qualified Network.HTTP2.Server as H
|
||||
import Network.Socket
|
||||
import Simplex.FileTransfer.Protocol
|
||||
import Simplex.FileTransfer.Server.Control
|
||||
import Simplex.FileTransfer.Server.Control (ControlProtocol (..))
|
||||
import Simplex.FileTransfer.Server.Env
|
||||
import Simplex.FileTransfer.Server.Prometheus
|
||||
import Simplex.FileTransfer.Server.Stats
|
||||
@@ -374,6 +377,7 @@ xftpServer cfg@XFTPServerConfig {xftpPort, transportConfig, inactiveClientExpira
|
||||
CPHelp -> hPutStrLn h "commands: stats-rts, delete, help, quit"
|
||||
CPQuit -> pure ()
|
||||
CPSkip -> pure ()
|
||||
_ -> hPutStrLn h "unsupported command"
|
||||
where
|
||||
withUserRole action =
|
||||
readTVarIO role >>= \case
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.FileTransfer.Server.Control where
|
||||
module Simplex.FileTransfer.Server.Control
|
||||
( ControlProtocol (..),
|
||||
)
|
||||
where
|
||||
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
import Simplex.FileTransfer.Protocol (XFTPFileId)
|
||||
|
||||
@@ -7,7 +7,16 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
|
||||
module Simplex.FileTransfer.Server.Env where
|
||||
module Simplex.FileTransfer.Server.Env
|
||||
( XFTPServerConfig (..),
|
||||
XFTPEnv (..),
|
||||
XFTPRequest (..),
|
||||
defaultInactiveClientExpiration,
|
||||
defFileExpirationHours,
|
||||
defaultFileExpiration,
|
||||
newXFTPServerEnv,
|
||||
countUsedStorage,
|
||||
) where
|
||||
|
||||
import Control.Logger.Simple
|
||||
import Control.Monad
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
|
||||
module Simplex.FileTransfer.Server.Main where
|
||||
module Simplex.FileTransfer.Server.Main
|
||||
( xftpServerCLI,
|
||||
) where
|
||||
|
||||
import Data.Either (fromRight)
|
||||
import Data.Functor (($>))
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
|
||||
|
||||
module Simplex.FileTransfer.Server.Prometheus where
|
||||
module Simplex.FileTransfer.Server.Prometheus
|
||||
( FileServerMetrics (..),
|
||||
rtsOptionsEnv,
|
||||
xftpPrometheusMetrics,
|
||||
) where
|
||||
|
||||
import Data.Int (Int64)
|
||||
import Data.Text (Text)
|
||||
|
||||
@@ -2,7 +2,13 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.FileTransfer.Server.Stats where
|
||||
module Simplex.FileTransfer.Server.Stats
|
||||
( FileServerStats (..),
|
||||
FileServerStatsData (..),
|
||||
newFileServerStats,
|
||||
getFileServerStatsData,
|
||||
setFileServerStats,
|
||||
) where
|
||||
|
||||
import Control.Applicative ((<|>))
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -4,7 +4,30 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.FileTransfer.Types where
|
||||
module Simplex.FileTransfer.Types
|
||||
( RcvFileId,
|
||||
SndFileId,
|
||||
FileHeader (..),
|
||||
DBRcvFileId,
|
||||
RcvFile (..),
|
||||
RcvFileStatus (..),
|
||||
RcvFileChunk (..),
|
||||
RcvFileChunkReplica (..),
|
||||
RcvFileRedirect (..),
|
||||
DBSndFileId,
|
||||
SndFile (..),
|
||||
SndFileStatus (..),
|
||||
SndFileChunk (..),
|
||||
NewSndChunkReplica (..),
|
||||
SndFileChunkReplica (..),
|
||||
SndFileReplicaStatus (..),
|
||||
DeletedSndChunkReplica (..),
|
||||
SentRecipientReplica (..),
|
||||
FileErrorType (..),
|
||||
authTagSize,
|
||||
sndFileEncPath,
|
||||
sndChunkSize,
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson.TH as J
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
module Simplex.Messaging.Agent.QueryString where
|
||||
module Simplex.Messaging.Agent.QueryString
|
||||
( QueryStringParams (..),
|
||||
QSPEscaping (..),
|
||||
queryParam,
|
||||
queryParamParser,
|
||||
queryParam_,
|
||||
queryParamStr,
|
||||
) where
|
||||
|
||||
import Data.Attoparsec.ByteString.Char8 (Parser)
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -3,7 +3,32 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Agent.Stats where
|
||||
module Simplex.Messaging.Agent.Stats
|
||||
( AgentSMPServerStats (..),
|
||||
AgentSMPServerStatsData (..),
|
||||
OptionalInt (..),
|
||||
AgentXFTPServerStats (..),
|
||||
AgentXFTPServerStatsData (..),
|
||||
AgentNtfServerStats (..),
|
||||
AgentNtfServerStatsData (..),
|
||||
AgentPersistedServerStats (..),
|
||||
OptionalMap (..),
|
||||
newAgentSMPServerStats,
|
||||
newAgentSMPServerStatsData,
|
||||
newAgentSMPServerStats',
|
||||
getAgentSMPServerStats,
|
||||
addSMPStatsData,
|
||||
newAgentXFTPServerStats,
|
||||
newAgentXFTPServerStatsData,
|
||||
newAgentXFTPServerStats',
|
||||
getAgentXFTPServerStats,
|
||||
addXFTPStatsData,
|
||||
newAgentNtfServerStats,
|
||||
newAgentNtfServerStatsData,
|
||||
newAgentNtfServerStats',
|
||||
getAgentNtfServerStats,
|
||||
addNtfStatsData,
|
||||
) where
|
||||
|
||||
import Data.Aeson (FromJSON (..), FromJSONKey, ToJSON (..))
|
||||
import qualified Data.Aeson.TH as J
|
||||
|
||||
@@ -14,7 +14,79 @@
|
||||
{-# LANGUAGE StandaloneDeriving #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unticked-promoted-constructors #-}
|
||||
|
||||
module Simplex.Messaging.Agent.Store where
|
||||
module Simplex.Messaging.Agent.Store
|
||||
( RcvQueue,
|
||||
NewRcvQueue,
|
||||
StoredRcvQueue (..),
|
||||
RcvQueueSub (..),
|
||||
ClientNtfCreds (..),
|
||||
InvShortLink (..),
|
||||
SndQueue,
|
||||
NewSndQueue,
|
||||
StoredSndQueue (..),
|
||||
SMPQueueRec (..),
|
||||
SomeRcvQueue (..),
|
||||
ConnType (..),
|
||||
Connection' (..),
|
||||
Connection,
|
||||
SConnType (..),
|
||||
SomeConn' (..),
|
||||
SomeConn,
|
||||
SomeConnSub,
|
||||
ConnData (..),
|
||||
NoticeId,
|
||||
PendingCommand (..),
|
||||
AgentCmdType (..),
|
||||
AgentCommand (..),
|
||||
AgentCommandTag (..),
|
||||
InternalCommand (..),
|
||||
InternalCommandTag (..),
|
||||
NewConfirmation (..),
|
||||
AcceptedConfirmation (..),
|
||||
NewInvitation (..),
|
||||
Invitation (..),
|
||||
PrevExternalSndId,
|
||||
PrevRcvMsgHash,
|
||||
PrevSndMsgHash,
|
||||
RcvMsgData (..),
|
||||
RcvMsg (..),
|
||||
SndMsgData (..),
|
||||
SndMsgPrepData (..),
|
||||
SndMsg (..),
|
||||
PendingMsgData (..),
|
||||
PendingMsgPrepData (..),
|
||||
InternalRcvId (..),
|
||||
ExternalSndId,
|
||||
ExternalSndTs,
|
||||
BrokerId,
|
||||
BrokerTs,
|
||||
InternalSndId (..),
|
||||
MsgBase (..),
|
||||
InternalId (..),
|
||||
InternalTs,
|
||||
AsyncCmdId,
|
||||
StoreError (..),
|
||||
AnyStoreError (..),
|
||||
createStore,
|
||||
rcvQueueSub,
|
||||
clientServiceId,
|
||||
rcvSMPQueueAddress,
|
||||
canAbortRcvSwitch,
|
||||
findQ,
|
||||
removeQ,
|
||||
removeQP,
|
||||
sndAddress,
|
||||
findRQ,
|
||||
switchingRQ,
|
||||
updatedQs,
|
||||
toConnData,
|
||||
updateConnection,
|
||||
connType,
|
||||
ratchetSyncAllowed,
|
||||
ratchetSyncSendProhibited,
|
||||
agentCommandTag,
|
||||
internalCmdTag,
|
||||
) where
|
||||
|
||||
import Control.Exception (Exception (..))
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
{-# LANGUAGE StandaloneDeriving #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Agent.Store.Entity where
|
||||
module Simplex.Messaging.Agent.Store.Entity
|
||||
( DBStored (..),
|
||||
DBEntityId,
|
||||
DBEntityId' (..),
|
||||
)
|
||||
where
|
||||
|
||||
import Data.Aeson (FromJSON (..), ToJSON (..))
|
||||
import qualified Data.Aeson as J
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
module Simplex.Messaging.Agent.Store.Postgres.Options where
|
||||
module Simplex.Messaging.Agent.Store.Postgres.Options
|
||||
( DBOpts (..),
|
||||
) where
|
||||
|
||||
import Data.ByteString (ByteString)
|
||||
import Numeric.Natural
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
module Simplex.Messaging.Agent.Store.SQLite.Util where
|
||||
module Simplex.Messaging.Agent.Store.SQLite.Util
|
||||
( SQLiteFunc,
|
||||
SQLiteFuncFinal,
|
||||
createStaticFunction,
|
||||
createStaticAggregate,
|
||||
) where
|
||||
|
||||
import Control.Exception (SomeException, catch, mask_)
|
||||
import Data.ByteString (ByteString)
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Compression where
|
||||
module Simplex.Messaging.Compression
|
||||
( Compressed,
|
||||
maxLengthPassthrough,
|
||||
compressionLevel,
|
||||
) where
|
||||
|
||||
import qualified Codec.Compression.Zstd as Z1
|
||||
import Data.ByteString (ByteString)
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
{-# LANGUAGE GADTs #-}
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Simplex.Messaging.Crypto.SNTRUP761 where
|
||||
module Simplex.Messaging.Crypto.SNTRUP761
|
||||
( KEMHybridSecret (..),
|
||||
kcbDecrypt,
|
||||
kcbEncrypt,
|
||||
kemHybridSecret,
|
||||
) where
|
||||
|
||||
import Crypto.Hash (Digest, SHA3_256, hash)
|
||||
import Data.ByteArray (ScrubbedBytes)
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
{-# LANGUAGE CPP #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Crypto.SNTRUP761.Bindings where
|
||||
module Simplex.Messaging.Crypto.SNTRUP761.Bindings
|
||||
( KEMPublicKey (..),
|
||||
KEMSecretKey,
|
||||
KEMCiphertext (..),
|
||||
KEMSharedKey (..),
|
||||
KEMKeyPair,
|
||||
sntrup761Keypair,
|
||||
sntrup761Enc,
|
||||
sntrup761Dec,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Crypto.Random (ChaChaDRG)
|
||||
|
||||
@@ -4,7 +4,25 @@
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Client where
|
||||
module Simplex.Messaging.Notifications.Client
|
||||
( NtfClient,
|
||||
NtfClientError,
|
||||
defaultNTFClientConfig,
|
||||
ntfRegisterToken,
|
||||
ntfVerifyToken,
|
||||
ntfCheckToken,
|
||||
ntfReplaceToken,
|
||||
ntfDeleteToken,
|
||||
ntfSetCronInterval,
|
||||
ntfCreateSubscription,
|
||||
ntfCreateSubscriptions,
|
||||
ntfCheckSubscription,
|
||||
ntfCheckSubscriptions,
|
||||
ntfDeleteSubscription,
|
||||
sendNtfCommand,
|
||||
okNtfCommand,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Monad.Except
|
||||
import Control.Monad.Trans.Except
|
||||
|
||||
@@ -9,7 +9,36 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# LANGUAGE TypeFamilies #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Protocol where
|
||||
module Simplex.Messaging.Notifications.Protocol
|
||||
( NtfEntity (..),
|
||||
SNtfEntity (..),
|
||||
NtfEntityI (..),
|
||||
NtfCommandTag (..),
|
||||
NtfCmdTag (..),
|
||||
NtfRegCode (..),
|
||||
NewNtfEntity (..),
|
||||
ANewNtfEntity (..),
|
||||
NtfCommand (..),
|
||||
NtfCmd (..),
|
||||
NtfResponseTag (..),
|
||||
NtfResponse (..),
|
||||
SMPQueueNtf (..),
|
||||
PushProvider (..),
|
||||
DeviceToken (..),
|
||||
PNMessageData (..),
|
||||
NtfEntityId,
|
||||
NtfSubscriptionId,
|
||||
NtfTokenId,
|
||||
NtfSubStatus (..),
|
||||
NtfTknStatus (..),
|
||||
NTInvalidReason (..),
|
||||
encodePNMessages,
|
||||
pnMessagesP,
|
||||
ntfShouldSubscribe,
|
||||
allowTokenVerification,
|
||||
allowNtfSubCommands,
|
||||
checkEntity,
|
||||
) where
|
||||
|
||||
import Control.Applicative (optional, (<|>))
|
||||
import Data.Aeson (FromJSON (..), ToJSON (..), (.:), (.=))
|
||||
|
||||
@@ -15,7 +15,12 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server where
|
||||
module Simplex.Messaging.Notifications.Server
|
||||
( runNtfServer,
|
||||
runNtfServerBlocking,
|
||||
restoreServerLastNtfs,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Concurrent (threadDelay)
|
||||
import Control.Concurrent.Async (mapConcurrently)
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Control where
|
||||
module Simplex.Messaging.Notifications.Server.Control
|
||||
( ControlProtocol (..),
|
||||
)
|
||||
where
|
||||
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
import Simplex.Messaging.Encoding.String
|
||||
|
||||
@@ -6,7 +6,23 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Env where
|
||||
module Simplex.Messaging.Notifications.Server.Env
|
||||
( NtfServerConfig (..),
|
||||
NtfEnv (..),
|
||||
NtfSubscriber (..),
|
||||
SMPSubscriberVar,
|
||||
SMPSubscriber (..),
|
||||
NtfPushServer (..),
|
||||
NtfRequest (..),
|
||||
NtfServerClient (..),
|
||||
defaultInactiveClientExpiration,
|
||||
newNtfServerEnv,
|
||||
newNtfSubscriber,
|
||||
newNtfPushServer,
|
||||
newPushClient,
|
||||
getPushClient,
|
||||
newNtfServerClient,
|
||||
) where
|
||||
|
||||
import Control.Concurrent (ThreadId)
|
||||
import Control.Logger.Simple
|
||||
|
||||
@@ -8,7 +8,10 @@
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Main where
|
||||
module Simplex.Messaging.Notifications.Server.Main
|
||||
( ntfServerCLI,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Logger.Simple (setLogLevel)
|
||||
import Control.Monad ((<$!>))
|
||||
|
||||
@@ -4,7 +4,14 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Prometheus where
|
||||
module Simplex.Messaging.Notifications.Server.Prometheus
|
||||
( NtfServerMetrics (..),
|
||||
NtfRealTimeMetrics (..),
|
||||
NtfSMPWorkerMetrics (..),
|
||||
NtfSMPSubMetrics (..),
|
||||
rtsOptionsEnv,
|
||||
ntfPrometheusMetrics,
|
||||
) where
|
||||
|
||||
import Data.Int (Int64)
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
@@ -8,7 +8,20 @@
|
||||
|
||||
{-# HLINT ignore "Use newtype instead of data" #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Push.APNS where
|
||||
module Simplex.Messaging.Notifications.Server.Push.APNS
|
||||
( PushNotification (..),
|
||||
APNSNotification (..),
|
||||
APNSNotificationBody (..),
|
||||
APNSAlertBody (..),
|
||||
APNSPushClientConfig (..),
|
||||
PushProviderError (..),
|
||||
PushProviderClient,
|
||||
APNSErrorResponse (..),
|
||||
apnsProviderHost,
|
||||
defaultAPNSPushClientConfig,
|
||||
createAPNSPushClient,
|
||||
apnsPushProviderClient,
|
||||
) where
|
||||
|
||||
import Control.Exception (Exception)
|
||||
import Control.Logger.Simple
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Push.APNS.Internal where
|
||||
module Simplex.Messaging.Notifications.Server.Push.APNS.Internal
|
||||
( hApnsTopic,
|
||||
hApnsPushType,
|
||||
hApnsPriority,
|
||||
apnsJSONOptions,
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson as J
|
||||
import qualified Data.CaseInsensitive as CI
|
||||
|
||||
@@ -2,7 +2,19 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Stats where
|
||||
module Simplex.Messaging.Notifications.Server.Stats
|
||||
( NtfServerStats (..),
|
||||
NtfServerStatsData (..),
|
||||
StatsByServer,
|
||||
StatsByServerData (..),
|
||||
newNtfServerStats,
|
||||
getNtfServerStatsData,
|
||||
setNtfServerStats,
|
||||
getStatsByServer,
|
||||
setStatsByServer,
|
||||
incServerStat,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Applicative (optional, (<|>))
|
||||
import Control.Concurrent.STM
|
||||
|
||||
@@ -9,7 +9,26 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Store where
|
||||
module Simplex.Messaging.Notifications.Server.Store
|
||||
( NtfSTMStore (..),
|
||||
NtfTknData (..),
|
||||
NtfSubData (..),
|
||||
TokenNtfMessageRecord (..),
|
||||
newNtfSTMStore,
|
||||
mkNtfTknData,
|
||||
ntfSubServer,
|
||||
stmGetNtfTokenIO,
|
||||
stmAddNtfToken,
|
||||
stmRemoveInactiveTokenRegistrations,
|
||||
stmRemoveTokenRegistration,
|
||||
stmDeleteNtfToken,
|
||||
stmGetNtfSubscriptionIO,
|
||||
stmAddNtfSubscription,
|
||||
stmDeleteNtfSubscription,
|
||||
stmStoreTokenLastNtf,
|
||||
stmSetNtfService,
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Monad
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Store.Migrations where
|
||||
module Simplex.Messaging.Notifications.Server.Store.Migrations
|
||||
( ntfServerMigrations,
|
||||
)
|
||||
where
|
||||
|
||||
import Data.List (sortOn)
|
||||
import Data.Text (Text)
|
||||
|
||||
@@ -16,7 +16,41 @@
|
||||
{-# LANGUAGE TypeOperators #-}
|
||||
{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-ambiguous-fields #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Store.Postgres where
|
||||
module Simplex.Messaging.Notifications.Server.Store.Postgres
|
||||
( NtfPostgresStore (..),
|
||||
NtfEntityRec (..),
|
||||
mkNtfTknRec,
|
||||
newNtfDbStore,
|
||||
closeNtfDbStore,
|
||||
addNtfToken,
|
||||
replaceNtfToken,
|
||||
getNtfToken,
|
||||
findNtfTokenRegistration,
|
||||
deleteNtfToken,
|
||||
updateTknCronInterval,
|
||||
getUsedSMPServers,
|
||||
getServerNtfSubscriptions,
|
||||
findNtfSubscription,
|
||||
getNtfSubscription,
|
||||
mkNtfSubRec,
|
||||
updateTknStatus,
|
||||
setTknStatusConfirmed,
|
||||
setTokenActive,
|
||||
withPeriodicNtfTokens,
|
||||
updateTokenCronSentAt,
|
||||
addNtfSubscription,
|
||||
deleteNtfSubscription,
|
||||
updateSubStatus,
|
||||
updateSrvSubStatus,
|
||||
batchUpdateSrvSubStatus,
|
||||
batchUpdateSrvSubErrors,
|
||||
removeServiceAssociation,
|
||||
addTokenLastNtf,
|
||||
getEntityCounts,
|
||||
importNtfSTMStore,
|
||||
exportNtfDbStore,
|
||||
withDB',
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import qualified Control.Exception as E
|
||||
|
||||
@@ -4,7 +4,16 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Server.Store.Types where
|
||||
module Simplex.Messaging.Notifications.Server.Store.Types
|
||||
( NtfTknRec (..),
|
||||
NtfSubRec (..),
|
||||
ServerNtfSub,
|
||||
NtfAssociatedService,
|
||||
mkTknData,
|
||||
mkTknRec,
|
||||
mkSubData,
|
||||
mkSubRec,
|
||||
) where
|
||||
|
||||
import Control.Applicative (optional)
|
||||
import Control.Concurrent.STM
|
||||
|
||||
@@ -7,7 +7,18 @@
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Transport where
|
||||
module Simplex.Messaging.Notifications.Transport
|
||||
( NTFVersion,
|
||||
VersionRangeNTF,
|
||||
pattern VersionNTF,
|
||||
THandleNTF,
|
||||
invalidReasonNTFVersion,
|
||||
supportedClientNTFVRange,
|
||||
supportedServerNTFVRange,
|
||||
alpnSupportedNTFHandshakes,
|
||||
ntfServerHandshake,
|
||||
ntfClientHandshake,
|
||||
) where
|
||||
|
||||
import Control.Monad (forM)
|
||||
import Control.Monad.Except
|
||||
|
||||
@@ -4,7 +4,19 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Notifications.Types where
|
||||
module Simplex.Messaging.Notifications.Types
|
||||
( NtfTknAction (..),
|
||||
NtfToken (..),
|
||||
NtfSubAction (..),
|
||||
NtfActionTs,
|
||||
NtfSubNTFAction (..),
|
||||
NtfSubSMPAction (..),
|
||||
NtfAgentSubStatus (..),
|
||||
NtfSubscription (..),
|
||||
newNtfToken,
|
||||
isDeleteNtfSubAction,
|
||||
newNtfSubscription,
|
||||
) where
|
||||
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
import Data.Text.Encoding (decodeLatin1, encodeUtf8)
|
||||
|
||||
@@ -4,7 +4,20 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
|
||||
module Simplex.Messaging.Parsers where
|
||||
module Simplex.Messaging.Parsers
|
||||
( parse,
|
||||
parseAll,
|
||||
parseE,
|
||||
parseE',
|
||||
parseRead1,
|
||||
parseString,
|
||||
fstToLower,
|
||||
dropPrefix,
|
||||
enumJSON,
|
||||
sumTypeJSON,
|
||||
defaultJSON,
|
||||
textP,
|
||||
) where
|
||||
|
||||
import Control.Monad.Trans.Except
|
||||
import qualified Data.Aeson as J
|
||||
|
||||
@@ -210,6 +210,7 @@ module Simplex.Messaging.Protocol
|
||||
-- * exports for tests
|
||||
CommandTag (..),
|
||||
BrokerMsgTag (..),
|
||||
checkParty,
|
||||
)
|
||||
where
|
||||
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Protocol.Types where
|
||||
module Simplex.Messaging.Protocol.Types
|
||||
( ClientNotice (..),
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson.TH as J
|
||||
import Data.Int (Int64)
|
||||
|
||||
@@ -11,7 +11,46 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Server.CLI where
|
||||
module Simplex.Messaging.Server.CLI
|
||||
( SignAlgorithm (..),
|
||||
X509Config (..),
|
||||
CertOptions (..),
|
||||
IniOptions (..),
|
||||
exitError,
|
||||
confirmOrExit,
|
||||
defaultX509Config,
|
||||
getCliCommand',
|
||||
simplexmqVersionCommit,
|
||||
simplexmqCommit,
|
||||
createServerX509,
|
||||
createServerX509_,
|
||||
certOptionsP,
|
||||
dbOptsP,
|
||||
startOptionsP,
|
||||
parseLogLevel,
|
||||
genOnline,
|
||||
warnCAPrivateKeyFile,
|
||||
mkIniOptions,
|
||||
strictIni,
|
||||
readStrictIni,
|
||||
readIniDefault,
|
||||
iniOnOff,
|
||||
strDecodeIni,
|
||||
withPrompt,
|
||||
onOffPrompt,
|
||||
onOff,
|
||||
settingIsOn,
|
||||
checkSavedFingerprint,
|
||||
iniTransports,
|
||||
iniDBOptions,
|
||||
printServerConfig,
|
||||
printServerTransports,
|
||||
printSMPServerConfig,
|
||||
deleteDirIfExists,
|
||||
printServiceInfo,
|
||||
clearDirIfExists,
|
||||
getEnvPath,
|
||||
) where
|
||||
|
||||
import Control.Logger.Simple (LogLevel (..))
|
||||
import Control.Monad
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Server.Control where
|
||||
module Simplex.Messaging.Server.Control
|
||||
( CPClientRole (..),
|
||||
ControlProtocol (..),
|
||||
) where
|
||||
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
import Simplex.Messaging.Encoding.String
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
|
||||
module Simplex.Messaging.Server.Expiration where
|
||||
module Simplex.Messaging.Server.Expiration
|
||||
( ExpirationConfig (..),
|
||||
expireBeforeEpoch,
|
||||
showTTL,
|
||||
) where
|
||||
|
||||
import Control.Monad.IO.Class
|
||||
import Data.Int (Int64)
|
||||
|
||||
@@ -6,7 +6,19 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Server.Information where
|
||||
module Simplex.Messaging.Server.Information
|
||||
( ServerInformation (..),
|
||||
ServerPublicConfig (..),
|
||||
ServerPublicInfo (..),
|
||||
ServerPersistenceMode (..),
|
||||
ServerConditions (..),
|
||||
HostingType (..),
|
||||
Entity (..),
|
||||
ServerContactAddress (..),
|
||||
PGPKey (..),
|
||||
emptyServerInfo,
|
||||
hasServerInfo,
|
||||
) where
|
||||
|
||||
import Data.Aeson (FromJSON (..), ToJSON (..))
|
||||
import qualified Data.Aeson.TH as J
|
||||
|
||||
@@ -15,7 +15,29 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-}
|
||||
|
||||
module Simplex.Messaging.Server.Main where
|
||||
module Simplex.Messaging.Server.Main
|
||||
( EmbeddedWebParams (..),
|
||||
WebHttpsParams (..),
|
||||
CliCommand (..),
|
||||
StoreCmd (..),
|
||||
DatabaseTable (..),
|
||||
smpServerCLI,
|
||||
smpServerCLI_,
|
||||
#if defined(dbServerPostgres)
|
||||
importStoreLogToDatabase,
|
||||
importMessagesToDatabase,
|
||||
exportDatabaseToStoreLog,
|
||||
#endif
|
||||
newJournalMsgStore,
|
||||
storeMsgsJournalDir',
|
||||
getServerSourceCode,
|
||||
simplexmqSource,
|
||||
serverPublicInfo,
|
||||
validCountryValue,
|
||||
printSourceCode,
|
||||
cliCommandP,
|
||||
strParse,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Exception (SomeException, finally, try)
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Server.Main.GitCommit where
|
||||
module Simplex.Messaging.Server.Main.GitCommit
|
||||
( gitCommit,
|
||||
) where
|
||||
|
||||
import Language.Haskell.TH
|
||||
import System.Process
|
||||
|
||||
@@ -2,7 +2,18 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Server.Main.Init where
|
||||
module Simplex.Messaging.Server.Main.Init
|
||||
( InitOptions (..),
|
||||
ServerPassword (..),
|
||||
defaultControlPort,
|
||||
defaultDBOpts,
|
||||
defaultDeletedTTL,
|
||||
iniFileContent,
|
||||
informationIniContent,
|
||||
iniDbOpts,
|
||||
optDisabled,
|
||||
optDisabled',
|
||||
) where
|
||||
|
||||
import Data.Int (Int64)
|
||||
import qualified Data.List.NonEmpty as L
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Server.MsgStore where
|
||||
module Simplex.Messaging.Server.MsgStore
|
||||
( MsgLogRecord (..),
|
||||
) where
|
||||
|
||||
import Simplex.Messaging.Encoding.String
|
||||
import Simplex.Messaging.Protocol (Message (..), RecipientId)
|
||||
|
||||
@@ -15,7 +15,25 @@
|
||||
|
||||
{-# HLINT ignore "Redundant multi-way if" #-}
|
||||
|
||||
module Simplex.Messaging.Server.MsgStore.Types where
|
||||
module Simplex.Messaging.Server.MsgStore.Types
|
||||
( MsgStoreClass (..),
|
||||
MSType (..),
|
||||
QSType (..),
|
||||
SMSType (..),
|
||||
SQSType (..),
|
||||
MessageStats (..),
|
||||
LoadedQueueCounts (..),
|
||||
newMessageStats,
|
||||
addQueue,
|
||||
getQueue,
|
||||
getQueueRec,
|
||||
getQueues,
|
||||
getQueueRecs,
|
||||
readQueueRec,
|
||||
withPeekMsgQueue,
|
||||
expireQueueMsgs,
|
||||
deleteExpireMsgs_,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Monad
|
||||
|
||||
@@ -3,7 +3,14 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Server.NtfStore where
|
||||
module Simplex.Messaging.Server.NtfStore
|
||||
( NtfStore (..),
|
||||
MsgNtf (..),
|
||||
NtfLogRecord (..),
|
||||
storeNtf,
|
||||
deleteNtfs,
|
||||
deleteExpiredNtfs,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Monad (foldM)
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
{-# OPTIONS_GHC -fno-warn-unrecognised-pragmas #-}
|
||||
|
||||
module Simplex.Messaging.Server.Prometheus where
|
||||
module Simplex.Messaging.Server.Prometheus
|
||||
( ServerMetrics (..),
|
||||
RealTimeMetrics (..),
|
||||
RTSubscriberMetrics (..),
|
||||
rtsOptionsEnv,
|
||||
prometheusMetrics,
|
||||
) where
|
||||
|
||||
import Data.Int (Int64)
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
|
||||
@@ -7,7 +7,13 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Server.QueueStore where
|
||||
module Simplex.Messaging.Server.QueueStore
|
||||
( QueueRec (..),
|
||||
NtfCreds (..),
|
||||
ServiceRec (..),
|
||||
CertFingerprint,
|
||||
ServerEntityStatus (..),
|
||||
) where
|
||||
|
||||
import Control.Applicative (optional, (<|>))
|
||||
import qualified Data.ByteString.Char8 as B
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
module Simplex.Messaging.Server.QueueStore.Postgres.Config where
|
||||
module Simplex.Messaging.Server.QueueStore.Postgres.Config
|
||||
( PostgresStoreCfg (..),
|
||||
) where
|
||||
|
||||
import Data.Int (Int64)
|
||||
import Simplex.Messaging.Agent.Store.Postgres.Options (DBOpts)
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE QuasiQuotes #-}
|
||||
|
||||
module Simplex.Messaging.Server.QueueStore.Postgres.Migrations where
|
||||
module Simplex.Messaging.Server.QueueStore.Postgres.Migrations
|
||||
( serverMigrations,
|
||||
)
|
||||
where
|
||||
|
||||
import Data.List (sortOn)
|
||||
import Data.Text (Text)
|
||||
|
||||
@@ -3,7 +3,14 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Server.QueueStore.QueueInfo where
|
||||
module Simplex.Messaging.Server.QueueStore.QueueInfo
|
||||
( QueueInfo (..),
|
||||
QSub (..),
|
||||
QSubThread (..),
|
||||
MsgInfo (..),
|
||||
MsgType (..),
|
||||
QueueMode (..),
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson as J
|
||||
import qualified Data.Aeson.TH as JQ
|
||||
|
||||
@@ -5,7 +5,12 @@
|
||||
{-# LANGUAGE TypeFamilies #-}
|
||||
{-# LANGUAGE TypeFamilyDependencies #-}
|
||||
|
||||
module Simplex.Messaging.Server.QueueStore.Types where
|
||||
module Simplex.Messaging.Server.QueueStore.Types
|
||||
( StoreQueueClass (..),
|
||||
QueueStoreClass (..),
|
||||
EntityCounts (..),
|
||||
withLoadedQueues,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Monad
|
||||
|
||||
@@ -6,7 +6,40 @@
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Server.Stats where
|
||||
module Simplex.Messaging.Server.Stats
|
||||
( ServerStats (..),
|
||||
ServerStatsData (..),
|
||||
PeriodStats (..),
|
||||
PeriodStatsData (..),
|
||||
PeriodStatCounts (..),
|
||||
ProxyStats (..),
|
||||
ProxyStatsData (..),
|
||||
ServiceStats (..),
|
||||
ServiceStatsData (..),
|
||||
TimeBuckets (..),
|
||||
newServerStats,
|
||||
getServerStatsData,
|
||||
setServerStats,
|
||||
newPeriodStats,
|
||||
newPeriodStatsData,
|
||||
getPeriodStatsData,
|
||||
setPeriodStats,
|
||||
periodStatDataCounts,
|
||||
periodStatCounts,
|
||||
updatePeriodStats,
|
||||
newProxyStats,
|
||||
newProxyStatsData,
|
||||
getProxyStatsData,
|
||||
getResetProxyStatsData,
|
||||
setProxyStats,
|
||||
newServiceStatsData,
|
||||
newServiceStats,
|
||||
getServiceStatsData,
|
||||
getResetServiceStatsData,
|
||||
setServiceStats,
|
||||
emptyTimeBuckets,
|
||||
updateTimeBuckets,
|
||||
) where
|
||||
|
||||
import Control.Applicative (optional, (<|>))
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Server.StoreLog.ReadWrite where
|
||||
module Simplex.Messaging.Server.StoreLog.ReadWrite
|
||||
( writeQueueStore,
|
||||
readQueueStore,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Control.Logger.Simple
|
||||
|
||||
@@ -2,7 +2,9 @@
|
||||
{-# LANGUAGE GADTs #-}
|
||||
{-# LANGUAGE KindSignatures #-}
|
||||
|
||||
module Simplex.Messaging.Server.StoreLog.Types where
|
||||
module Simplex.Messaging.Server.StoreLog.Types
|
||||
( StoreLog (..),
|
||||
) where
|
||||
|
||||
import System.IO (Handle, IOMode (..))
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.ServiceScheme where
|
||||
module Simplex.Messaging.ServiceScheme
|
||||
( ServiceScheme (..),
|
||||
SrvLoc (..),
|
||||
simplexChat,
|
||||
) where
|
||||
|
||||
import Control.Applicative ((<|>))
|
||||
import qualified Data.Attoparsec.ByteString.Char8 as A
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.Messaging.Session where
|
||||
module Simplex.Messaging.Session
|
||||
( SessionVar (..),
|
||||
getSessVar,
|
||||
removeSessVar,
|
||||
tryReadSessVar,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import Data.Time (UTCTime)
|
||||
|
||||
@@ -6,7 +6,15 @@
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.SystemTime where
|
||||
module Simplex.Messaging.SystemTime
|
||||
( RoundedSystemTime (..),
|
||||
SystemDate,
|
||||
SystemSeconds,
|
||||
getRoundedSystemTime,
|
||||
getSystemDate,
|
||||
getSystemSeconds,
|
||||
roundedToUTCTime,
|
||||
) where
|
||||
|
||||
import Data.Aeson (FromJSON, ToJSON)
|
||||
import Data.Int (Int64)
|
||||
|
||||
@@ -2,7 +2,15 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Transport.Buffer where
|
||||
module Simplex.Messaging.Transport.Buffer
|
||||
( TBuffer (..),
|
||||
newTBuffer,
|
||||
peekBuffered,
|
||||
getBuffered,
|
||||
withTimedErr,
|
||||
getLnBuffered,
|
||||
trimCR,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import qualified Control.Exception as E
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Transport.HTTP2 where
|
||||
module Simplex.Messaging.Transport.HTTP2
|
||||
( HTTP2Body (..),
|
||||
defaultHTTP2BufferSize,
|
||||
withHTTP2,
|
||||
http2TLSParams,
|
||||
getHTTP2Body,
|
||||
httpALPN,
|
||||
httpALPN11,
|
||||
) where
|
||||
|
||||
import qualified Control.Exception as E
|
||||
import Data.ByteString.Char8 (ByteString)
|
||||
|
||||
@@ -8,7 +8,19 @@
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
{-# LANGUAGE TypeApplications #-}
|
||||
|
||||
module Simplex.Messaging.Transport.HTTP2.Client where
|
||||
module Simplex.Messaging.Transport.HTTP2.Client
|
||||
( HTTP2Client (..),
|
||||
HClient (..),
|
||||
HTTP2Response (..),
|
||||
HTTP2ClientConfig (..),
|
||||
HTTP2ClientError (..),
|
||||
defaultHTTP2ClientConfig,
|
||||
getHTTP2Client,
|
||||
getVerifiedHTTP2Client,
|
||||
attachHTTP2Client,
|
||||
closeHTTP2Client,
|
||||
sendRequest,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.Async
|
||||
import Control.Exception (IOException, try)
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
{-# LANGUAGE MultiWayIf #-}
|
||||
|
||||
module Simplex.Messaging.Transport.HTTP2.File where
|
||||
module Simplex.Messaging.Transport.HTTP2.File
|
||||
( fileBlockSize,
|
||||
hReceiveFile,
|
||||
hSendFile,
|
||||
getFileChunk,
|
||||
) where
|
||||
|
||||
import Data.ByteString (ByteString)
|
||||
import qualified Data.ByteString as B
|
||||
|
||||
@@ -4,7 +4,11 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.Messaging.Transport.KeepAlive where
|
||||
module Simplex.Messaging.Transport.KeepAlive
|
||||
( KeepAliveOpts (..),
|
||||
defaultKeepAliveOpts,
|
||||
setSocketKeepAlive,
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson.TH as J
|
||||
import Foreign.C (CInt (..))
|
||||
|
||||
@@ -2,7 +2,12 @@
|
||||
{-# LANGUAGE NamedFieldPuns #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Simplex.Messaging.Transport.Shared where
|
||||
module Simplex.Messaging.Transport.Shared
|
||||
( ChainCertificates (..),
|
||||
chainIdCaCerts,
|
||||
x509validate,
|
||||
takePeerCertChain,
|
||||
) where
|
||||
|
||||
import Control.Concurrent.STM
|
||||
import qualified Control.Exception as E
|
||||
|
||||
@@ -2,7 +2,69 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE ScopedTypeVariables #-}
|
||||
|
||||
module Simplex.Messaging.Util where
|
||||
module Simplex.Messaging.Util
|
||||
( AnyError (..),
|
||||
(<$?>),
|
||||
($>>),
|
||||
(<$$),
|
||||
(<$$>),
|
||||
raceAny_,
|
||||
bshow,
|
||||
tshow,
|
||||
maybeWord,
|
||||
liftError,
|
||||
liftError',
|
||||
liftEitherWith,
|
||||
ifM,
|
||||
whenM,
|
||||
unlessM,
|
||||
anyM,
|
||||
($>>=),
|
||||
mapME,
|
||||
bindRight,
|
||||
forME,
|
||||
mapAccumLM,
|
||||
mapAccumLM_List,
|
||||
mapAccumLM_NonEmpty,
|
||||
tryWriteTBQueue,
|
||||
catchAll,
|
||||
catchAll_,
|
||||
tryAllErrors,
|
||||
tryAllErrors',
|
||||
catchAllErrors,
|
||||
catchAllErrors',
|
||||
catchThrow,
|
||||
allFinally,
|
||||
isOwnException,
|
||||
isAsyncCancellation,
|
||||
catchOwn',
|
||||
catchOwn,
|
||||
tryAllOwnErrors,
|
||||
tryAllOwnErrors',
|
||||
catchAllOwnErrors,
|
||||
catchAllOwnErrors',
|
||||
eitherToMaybe,
|
||||
listToEither,
|
||||
firstRow,
|
||||
maybeFirstRow,
|
||||
maybeFirstRow',
|
||||
firstRow',
|
||||
groupOn,
|
||||
groupOn',
|
||||
eqOn,
|
||||
groupAllOn,
|
||||
toChunks,
|
||||
safeDecodeUtf8,
|
||||
timeoutThrow,
|
||||
threadDelay',
|
||||
diffToMicroseconds,
|
||||
diffToMilliseconds,
|
||||
labelMyThread,
|
||||
atomicModifyIORef'_,
|
||||
encodeJSON,
|
||||
decodeJSON,
|
||||
traverseWithKey_,
|
||||
) where
|
||||
|
||||
import Control.Exception (AllocationLimitExceeded (..), AsyncException (..))
|
||||
import qualified Control.Exception as E
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
module Simplex.Messaging.Version.Internal where
|
||||
module Simplex.Messaging.Version.Internal
|
||||
( Version (..),
|
||||
) where
|
||||
|
||||
import Data.Aeson (FromJSON (..), ToJSON (..))
|
||||
import Data.Word (Word16)
|
||||
|
||||
@@ -7,7 +7,15 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE PatternSynonyms #-}
|
||||
|
||||
module Simplex.RemoteControl.Discovery where
|
||||
module Simplex.RemoteControl.Discovery
|
||||
( getLocalAddress,
|
||||
mkLastLocalHost,
|
||||
preferAddress,
|
||||
startTLSServer,
|
||||
withSender,
|
||||
withListener,
|
||||
recvAnnounce,
|
||||
) where
|
||||
|
||||
import Control.Applicative ((<|>))
|
||||
import Control.Logger.Simple
|
||||
|
||||
@@ -8,7 +8,30 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Simplex.RemoteControl.Types where
|
||||
module Simplex.RemoteControl.Types
|
||||
( RCErrorType (..),
|
||||
RCPVersion,
|
||||
VersionRCP,
|
||||
VersionRangeRCP,
|
||||
IpProbe (..),
|
||||
RCHostHello (..),
|
||||
RCCtrlHello (..),
|
||||
RCHostPairing (..),
|
||||
KnownHostPairing (..),
|
||||
RCCtrlAddress (..),
|
||||
RCCtrlPairing (..),
|
||||
RCHostKeys (..),
|
||||
RCHostSession (..),
|
||||
HostSessKeys (..),
|
||||
RCCtrlSession (..),
|
||||
CtrlSessKeys (..),
|
||||
RCHostEncHello (..),
|
||||
RCCtrlEncHello (..),
|
||||
SessionCode,
|
||||
RCStepTMVar,
|
||||
currentRCPVersion,
|
||||
supportedRCPVRange,
|
||||
) where
|
||||
|
||||
import qualified Data.Aeson as J
|
||||
import qualified Data.Aeson.TH as JQ
|
||||
|
||||
Reference in New Issue
Block a user