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); }
public void AddTest_000000() { var rule = new Rule(); rule.Add("000000"); Assert.AreEqual(1, rule.Count); // "00000"は回転しても同じなので、追加されるルールは1つだけ }
public void NextTest_000000() { var rule = new Rule(); rule.Add("000000"); Assert.AreEqual(0, rule.Next(0, 0, 0, 0, 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)); }
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)); }
/// <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 }; }
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)); }
/// <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 }; }
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); }
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)); }
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; }
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); }
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(); }
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); }
/// <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); } } }
/// <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); }
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", }; }
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; }
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 }; }
protected override void AddRuleProperties() { EnableDrumVoices = Rule.Add(null, d => d.EnableDrumVoices); }