packages feed

moesocks-0.1.2.30: src/Network/MoeSocks/Default.hs

{-# LANGUAGE OverloadedStrings #-}

module Network.MoeSocks.Default where

import Control.Lens
import Network.MoeSocks.Encrypt (constCipherBox)
import Network.MoeSocks.Type
import System.Log.Logger
import qualified Network.MoeSocks.Type.Bootstrap.Config as C
import qualified Network.MoeSocks.Type.Bootstrap.Option as O

defaultConfig :: C.Config
defaultConfig = C.Config
  {
    C._remoteHost = "0.0.0.0"
  , C._remotePort = 8388 
  , C._localHost = "127.0.0.1"
  , C._localPort = 1080
  , C._password = "moesocks"
  , C._method = "aes-256-cfb"
  , C._timeout = 300
  , C._tcpBufferSize = 256
  , C._throttle = False
  , C._throttleSpeed = 8000 -- in Kilobytes
  , C._obfuscationFlushBound = 4096
  , C._fastOpen = False
  , C._socketOption_TCP_NOTSENT_LOWAT = True
  }


defaultOptions :: O.Options
defaultOptions = O.Options
  {
    O._runningMode = O.DebugMode
  , O._configFile = Nothing
  , O._verbosity = DEBUG
  , O._forward_TCPs = []
  , O._forward_UDPs = []
  , O._disable_SOCKS5 = False
  , O._obfuscation = False
  , O._forbidden_IPs = ["127.0.0.1", "0.0.0.0", "::1"]
  , O._listMethods = False
  , O._params = []
  } 

defaultEnv :: Env
defaultEnv =
  let _c = defaultConfig
      _o = defaultOptions
  in
  Env
  {
      _timeout                        = _c ^. C.timeout
    , _tcpBufferSize                  = _c ^. C.tcpBufferSize
    , _throttle                       = _c ^. C.throttle
    , _throttleSpeed                  = _c ^. C.throttleSpeed
    , _obfuscationFlushBound          = _c ^. C.obfuscationFlushBound 
    , _fastOpen                       = _c ^. C.fastOpen
    , _socketOption_TCP_NOTSENT_LOWAT = _c ^. C.socketOption_TCP_NOTSENT_LOWAT
    , _obfuscation                    = _o ^. O.obfuscation
    , _forbidden_IPs                  = _o ^. O.forbidden_IPs
    {-, _config = defaultConfig-}
    , _cipherBox = let (a,b,c,d) = constCipherBox in CipherBox a b c d
  }

defaultRuntime :: Runtime
defaultRuntime =
  Runtime
    {
      _jobs = []
    , _env = defaultEnv
    }