{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE Strict #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TupleSections #-} module Main where import Control.Monad import Data.ByteString (ByteString) import qualified Data.ByteString as BS import qualified Data.List as L import Network.TLS (credentialLoadX509, Credentials(..)) import qualified Network.TLS.SessionManager as SM import System.Console.GetOpt import System.Environment (getArgs) import System.Exit import System.IO import Common import Network.QUIC import Network.QUIC.Internal import Network.QUIC.Server import ServerX data Options = Options { optDebugLogDir :: Maybe FilePath , optQLogDir :: Maybe FilePath , optKeyLogFile :: Maybe FilePath , optGroups :: Maybe String , optCertFile :: FilePath , optKeyFile :: FilePath , optRetry :: Bool } deriving Show defaultOptions :: Options defaultOptions = Options { optDebugLogDir = Nothing , optQLogDir = Nothing , optKeyLogFile = Nothing , optGroups = Nothing , optCertFile = "servercert.pem" , optKeyFile = "serverkey.pem" , optRetry = False } options :: [OptDescr (Options -> Options)] options = [ Option ['d'] ["debug-log-dir"] (ReqArg (\dir o -> o { optDebugLogDir = Just dir }) "