HaskellNet-SSL 0.3.4.1 → 0.3.4.4
raw patch · 4 files changed
+38/−28 lines, 4 filesdep +network-bsddep −tlsdep ~HaskellNetdep ~basedep ~bytestringnew-uploaderPVP ok
version bump matches the API change (PVP)
Dependencies added: network-bsd
Dependencies removed: tls
Dependency ranges changed: HaskellNet, base, bytestring, connection, data-default, network
API changes (from Hackage documentation)
Files
- HaskellNet-SSL.cabal +15/−20
- src/Network/HaskellNet/IMAP/SSL.hs +4/−0
- src/Network/HaskellNet/SMTP/SSL.hs +8/−4
- src/Network/HaskellNet/SSL.hs +11/−4
HaskellNet-SSL.cabal view
@@ -1,6 +1,6 @@ name: HaskellNet-SSL synopsis: Helpers to connect to SSL/TLS mail servers with HaskellNet-version: 0.3.4.1+version: 0.3.4.4 description: This package ties together the HaskellNet and connection packages to make it easy to open IMAP and SMTP connections over SSL.@@ -12,12 +12,12 @@ copyright: (c) 2013 Daniel P. Wright category: Network build-type: Simple-cabal-version: >=1.8+cabal-version: >=1.10 data-files: README.md -Flag NoUpperBounds- Description: Removes upper bounds from all packages- Default: False+flag network-bsd+ description: Get Network.BSD from the network-bsd package+ default: True source-repository head type: git@@ -26,24 +26,19 @@ library hs-source-dirs: src ghc-options: -Wall+ default-language: Haskell2010 exposed-modules: Network.HaskellNet.IMAP.SSL Network.HaskellNet.POP3.SSL Network.HaskellNet.SMTP.SSL Network.HaskellNet.SSL other-modules: Network.HaskellNet.SSL.Internal- if flag(NoUpperBounds)- build-depends: base >= 4,- HaskellNet >= 0.3,- tls >= 1.2,- connection >= 0.2.7,- network >= 2.4,- bytestring,- data-default+ build-depends: base >= 4 && < 5,+ HaskellNet >= 0.3 && < 0.7,+ connection >= 0.2.7 && < 0.4,+ bytestring >= 0.9 && < 0.12,+ data-default >= 0.2 && < 0.8+ if flag(network-bsd)+ build-depends: network >= 3.0 && < 3.2,+ network-bsd >= 2.7 && < 2.9 else- build-depends: base >= 4 && < 5,- HaskellNet >= 0.3 && < 0.6,- tls >= 1.2 && < 1.5,- connection >= 0.2.7 && < 0.3,- network >= 2.4 && < 2.9,- bytestring,- data-default+ build-depends: network >= 2.4 && < 3.0
src/Network/HaskellNet/IMAP/SSL.hs view
@@ -1,3 +1,4 @@+-- | IMAP SSL Connections module Network.HaskellNet.IMAP.SSL ( -- * Establishing connection connectIMAPSSL@@ -15,11 +16,14 @@ import Network.HaskellNet.SSL.Internal +-- | Create IMAP connection with default settings connectIMAPSSL :: String -> IO IMAPConnection connectIMAPSSL hostname = connectIMAPSSLWithSettings hostname defaultSettingsIMAPSSL +-- | Create IMAP connection with given settings connectIMAPSSLWithSettings :: String -> Settings -> IO IMAPConnection connectIMAPSSLWithSettings hostname cfg = connectSSL hostname cfg >>= connectStream +-- | Default IMAP SSL settings, port 993 defaultSettingsIMAPSSL :: Settings defaultSettingsIMAPSSL = defaultSettingsWithPort 993
src/Network/HaskellNet/SMTP/SSL.hs view
@@ -48,11 +48,13 @@ (bs, startTLS) <- connectPlain hostname cfg greeting <- bsGetLine bs- failIfNot bs 220 $ parseResponse greeting+ failIfNot bs 220 $ parse $ B.unpack greeting hn <- getHostName bsPut bs $ B.pack ("HELO " ++ hn ++ "\r\n") getResponse bs >>= failIfNot bs 250+ bsPut bs $ B.pack ("EHLO " ++ hn ++ "\r\n")+ getResponse bs >>= failIfNot bs 250 bsPut bs $ B.pack "STARTTLS\r\n" getResponse bs >>= failIfNot bs 220 @@ -60,10 +62,12 @@ prefixRef <- newIORef [greeting] return $ bs {bsGetLine = prefixedGetLine prefixRef (bsGetLine bs)}- where parseResponse = parse . B.unpack- parse s = (getCode s, s)+ where getFinalResponse bs = do+ line <- fmap B.unpack $ bsGetLine bs+ if (line !! 3) == '-' then getFinalResponse bs else return line+ parse s = (getCode s, s) getCode = read . head . words- getResponse bs = liftM parseResponse $ bsGetLine bs+ getResponse bs = liftM parse $ getFinalResponse bs failIfNot :: BSStream -> Integer -> (Integer, String) -> IO () failIfNot bs code (rc, rs) = when (code /= rc) closeAndFail
src/Network/HaskellNet/SSL.hs view
@@ -1,17 +1,24 @@+{-# LANGUAGE CPP #-} module Network.HaskellNet.SSL ( Settings (..) , defaultSettingsWithPort ) where +#if MIN_VERSION_network(3,0,0)+import Network.Socket (PortNumber)+#else import Network.Socket.Internal (PortNumber)+#endif +-- | Settings for configuring HaskellNet connections data Settings = Settings- { sslPort :: PortNumber- , sslMaxLineLength :: Int- , sslLogToConsole :: Bool- , sslDisableCertificateValidation :: Bool+ { sslPort :: PortNumber -- ^ Port number to connect to+ , sslMaxLineLength :: Int -- ^ Max line lengths+ , sslLogToConsole :: Bool -- ^ Log info to console+ , sslDisableCertificateValidation :: Bool -- ^ Disable certificate validation } deriving(Eq, Ord, Show) +-- | Construct default settings for a port defaultSettingsWithPort :: PortNumber -> Settings defaultSettingsWithPort p = Settings { sslPort = p