packages feed

moesocks 0.1.1.32 → 0.1.2.0

raw patch · 10 files changed

+51/−24 lines, 10 files

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+0.1.2.0+-------++* Add OSX compatibility, still some unfixed bugs on OSX. +* Fix a bug that breaks UDP forwarding in local+ 0.1.1.32 -------- * Add a runtime type
config.json view
@@ -4,7 +4,7 @@   "local":"localhost",   "localPort":1090,   "password":"birthday!",-  "fastOpen":true,+  "fastOpen":false,   "method":"aes-256-cfb" } 
moesocks.cabal view
@@ -1,6 +1,6 @@ name:               moesocks category:           Network-version:            0.1.1.32+version:            0.1.2.0 license:            Apache-2.0 synopsis:           A functional firewall killer description:        A SOCKS5 proxy using the client / server architecture.
src/Network/MoeSocks/App.hs view
@@ -19,6 +19,7 @@ import Network.MoeSocks.Config import Network.MoeSocks.Constant import Network.MoeSocks.Encrypt (initCipherBox, safeMethods, unsafeMethods)+import Network.MoeSocks.Common import Network.MoeSocks.Helper import Network.MoeSocks.TCP import Network.MoeSocks.Type@@ -37,6 +38,7 @@ import qualified System.Log.Handler as LogHandler  + withGateOptions :: Options -> IO a -> IO () withGateOptions aOption aIO = do   if aOption ^. listMethods@@ -75,6 +77,7 @@                 ("server", "remoteAddress")               , ("server_port", "remotePort")               , ("local_address", "localAddress")+              , ("local_port", "localPort")               ]          in@@ -83,7 +86,7 @@       toParsableConfig :: Value -> Value       toParsableConfig = asList - each . _1 %~  (                                                   T.cons '_' -                                                . toHaskellNamingConvention+                                                {-. toHaskellNamingConvention-}                                                 . fromShadowSocksConfig                                                 )   @@ -114,7 +117,8 @@        optionalConfig = filterEssentialConfig - toJSON defaultConfig       -      _maybeConfig = _v+      _maybeConfig = -- trace ("JSON: " <> show _v) +                      _v                       >>= decode                            . encode                            . fallbackConfig optionalConfig@@ -197,13 +201,15 @@             TCP_Relay -> do               info_ - "LT: " <> aID <> " nyaa!" -              setSocket_TCP_FAST_OPEN _localSocket+              when (_c ^. fastOpen) -+                setSocket_TCP_FAST_OPEN _localSocket+               listen _localSocket maxListenQueue                let handleLocal _socket = do                     _s@(_newSocket, _newSockAddr) <- accept _socket                     setSocketCloseOnExec _newSocket-                    setSocketSendFast _socket+                    setSocketConfig _c _socket                                          forkIO - catchExceptAsyncLog "LT" -                                logSA "L TCP client socket" (pure _s) -@@ -268,14 +274,15 @@           setSocketOption _remoteSocket ReuseAddr 1           bindSocket _remoteSocket _remoteAddr -          setSocket_TCP_FAST_OPEN _remoteSocket+          when (_c ^. fastOpen) -+            setSocket_TCP_FAST_OPEN _remoteSocket                      listen _remoteSocket maxListenQueue            let handleRemote _socket = do                 (_newSocket, _) <- accept _socket                 setSocketCloseOnExec _newSocket-                setSocketSendFast _socket+                setSocketConfig _c _socket                                  forkIO - catchExceptAsyncLog "RT" -                              logSocket "R remote socket" (pure _newSocket) -
src/Network/MoeSocks/Common.hs view
@@ -86,3 +86,11 @@       _family     = _clientRequest ^. addressType . to addressType_To_Family      getSocketWithHint _family _hostName _port _socketType+++setSocketConfig:: Config -> Socket -> IO ()+setSocketConfig aConfig aSocket = do+  setSocketOption aSocket NoDelay 1 +  when (aConfig ^. socketOption_TCP_NOTSENT_LOWAT) - do+    tryIO "setSocket_TCP_NOTSENT_LOWAT" - setSocket_TCP_NOTSENT_LOWAT aSocket+    pure ()
src/Network/MoeSocks/Config.hs view
@@ -20,6 +20,7 @@   , _throttleSpeed = 8000 -- in Kilobytes   , _obfuscationFlushBound = 4096   , _fastOpen = False+  , _socketOption_TCP_NOTSENT_LOWAT = True   }  
src/Network/MoeSocks/Helper.hs view
@@ -19,6 +19,7 @@ import Data.Text (Text) import Data.Text.Lens import Data.Time.Clock+import Debug.Trace (trace) import Network.MoeSocks.Internal.Socket (sendAllToFastOpen) import Network.Socket hiding (send, recv) import Network.Socket.ByteString@@ -31,9 +32,7 @@ import qualified Data.ByteString.Builder as B import qualified Data.ByteString.Lazy as LB import qualified Data.Strict as S-import qualified Data.Text as T - -- BEGIN backports  infixr 0 -@@ -57,6 +56,9 @@ boolToMaybe True = Just () boolToMaybe False = Nothing +trace' :: (Show a) => String -> a -> a+trace' aID x = trace ("TRACE " <> aID <> ": " <> show x) x+ {-syncLock :: MVar ()-} {-syncLock = unsafePerformIO - newEmptyMVar-} @@ -433,12 +435,7 @@   in   setSocketOption aSocket (CustomSockOpt (_TCP_Option, _TCP_NOTSENT_LOWAT)) 1  -setSocketSendFast :: Socket -> IO ()-setSocketSendFast aSocket = do-  setSocketOption aSocket NoDelay 1 -  setSocket_TCP_NOTSENT_LOWAT aSocket - -- Copied and slightly modified from:  -- https://github.com/mzero/plush/blob/master/src/Plush/Server/Warp.hs setSocketCloseOnExec :: Socket -> IO ()@@ -449,8 +446,8 @@ tryIO :: String -> IO a -> IO (Either IOException a) tryIO _ = try -- . logException aID -toHaskellNamingConvention :: Text -> Text-toHaskellNamingConvention x = x -                                & T.split (`elem` ['_', '-'])-                                & over (_tail . traversed) T.toTitle-                                & T.concat+{-toHaskellNamingConvention :: Text -> Text-}+{-toHaskellNamingConvention x = x -}+                                {-& T.split (`elem` ['_', '-'])-}+                                {-& over (_tail . traversed) T.toTitle-}+                                {-& T.concat-}
src/Network/MoeSocks/TCP.hs view
@@ -89,7 +89,7 @@          logSA "L remote socket" _initSocket -        \(_remoteSocket, _remoteAddress) -> do-      setSocketSendFast _remoteSocket+      setSocketConfig _c _remoteSocket        _remoteSocketName <- getSocketName _remoteSocket       @@ -221,7 +221,7 @@      debug_ - "checking: " <> show _addr <> " ? " <> show _forbidden_IPs     withCheckedForbidden_IP_List _addr _forbidden_IPs - do-      setSocketSendFast _targetSocket+      setSocketConfig _c _targetSocket        _remotePeerAddr <- getPeerName aSocket       let _msg = showRelay _remotePeerAddr _clientRequest
src/Network/MoeSocks/Type.hs view
@@ -64,6 +64,7 @@   , _throttleSpeed :: Double   , _obfuscationFlushBound :: Int -- should be greater then MTU   , _fastOpen :: Bool+  , _socketOption_TCP_NOTSENT_LOWAT :: Bool   }   deriving (Show, Eq, Generic) @@ -88,6 +89,12 @@   makeLenses ''Forward++{-data Profile =    Mac-}+                {-| Linux-}+  {-deriving (Show, Eq, Read)-}++{-makePrisms ''Profile-}  data Options = Options   {
src/Network/MoeSocks/UDP.hs view
@@ -48,7 +48,7 @@                                 (aSocket, aSockAddr) = do    let _c = aEnv ^. config-      _cipherBox = _cipherBox+      _cipherBox = aEnv ^. cipherBox    let _clientRequest = ClientRequest                           UDP_Port@@ -71,13 +71,14 @@         connect _remoteSocket _remoteAddr          _encodeIV <- _cipherBox ^. generate_IV +         _encrypt <- _cipherBox ^. encryptBuilder - _encodeIV          {-let (_encrypt, _decrypt) = (pure, pure)-}          let _bytes = buildShadowSocksRequest _clientRequest aMessage -        {-debug_ - "L UDP: " <> show _bytes-}+        {-debug_ - "L UDP sending: " <> show _bytes-}          let _msg = showRelay aSockAddr _clientRequest         info_ - "LU: " <> _msg