diff --git a/package.yaml b/package.yaml deleted file mode 100644 index 868465ecc..000000000 --- a/package.yaml +++ /dev/null @@ -1,224 +0,0 @@ -name: simplexmq -version: 6.2.0.0 -synopsis: SimpleXMQ message broker -description: | - This package includes <./docs/Simplex-Messaging-Server.html server>, - <./docs/Simplex-Messaging-Client.html client> and - <./docs/Simplex-Messaging-Agent.html agent> for SMP protocols: - . - * - * - . - See built with SimpleXMQ broker. - -homepage: https://github.com/simplex-chat/simplexmq#readme -license: AGPL-3 -author: simplex.chat -maintainer: chat@simplex.chat -copyright: 2020-2022 simplex.chat -category: Chat, Network, Web, System, Cryptography -extra-source-files: - - README.md - - CHANGELOG.md - - cbits/sha512.h - - cbits/sntrup761.h - - apps/smp-server/static/*.html - - apps/smp-server/static/media/* - -dependencies: - - aeson == 2.2.* - - ansi-terminal >= 0.10 && < 0.12 - - asn1-encoding == 0.9.* - - asn1-types == 0.3.* - - async == 2.2.* - - attoparsec == 0.14.* - - base >= 4.14 && < 5 - - base64-bytestring >= 1.0 && < 1.3 - - case-insensitive == 1.2.* - - composition == 1.0.* - - constraints >= 0.12 && < 0.14 - - containers == 0.6.* - - crypton == 0.34.* - - crypton-x509 == 1.7.* - - crypton-x509-store == 1.6.* - - crypton-x509-validation == 1.6.* - - cryptostore == 0.3.* - - data-default == 0.7.* - - direct-sqlcipher == 2.3.* - - directory == 1.3.* - - filepath == 1.4.* - - hashable == 1.4.* - - hourglass == 0.2.* - - http-types == 0.12.* - - http2 >= 4.2.2 && < 4.3 - - ini == 0.4.1 - - iproute == 1.7.* - - iso8601-time == 0.1.* - - memory == 0.18.* - - mtl >= 2.3.1 && < 3.0 - - network >= 3.1.2.7 && < 3.2 - - network-info >= 0.2 && < 0.3 - - network-transport == 0.5.6 - - network-udp >= 0.0 && < 0.1 - - optparse-applicative >= 0.15 && < 0.17 - - process == 1.6.* - - random >= 1.1 && < 1.3 - - simple-logger == 0.1.* - - socks == 0.6.* - - sqlcipher-simple == 0.4.* - - stm == 2.5.* - - temporary == 1.3.* - - time == 1.12.* - - time-manager == 0.0.* - - tls >= 1.9.0 && < 1.10 - - transformers == 0.6.* - - unliftio == 0.2.* - - unliftio-core == 0.2.* - - websockets == 0.12.* - - yaml == 0.11.* - - zstd == 0.1.3.* - -flags: - swift: - description: Enable swift JSON format - manual: True - default: False - use_crypton: - description: Use crypton etc. in cryptostore - manual: True - default: True - -# cpp-options: -# - -Dslow_servers - -when: - - condition: flag(swift) - cpp-options: - - -DswiftJSON - - condition: impl(ghc >= 9.6.2) - dependencies: - - bytestring == 0.11.* - - template-haskell == 2.20.* - - text >= 2.0.1 && < 2.2 - - condition: impl(ghc < 9.6.2) - dependencies: - - bytestring == 0.10.* - - template-haskell == 2.16.* - - text >= 1.2.3.0 && < 1.3 - -library: - source-dirs: src - c-sources: - - cbits/sha512.c - - cbits/sntrup761.c - include-dirs: cbits - extra-libraries: crypto - -executables: - smp-server: - source-dirs: - - apps/smp-server - - apps/smp-server/web - main: Main.hs - dependencies: - - file-embed - - simplexmq - - wai - - wai-app-static - - warp ==3.3.30 # the last one before http2-5.0 - - warp-tls ==3.4.7 # extra internals exposed - ghc-options: - - -threaded - - -rtsopts - - ntf-server: - source-dirs: apps/ntf-server - main: Main.hs - dependencies: - - simplexmq - ghc-options: - - -threaded - - -rtsopts - - xftp-server: - source-dirs: apps/xftp-server - main: Main.hs - dependencies: - - simplexmq - ghc-options: - - -threaded - - -rtsopts - - xftp: - source-dirs: apps/xftp - main: Main.hs - dependencies: - - simplexmq - ghc-options: - - -threaded - - -rtsopts - -tests: - simplexmq-test: - source-dirs: - - tests - - apps/smp-server/web - main: Test.hs - dependencies: - - deepseq == 1.4.* - - file-embed - - generic-random == 1.5.* - - hspec == 2.11.* - - hspec-core == 2.11.* - - http-client - - http-client-tls - - HUnit == 1.6.* - - main-tester == 0.2.* - - QuickCheck == 2.14.* - - silently == 1.2.* - - simplexmq - - timeit == 2.0.* - - unordered-containers - - wai - - wai-app-static - - warp - - warp-tls - ghc-options: - - -threaded - - -rtsopts - - -with-rtsopts=-A64M - - -with-rtsopts=-N1 - # - -fhpc - -ghc-options: - # - -haddock - - -Weverything - - -Wno-missing-exported-signatures - - -Wno-missing-import-lists - - -Wno-missed-specialisations - - -Wno-all-missed-specialisations - - -Wno-unsafe - - -Wno-safe - - -Wno-missing-local-signatures - - -Wno-missing-kind-signatures - - -Wno-missing-deriving-strategies - - -Wno-monomorphism-restriction - - -Wno-prepositive-qualified-module - - -Wno-unused-packages - - -Wno-implicit-prelude - - -Wno-missing-safe-haskell-mode - - -Wno-missing-export-lists - - -Wno-partial-fields - - -Wcompat - - -Werror=incomplete-record-updates - - -Werror=incomplete-patterns - - -Werror=incomplete-uni-patterns - - -Werror=missing-methods - - -Werror=tabs - - -Wredundant-constraints - - -Wincomplete-record-updates - - -Wunused-type-patterns - - -O2 - -default-extensions: - - StrictData diff --git a/simplexmq.cabal b/simplexmq.cabal index 5fb2dfa8f..58f0b74a0 100644 --- a/simplexmq.cabal +++ b/simplexmq.cabal @@ -1,9 +1,5 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.35.0. --- --- see: https://github.com/sol/hpack - name: simplexmq version: 6.2.0.0 synopsis: SimpleXMQ message broker @@ -66,6 +62,11 @@ flag use_crypton manual: True default: True +flag client_library + description: Don't build server-related code. + manual: True + default: False + library exposed-modules: Simplex.FileTransfer.Agent @@ -77,13 +78,6 @@ library Simplex.FileTransfer.Crypto Simplex.FileTransfer.Description Simplex.FileTransfer.Protocol - Simplex.FileTransfer.Server - Simplex.FileTransfer.Server.Control - Simplex.FileTransfer.Server.Env - Simplex.FileTransfer.Server.Main - Simplex.FileTransfer.Server.Stats - Simplex.FileTransfer.Server.Store - Simplex.FileTransfer.Server.StoreLog Simplex.FileTransfer.Transport Simplex.FileTransfer.Types Simplex.FileTransfer.Util @@ -154,36 +148,13 @@ library Simplex.Messaging.Encoding.String Simplex.Messaging.Notifications.Client Simplex.Messaging.Notifications.Protocol - Simplex.Messaging.Notifications.Server - Simplex.Messaging.Notifications.Server.Control - Simplex.Messaging.Notifications.Server.Env - Simplex.Messaging.Notifications.Server.Main - Simplex.Messaging.Notifications.Server.Push.APNS - Simplex.Messaging.Notifications.Server.Push.APNS.Internal - Simplex.Messaging.Notifications.Server.Stats - Simplex.Messaging.Notifications.Server.Store - Simplex.Messaging.Notifications.Server.StoreLog Simplex.Messaging.Notifications.Transport Simplex.Messaging.Notifications.Types Simplex.Messaging.Parsers Simplex.Messaging.Protocol - Simplex.Messaging.Server Simplex.Messaging.Server.CLI - Simplex.Messaging.Server.Control - Simplex.Messaging.Server.Env.STM Simplex.Messaging.Server.Expiration - Simplex.Messaging.Server.Information - Simplex.Messaging.Server.Main - Simplex.Messaging.Server.MsgStore - Simplex.Messaging.Server.MsgStore.Journal - Simplex.Messaging.Server.MsgStore.STM - Simplex.Messaging.Server.MsgStore.Types - Simplex.Messaging.Server.NtfStore - Simplex.Messaging.Server.QueueStore Simplex.Messaging.Server.QueueStore.QueueInfo - Simplex.Messaging.Server.QueueStore.STM - Simplex.Messaging.Server.Stats - Simplex.Messaging.Server.StoreLog Simplex.Messaging.ServiceScheme Simplex.Messaging.Session Simplex.Messaging.TMap @@ -206,13 +177,45 @@ library Simplex.RemoteControl.Discovery.Multicast Simplex.RemoteControl.Invitation Simplex.RemoteControl.Types + if !flag(client_library) + exposed-modules: + Simplex.FileTransfer.Server + Simplex.FileTransfer.Server.Control + Simplex.FileTransfer.Server.Env + Simplex.FileTransfer.Server.Main + Simplex.FileTransfer.Server.Stats + Simplex.FileTransfer.Server.Store + Simplex.FileTransfer.Server.StoreLog + Simplex.Messaging.Server + Simplex.Messaging.Server.Control + Simplex.Messaging.Server.Env.STM + Simplex.Messaging.Server.Information + Simplex.Messaging.Server.Main + Simplex.Messaging.Server.MsgStore + Simplex.Messaging.Server.MsgStore.Journal + Simplex.Messaging.Server.MsgStore.STM + Simplex.Messaging.Server.MsgStore.Types + Simplex.Messaging.Server.NtfStore + Simplex.Messaging.Server.QueueStore + Simplex.Messaging.Server.QueueStore.STM + Simplex.Messaging.Server.Stats + Simplex.Messaging.Server.StoreLog + Simplex.Messaging.Notifications.Server + Simplex.Messaging.Notifications.Server.Control + Simplex.Messaging.Notifications.Server.Env + Simplex.Messaging.Notifications.Server.Main + Simplex.Messaging.Notifications.Server.Push.APNS + Simplex.Messaging.Notifications.Server.Push.APNS.Internal + Simplex.Messaging.Notifications.Server.Stats + Simplex.Messaging.Notifications.Server.Store + Simplex.Messaging.Notifications.Server.StoreLog other-modules: Paths_simplexmq hs-source-dirs: src default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-home-modules -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 include-dirs: cbits c-sources: @@ -222,14 +225,12 @@ library crypto build-depends: aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 , asn1-encoding ==0.9.* , asn1-types ==0.3.* , async ==2.2.* , attoparsec ==0.14.* , base >=4.14 && <5 , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* , composition ==1.0.* , constraints >=0.12 && <0.14 , containers ==0.6.* @@ -242,7 +243,6 @@ library , direct-sqlcipher ==2.3.* , directory ==1.3.* , filepath ==1.4.* - , hashable ==1.4.* , hourglass ==0.2.* , http-types ==0.12.* , http2 >=4.2.2 && <4.3 @@ -275,18 +275,22 @@ library default-language: Haskell2010 if flag(swift) cpp-options: -DswiftJSON + if !flag(client_library) + build-depends: + case-insensitive ==1.2.* + , hashable ==1.4.* if impl(ghc >= 9.6.2) build-depends: bytestring ==0.11.* - , template-haskell ==2.20.* , text >=2.0.1 && <2.2 if impl(ghc < 9.6.2) build-depends: bytestring ==0.10.* - , template-haskell ==2.16.* , text >=1.2.3.0 && <1.3 executable ntf-server + if flag(client_library) + buildable: False main-is: Main.hs other-modules: Paths_simplexmq @@ -294,75 +298,16 @@ executable ntf-server apps/ntf-server default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts build-depends: - aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 - , asn1-encoding ==0.9.* - , asn1-types ==0.3.* - , async ==2.2.* - , attoparsec ==0.14.* - , base >=4.14 && <5 - , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* - , composition ==1.0.* - , constraints >=0.12 && <0.14 - , containers ==0.6.* - , crypton ==0.34.* - , crypton-x509 ==1.7.* - , crypton-x509-store ==1.6.* - , crypton-x509-validation ==1.6.* - , cryptostore ==0.3.* - , data-default ==0.7.* - , direct-sqlcipher ==2.3.* - , directory ==1.3.* - , filepath ==1.4.* - , hashable ==1.4.* - , hourglass ==0.2.* - , http-types ==0.12.* - , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 - , iproute ==1.7.* - , iso8601-time ==0.1.* - , memory ==0.18.* - , mtl >=2.3.1 && <3.0 - , network >=3.1.2.7 && <3.2 - , network-info ==0.2.* - , network-transport ==0.5.6 - , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* - , random >=1.1 && <1.3 - , simple-logger ==0.1.* + base + , simple-logger , simplexmq - , socks ==0.6.* - , sqlcipher-simple ==0.4.* - , stm ==2.5.* - , temporary ==1.3.* - , time ==1.12.* - , time-manager ==0.0.* - , tls >=1.9.0 && <1.10 - , transformers ==0.6.* - , unliftio ==0.2.* - , unliftio-core ==0.2.* - , websockets ==0.12.* - , yaml ==0.11.* - , zstd ==0.1.3.* default-language: Haskell2010 - if flag(swift) - cpp-options: -DswiftJSON - if impl(ghc >= 9.6.2) - build-depends: - bytestring ==0.11.* - , template-haskell ==2.20.* - , text >=2.0.1 && <2.2 - if impl(ghc < 9.6.2) - build-depends: - bytestring ==0.10.* - , template-haskell ==2.16.* - , text >=1.2.3.0 && <1.3 executable smp-server + if flag(client_library) + buildable: False main-is: Main.hs other-modules: Static @@ -373,80 +318,27 @@ executable smp-server apps/smp-server/web default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts build-depends: - aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 - , asn1-encoding ==0.9.* - , asn1-types ==0.3.* - , async ==2.2.* - , attoparsec ==0.14.* - , base >=4.14 && <5 - , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* - , composition ==1.0.* - , constraints >=0.12 && <0.14 - , containers ==0.6.* - , crypton ==0.34.* - , crypton-x509 ==1.7.* - , crypton-x509-store ==1.6.* - , crypton-x509-validation ==1.6.* - , cryptostore ==0.3.* - , data-default ==0.7.* - , direct-sqlcipher ==2.3.* - , directory ==1.3.* + base + , bytestring + , directory , file-embed - , filepath ==1.4.* - , hashable ==1.4.* - , hourglass ==0.2.* - , http-types ==0.12.* - , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 - , iproute ==1.7.* - , iso8601-time ==0.1.* - , memory ==0.18.* - , mtl >=2.3.1 && <3.0 - , network >=3.1.2.7 && <3.2 - , network-info ==0.2.* - , network-transport ==0.5.6 - , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* - , random >=1.1 && <1.3 - , simple-logger ==0.1.* + , filepath + , network + , simple-logger , simplexmq - , socks ==0.6.* - , sqlcipher-simple ==0.4.* - , stm ==2.5.* - , temporary ==1.3.* - , time ==1.12.* - , time-manager ==0.0.* - , tls >=1.9.0 && <1.10 - , transformers ==0.6.* - , unliftio ==0.2.* - , unliftio-core ==0.2.* + , text + , unliftio , wai , wai-app-static , warp ==3.3.30 , warp-tls ==3.4.7 - , websockets ==0.12.* - , yaml ==0.11.* - , zstd ==0.1.3.* default-language: Haskell2010 - if flag(swift) - cpp-options: -DswiftJSON - if impl(ghc >= 9.6.2) - build-depends: - bytestring ==0.11.* - , template-haskell ==2.20.* - , text >=2.0.1 && <2.2 - if impl(ghc < 9.6.2) - build-depends: - bytestring ==0.10.* - , template-haskell ==2.16.* - , text >=1.2.3.0 && <1.3 executable xftp + if flag(client_library) + buildable: False main-is: Main.hs other-modules: Paths_simplexmq @@ -454,75 +346,15 @@ executable xftp apps/xftp default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts build-depends: - aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 - , asn1-encoding ==0.9.* - , asn1-types ==0.3.* - , async ==2.2.* - , attoparsec ==0.14.* - , base >=4.14 && <5 - , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* - , composition ==1.0.* - , constraints >=0.12 && <0.14 - , containers ==0.6.* - , crypton ==0.34.* - , crypton-x509 ==1.7.* - , crypton-x509-store ==1.6.* - , crypton-x509-validation ==1.6.* - , cryptostore ==0.3.* - , data-default ==0.7.* - , direct-sqlcipher ==2.3.* - , directory ==1.3.* - , filepath ==1.4.* - , hashable ==1.4.* - , hourglass ==0.2.* - , http-types ==0.12.* - , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 - , iproute ==1.7.* - , iso8601-time ==0.1.* - , memory ==0.18.* - , mtl >=2.3.1 && <3.0 - , network >=3.1.2.7 && <3.2 - , network-info ==0.2.* - , network-transport ==0.5.6 - , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* - , random >=1.1 && <1.3 - , simple-logger ==0.1.* + base , simplexmq - , socks ==0.6.* - , sqlcipher-simple ==0.4.* - , stm ==2.5.* - , temporary ==1.3.* - , time ==1.12.* - , time-manager ==0.0.* - , tls >=1.9.0 && <1.10 - , transformers ==0.6.* - , unliftio ==0.2.* - , unliftio-core ==0.2.* - , websockets ==0.12.* - , yaml ==0.11.* - , zstd ==0.1.3.* default-language: Haskell2010 - if flag(swift) - cpp-options: -DswiftJSON - if impl(ghc >= 9.6.2) - build-depends: - bytestring ==0.11.* - , template-haskell ==2.20.* - , text >=2.0.1 && <2.2 - if impl(ghc < 9.6.2) - build-depends: - bytestring ==0.10.* - , template-haskell ==2.16.* - , text >=1.2.3.0 && <1.3 executable xftp-server + if flag(client_library) + buildable: False main-is: Main.hs other-modules: Paths_simplexmq @@ -530,75 +362,16 @@ executable xftp-server apps/xftp-server default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts build-depends: - aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 - , asn1-encoding ==0.9.* - , asn1-types ==0.3.* - , async ==2.2.* - , attoparsec ==0.14.* - , base >=4.14 && <5 - , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* - , composition ==1.0.* - , constraints >=0.12 && <0.14 - , containers ==0.6.* - , crypton ==0.34.* - , crypton-x509 ==1.7.* - , crypton-x509-store ==1.6.* - , crypton-x509-validation ==1.6.* - , cryptostore ==0.3.* - , data-default ==0.7.* - , direct-sqlcipher ==2.3.* - , directory ==1.3.* - , filepath ==1.4.* - , hashable ==1.4.* - , hourglass ==0.2.* - , http-types ==0.12.* - , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 - , iproute ==1.7.* - , iso8601-time ==0.1.* - , memory ==0.18.* - , mtl >=2.3.1 && <3.0 - , network >=3.1.2.7 && <3.2 - , network-info ==0.2.* - , network-transport ==0.5.6 - , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* - , random >=1.1 && <1.3 - , simple-logger ==0.1.* + base + , simple-logger , simplexmq - , socks ==0.6.* - , sqlcipher-simple ==0.4.* - , stm ==2.5.* - , temporary ==1.3.* - , time ==1.12.* - , time-manager ==0.0.* - , tls >=1.9.0 && <1.10 - , transformers ==0.6.* - , unliftio ==0.2.* - , unliftio-core ==0.2.* - , websockets ==0.12.* - , yaml ==0.11.* - , zstd ==0.1.3.* default-language: Haskell2010 - if flag(swift) - cpp-options: -DswiftJSON - if impl(ghc >= 9.6.2) - build-depends: - bytestring ==0.11.* - , template-haskell ==2.20.* - , text >=2.0.1 && <2.2 - if impl(ghc < 9.6.2) - build-depends: - bytestring ==0.10.* - , template-haskell ==2.16.* - , text >=1.2.3.0 && <1.3 test-suite simplexmq-test + if flag(client_library) + buildable: False type: exitcode-stdio-1.0 main-is: Test.hs other-modules: @@ -644,87 +417,53 @@ test-suite simplexmq-test apps/smp-server/web default-extensions: StrictData - ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-unused-packages -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts -with-rtsopts=-A64M -with-rtsopts=-N1 + ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-missing-kind-signatures -Wno-missing-deriving-strategies -Wno-monomorphism-restriction -Wno-prepositive-qualified-module -Wno-implicit-prelude -Wno-missing-safe-haskell-mode -Wno-missing-export-lists -Wno-partial-fields -Wcompat -Werror=incomplete-record-updates -Werror=incomplete-patterns -Werror=incomplete-uni-patterns -Werror=missing-methods -Werror=tabs -Wredundant-constraints -Wincomplete-record-updates -Wunused-type-patterns -O2 -threaded -rtsopts -with-rtsopts=-A64M -with-rtsopts=-N1 build-depends: - HUnit ==1.6.* - , QuickCheck ==2.14.* - , aeson ==2.2.* - , ansi-terminal >=0.10 && <0.12 - , asn1-encoding ==0.9.* - , asn1-types ==0.3.* - , async ==2.2.* - , attoparsec ==0.14.* - , base >=4.14 && <5 - , base64-bytestring >=1.0 && <1.3 - , case-insensitive ==1.2.* - , composition ==1.0.* - , constraints >=0.12 && <0.14 - , containers ==0.6.* - , crypton ==0.34.* - , crypton-x509 ==1.7.* - , crypton-x509-store ==1.6.* - , crypton-x509-validation ==1.6.* - , cryptostore ==0.3.* - , data-default ==0.7.* + base + , aeson + , async + , base64-bytestring + , bytestring + , containers + , crypton + , crypton-x509 + , crypton-x509-store + , crypton-x509-validation , deepseq ==1.4.* - , direct-sqlcipher ==2.3.* - , directory ==1.3.* + , directory , file-embed - , filepath ==1.4.* + , filepath , generic-random ==1.5.* - , hashable ==1.4.* - , hourglass ==0.2.* + , hashable , hspec ==2.11.* - , hspec-core ==2.11.* , http-client - , http-client-tls - , http-types ==0.12.* - , http2 >=4.2.2 && <4.3 - , ini ==0.4.1 - , iproute ==1.7.* - , iso8601-time ==0.1.* + , http-types + , http2 + , HUnit ==1.6.* + , ini + , iso8601-time , main-tester ==0.2.* - , memory ==0.18.* - , mtl >=2.3.1 && <3.0 - , network >=3.1.2.7 && <3.2 - , network-info ==0.2.* - , network-transport ==0.5.6 - , network-udp ==0.0.* - , optparse-applicative >=0.15 && <0.17 - , process ==1.6.* - , random >=1.1 && <1.3 + , memory + , mtl + , network + , process + , QuickCheck ==2.14.* + , random , silently ==1.2.* - , simple-logger ==0.1.* + , simple-logger , simplexmq - , socks ==0.6.* - , sqlcipher-simple ==0.4.* - , stm ==2.5.* - , temporary ==1.3.* - , time ==1.12.* - , time-manager ==0.0.* + , sqlcipher-simple + , stm + , text + , time , timeit ==2.0.* - , tls >=1.9.0 && <1.10 - , transformers ==0.6.* - , unliftio ==0.2.* - , unliftio-core ==0.2.* + , transformers + , unliftio + , unliftio-core , unordered-containers , wai , wai-app-static , warp , warp-tls - , websockets ==0.12.* - , yaml ==0.11.* - , zstd ==0.1.3.* + , yaml default-language: Haskell2010 - if flag(swift) - cpp-options: -DswiftJSON - if impl(ghc >= 9.6.2) - build-depends: - bytestring ==0.11.* - , template-haskell ==2.20.* - , text >=2.0.1 && <2.2 - if impl(ghc < 9.6.2) - build-depends: - bytestring ==0.10.* - , template-haskell ==2.16.* - , text >=1.2.3.0 && <1.3 diff --git a/src/Simplex/FileTransfer/Client.hs b/src/Simplex/FileTransfer/Client.hs index 7abfdfe5a..e5c66e764 100644 --- a/src/Simplex/FileTransfer/Client.hs +++ b/src/Simplex/FileTransfer/Client.hs @@ -29,7 +29,6 @@ import qualified Data.X509.Validation as XV import qualified Network.HTTP.Types as N import qualified Network.HTTP2.Client as H import Simplex.FileTransfer.Protocol -import Simplex.FileTransfer.Server.Env (supportedXFTPhandshakes) import Simplex.FileTransfer.Transport import Simplex.Messaging.Client ( NetworkConfig (..), diff --git a/src/Simplex/FileTransfer/Server/Env.hs b/src/Simplex/FileTransfer/Server/Env.hs index a9b6c9a79..4bccda0ff 100644 --- a/src/Simplex/FileTransfer/Server/Env.hs +++ b/src/Simplex/FileTransfer/Server/Env.hs @@ -28,7 +28,6 @@ import Simplex.FileTransfer.Transport (VersionRangeXFTP) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Protocol (BasicAuth, RcvPublicAuthKey) import Simplex.Messaging.Server.Expiration -import Simplex.Messaging.Transport (ALPN) import Simplex.Messaging.Transport.Server (ServerCredentials (..), TransportServerConfig (..), loadFingerprint, loadServerCredential) import Simplex.Messaging.Util (tshow) import System.IO (IOMode (..)) @@ -96,9 +95,6 @@ defaultFileExpiration = checkInterval = 2 * 3600 -- seconds, 2 hours } -supportedXFTPhandshakes :: [ALPN] -supportedXFTPhandshakes = ["xftp/1"] - newXFTPServerEnv :: XFTPServerConfig -> IO XFTPEnv newXFTPServerEnv config@XFTPServerConfig {storeLogFile, fileSizeQuota, xftpCredentials} = do random <- C.newRandom diff --git a/src/Simplex/FileTransfer/Transport.hs b/src/Simplex/FileTransfer/Transport.hs index d72f9862b..a028a3773 100644 --- a/src/Simplex/FileTransfer/Transport.hs +++ b/src/Simplex/FileTransfer/Transport.hs @@ -12,6 +12,7 @@ module Simplex.FileTransfer.Transport ( supportedFileServerVRange, authCmdsXFTPVersion, xftpClientHandshakeStub, + supportedXFTPhandshakes, XFTPClientHandshake (..), -- xftpClientHandshake, XFTPServerHandshake (..), @@ -57,7 +58,7 @@ import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers import Simplex.Messaging.Protocol (CommandError) -import Simplex.Messaging.Transport (SessionId, THandle (..), THandleParams (..), TransportError (..), TransportPeer (..)) +import Simplex.Messaging.Transport (ALPN, SessionId, THandle (..), THandleParams (..), TransportError (..), TransportPeer (..)) import Simplex.Messaging.Transport.HTTP2.File import Simplex.Messaging.Util (bshow, tshow) import Simplex.Messaging.Version @@ -101,6 +102,9 @@ supportedFileServerVRange = mkVersionRange initialXFTPVersion currentXFTPVersion xftpClientHandshakeStub :: c -> Maybe C.KeyPairX25519 -> C.KeyHash -> VersionRangeXFTP -> ExceptT TransportError IO (THandle XFTPVersion c 'TClient) xftpClientHandshakeStub _c _ks _keyHash _xftpVRange = throwE TEVersion +supportedXFTPhandshakes :: [ALPN] +supportedXFTPhandshakes = ["xftp/1"] + data XFTPServerHandshake = XFTPServerHandshake { xftpVersionRange :: VersionRangeXFTP, sessionId :: SessionId, diff --git a/tests/XFTPAgent.hs b/tests/XFTPAgent.hs index a425e1bdb..6d6446959 100644 --- a/tests/XFTPAgent.hs +++ b/tests/XFTPAgent.hs @@ -24,8 +24,8 @@ import SMPClient (xit'') import Simplex.FileTransfer.Client (XFTPClientConfig (..)) import Simplex.FileTransfer.Description (FileChunk (..), FileDescription (..), FileDescriptionURI (..), ValidFileDescription, fileDescriptionURI, kb, mb, qrSizeLimit, pattern ValidFileDescription) import Simplex.FileTransfer.Protocol (FileParty (..)) -import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..), supportedXFTPhandshakes) -import Simplex.FileTransfer.Transport (XFTPErrorType (AUTH)) +import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..)) +import Simplex.FileTransfer.Transport (XFTPErrorType (AUTH), supportedXFTPhandshakes) import Simplex.FileTransfer.Types (RcvFileId, SndFileId) import Simplex.Messaging.Agent (AgentClient, testProtocolServer, xftpDeleteRcvFile, xftpDeleteSndFileInternal, xftpDeleteSndFileRemote, xftpReceiveFile, xftpSendDescription, xftpSendFile, xftpStartWorkers) import Simplex.Messaging.Agent.Client (ProtocolTestFailure (..), ProtocolTestStep (..)) diff --git a/tests/XFTPClient.hs b/tests/XFTPClient.hs index bd7b23568..f99283a79 100644 --- a/tests/XFTPClient.hs +++ b/tests/XFTPClient.hs @@ -14,8 +14,8 @@ import SMPClient (serverBracket) import Simplex.FileTransfer.Client import Simplex.FileTransfer.Description import Simplex.FileTransfer.Server (runXFTPServerBlocking) -import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..), defaultFileExpiration, defaultInactiveClientExpiration, supportedXFTPhandshakes) -import Simplex.FileTransfer.Transport (supportedFileServerVRange) +import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..), defaultFileExpiration, defaultInactiveClientExpiration) +import Simplex.FileTransfer.Transport (supportedFileServerVRange, supportedXFTPhandshakes) import Simplex.Messaging.Protocol (XFTPServer) import Simplex.Messaging.Transport (ALPN) import Simplex.Messaging.Transport.Server