neko-obfs-0.1.0.0: src/Options.hs
-- |
{-# LANGUAGE DeriveGeneric #-}
module Options where
import Options.Generic
import Data.Maybe (fromMaybe)
import Type (Config(..), Role(..), defaultConfig)
data TunnelOptions = TunnelOptions
{
localHost :: Maybe Text
, localPort :: Maybe Integer
, remoteHost :: Text
, remotePort :: Integer
, forwardHost :: Maybe Text
, forwardPort :: Maybe Integer
, remote :: Bool
, bound :: Maybe Integer
, randomness :: Maybe Integer
, timeoutInSeconds :: Maybe Integer
}
deriving (Generic, Show, Eq)
instance ParseRecord TunnelOptions
toConfig :: TunnelOptions -> Config
toConfig o =
let c = defaultConfig
in
Config
{
_localHost = fromMaybe (_localHost c) (localHost o)
, _localPort = fromMaybe (_localPort c) (localPort o)
, _remoteHost = remoteHost o
, _remotePort = remotePort o
, _forwardHost = fromMaybe (_forwardHost c) (forwardHost o)
, _forwardPort = fromMaybe (_forwardPort c) (forwardPort o)
, _role = if remote o then Remote else Local
, _bound = fromMaybe (_bound c) (bound o)
, _randomness = fromMaybe (_randomness c) (randomness o)
, _timeoutInSeconds = fromMaybe (_timeoutInSeconds c) (timeoutInSeconds o)
}