{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# 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 (Credentials (..), credentialLoadX509) 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}) "