aboutsummaryrefslogtreecommitdiff
path: root/vendor/connection/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/connection/README.md')
-rw-r--r--vendor/connection/README.md83
1 files changed, 83 insertions, 0 deletions
diff --git a/vendor/connection/README.md b/vendor/connection/README.md
new file mode 100644
index 0000000..1bc8340
--- /dev/null
+++ b/vendor/connection/README.md
@@ -0,0 +1,83 @@
+haskell Connection library
+==========================
+
+Simple network library for all your connection need.
+
+Features:
+
+- Really simple to use
+- SSL/TLS
+- SOCKS
+
+Usage
+-----
+
+Connect to www.example.com on port 4567 (without socks or tls), then send a
+byte, receive a single byte, print it, and close the connection:
+```haskell
+import qualified Data.ByteString as B
+import Network.Connection
+import Data.Default
+
+main = do
+ ctx <- initConnectionContext
+ con <- connectTo ctx $ ConnectionParams
+ { connectionHostname = "www.example.com"
+ , connectionPort = 4567
+ , connectionUseSecure = Nothing
+ , connectionUseSocks = Nothing
+ }
+ connectionPut con (B.singleton 0xa)
+ r <- connectionGet con 1
+ putStrLn $ show r
+ connectionClose con
+```
+Using a socks proxy is easy, we just need replacing the connectionSocks
+parameter, for example connecting to the same host, but using a socks
+proxy at localhost:1080:
+```haskell
+con <- connectTo ctx $ ConnectionParams
+ { connectionHostname = "www.example.com"
+ , connectionPort = 4567
+ , connectionUseSecure = Nothing
+ , connectionUseSocks = Just $ SockSettingsSimple "localhost" 1080
+ }
+```
+Connecting to a SSL style socket is equally easy, and need to set the UseSecure fields in ConnectionParams:
+```haskell
+con <- connectTo ctx $ ConnectionParams
+ { connectionHostname = "www.example.com"
+ , connectionPort = 4567
+ , connectionUseSecure = Just def
+ , connectionUseSocks = Nothing
+ }
+```
+And finally, you can start TLS in the middle of an insecure connection. This is great for
+protocol using STARTTLS (e.g. IMAP, SMTP):
+
+```haskell
+{-# LANGUAGE OverloadedStrings #-}
+import qualified Data.ByteString as B
+import Data.ByteString.Char8 ()
+import Network.Connection
+import Data.Default
+
+main = do
+ ctx <- initConnectionContext
+ con <- connectTo ctx $ ConnectionParams
+ { connectionHostname = "www.example.com"
+ , connectionPort = 4567
+ , connectionUseSecure = Nothing
+ , connectionUseSocks = Nothing
+ }
+ -- talk to the other side with no TLS: says hello and starttls
+ connectionPut con "HELLO\n"
+ connectionPut con "STARTTLS\n"
+
+ -- switch to TLS
+ connectionSetSecure ctx con def
+
+ -- the connection is from now on using TLS, we can send secret for example
+ connectionPut con "PASSWORD 123\n"
+ connectionClose con
+```