diff --git a/Duplicati/Library/RestAPI/Database/ServerSettings.cs b/Duplicati/Library/RestAPI/Database/ServerSettings.cs index 7daf18ea5..86475d218 100644 --- a/Duplicati/Library/RestAPI/Database/ServerSettings.cs +++ b/Duplicati/Library/RestAPI/Database/ServerSettings.cs @@ -77,6 +77,8 @@ namespace Duplicati.Server.Database public const string ADDITIONAL_REPORT_URL = "additional-report-url"; public const string BACKUP_LIST_SORT_ORDER = "backup-list-sort-order"; public const string DISABLE_API_EXTENSIONS = "disable-api-extensions"; + public const string POWER_MODE_PROVIDER = "power-mode-provider"; + public const string DISABLE_CONSOLE_CONTROL = "disable-console-control"; } private readonly Dictionary settings; @@ -650,6 +652,21 @@ namespace Duplicati.Server.Database } } + public bool DisableConsoleControl + { + get + { + return Utility.ParseBool(settings[CONST.DISABLE_CONSOLE_CONTROL], false); + } + set + { + lock (databaseConnection.m_lock) + settings[CONST.DISABLE_CONSOLE_CONTROL] = value.ToString(); + SaveSettings(); + } + } + + public X509Certificate2Collection? ServerSSLCertificate { get diff --git a/Duplicati/WebserverCore/Services/RemoteControllerHandler.cs b/Duplicati/WebserverCore/Services/RemoteControllerHandler.cs index 895e156bc..d982e82aa 100644 --- a/Duplicati/WebserverCore/Services/RemoteControllerHandler.cs +++ b/Duplicati/WebserverCore/Services/RemoteControllerHandler.cs @@ -144,6 +144,12 @@ public class RemoteControllerHandler(Connection connection, IHttpClientFactory h /// public async Task OnMessage(KeepRemoteConnection.CommandMessage commandMessage) { + if (connection.ApplicationSettings.DisableConsoleControl) + { + commandMessage.Respond(new CommandResponseMessage(501, "Remote control is disabled.", null)); + return; + } + using var httpClient = httpClientFactory.CreateClient(); var token = jwtTokenProvider.CreateAccessToken("remote-control", jwtTokenProvider.TemporaryFamilyId, TimeSpan.FromMinutes(2));