示例#1
0
        void Duplicati_OperationProgress(Interface caller, DuplicatiOperation operation, DuplicatiOperationMode specificmode, int progress, int subprogress, string message, string submessage)
        {
            m_lastPGOperation   = operation;
            m_lastPGMode        = specificmode;
            m_lastPGProgress    = progress;
            m_lastPGSubprogress = subprogress;
            m_lastPGmessage     = message;
            m_lastPGSubmessage  = submessage;

            //If there are extra operations, reserve some space for it by reducing the displayed progress
            if (m_extraOperations > 0 && progress > 0)
            {
                progress = (int)((m_lastPGProgress / 100.0) * (100 - (m_extraOperations * PERCENT_PR_EXTRA_OPERATION)));
            }

            if (ProgressEvent != null)
            {
                try { ProgressEvent(operation, RunnerState.Running, message, submessage, progress, subprogress); }
                catch { }
            }
        }
示例#2
0
        private static Duplicati.Library.Utility.IFilter ApplyFilter(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, Duplicati.Library.Utility.IFilter filter)
        {
            var f2 = backup.Filters;

            if (f2 != null && f2.Length > 0)
            {
                var nf =
                    (from n in f2
                     let exp =
                         n.Expression.StartsWith("[") && n.Expression.EndsWith("]")
                        ? SpecialFolders.ExpandEnvironmentVariablesRegexp(n.Expression)
                        : SpecialFolders.ExpandEnvironmentVariables(n.Expression)
                         orderby n.Order
                         select(Duplicati.Library.Utility.IFilter)(new Duplicati.Library.Utility.FilterExpression(exp, n.Include)))
                    .Aggregate((a, b) => Duplicati.Library.Utility.FilterExpression.Combine(a, b));

                return(Duplicati.Library.Utility.FilterExpression.Combine(filter, nf));
            }
            else
            {
                return(filter);
            }
        }
示例#3
0
        private static Dictionary <string, string> ApplyOptions(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, Dictionary <string, string> options)
        {
            options["backup-name"] = backup.Name;
            options["dbpath"]      = backup.DBPath;

            // Apply normal options
            foreach (var o in backup.Settings)
            {
                if (!o.Name.StartsWith("--") && TestIfOptionApplies(backup, mode, o.Filter))
                {
                    options[o.Name] = o.Value;
                }
            }

            // Apply override options
            foreach (var o in backup.Settings)
            {
                if (o.Name.StartsWith("--") && TestIfOptionApplies(backup, mode, o.Filter))
                {
                    options[o.Name.Substring(2)] = o.Value;
                }
            }


            // The server hangs if the module is enabled as there is no console attached
            DisableModule("console-password-input", options);

            return(options);
        }
示例#4
0
 private static bool TestIfOptionApplies(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, string filter)
 {
     //TODO: Implement to avoid warnings
     return(true);
 }
示例#5
0
        private static Duplicati.Library.Utility.IFilter GetCommonFilter(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode)
        {
            var filters = Program.DataConnection.Filters;

            if (filters == null || filters.Length == 0)
            {
                return(null);
            }

            return
                ((from n in filters
                  orderby n.Order
                  let exp = Library.Utility.Utility.ExpandEnvironmentVariables(n.Expression)
                            select(Duplicati.Library.Utility.IFilter)(new Duplicati.Library.Utility.FilterExpression(exp, n.Include)))
                 .Aggregate((a, b) => Duplicati.Library.Utility.FilterExpression.Combine(a, b)));
        }
示例#6
0
 private static Dictionary <string, string> GetCommonOptions(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode)
 {
     return
         ((from n in Program.DataConnection.Settings
           where TestIfOptionApplies(backup, mode, n.Filter)
           select n).ToDictionary(k => k.Name.StartsWith("--", StringComparison.Ordinal) ? k.Name.Substring(2) : k.Name, k => k.Value));
 }
示例#7
0
        void Duplicati_OperationProgress(Interface caller, DuplicatiOperation operation, DuplicatiOperationMode specificmode, int progress, int subprogress, string message, string submessage)
        {
            m_lastPGOperation = operation;
            m_lastPGMode = specificmode;
            m_lastPGProgress = progress;
            m_lastPGSubprogress = subprogress;
            m_lastPGmessage = message;
            m_lastPGSubmessage = submessage;

            //If there are extra operations, reserve some space for it by reducing the displayed progress
            if (m_extraOperations > 0 && progress > 0)
                progress = (int)((m_lastPGProgress / 100.0) * (100 - (m_extraOperations * PERCENT_PR_EXTRA_OPERATION)));

            if (ProgressEvent != null)
                try { ProgressEvent(operation, RunnerState.Running, message, submessage, progress, subprogress); }
                catch { }
        }
示例#8
0
 private static bool TestIfOptionApplies(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, string filter)
 {
     //TODO: Implement to avoid warnings
     return true;
 }
示例#9
0
 private static Dictionary<string, string> GetCommonOptions(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode)
 {
     return
         (from n in Program.DataConnection.Settings
         where TestIfOptionApplies(backup, mode, n.Filter)
         select n).ToDictionary(k => k.Name.StartsWith("--") ? k.Name.Substring(2) : k.Name, k => k.Value);
 }
示例#10
0
        private static Duplicati.Library.Utility.IFilter GetCommonFilter(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode)
        {
            var filters = Program.DataConnection.Filters;
            if (filters == null || filters.Length == 0)
                return null;

               return
                (from n in filters
                orderby n.Order
                let exp = Library.Utility.Utility.ExpandEnvironmentVariables(n.Expression)
                select (Duplicati.Library.Utility.IFilter)(new Duplicati.Library.Utility.FilterExpression(exp, n.Include)))
                .Aggregate((a, b) => Duplicati.Library.Utility.FilterExpression.Combine(a, b));
        }
示例#11
0
        private static Dictionary<string, string> ApplyOptions(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, Dictionary<string, string> options)
        {
            options["backup-name"] = backup.Name;
            options["dbpath"] = backup.DBPath;

            // Apply normal options
            foreach(var o in backup.Settings)
                if (!o.Name.StartsWith("--") && TestIfOptionApplies(backup, mode, o.Filter))
                    options[o.Name] = o.Value;

            // Apply override options
            foreach(var o in backup.Settings)
                if (o.Name.StartsWith("--") && TestIfOptionApplies(backup, mode, o.Filter))
                    options[o.Name.Substring(2)] = o.Value;

            // The server hangs if the module is enabled as there is no console attached
            DisableModule("console-password-input", options);

            return options;
        }
示例#12
0
        private static Duplicati.Library.Utility.IFilter ApplyFilter(Duplicati.Server.Serialization.Interface.IBackup backup, DuplicatiOperation mode, Duplicati.Library.Utility.IFilter filter)
        {
            var f2 = backup.Filters;
            if (f2 != null && f2.Length > 0)
            {
                var nf =
                    (from n in f2
                    let exp =
                        n.Expression.StartsWith("[") && n.Expression.EndsWith("]")
                        ? SpecialFolders.ExpandEnvironmentVariablesRegexp(n.Expression)
                        : SpecialFolders.ExpandEnvironmentVariables(n.Expression)
                    orderby n.Order
                    select (Duplicati.Library.Utility.IFilter)(new Duplicati.Library.Utility.FilterExpression(exp, n.Include)))
                    .Aggregate((a, b) => Duplicati.Library.Utility.FilterExpression.Combine(a, b));

                return Duplicati.Library.Utility.FilterExpression.Combine(filter, nf);
            }
            else
                return filter;
        }
示例#13
0
文件: Runner.cs 项目: zora/duplicati
        private static Library.Utility.IFilter ApplyFilter(Serialization.Interface.IBackup backup, DuplicatiOperation mode, Library.Utility.IFilter filter, IEnumerable <Library.Utility.IFilter> defaultFilters)
        {
            var f2 = backup.Filters;

            if (f2 != null && f2.Length > 0)
            {
                var nf =
                    (from n in f2
                     let exp =
                         n.Expression.StartsWith("[", StringComparison.Ordinal) && n.Expression.EndsWith("]", StringComparison.Ordinal)
                        ? SpecialFolders.ExpandEnvironmentVariablesRegexp(n.Expression)
                        : SpecialFolders.ExpandEnvironmentVariables(n.Expression)
                         orderby n.Order
                         select(Library.Utility.IFilter)(new Library.Utility.FilterExpression(exp, n.Include)))
                    .Aggregate((a, b) => Library.Utility.FilterExpression.Combine(a, b));

                filter = Library.Utility.FilterExpression.Combine(filter, nf);
            }

            if (defaultFilters != null && defaultFilters.Any())
            {
                filter = Library.Utility.FilterExpression.Combine(filter, defaultFilters.Aggregate((a, b) => Library.Utility.FilterExpression.Combine(a, b)));
            }

            return(filter);
        }
示例#14
0
 /// <summary>
 /// Event handler for the OperationProgres, used to store the last status message
 /// </summary>
 private void Interface_OperationProgress(Interface caller, DuplicatiOperation operation, DuplicatiOperationMode specificoperation, int progress, int subprogress, string message, string submessage)
 {
     m_lastProgressMessage = message;
 }