Ejemplo n.º 1
0
        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);
        }
        internal static Dictionary <string, string> GetSourceNames(Serialization.Interface.IBackup backup)
        {
            var systemIO = Duplicati.Library.Snapshots.SnapshotUtility.SystemIO;

            if (backup.Sources == null || backup.Sources.Length == 0)
            {
                return(new Dictionary <string, string>());
            }

            var sources = backup.Sources.Distinct().Select(x =>
            {
                var sp = SpecialFolders.TranslateToDisplayString(x);
                if (sp != null)
                {
                    return(new KeyValuePair <string, string>(x, sp));
                }

                x = SpecialFolders.ExpandEnvironmentVariables(x);
                try
                {
                    var nx = x;
                    if (nx.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal))
                    {
                        nx = nx.Substring(0, nx.Length - 1);
                    }
                    var n = systemIO.PathGetFileName(nx);
                    if (!string.IsNullOrWhiteSpace(n))
                    {
                        return(new KeyValuePair <string, string>(x, n));
                    }
                }
                catch
                {
                }

                if (x.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString(), StringComparison.Ordinal) && x.Length > 1)
                {
                    return(new KeyValuePair <string, string>(x, x.Substring(0, x.Length - 1).Substring(x.Substring(0, x.Length - 1).LastIndexOf("/", StringComparison.Ordinal) + 1)));
                }
                else
                {
                    return(new KeyValuePair <string, string>(x, x));
                }
            });

            // Handle duplicates
            var result = new Dictionary <string, string>();

            foreach (var x in sources)
            {
                result[x.Key] = x.Value;
            }

            return(result);
        }
Ejemplo n.º 3
0
        internal static Dictionary <string, string> GetSourceNames(Serialization.Interface.IBackup backup)
        {
            var systemIO = Duplicati.Library.Snapshots.SnapshotUtility.SystemIO;

            return(backup.Sources.Distinct().Select(x => {
                var sp = SpecialFolders.TranslateToDisplayString(x);
                if (sp != null)
                {
                    return new KeyValuePair <string, string>(x, sp);
                }

                x = SpecialFolders.ExpandEnvironmentVariables(x);
                try {
                    var nx = x;
                    if (nx.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()))
                    {
                        nx = nx.Substring(0, nx.Length - 1);
                    }
                    var n = systemIO.PathGetFileName(nx);
                    if (!string.IsNullOrWhiteSpace(n))
                    {
                        return new KeyValuePair <string, string>(x, n);
                    }
                } catch {
                }

                if (x.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) && x.Length > 1)
                {
                    return new KeyValuePair <string, string>(x, x.Substring(0, x.Length - 1).Substring(x.Substring(0, x.Length - 1).LastIndexOf("/") + 1));
                }
                else
                {
                    return new KeyValuePair <string, string>(x, x);
                }
            }).ToDictionary(x => x.Key, x => x.Value));
        }