mirror of
https://github.com/simplex-chat/simplexmq.git
synced 2026-03-29 10:10:06 +00:00
xrcp: treat any 127.x.x.x IP address as local (#1682)
This commit is contained in:
@@ -14,7 +14,7 @@ import Control.Logger.Simple
|
|||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.ByteString (ByteString)
|
import Data.ByteString (ByteString)
|
||||||
import Data.Default (def)
|
import Data.Default (def)
|
||||||
import Data.List (delete, find)
|
import Data.List (delete, find, partition)
|
||||||
import Data.Maybe (mapMaybe)
|
import Data.Maybe (mapMaybe)
|
||||||
import Data.String (IsString)
|
import Data.String (IsString)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
@@ -53,11 +53,11 @@ getLocalAddress preferred_ =
|
|||||||
ok -> Just RCCtrlAddress {address = THIPv4 ok, interface = T.pack name}
|
ok -> Just RCCtrlAddress {address = THIPv4 ok, interface = T.pack name}
|
||||||
|
|
||||||
mkLastLocalHost :: [RCCtrlAddress] -> [RCCtrlAddress]
|
mkLastLocalHost :: [RCCtrlAddress] -> [RCCtrlAddress]
|
||||||
mkLastLocalHost addrs = case find localHost addrs of
|
mkLastLocalHost addrs = other <> local
|
||||||
Nothing -> addrs
|
|
||||||
Just lh -> delete lh addrs <> [lh]
|
|
||||||
where
|
where
|
||||||
localHost RCCtrlAddress {address = a} = a == THIPv4 (127, 0, 0, 1)
|
(local, other) = partition localHost addrs
|
||||||
|
localHost RCCtrlAddress {address = THIPv4 (127, _, _, _)} = True
|
||||||
|
localHost _ = False
|
||||||
|
|
||||||
preferAddress :: RCCtrlAddress -> [RCCtrlAddress] -> [RCCtrlAddress]
|
preferAddress :: RCCtrlAddress -> [RCCtrlAddress] -> [RCCtrlAddress]
|
||||||
preferAddress RCCtrlAddress {address, interface} addrs =
|
preferAddress RCCtrlAddress {address, interface} addrs =
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import AgentTests.FunctionalAPITests (runRight)
|
|||||||
import Control.Logger.Simple
|
import Control.Logger.Simple
|
||||||
import Crypto.Random (ChaChaDRG)
|
import Crypto.Random (ChaChaDRG)
|
||||||
import qualified Data.Aeson as J
|
import qualified Data.Aeson as J
|
||||||
import Data.ByteString.Lazy.Char8 as LB
|
import qualified Data.ByteString.Lazy.Char8 as LB
|
||||||
import Data.List.NonEmpty (NonEmpty (..))
|
import Data.List.NonEmpty (NonEmpty (..))
|
||||||
import qualified Simplex.Messaging.Crypto as C
|
import qualified Simplex.Messaging.Crypto as C
|
||||||
import Simplex.Messaging.Encoding.String (StrEncoding (..))
|
import Simplex.Messaging.Encoding.String (StrEncoding (..))
|
||||||
|
|||||||
Reference in New Issue
Block a user