63 lines
1.7 KiB
Haskell
63 lines
1.7 KiB
Haskell
module Hsbot.Config
|
|
( Config (..)
|
|
, TLSConfig (..)
|
|
, defaultConfig
|
|
, defaultTLSConfig
|
|
, noSSL
|
|
) where
|
|
|
|
import Network
|
|
import Network.TLS
|
|
import Network.TLS.Extra
|
|
|
|
data Config = Config
|
|
{ configErrors :: Maybe String
|
|
, configTLS :: TLSConfig
|
|
, configAddress :: String
|
|
, configPort :: PortID
|
|
, configChannels :: [String]
|
|
, configNicknames :: [String]
|
|
, configRealname :: String
|
|
, configPlugins :: [String]
|
|
}
|
|
|
|
defaultConfig :: Config
|
|
defaultConfig = Config
|
|
{ configErrors = Nothing
|
|
, configTLS = noSSL
|
|
, configAddress = "localhost"
|
|
, configPort = PortNumber 6667
|
|
, configChannels = ["#hsbot"]
|
|
, configNicknames = ["hsbot"]
|
|
, configRealname = "The One True bot, with it's haskell soul."
|
|
, configPlugins = ["Ping", "Core"] }
|
|
|
|
data TLSConfig = TLSConfig
|
|
{ sslOn :: Bool
|
|
, sslCert :: String
|
|
, sslKey :: String
|
|
, sslVersions :: [Network.TLS.Version]
|
|
, sslCiphers :: [Network.TLS.Cipher]
|
|
, sslVerify :: Bool
|
|
} deriving (Show)
|
|
|
|
defaultTLSConfig :: TLSConfig
|
|
defaultTLSConfig = TLSConfig
|
|
{ sslOn = True
|
|
, sslCert = ""
|
|
, sslKey = ""
|
|
, sslVersions = [SSL3, TLS10, TLS11, TLS12]
|
|
, sslCiphers = [ cipher_null_MD5
|
|
, cipher_null_SHA1
|
|
, cipher_AES128_SHA1
|
|
, cipher_AES256_SHA1
|
|
, cipher_RC4_128_MD5
|
|
, cipher_RC4_128_SHA1
|
|
, cipher_AES256_SHA1
|
|
, cipher_AES128_SHA256
|
|
, cipher_AES256_SHA256 ]
|
|
, sslVerify = True }
|
|
|
|
noSSL :: TLSConfig
|
|
noSSL = defaultTLSConfig { sslOn = False }
|
|
|