@@ -16,7 +16,7 @@ import qualified Data.Text as T
1616import qualified Data.Text.IO as T
1717import Network.Socket (HostName )
1818import Options.Applicative
19- import Simplex.Messaging.Client (NetworkConfig (.. ), ProtocolClientConfig (.. ), SocksMode (.. ), defaultNetworkConfig )
19+ import Simplex.Messaging.Client (HostMode ( .. ), NetworkConfig (.. ), ProtocolClientConfig (.. ), SocksMode (.. ), defaultNetworkConfig )
2020import Simplex.Messaging.Client.Agent (SMPClientAgentConfig (.. ), defaultSMPClientAgentConfig )
2121import qualified Simplex.Messaging.Crypto as C
2222import Simplex.Messaging.Notifications.Server (runNtfServer )
@@ -26,6 +26,7 @@ import Simplex.Messaging.Notifications.Transport (supportedNTFHandshakes, suppor
2626import Simplex.Messaging.Protocol (ProtoServerWithAuth (.. ), pattern NtfServer )
2727import Simplex.Messaging.Server.CLI
2828import Simplex.Messaging.Server.Expiration
29+ import Simplex.Messaging.Server.Main (textToHostMode )
2930import Simplex.Messaging.Transport (simplexMQVersion )
3031import Simplex.Messaging.Transport.Client (TransportHost (.. ))
3132import Simplex.Messaging.Transport.Server (TransportServerConfig (.. ), defaultTransportServerConfig )
@@ -92,6 +93,10 @@ ntfServerCLI cfgPath logPath =
9293 <> " websockets: off\n\n \
9394 \[SUBSCRIBER]\n \
9495 \# Network configuration for notification server client.\n \
96+ \# `host_mode` can be 'public' (default) or 'onion'.\n \
97+ \# It defines prefferred hostname for destination servers with multiple hostnames.\n \
98+ \# host_mode: public\n \
99+ \# required_host_mode: off\n\n \
95100 \# SOCKS proxy port for subscribing to SMP servers.\n \
96101 \# You may need a separate instance of SOCKS proxy for incoming single-hop requests.\n \
97102 \# socks_proxy: localhost:9050\n\n \
@@ -134,6 +139,8 @@ ntfServerCLI cfgPath logPath =
134139 defaultNetworkConfig
135140 { socksProxy = either error id <$!> strDecodeIni " SUBSCRIBER" " socks_proxy" ini,
136141 socksMode = maybe SMOnion (either error id ) $! strDecodeIni " SUBSCRIBER" " socks_mode" ini,
142+ hostMode = either (const HMPublic ) textToHostMode $ lookupValue " SUBSCRIBER" " host_mode" ini,
143+ requiredHostMode = fromMaybe False $ iniOnOff " SUBSCRIBER" " required_host_mode" ini,
137144 smpPingInterval = 60_000_000 -- 1 minutes
138145 }
139146 },
0 commit comments