Skip to content

Commit

Permalink
cli: set device name for remote control via CLI option (#3427)
Browse files Browse the repository at this point in the history
* cli: set device name for remote control via CLI option

* fix

* add property in tests
  • Loading branch information
epoberezkin committed Nov 22, 2023
1 parent 4af4fba commit 2d4e99d
Show file tree
Hide file tree
Showing 8 changed files with 25 additions and 6 deletions.
1 change: 1 addition & 0 deletions apps/simplex-broadcast-bot/src/Broadcast/Options.hs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ mkChatOpts :: BroadcastBotOpts -> ChatOpts
mkChatOpts BroadcastBotOpts {coreOptions} =
ChatOpts
{ coreOptions,
deviceName = Nothing,
chatCmd = "",
chatCmdDelay = 3,
chatServerPort = Nothing,
Expand Down
1 change: 1 addition & 0 deletions apps/simplex-directory-service/src/Directory/Options.hs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ mkChatOpts :: DirectoryOpts -> ChatOpts
mkChatOpts DirectoryOpts {coreOptions} =
ChatOpts
{ coreOptions,
deviceName = Nothing,
chatCmd = "",
chatCmdDelay = 3,
chatServerPort = Nothing,
Expand Down
7 changes: 4 additions & 3 deletions src/Simplex/Chat.hs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ defaultChatConfig =
cleanupManagerStepDelay = 3 * 1000000, -- 3 seconds
ciExpirationInterval = 30 * 60 * 1000000, -- 30 minutes
coreApi = False,
highlyAvailable = False
highlyAvailable = False,
deviceNameForRemote = ""
}

_defaultSMPServers :: NonEmpty SMPServerWithAuth
Expand Down Expand Up @@ -197,7 +198,7 @@ createChatDatabase filePrefix key confirmMigrations = runExceptT $ do
pure ChatDatabase {chatStore, agentStore}

newChatController :: ChatDatabase -> Maybe User -> ChatConfig -> ChatOpts -> IO ChatController
newChatController ChatDatabase {chatStore, agentStore} user cfg@ChatConfig {agentConfig = aCfg, defaultServers, inlineFiles, tempDir} ChatOpts {coreOptions = CoreChatOpts {smpServers, xftpServers, networkConfig, logLevel, logConnections, logServerHosts, logFile, tbqSize, highlyAvailable}, optFilesFolder, showReactions, allowInstantFiles, autoAcceptFileSize} = do
newChatController ChatDatabase {chatStore, agentStore} user cfg@ChatConfig {agentConfig = aCfg, defaultServers, inlineFiles, tempDir, deviceNameForRemote} ChatOpts {coreOptions = CoreChatOpts {smpServers, xftpServers, networkConfig, logLevel, logConnections, logServerHosts, logFile, tbqSize, highlyAvailable}, deviceName, optFilesFolder, showReactions, allowInstantFiles, autoAcceptFileSize} = do
let inlineFiles' = if allowInstantFiles || autoAcceptFileSize > 0 then inlineFiles else inlineFiles {sendChunks = 0, receiveInstant = False}
config = cfg {logLevel, showReactions, tbqSize, subscriptionEvents = logConnections, hostEvents = logServerHosts, defaultServers = configServers, inlineFiles = inlineFiles', autoAcceptFileSize, highlyAvailable}
firstTime = dbNew chatStore
Expand All @@ -215,7 +216,7 @@ newChatController ChatDatabase {chatStore, agentStore} user cfg@ChatConfig {agen
sndFiles <- newTVarIO M.empty
rcvFiles <- newTVarIO M.empty
currentCalls <- atomically TM.empty
localDeviceName <- newTVarIO "" -- TODO set in config
localDeviceName <- newTVarIO $ fromMaybe deviceNameForRemote deviceName
multicastSubscribers <- newTMVarIO 0
remoteSessionSeq <- newTVarIO 0
remoteHostSessions <- atomically TM.empty
Expand Down
3 changes: 2 additions & 1 deletion src/Simplex/Chat/Controller.hs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ data ChatConfig = ChatConfig
cleanupManagerStepDelay :: Int64,
ciExpirationInterval :: Int64, -- microseconds
coreApi :: Bool,
highlyAvailable :: Bool
highlyAvailable :: Bool,
deviceNameForRemote :: Text
}

data DefaultAgentServers = DefaultAgentServers
Expand Down
4 changes: 3 additions & 1 deletion src/Simplex/Chat/Mobile.hs
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,7 @@ mobileChatOpts dbFilePrefix dbKey =
tbqSize = 1024,
highlyAvailable = False
},
deviceName = Nothing,
chatCmd = "",
chatCmdDelay = 3,
chatServerPort = Nothing,
Expand All @@ -197,7 +198,8 @@ defaultMobileConfig =
defaultChatConfig
{ confirmMigrations = MCYesUp,
logLevel = CLLError,
coreApi = True
coreApi = True,
deviceNameForRemote = "Mobile"
}

getActiveUser_ :: SQLiteStore -> IO (Maybe User)
Expand Down
11 changes: 11 additions & 0 deletions src/Simplex/Chat/Options.hs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ where
import Control.Logger.Simple (LogLevel (..))
import qualified Data.Attoparsec.ByteString.Char8 as A
import qualified Data.ByteString.Char8 as B
import Data.Text (Text)
import Numeric.Natural (Natural)
import Options.Applicative
import Simplex.Chat.Controller (ChatLogLevel (..), updateStr, versionNumber, versionString)
Expand All @@ -32,6 +33,7 @@ import System.FilePath (combine)

data ChatOpts = ChatOpts
{ coreOptions :: CoreChatOpts,
deviceName :: Maybe Text,
chatCmd :: String,
chatCmdDelay :: Int,
chatServerPort :: Maybe String,
Expand Down Expand Up @@ -200,6 +202,14 @@ coreChatOptsP appDir defaultDbFileName = do
chatOptsP :: FilePath -> FilePath -> Parser ChatOpts
chatOptsP appDir defaultDbFileName = do
coreOptions <- coreChatOptsP appDir defaultDbFileName
deviceName <-
optional $
strOption
( long "device-name"
<> short 'e'
<> metavar "DEVICE"
<> help "Device name to use in connections with remote hosts and controller"
)
chatCmd <-
strOption
( long "execute"
Expand Down Expand Up @@ -268,6 +278,7 @@ chatOptsP appDir defaultDbFileName = do
pure
ChatOpts
{ coreOptions,
deviceName,
chatCmd,
chatCmdDelay,
chatServerPort,
Expand Down
3 changes: 2 additions & 1 deletion src/Simplex/Chat/Terminal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ terminalChatConfig =
ntf = ["ntf://FB-Uop7RTaZZEG0ZLD2CIaTjsPh-Fw0zFAnb7QyA8Ks=@ntf2.simplex.im,ntg7jdjy2i3qbib3sykiho3enekwiaqg3icctliqhtqcg6jmoh6cxiad.onion"],
xftp = defaultXFTPServers,
netCfg = defaultNetworkConfig
}
},
deviceNameForRemote = "SimpleX CLI"
}

simplexChatTerminal :: WithTerminal t => ChatConfig -> ChatOpts -> t -> IO ()
Expand Down
1 change: 1 addition & 0 deletions tests/ChatClient.hs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ testOpts =
tbqSize = 16,
highlyAvailable = False
},
deviceName = Nothing,
chatCmd = "",
chatCmdDelay = 3,
chatServerPort = Nothing,
Expand Down

0 comments on commit 2d4e99d

Please sign in to comment.