From d4257f877d8b6a4daefd3372045f2cd6684e0005 Mon Sep 17 00:00:00 2001 From: Kenneth Skovhede Date: Sat, 23 Apr 2016 08:13:40 +0200 Subject: [PATCH] Added overrides to allow OEM provided values for auto-update settings --- .../Library/AutoUpdater/AutoUpdateSettings.cs | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/Duplicati/Library/AutoUpdater/AutoUpdateSettings.cs b/Duplicati/Library/AutoUpdater/AutoUpdateSettings.cs index 3b4ef7ff9..9da1c9f48 100644 --- a/Duplicati/Library/AutoUpdater/AutoUpdateSettings.cs +++ b/Duplicati/Library/AutoUpdater/AutoUpdateSettings.cs @@ -31,6 +31,12 @@ namespace Duplicati.Library.AutoUpdater private const string UPDATE_README = "AutoUpdateFolderReadme.txt"; private const string UPDATE_INSTALL_FILE = "AutoUpdateInstallIDTemplate.txt"; + private const string OEM_APP_NAME = "oem-app-name.txt"; + private const string OEM_UPDATE_URL = "oem-update-url.txt"; + private const string OEM_UPDATE_KEY = "oem-update-key.txt"; + private const string OEM_UPDATE_README = "oem-update-readme.txt"; + private const string OEM_UPDATE_INSTALL_FILE = "oem-update-installid.txt"; + internal const string UPDATEURL_ENVNAME_TEMPLATE = "AUTOUPDATER_{0}_URLS"; internal const string UPDATECHANNEL_ENVNAME_TEMPLATE = "AUTOUPDATER_{0}_CHANNEL"; @@ -49,19 +55,20 @@ namespace Duplicati.Library.AutoUpdater static AutoUpdateSettings() { - ReadResourceText(APP_NAME); - ReadResourceText(UPDATE_URL); - ReadResourceText(UPDATE_KEY); - ReadResourceText(UPDATE_README); - ReadResourceText(UPDATE_INSTALL_FILE); + ReadResourceText(APP_NAME, OEM_APP_NAME); + ReadResourceText(UPDATE_URL, OEM_UPDATE_URL); + ReadResourceText(UPDATE_KEY, OEM_UPDATE_URL); + ReadResourceText(UPDATE_README, OEM_UPDATE_README); + ReadResourceText(UPDATE_INSTALL_FILE, OEM_UPDATE_INSTALL_FILE); } - private static string ReadResourceText(string name) + private static string ReadResourceText(string name, string oemname) { string result; if (_cache.TryGetValue(name, out result)) return result; + try { using (var rd = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(typeof(AutoUpdateSettings), name))) @@ -71,6 +78,16 @@ namespace Duplicati.Library.AutoUpdater { } + try + { + // Check for OEM override + if (!string.IsNullOrWhiteSpace(oemname) && System.IO.File.Exists(oemname)) + result = System.IO.File.ReadAllText(oemname); + } + catch + { + } + if (string.IsNullOrWhiteSpace(result)) result = ""; else @@ -87,7 +104,7 @@ namespace Duplicati.Library.AutoUpdater if (UsesAlternateURLs) return Environment.GetEnvironmentVariable(string.Format(UPDATEURL_ENVNAME_TEMPLATE, AppName)).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); else - return ReadResourceText(UPDATE_URL).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);; + return ReadResourceText(UPDATE_URL, OEM_UPDATE_URL).Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);; } } @@ -137,17 +154,17 @@ namespace Duplicati.Library.AutoUpdater public static string AppName { - get { return ReadResourceText(APP_NAME); } + get { return ReadResourceText(APP_NAME, OEM_APP_NAME); } } public static string UpdateFolderReadme { - get { return ReadResourceText(UPDATE_README); } + get { return ReadResourceText(UPDATE_README, OEM_UPDATE_README); } } public static string UpdateInstallFileText { - get { return string.Format(ReadResourceText(UPDATE_INSTALL_FILE), Guid.NewGuid().ToString("N")); } + get { return string.Format(ReadResourceText(UPDATE_INSTALL_FILE, OEM_UPDATE_INSTALL_FILE), Guid.NewGuid().ToString("N")); } } public static System.Security.Cryptography.RSACryptoServiceProvider SignKey @@ -157,7 +174,7 @@ namespace Duplicati.Library.AutoUpdater try { var key = System.Security.Cryptography.RSACryptoServiceProvider.Create(); - key.FromXmlString(ReadResourceText(UPDATE_KEY)); + key.FromXmlString(ReadResourceText(UPDATE_KEY, OEM_UPDATE_KEY)); return (System.Security.Cryptography.RSACryptoServiceProvider)key; } catch