packages feed

acid-state-tls-0.9.0: examples/RemoteServerTLS.hs

{-# LANGUAGE DeriveDataTypeable, TypeFamilies, TemplateHaskell #-}
module Main (main) where

import Control.Exception     ( bracket )
import Data.Acid             ( openLocalState, closeAcidState )
import Data.Acid.Remote      ( sharedSecretCheck )
import Data.Acid.Remote.TLS  ( acidServerTLS )
import Data.ByteString.Char8 ( pack )
import Data.Set              ( singleton )
import Network               ( PortID(..) )
import Network.Socket        ( PortNumber(PortNum) )
import RemoteCommon          ( StressState(..) )

-- | open a server on port 8080
main :: IO ()
main =
    let secrets = singleton $ pack "12345" in
    bracket
      (openLocalState $ StressState 0)
      closeAcidState
      -- do not use the provided 'ssl/test.crt' and 'ssl/test.key' in your real application.
      (acidServerTLS "ssl/test.crt" "ssl/test.key" (sharedSecretCheck secrets) (PortNumber 8080))