Example #1
0
            void IDictionary <ConfuserComponent, Dictionary <string, string> > .Add(ConfuserComponent key, Dictionary <string, string> value)
            {
                var item = new SettingItem <Protection>(key.Id, SettingItemAction.Add);

                foreach (var entry in value)
                {
                    item.Add(entry.Key, entry.Value);
                }
                rule.Add(item);
            }
Example #2
0
        public void AddTest_000000()
        {
            var rule = new Rule();

            rule.Add("000000");
            Assert.AreEqual(1, rule.Count); // "00000"は回転しても同じなので、追加されるルールは1つだけ
        }
Example #3
0
        public void NextTest_000000()
        {
            var rule = new Rule();

            rule.Add("000000");
            Assert.AreEqual(0, rule.Next(0, 0, 0, 0, 0));
        }
Example #4
0
        async public override Task <bool> Update(Dealer model)
        {
            // Simple validations
            Validate(model);

            // Custom validations
            if (Exists(i => i.Id != model.Id && i.Name == model.Name))
            {
                Rule.Add("Name", "Name already taken");
            }

            // Throws an exception if there are validation errors
            CheckRule();

            // Retrieves data
            var current = Get(model.Id);

            if (current == null)
            {
                return(false);
            }

            // Update fields
            current.Name        = model.Name;
            current.PhoneNumber = model.PhoneNumber;
            current.City        = model.City;
            current.ZipCode     = model.ZipCode;
            current.ProvinceId  = model.ProvinceId;
            current.CountryId   = model.CountryId;
            current.UserId      = model.UserId;
            current.Active      = model.Active;

            // Persist on database
            return(await base.Update(current));
        }
Example #5
0
        async public override Task <bool> Update(Role model)
        {
            // Simple validations
            Validate(model);

            // Custom validations
            if (Exists(i => i.Id != model.Id && i.Name == model.Name))
            {
                Rule.Add("Name", "Name already taken");
            }

            // Throws an exception if there are validation errors
            CheckRule();

            // Retrieves data
            var current = Get(model.Id);

            if (current == null)
            {
                return(false);
            }

            // Update fields
            current.Name    = model.Name;
            current.IsAdmin = model.IsAdmin;
            current.Active  = model.Active;

            // Persist on database
            return(await base.Update(current));
        }
Example #6
0
		/// <summary>
		///     Protects the stub using original project settings replace the current output with the protected stub.
		/// </summary>
		/// <param name="context">The working context.</param>
		/// <param name="fileName">The result file name.</param>
		/// <param name="module">The stub module.</param>
		/// <param name="snKey">The strong name key.</param>
		/// <param name="prot">The packer protection that applies to the stub.</param>
		protected void ProtectStub(ConfuserContext context, string fileName, byte[] module, StrongNameKey snKey, Protection prot = null) {
			string tmpDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
			string outDir = Path.Combine(tmpDir, Path.GetRandomFileName());
			Directory.CreateDirectory(tmpDir);

			for (int i = 0; i < context.OutputModules.Count; i++) {
				string path = Path.GetFullPath(Path.Combine(tmpDir, context.OutputPaths[i]));
				var dir = Path.GetDirectoryName(path);
				if (!Directory.Exists(dir))
					Directory.CreateDirectory(dir);
				File.WriteAllBytes(path, context.OutputModules[i]);
			}
			File.WriteAllBytes(Path.Combine(tmpDir, fileName), module);

			var proj = new ConfuserProject();
			proj.Seed = context.Project.Seed;
			foreach (Rule rule in context.Project.Rules)
				proj.Rules.Add(rule);
			proj.Add(new ProjectModule {
				Path = fileName
			});
			proj.BaseDirectory = tmpDir;
			proj.OutputDirectory = outDir;
			foreach (var path in context.Project.ProbePaths)
				proj.ProbePaths.Add(path);
			proj.ProbePaths.Add(context.Project.BaseDirectory);

			PluginDiscovery discovery = null;
			if (prot != null) {
				var rule = new Rule {
					Preset = ProtectionPreset.None,
					Inherit = true,
					Pattern = "true"
				};
				rule.Add(new SettingItem<Protection> {
					Id = prot.Id,
					Action = SettingItemAction.Add
				});
				proj.Rules.Add(rule);
				discovery = new PackerDiscovery(prot);
			}

			try {
				ConfuserEngine.Run(new ConfuserParameters {
					Logger = new PackerLogger(context.Logger),
					PluginDiscovery = discovery,
					Marker = new PackerMarker(snKey),
					Project = proj,
					PackerInitiated = true
				}, context.token).Wait();
			}
			catch (AggregateException ex) {
				context.Logger.Error("Failed to protect packer stub.");
				throw new ConfuserException(ex);
			}

			context.OutputModules = new[] { File.ReadAllBytes(Path.Combine(outDir, fileName)) };
			context.OutputPaths = new[] { fileName };
		}
Example #7
0
        public void NextTest_702525()
        {
            var rule = new Rule();

            rule.Add("702525");
            Assert.AreEqual(5, rule.Next(7, 0, 2, 5, 2));
            Assert.AreEqual(5, rule.Next(7, 2, 0, 2, 5));
            Assert.AreEqual(5, rule.Next(7, 5, 2, 0, 2));
            Assert.AreEqual(5, rule.Next(7, 2, 5, 2, 0));
        }
Example #8
0
        /// <summary>
        ///     Protects the stub using original project settings replace the current output with the protected stub.
        /// </summary>
        /// <param name="context">The working context.</param>
        /// <param name="fileName">The result file name.</param>
        /// <param name="module">The stub module.</param>
        /// <param name="snKey">The strong name key.</param>
        /// <param name="prot">The packer protection that applies to the stub.</param>
        protected void ProtectStub(ConfuserContext context, string fileName, byte[] module, StrongNameKey snKey, Protection prot = null)
        {
            string tmpDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            string outDir = Path.Combine(tmpDir, Path.GetRandomFileName());

            Directory.CreateDirectory(tmpDir);
            File.WriteAllBytes(Path.Combine(tmpDir, fileName), module);

            var proj = new ConfuserProject();

            proj.Seed = context.Project.Seed;
            foreach (Rule rule in context.Project.Rules)
            {
                proj.Rules.Add(rule);
            }
            proj.Add(new ProjectModule {
                Path = fileName
            });
            proj.BaseDirectory   = tmpDir;
            proj.OutputDirectory = outDir;

            PluginDiscovery discovery = null;

            if (prot != null)
            {
                var rule = new Rule {
                    Preset  = ProtectionPreset.None,
                    Inherit = true,
                    Pattern = "true"
                };
                rule.Add(new SettingItem <Protection> {
                    Id     = prot.Id,
                    Action = SettingItemAction.Add
                });
                proj.Rules.Add(rule);
                discovery = new PackerDiscovery(prot);
            }

            try {
                ConfuserEngine.Run(new ConfuserParameters {
                    Logger          = new PackerLogger(context.Logger),
                    PluginDiscovery = discovery,
                    Marker          = new PackerMarker(snKey),
                    Project         = proj,
                    PackerInitiated = true
                }, context.token).Wait();
            }
            catch (AggregateException ex) {
                context.Logger.Error("Failed to protect packer stub.");
                throw new ConfuserException(ex);
            }

            context.OutputModules = new[] { File.ReadAllBytes(Path.Combine(outDir, fileName)) };
            context.OutputPaths   = new[] { fileName };
        }
Example #9
0
        public Rule ToCrRule()
        {
            Rule ret = new Rule();

            ret.Preset  = preset;
            ret.Pattern = pattern;
            ret.Inherit = inherit;
            foreach (var i in this)
            {
                ret.Add(i.ToCrConfig());
            }
            return(ret);
        }
Example #10
0
        async public override Task <bool> Update(Order model)
        {
            // Simple validations
            Validate(model);

            var dateLimit = DateTime.Now.AddDays(7);

            // Custom validations
            if (model.Date > dateLimit)
            {
                Rule.Add("Date", "Future order are allowed to 1 week maximum");;
            }

            // Throws an exception if there are validation errors
            CheckRule();

            // Retrieves data
            var current = Get(model.Id);

            if (current == null)
            {
                return(false);
            }

            if (model.StatusId < current.StatusId)
            {
                Rule.Add("StatusId", "Order Status can't move backwards.");;
                Rule.Check();
            }

            // Update fields
            current.Date        = model.Date;
            current.TotalAmount = model.TotalAmount;
            current.StatusId    = model.StatusId;
            current.CustomerId  = model.CustomerId;
            current.DealerId    = model.DealerId;

            // Update children
            current.Items.Clear();
            current.Items.AddRange(model.Items);

            // Persist on database
            return(await base.Update(current));
        }
Example #11
0
        static void Main(string[] args)
        {
            LogProvider.SetCurrentLogProvider(new ColoredConsoleLogProvider());

            Rule rule1 = new Rule();

            rule1.Add(new AndFilter(new List <IConstraint> {
                new EqualsConstraint("name", "Joao Paulo")
            }));

            IRuleStore  pool   = new MemoryRuleStore(new[] { rule1 });
            IRuleEngine engine = new RuleEngine(pool);
            var         result = engine.Evaluate(new {
                name = "Joao Paulo",
                age  = 17
            }).ToList();

            Console.Read();
        }
        protected override void AddRuleProperties()
        {
            RenderScale = Rule.Add(d => d.RenderScale);
            MsaaCount   = Rule.Add(d => d.MsaaCount);
            Vsync       = Rule.Add(d => d.Vsync);

            RenderScale.OnVerify += (ref float value) =>
            {
                value = math.clamp(value, 0.1f, 2);
                return(true);
            };
            MsaaCount.OnVerify += (ref int value) =>
            {
                value = math.clamp(value, 1, 4);
                return(true);
            };

            Rule.OnPropertyChanged += OnHandler;
        }
Example #13
0
        async public override Task Add(Role model)
        {
            // Simple validations
            Validate(model);

            // Custom validations
            if (Exists(i => i.Name == model.Name))
            {
                Rule.Add("Name", "Name already taken");
            }

            // Throws an exception if there are validation errors
            CheckRule();

            // New records are set to active
            model.Active = true;

            // Persist on database
            await base.Add(model);
        }
Example #14
0
        public TextsWindow()
        {
            InitializeComponent();

            Static2D = new CARCEditor("Static2D.carc");

            for (var i = 0; i < CARCLanguages.Length; i++)
            {
                var main2d = new CARCEditor(FormatLanguageFile("Main2D", "carc", i));
                Main2D.Add(main2d);
                var common = new BMG(main2d.ReadFile("common.bmg"));
                Common.Add(common);

                var mbchild = new BMG(Static2D.ReadFile(FormatLanguageFile("MBChild", "bmg", i)));
                MBChild.Add(mbchild);

                var chksel = new CARCEditor(FormatLanguageFile("CharacterKartSelect", "carc", i));
                CharacterKartSelect.Add(chksel);
                var kartsel = new BMG(chksel.ReadFile("kart_select.bmg"));
                KartSelect.Add(kartsel);

                var wlmenu = new CARCEditor(FormatLanguageFile("WLMenu", "carc", i));
                WLMenu.Add(wlmenu);
                var banner = new BMG(wlmenu.ReadFile("banner.bmg"));
                Banner.Add(banner);

                var menu = new CARCEditor(FormatLanguageFile("Menu", "carc", i));
                Menu.Add(menu);
                var menu_bmg = new BMG(menu.ReadFile("menu.bmg"));
                MenuBMG.Add(menu_bmg);
                var mission = new BMG(menu.ReadFile("mission.bmg"));
                Mission.Add(mission);
                var rule = new BMG(menu.ReadFile("rule.bmg"));
                Rule.Add(rule);
            }

            Load();
        }
Example #15
0
        async public override Task Add(Order model)
        {
            // Simple validations
            Validate(model);

            if (!model.Items.Any())
            {
                Rule.Add("Items", "Your order must have at least one item!");
            }

            var dateLimit = DateTime.Now.AddDays(7);

            var invalidItems = from i in model.Items
                               where i.Amount <= 0 || i.Quantity <= 0 || i.ProductId == null
                               select i;

            // Custom validations
            if (model.Date > dateLimit)
            {
                Rule.Add("Date", "Future order are allowed to 1 week maximum");;
            }

            if (invalidItems.Any())
            {
                Rule.Add("Items", "There are invalid items in your order. Please verify.");;
            }

            // Throws an exception if there are validation errors
            CheckRule();

            // New records are set to active
            model.Active = true;

            // Persist on database
            await base.Add(model);
        }
        private TestCaseFilter CreateSampleTestFilter()
        {
            TestCaseFilter filter = new TestCaseFilter();
            RuleGroup      group1 = new RuleGroup()
            {
                Name          = "Group1",
                Description   = "This is the first group.",
                RuleGroupType = RuleType.Selector
            };
            Rule rule1 = new Rule()
            {
                Name         = "Rule1",
                SelectStatus = RuleSelectStatus.Selected
            };
            Rule rule11 = new Rule()
            {
                Name         = "Rule11",
                SelectStatus = RuleSelectStatus.Selected,
                CategoryList = new System.Collections.Generic.List <string>()
                {
                    "Cat1", "Cat2", "Cat3"
                }
            };
            Rule rule12 = new Rule()
            {
                Name         = "Rule12",
                SelectStatus = RuleSelectStatus.UnSelected,
                CategoryList = new System.Collections.Generic.List <string>()
                {
                    "Cat4", "Cat5", "Cat6"
                }
            };

            rule1.Add(rule11);
            rule1.Add(rule12);
            group1.Add(rule1);

            RuleGroup group2 = new RuleGroup()
            {
                Name          = "Group2",
                Description   = "This is the second group.",
                RuleGroupType = RuleType.Selector
            };
            Rule rule2 = new Rule()
            {
                Name         = "Rule2",
                SelectStatus = RuleSelectStatus.UnSelected,
                CategoryList = new System.Collections.Generic.List <string>()
                {
                    "Cat1", "Cat2", "Cat3"
                }
            };

            group2.Add(rule2);

            RuleGroup group3 = new RuleGroup()
            {
                Name          = "Group3",
                Description   = "This is the third group.",
                SelectStatus  = RuleSelectStatus.Selected,
                RuleGroupType = RuleType.Remover
            };
            Rule rule3 = new Rule()
            {
                Name         = "Rule3",
                SelectStatus = RuleSelectStatus.Selected,
                CategoryList = new System.Collections.Generic.List <string>()
                {
                    "Cat7", "Cat8"
                }
            };

            group3.Add(rule3);

            filter.Add(group1);
            filter.Add(group2);
            filter.Add(group3);

            rule11.SelectStatus = RuleSelectStatus.Selected;
            rule3.SelectStatus  = RuleSelectStatus.UnSelected;
            return(filter);
        }
Example #17
0
        /// <summary>
        ///     Protects the stub using original project settings replace the current output with the protected stub.
        /// </summary>
        /// <param name="context">The working context.</param>
        /// <param name="fileName">The result file name.</param>
        /// <param name="module">The stub module.</param>
        /// <param name="snKey">The strong name key.</param>
        /// <param name="prot">The packer protection that applies to the stub.</param>
        protected void ProtectStub(ConfuserContext context, string fileName, byte[] module, StrongNameKey snKey, StrongNamePublicKey snPubKey, StrongNameKey snSigKey, StrongNamePublicKey snPubSigKey, bool snDelaySig, Protection prot = null)
        {
            string tmpDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            try {
                string outDir = Path.Combine(tmpDir, Path.GetRandomFileName());
                Directory.CreateDirectory(tmpDir);

                for (int i = 0; i < context.OutputModules.Count; i++)
                {
                    string path = Path.GetFullPath(Path.Combine(tmpDir, context.OutputPaths[i]));
                    var    dir  = Path.GetDirectoryName(path);
                    if (!Directory.Exists(dir))
                    {
                        Directory.CreateDirectory(dir);
                    }
                    File.WriteAllBytes(path, context.OutputModules[i]);
                }

                File.WriteAllBytes(Path.Combine(tmpDir, fileName), module);

                var proj = new ConfuserProject();
                proj.Seed = context.Project.Seed;
                foreach (Rule rule in context.Project.Rules)
                {
                    proj.Rules.Add(rule);
                }
                proj.Add(new ProjectModule {
                    Path = fileName
                });
                proj.BaseDirectory   = tmpDir;
                proj.OutputDirectory = outDir;
                foreach (var path in context.Project.ProbePaths)
                {
                    proj.ProbePaths.Add(path);
                }
                proj.ProbePaths.Add(context.Project.BaseDirectory);

                PluginDiscovery discovery = null;
                if (prot != null)
                {
                    var rule = new Rule {
                        Preset  = ProtectionPreset.None,
                        Inherit = true,
                        Pattern = "true"
                    };
                    rule.Add(new SettingItem <Protection> {
                        Id     = prot.Id,
                        Action = SettingItemAction.Add
                    });
                    proj.Rules.Add(rule);
                    discovery = new PackerDiscovery(prot);
                }

                try {
                    ConfuserEngine
                    .Run(
                        new ConfuserParameters {
                        Logger          = new PackerLogger(context.Logger),
                        PluginDiscovery = discovery,
                        Marker          = new PackerMarker(snKey, snPubKey, snDelaySig, snSigKey, snPubSigKey),
                        Project         = proj,
                        PackerInitiated = true
                    }, context.token).Wait();
                }
                catch (AggregateException ex) {
                    context.Logger.Error("Failed to protect packer stub.");
                    throw new ConfuserException(ex);
                }

                context.OutputModules = new[] { File.ReadAllBytes(Path.Combine(outDir, fileName)) };
                context.OutputPaths   = new[] { fileName };
            }
            finally {
                try {
                    if (Directory.Exists(tmpDir))
                    {
                        Directory.Delete(tmpDir, true);
                    }
                }
                catch (IOException ex) {
                    context.Logger.WarnException("Failed to remove temporary files of packer.", ex);
                }
            }
        }
Example #18
0
        /// <summary>
        /// Search by criteria
        /// </summary>
        /// <param name="request">Filter, pagination, sorting parameters</param>
        /// <returns>Paged result (sorted)</returns>
        public PagedList <Order> List(OrderQuery request)
        {
            // Nao permite filtro vazio
            if (request.IsEmpty())
            {
                return(PagedList <Order> .Empty());
            }

            // Valida os filtros
            if (request.StartDate != null && request.EndDate != null && request.StartDate > request.EndDate)
            {
                Rule.Add("StartDate", "Check your date criteria");
                Rule.Add("EndDate", "Check your date criteria");
            }

            if (request.AmountFrom != null && request.AmountTo != null && request.AmountFrom > request.AmountTo)
            {
                Rule.Add("AmountFrom", "Check your ammount criteria");
                Rule.Add("AmountTo", "Check your ammount criteria");
            }

            // Throw and error if there are broken rulea
            CheckRule();

            var query = base.List();

            // Build que query
            if (request.CustomerId != null)
            {
                query = query.Where(i => i.CustomerId == request.CustomerId);
            }

            if (request.DealerId != null)
            {
                query = query.Where(i => i.DealerId == request.DealerId);
            }

            if (request.ProductId != null)
            {
                query = query.Where(i => i.Items.Any(c => c.ProductId == request.ProductId));
            }

            if (request.StatusId != null)
            {
                query = query.Where(i => i.StatusId == request.StatusId);
            }

            // Date
            if (request.StartDate != null && request.EndDate != null)
            {
                query = query.Where(i => i.Date >= request.StartDate && i.Date <= request.EndDate);
            }
            else if (request.StartDate != null)
            {
                query = query.Where(i => i.Date >= request.StartDate);
            }
            else if (request.EndDate != null)
            {
                query = query.Where(i => i.Date <= request.EndDate);
            }

            // Ammount
            if (request.AmountFrom != null && request.AmountTo != null)
            {
                query = query.Where(i => i.TotalAmount >= request.AmountFrom && i.TotalAmount <= request.AmountTo);
            }
            else if (request.AmountFrom != null)
            {
                query = query.Where(i => i.TotalAmount >= request.AmountFrom);
            }
            else if (request.AmountTo != null)
            {
                query = query.Where(i => i.TotalAmount <= request.AmountTo);
            }

            // Apply paging and sorting
            var result = query.ToPaged(request);

            return(result);
        }
Example #19
0
        public void WordGeneratorTest()
        {
            Rule ruleD = new Rule("D", Combinable.Y, RuleType.SFX);
            ruleD.Add(new RuleItem("0","d","e"));
            ruleD.Add(new RuleItem("y", "ied", "[^aeiou]y"));
            ruleD.Add(new RuleItem("0", "ed", "[^ey]"));
            ruleD.Add(new RuleItem("0", "ed", "[aeiou]y"));

            Rule ruleG = new Rule("G", Combinable.Y, RuleType.SFX);
            ruleG.Add(new RuleItem("e", "ing", "e"));
            ruleG.Add(new RuleItem("0", "ing", "[^e]"));

            AffixRules rules = new AffixRules();
            rules.Add(ruleD);
            rules.Add(ruleG);

            DictionaryItemWithFlags item = new DictionaryItemWithFlags("create", "DG");

            List<string> words = rules.GetPossibleWords(item);

            List<string> correctWords = new List<string>()
            {
                "create", "created", "creating"
            };

            CollectionAssert.AreEqual(correctWords, words);

            Rule ruleH = new Rule("H", Combinable.Y, RuleType.SFX);
            ruleH.Add(new RuleItem("0", "u", "[^ey]"));
            ruleH.Add(new RuleItem("0", "e", "[^eyghkc]"));
            ruleH.Add(new RuleItem("0", "em", "[^ey]"));
            ruleH.Add(new RuleItem("0", "y", "[^ey]"));
            ruleH.Add(new RuleItem("0", "ů", "[^ey]"));
            ruleH.Add(new RuleItem("0", "ům", "[^ey]"));
            ruleH.Add(new RuleItem("0", "ech", "[^eyghk]"));
            ruleH.Add(new RuleItem("g", "zích", "g"));
            ruleH.Add(new RuleItem("h", "zích", "[^c]h"));
            ruleH.Add(new RuleItem("ch", "ších", "ch"));
            ruleH.Add(new RuleItem("k", "cích", "k"));
            ruleH.Add(new RuleItem("e", "u", "e"));
            ruleH.Add(new RuleItem("0", "m", "e"));
            ruleH.Add(new RuleItem("e", "y", "e"));
            ruleH.Add(new RuleItem("e", "ů", "e"));
            ruleH.Add(new RuleItem("e", "ům", "e"));
            ruleH.Add(new RuleItem("e", "ech", "e"));
            ruleH.Add(new RuleItem("y", "ů", "y"));
            ruleH.Add(new RuleItem("y", "ům", "y"));
            ruleH.Add(new RuleItem("y", "ech", "[^ghk]y"));
            ruleH.Add(new RuleItem("gy", "zích", "gy"));
            ruleH.Add(new RuleItem("hy", "zích", "[^c]hy"));
            ruleH.Add(new RuleItem("chy", "ších", "chy"));
            ruleH.Add(new RuleItem("ky", "cích", "ky"));

            rules = new AffixRules();
            rules.Add(ruleH);

            words = rules.GetPossibleWords(new DictionaryItemWithFlags("abakus", "H"));

            correctWords = new List<string>()
            {
                "abakus",
                "abakusu",
                "abakuse",
                "abakusem",
                "abakusy",
                "abakusů",
                "abakusům",
                "abakusech"
            };

            CollectionAssert.AreEqual(correctWords, words);

            Rule ruleN = new Rule("N", Combinable.Y, RuleType.PFX);
            ruleN.Add(new RuleItem("0", "ne", "."));

            Rule ruleE = new Rule("E", Combinable.Y, RuleType.PFX);
            ruleE.Add(new RuleItem("0", "nej", "."));

            rules = new AffixRules();
            rules.Add(ruleN);
            rules.Add(ruleE);

            words = rules.GetPossibleWords(new DictionaryItemWithFlags("méně", "NE"));

            correctWords = new List<string>()
            {
                "méně",
                "neméně",
                "nejméně"
            };

            CollectionAssert.AreEqual(correctWords, words);

            Rule ruleX = new Rule("X", Combinable.Y, RuleType.SFX);
            ruleX.Add(new RuleItem("a", "ouc", "a"));
            ruleX.Add(new RuleItem("a", "ouce", "a"));

            rules = new AffixRules();
            rules.Add(ruleN);
            rules.Add(ruleX);

            words = rules.GetPossibleWords(new DictionaryItemWithFlags("pomra", "XN"));
            correctWords = new List<string>()
            {
                "pomra",
                "pomrouc",
                "pomrouce",
                "nepomra",
                "nepomrouc",
                "nepomrouce",
            };
        }
Example #20
0
        static void Main(string[] args)
        {
            //This is reserved for the moment that a well structured test will be needed.
            ConfuserProtection.MapProtectionType = JsonConvert.DeserializeObject <Dictionary <ProtectionType, ProtectionDescription> >(File.ReadAllText("SettingsDescription.json"));

            if (args.Length > 0)
            {
                confuserPath = Path.Combine(args[0], "Confuser.CLI.exe");
            }
            if (args.Length > 1)
            {
                inputPath = args[1];
            }
            if (args.Length > 2)
            {
                outputPath = args[2];
            }
            if (args.Length > 3)
            {
                outputProject = args[3];
            }
            if (args.Length > 4)
            {
                bool.TryParse(args[4], out invokeObfuscator);
            }

            try {
                Directory.CreateDirectory(inputPath);
                Directory.CreateDirectory(outputPath);
                Directory.GetParent(outputProject).Create();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to create directory: {0}", ex.ToString());
                return;
            }

            Debug.Assert(Directory.Exists(inputPath));
            Debug.Assert(Directory.Exists(outputPath));
            Debug.Assert(Directory.GetParent(outputProject).Exists);
            Debug.Assert(!invokeObfuscator || File.Exists(confuserPath));

            ConfuserProject module = new ConfuserProject()
            {
                OutputDirectory = outputPath,
                BaseDirectory   = inputPath
            };

            foreach (var v in registeredApplications)
            {
                Console.WriteLine("Processing {0}", v.inputFileName);
                ProjectModule project = new ProjectModule()
                {
                    Path = v.inputFileName
                };
                Rule moduleRule = new Rule();

                foreach (var vv in v.protections)
                {
                    string protection = ConfuserProtection.MapProtectionType[vv.Key].Name;
                    SettingItem <Protection> currentProtection = new SettingItem <Protection>(protection);

                    if (vv.Value != null)
                    {
                        foreach (var vvv in vv.Value)
                        {
                            currentProtection.Add(vvv.Key, vvv.Value);
                        }
                    }
                    moduleRule.Add(currentProtection);
                    Console.WriteLine("\tAdded protection: {0}", protection);
                }

                project.Rules.Add(moduleRule);
                module.Add(project);
            }

            Console.WriteLine("Saving project: {0}", outputProject);
            XmlDocument document = module.Save();

            using (XmlWriter xmlWrite = XmlWriter.Create(outputProject))
                document.WriteContentTo(xmlWrite);

            if (invokeObfuscator)
            {
                Console.WriteLine("");
                Console.WriteLine("Invoke obfuscator required. Invoking.");
                Process.Start(confuserPath, outputProject).WaitForExit();
                Console.WriteLine("Done. Exiting.");
            }
        }
        private TestCaseFilter CreateSampleTestFilter()
        {
            TestCaseFilter filter = new TestCaseFilter();
            RuleGroup group1 = new RuleGroup()
            {
                Name = "Group1",
                Description = "This is the first group.",
                RuleGroupType = RuleType.Selector
            };
            Rule rule1 = new Rule()
            {
                Name = "Rule1",
                SelectStatus = RuleSelectStatus.Selected
            };
            Rule rule11 = new Rule()
            {
                Name = "Rule11",
                SelectStatus = RuleSelectStatus.Selected,
                CategoryList = new System.Collections.Generic.List<string>() { "Cat1", "Cat2", "Cat3" }
            };
            Rule rule12 = new Rule()
            {
                Name = "Rule12",
                SelectStatus = RuleSelectStatus.NotSelected,
                CategoryList = new System.Collections.Generic.List<string>() { "Cat4", "Cat5", "Cat6" }
            };
            rule1.Add(rule11);
            rule1.Add(rule12);
            group1.Add(rule1);

            RuleGroup group2 = new RuleGroup()
            {
                Name = "Group2",
                Description = "This is the second group.",
                RuleGroupType = RuleType.Selector
            };
            Rule rule2 = new Rule()
            {
                Name = "Rule2",
                SelectStatus = RuleSelectStatus.NotSelected,
                CategoryList = new System.Collections.Generic.List<string>() { "Cat1", "Cat2", "Cat3" }
            };
            group2.Add(rule2);

            RuleGroup group3 = new RuleGroup()
            {
                Name = "Group3",
                Description = "This is the third group.",
                SelectStatus = RuleSelectStatus.Selected,
                RuleGroupType = RuleType.Remover
            };
            Rule rule3 = new Rule()
            {
                Name = "Rule3",
                SelectStatus = RuleSelectStatus.Selected,
                CategoryList = new System.Collections.Generic.List<string>() { "Cat7", "Cat8" }
            };
            group3.Add(rule3);

            filter.Add(group1);
            filter.Add(group2);
            filter.Add(group3);

            rule11.SelectStatus = RuleSelectStatus.Selected;
            rule3.SelectStatus = RuleSelectStatus.NotSelected;
            return filter;
        }
Example #22
0
 protected override void AddRuleProperties()
 {
     UnitNoTeamColor = Rule.Add(d => d.UnitNoTeamColor);
     UnitOwnedColor  = Rule.Add(d => d.UnitOwnedColor);
 }
        /// <summary>
        ///     Protects the stub using original project settings replace the current output with the protected stub.
        /// </summary>
        /// <param name="context">The working context.</param>
        /// <param name="fileName">The result file name.</param>
        /// <param name="module">The stub module.</param>
        /// <param name="snKey">The strong name key.</param>
        /// <param name="prot">The packer protection that applies to the stub.</param>
        // Token: 0x060001E8 RID: 488 RVA: 0x0000F8AC File Offset: 0x0000DAAC
        protected void ProtectStub(ConfuserContext context, string fileName, byte[] module, StrongNameKey snKey, Protection prot = null)
        {
            string tmpDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            string outDir = Path.Combine(tmpDir, Path.GetRandomFileName());

            Directory.CreateDirectory(tmpDir);
            for (int i = 0; i < context.OutputModules.Count; i++)
            {
                string path = Path.GetFullPath(Path.Combine(tmpDir, context.OutputPaths[i]));
                string dir  = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                File.WriteAllBytes(path, context.OutputModules[i]);
            }
            File.WriteAllBytes(Path.Combine(tmpDir, fileName), module);
            ConfuserProject proj = new ConfuserProject();

            proj.Seed = context.Project.Seed;
            foreach (Rule rule in context.Project.Rules)
            {
                proj.Rules.Add(rule);
            }
            proj.Add(new ProjectModule
            {
                Path = fileName
            });
            proj.BaseDirectory   = tmpDir;
            proj.OutputDirectory = outDir;
            foreach (string path2 in context.Project.ProbePaths)
            {
                proj.ProbePaths.Add(path2);
            }
            proj.ProbePaths.Add(context.Project.BaseDirectory);
            PluginDiscovery discovery = null;

            if (prot != null)
            {
                Rule rule2 = new Rule("true", ProtectionPreset.None, false)
                {
                    Preset  = ProtectionPreset.None,
                    Inherit = true,
                    Pattern = "true"
                };
                rule2.Add(new SettingItem <Protection>(null, SettingItemAction.Add)
                {
                    Id     = prot.Id,
                    Action = SettingItemAction.Add
                });
                proj.Rules.Add(rule2);
                discovery = new PackerDiscovery(prot);
            }
            try
            {
                ConfuserEngine.Run(new ConfuserParameters
                {
                    Logger          = new PackerLogger(context.Logger),
                    PluginDiscovery = discovery,
                    Marker          = new PackerMarker(snKey),
                    Project         = proj,
                    PackerInitiated = true
                }, new CancellationToken?(context.token)).Wait();
            }
            catch (AggregateException ex)
            {
                context.Logger.Error("Failed to protect packer stub.");
                throw new ConfuserException(ex);
            }
            context.OutputModules = new byte[][]
            {
                File.ReadAllBytes(Path.Combine(outDir, fileName))
            };
            context.OutputPaths = new string[]
            {
                fileName
            };
        }
Example #24
0
 protected override void AddRuleProperties()
 {
     EnableDrumVoices = Rule.Add(null, d => d.EnableDrumVoices);
 }