Exemple #1
0
        public void Merge_Workaround()
        {
            var protectedPath = @"c:\test.txt";
            var processPath   = @"c:\knownproc.exe";

            // Fill the ruleset.
            var ruleset = new Ruleset();
            var c       = ruleset.Categories.AddCategoriesRow("TestCategory", new byte[] { }, string.Empty);
            var i       = ruleset.Items.AddItemsRow("TestItem", null, c);
            var path    = ruleset.Paths.AddPathsRow(protectedPath);
            var proc    = ruleset.Processes.AddProcessesRow(processPath);
            var rule    = ruleset.Rules.AddRulesRow("TestRule", RuleAction.Ask, false, path, proc, i);

            ruleset.AcceptChanges();
            Assert.IsNull(ruleset.GetChanges());


            // Copy ruleset.
            var ruleset2 = (Ruleset)ruleset.Copy();

            // To some changes to ruleset2.
            ruleset2.Rules[0].Log = false;

            // Get pure list of changes.
            ruleset2.Relations.Clear();          // <=== This is exactly workaround.
            ruleset2.EnforceConstraints = false; // <=== This is exactly workaround.
            var changes = ruleset2.GetChanges();

            Assert.IsNotNull(changes);

            ruleset.Merge(changes, true);

            Assert.IsFalse(ruleset2.Rules[0].Log);
        }
Exemple #2
0
        private static void SetupRules(Ruleset ruleset)
        {
            var benchmarkProcess = ruleset.Processes.FindByPath(Application.ExecutablePath);

            if (benchmarkProcess == null)
            {
                benchmarkProcess = ruleset.Processes.AddProcessesRow(Application.ExecutablePath);
            }

            var category = ruleset.Categories.FindByName("Benchmark");

            if (category == null)
            {
                category = ruleset.Categories.AddCategoriesRow("Benchmark", null, string.Empty);
            }

            var item = ruleset.Items.GetItemsRow("Benchmark", "Benchmark");

            if (item == null)
            {
                item = ruleset.Items.AddItemsRow("Benchmark", null, category);
            }

            var deleteList = new List <Ruleset.RulesRow>();

            foreach (Ruleset.RulesRow rule in ruleset.Rules)
            {
                if (rule.Name.StartsWith("Benchmark rule #"))
                {
                    deleteList.Add(rule);
                }
            }
            foreach (var rule in deleteList)
            {
                rule.Delete();
            }

            for (int i = 0; i < ruleset.Paths.Count; i++)
            {
                var path = ruleset.Paths[i];
                ruleset.Rules.AddRulesRow("Benchmark rule #" + i, RuleAction.Allow, false, path, benchmarkProcess, item);
            }

            ruleset.AcceptChanges();
            ruleset.WriteXml("ruleset.xml");
        }
Exemple #3
0
        protected override void OnStop()
        {
            try
            {
                AsyncCore.Instance.Stop();

                // Save the ruleset back to file.
                _Ruleset.AcceptChanges();
                _Ruleset.WriteXml(_DefaultRulesetPath);
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("APService", "On stop. " + BugSubmitter.FormatErrorMessage(ex), EventLogEntryType.Error);
                throw;
            }

            EventLog.WriteEntry("APService", "Service successfully stopped.");
        }
Exemple #4
0
        protected override void OnStart(string[] args)
        {
            try
            {
                if (File.Exists(_DefaultRulesetPath) == false)
                {
                    throw new FileNotFoundException("Ruleset file not found (" + _DefaultRulesetPath + ")");
                }

                _Ruleset = new Ruleset();
                _Ruleset.ReadXml(_DefaultRulesetPath);
                _Ruleset.AcceptChanges();

                var serviceInterface = ServiceInterface.Marshal(_Ruleset);

                AsyncCore.Instance.Start(_Ruleset, serviceInterface, new EventLog("APAccess", ".", "APLogger"));
            }
            catch (RemotingException ex)
            {
                var registeredChannels = string.Format("\r\n******Registered channels({0})*****\r\n", ChannelServices.RegisteredChannels.Length);
                foreach (var channel in ChannelServices.RegisteredChannels)
                {
                    registeredChannels += channel.ChannelName + "\r\n";
                }

                EventLog.WriteEntry("APService", "On start. " + BugSubmitter.FormatErrorMessage(ex) + registeredChannels, EventLogEntryType.Error);
                throw;
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("APService", "On start. " + BugSubmitter.FormatErrorMessage(ex), EventLogEntryType.Error);
                throw;
            }

            EventLog.WriteEntry("APService", "Service successfully started.", EventLogEntryType.Information);
        }