mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-04-28 08:27:02 +00:00
core: add commands that will not be forwarded to connected mobile (#3398)
* core: add commands that will not be forwarded to connected mobile * fail if command that must be executed locally sent to remote host
This commit is contained in:
committed by
GitHub
parent
d9031cb209
commit
2a8d7b8926
+3
-1
@@ -400,7 +400,9 @@ execChatCommand rh s = do
|
||||
case parseChatCommand s of
|
||||
Left e -> pure $ chatCmdError u e
|
||||
Right cmd -> case rh of
|
||||
Just remoteHostId | allowRemoteCommand cmd -> execRemoteCommand u remoteHostId cmd s
|
||||
Just rhId
|
||||
| allowRemoteCommand cmd -> execRemoteCommand u rhId cmd s
|
||||
| otherwise -> pure $ CRChatCmdError u $ ChatErrorRemoteHost (RHId rhId) $ RHELocalCommand
|
||||
_ -> execChatCommand_ u cmd
|
||||
|
||||
execChatCommand' :: ChatMonad' m => ChatCommand -> m ChatResponse
|
||||
|
||||
@@ -452,8 +452,20 @@ allowRemoteCommand = \case
|
||||
APIStopChat -> False
|
||||
APIActivateChat -> False
|
||||
APISuspendChat _ -> False
|
||||
SetTempFolder _ -> False
|
||||
QuitChat -> False
|
||||
SetTempFolder _ -> False
|
||||
SetFilesFolder _ -> False
|
||||
SetRemoteHostsFolder _ -> False
|
||||
APISetXFTPConfig _ -> False
|
||||
APISetEncryptLocalFiles _ -> False
|
||||
APIExportArchive _ -> False
|
||||
APIImportArchive _ -> False
|
||||
ExportArchive -> False
|
||||
APIDeleteStorage -> False
|
||||
APIStorageEncryption _ -> False
|
||||
APISetNetworkConfig _ -> False
|
||||
APIGetNetworkConfig -> False
|
||||
SetLocalDeviceName _ -> False
|
||||
ListRemoteHosts -> False
|
||||
StartRemoteHost _ -> False
|
||||
SwitchRemoteHost {} -> False
|
||||
@@ -1052,6 +1064,7 @@ data RemoteHostError
|
||||
| RHETimeout
|
||||
| RHEBadState -- ^ Illegal state transition
|
||||
| RHEBadVersion {appVersion :: AppVersion}
|
||||
| RHELocalCommand -- ^ Command not allowed for remote execution
|
||||
| RHEDisconnected {reason :: Text} -- TODO should be sent when disconnected?
|
||||
| RHEProtocolError RemoteProtocolError
|
||||
deriving (Show, Exception)
|
||||
|
||||
@@ -56,8 +56,9 @@ runInputLoop ct@ChatTerminal {termState, liveMessageState} cc = forever $ do
|
||||
rh <- readTVarIO $ currentRemoteHost cc
|
||||
let bs = encodeUtf8 $ T.pack s
|
||||
cmd = parseChatCommand bs
|
||||
rh' = if either (const False) allowRemoteCommand cmd then rh else Nothing
|
||||
unless (isMessage cmd) $ echo s
|
||||
r <- runReaderT (execChatCommand rh bs) cc
|
||||
r <- runReaderT (execChatCommand rh' bs) cc
|
||||
processResp s cmd r
|
||||
printRespToTerminal ct cc False rh r
|
||||
startLiveMessage cmd r
|
||||
|
||||
Reference in New Issue
Block a user