public void GenErrorNonRepeater0()
 {
     var handler = new GetBulkMessageHandler();
     var mock = new Mock<ScalarObject>(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"));
     mock.Setup(foo => foo.Data).Throws<Exception>();
     mock.Setup(foo => foo.MatchGet(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"))).Returns(mock.Object);
     mock.Setup(foo => foo.MatchGetNext(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))).Returns(mock.Object);
     var store = new ObjectStore();
     store.Add(new SysDescr());
     store.Add(mock.Object);
     var context = SnmpContextFactory.Create(
         new GetBulkRequestMessage(
             300,
             VersionCode.V2,
             new OctetString("lextm"),
             0,
             2,
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     handler.Handle(context, store);
     var genError = (ResponseMessage)context.Response;
     Assert.AreEqual(ErrorCode.GenError, genError.ErrorStatus);
 }
 public void BadValue()
 {
     var handler = new SetV1MessageHandler();
     var mock = new Mock<ScalarObject>(new ObjectIdentifier("1.3.6.1.2.1.1.4.0"));
     mock.Setup(foo => foo.Data).Throws<Exception>();
     mock.Setup(foo => foo.MatchGet(new ObjectIdentifier("1.3.6.1.2.1.1.4.0"))).Returns(mock.Object);
     mock.SetupSet(foo => foo.Data = new Integer32(400)).Throws<ArgumentException>();
     var store = new ObjectStore();
     store.Add(mock.Object);
     var context = SnmpContextFactory.Create(
         new SetRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.4.0"), new Integer32(400))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     handler.Handle(context, store);
     var badValue = (ResponseMessage)context.Response;
     Assert.AreEqual(ErrorCode.BadValue, badValue.ErrorStatus);
 }
 public void NoErrorNonRepeater0()
 {
     var handler = new GetBulkMessageHandler();
     var context = SnmpContextFactory.Create(
         new GetBulkRequestMessage(
             300,
             VersionCode.V2,
             new OctetString("lextm"),
             0,
             2,
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     var store = new ObjectStore();
     store.Add(new SysDescr());
     store.Add(new SysObjectId());
     store.Add(new SysUpTime());
     store.Add(new SysContact());
     store.Add(new SysName());
     Assert.Throws<ArgumentNullException>(() => handler.Handle(null, null));
     Assert.Throws<ArgumentNullException>(() => handler.Handle(context, null));
     handler.Handle(context, store);
     var noerror = (ResponseMessage)context.Response;
     Assert.AreEqual(ErrorCode.NoError, noerror.ErrorStatus);
     Assert.AreEqual(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"), noerror.Variables()[0].Id);
     Assert.AreEqual(new ObjectIdentifier("1.3.6.1.2.1.1.3.0"), noerror.Variables()[1].Id);
     Assert.AreEqual(2, noerror.Variables().Count);
 }
Beispiel #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SnmpApplication"/> class.
 /// </summary>
 /// <param name="owner">The owner.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="store">The store.</param>
 /// <param name="provider">The provider.</param>
 /// <param name="factory">The factory.</param>
 public SnmpApplication(SnmpApplicationFactory owner, ILogger logger, ObjectStore store, IMembershipProvider provider, MessageHandlerFactory factory)
 {
     _owner = owner;
     _provider = provider;
     _logger = logger;
     _store = store;
     _factory = factory;
 }
        public void AddRemove()
        {
            Id<TestObject> id;
            TestObject o, p;
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            undomgr.BeginCommand(57, "Command1");

            o = new TestObject(5, "hello", 5.4F);
            id = objstore.Add(o);
            Assert.AreEqual(1, id.id);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(1)));
            p = objstore[new Id<TestObject>(1)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            o = new TestObject(6, "hi", 5.4F);
            id = objstore.Add(o);
            Assert.AreEqual(2, id.id);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(2)));
            p = objstore[new Id<TestObject>(2)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            objstore.Remove(new Id<TestObject>(1));
            Assert.IsFalse(objstore.IsPresent(new Id<TestObject>(1)));

            o = new TestObject(7, "xx", 1.1F);
            id = objstore.Add(o);
            Assert.AreEqual(3, id.id);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(3)));
            p = objstore[new Id<TestObject>(3)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            objstore.Remove(new Id<TestObject>(3));

            int count = 0;
            foreach (TestObject x in objstore.All) {
                Assert.AreEqual(x, new TestObject(6, "hi", 5.4F));
                ++count;
            }
            Assert.AreEqual(1, count);

            undomgr.EndCommand(57);
        }
        public WMCDataSource()
        {
            SHA256 sha = SHA256Managed.Create();

            // This is the magic way to get R/W access to the database.  Cannot be guaranteed to work in future versions of windows
            string providerName = Encoding.Unicode.GetString(Convert.FromBase64String("QQBuAG8AbgB5AG0AbwB1AHMAIQBVAHMAZQByAA=="));

            string epgClientID = ObjectStore.GetClientId(true);
            byte[] epgBytes = Encoding.Unicode.GetBytes(epgClientID);
            byte[] epgHashed = sha.ComputeHash(epgBytes);
            string providerPassword = Convert.ToBase64String(epgHashed);
            os = ObjectStore.Open(providerName, providerPassword);

            recScheduler = new Scheduler(os, ScheduleConflictSource.AutomaticUpdate);

            channels = new Lazy<List<Channel>>(GetAllChannels);
        }
Beispiel #7
0
        public static KonaSite GetSite(string url) {
            IObjectStore store=new ObjectStore();
            KonaSite site = store.Get<KonaSite>("Site", url);
            if (site == null)
            {
                site = new KonaSite();

                site.AdminEmail = "*****@*****.**";
                site.Description = "Fuji Test Site";
                site.IsPublic = true;
                site.LanguageCode = "en";
                site.Owner = "admin";
                site.OwnerName = "Microsoft Corporation";
                site.SiteHost = "localhost";
                site.SiteName = "Kona Demo Site";
                site.SiteUrl = url;
                site.SiteID = Guid.NewGuid();
                site.RPXAPIKey = "9b9002f34658471c99ac569e125dca9afa095132";
                site.RPXNowUrl = "https://localhost18622.rpxnow.com/openid/embed";
                site.AddressForm = "USDefault";
                site.AcceptCreditCards = true;
                site.AcceptPayPal = true;
                site.AcceptPOs = false;
                site.PayPalPDTToken = "JijaVlgNlwzXc5N_Zj53LS-v5EmzqsQGMa6eZcKyXad8hH7dn08ntEZlcAW";
                site.CreditCardForm = "DefaultCreditCard";
                site.PayPalForm = "DefaultPayPalStandard";
                site.CurrencyCode = "USD";
                site.PayPalBusinessEmail = "*****@*****.**";
                site.OrderDetailView = "DefaultItems";
                site.OrderHeaderView = "DefaultHeader";

                site.SMTPLogin = "******";
                site.SMTPPassword = "******";
                site.SMTPServer = "Myserver.com";
                site.TaxPlugin = "USTaxCalculator";
                site.ShippingPlugin = "SimpleShippingCalculator";
                site.CreditCardProcessor = "FakeProcessor";
            }

            // In case the deserialization format changed or sth went wrong
            if (string.IsNullOrEmpty(site.ThemeName)) {
                site.ThemeName = "Eko";
            }

            return site;
        }
 public void NoSuchInstance()
 {
     var handler = new GetMessageHandler();
     var context = SnmpContextFactory.Create(
         new GetRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     var store = new ObjectStore();
     handler.Handle(context, store);
     var nosuchinstance = (ResponseMessage)context.Response;
     Assert.AreEqual(new NoSuchInstance(), nosuchinstance.Variables()[0].Data);
 }
 public void NoSuchName()
 {
     var handler = new GetNextV1MessageHandler();
     var store = new ObjectStore();
     store.Add(new SysDescr());
     var context = SnmpContextFactory.Create(
         new GetNextRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     handler.Handle(context, store);
     var noSuchName = (ResponseMessage)context.Response;
     Assert.AreEqual(ErrorCode.NoSuchName, noSuchName.ErrorStatus);
 }
 public void EndOfMibView()
 {
     var handler = new GetNextMessageHandler();
     var store = new ObjectStore();
     store.Add(new SysDescr());
     var context = SnmpContextFactory.Create(
         new GetNextRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     handler.Handle(context, store);
     var endOfMibView = (ResponseMessage)context.Response;
     Assert.AreEqual(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"), endOfMibView.Variables()[0].Id);
     Assert.AreEqual(new EndOfMibView(), endOfMibView.Variables()[0].Data);
 }
Beispiel #11
0
        static void InsertAndSearchStudents()
        {
            const string dbFileName    = "book5.ood";
            const string indexFileName = dbFileName + ".idx";
            const int    limit         = 600000;
            const int    searchLimit   = 1000;

            Console.WriteLine(string.Format(@"This program will try to create {0} People records and saved them in a database file, close the file, then re-open the file to query {1} records.", limit, searchLimit));
            Console.WriteLine("");

            if (File.Exists(dbFileName))
            {
                File.Delete(dbFileName);
            }
            if (File.Exists(indexFileName))
            {
                File.Delete(indexFileName);
            }

            OOD.ObjectStore os = new ObjectStore(dbFileName);

            Console.WriteLine("Database file was created. Ready to insert new records.");

            int succeed = 0, error = 0;

            System.DateTime start, end;

            for (int i = 0; i < limit; i++)
            {
                Student st = new Student(
                    i,
                    "Yanhao Zhu" + i.ToString(),
                    ((i & 1) == 0 ? 'F' : 'M'),
                    ((i & 1) == 0 ? new DateTime(1976, 1, 1) : new DateTime(1974, 7, 27))
                    );
                os.Put(st);

                if (i % 60 == 0)
                {
                    Console.Write(i.ToString() + "\r");
                }
            }

            os.Close();
            Console.WriteLine("Database file was closed.");

            os = new ObjectStore(dbFileName);
            Console.WriteLine("Database file was re-opened. Ready to search.");

            succeed = error = 0;
            start   = System.DateTime.Now;
            for (int i = 0; i < searchLimit; i++)
            {
                System.Random ran = new Random(i);
                int           m   = ran.Next(limit - 1);

                string Query = "select Demo.Student where m_id = " + i.ToString();

                Student back = (Student)os.SearchScalar(Query);

                if (back != null)
                {
                    Console.Write(back.ID + "\r");
                    succeed++;
                }
                else
                {
                    error++;
                }
            }
            end = System.DateTime.Now;
            Console.WriteLine("OOD Search finished, {0} succeed, {1} failed. Takes {2}", succeed, error, end - start);

            os.Close();
            Console.Write("Database file was closed. Press any key to exit.");
            Console.Read();
        }
Beispiel #12
0
 public void Setup()
 {
     _objectStore = new ObjectStore();
 }
Beispiel #13
0
        public static async Task <Pipeline> LoadFromPackedAsync(Stream inputStream)
        {
            using (var zip = new ZipArchive(inputStream, ZipArchiveMode.Read, leaveOpen: true))
            {
                var infoEntry = zip.GetEntry("info.bin");
                StoredObjectInfo info;
                using (var s = infoEntry.Open())
                {
                    info = MessagePack.MessagePackSerializer.Deserialize <StoredObjectInfo>(s, LZ4Standard);
                }

                var pipeline = new Pipeline(info.Language, info.Version, info.Tag);

                var pipeEntry = zip.GetEntry("pipeline.bin");
                using (var s = pipeEntry.Open())
                {
                    pipeline.Data = MessagePack.MessagePackSerializer.Deserialize <PipelineData>(s, LZ4Standard);
                }

                foreach (var process in pipeline.Data.Processes)
                {
                    if (ObjectStore.TryGetType(process.ModelType, out var type))
                    {
                        object model = null;

                        foreach (var constructorInfo in type.GetConstructors().Concat(type.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic)))
                        {
                            var parameters = constructorInfo.GetParameters();
                            if (parameters.Length == 3 &&
                                parameters[0].ParameterType == typeof(Language) &&
                                parameters[1].ParameterType == typeof(int) &&
                                parameters[2].ParameterType == typeof(string))
                            {
                                //Found a good one
                                model = constructorInfo.Invoke(new object[] { process.Language, process.Version, process.Tag });
                                break;
                            }

                            if (parameters.Length == 2 &&
                                parameters[0].ParameterType == typeof(Language) &&
                                parameters[1].ParameterType == typeof(int))
                            {
                                //Found a good one
                                model = constructorInfo.Invoke(new object[] { process.Language, process.Version });
                                break;
                            }
                            if (parameters.Length == 1 &&
                                parameters[0].ParameterType == typeof(Language))
                            {
                                //Found a good one
                                model = constructorInfo.Invoke(new object[] { process.Language });
                                break;
                            }
                        }

                        var dataProperty = model.GetType().GetProperty(nameof(Spotter.Data)); //Uses spotter just to get the name of the .Data property from StorableObject<,> instead of hard-coding
                        if (dataProperty is object)
                        {
                            var entry = zip.GetEntry(process.ToString() + ".bin");
                            using (var s = entry.Open())
                                using (var ms = new MemoryStream())
                                {
                                    await s.CopyToAsync(ms);

                                    var bytes = ms.ToArray();

                                    var deserializer = SerializationHelper.CreateDeserializer(dataProperty.PropertyType);
                                    var modelData    = deserializer.Invoke(bytes);

                                    dataProperty.GetSetMethod().Invoke(model, new[] { modelData });
                                }
                        }

                        if (model is object)
                        {
                            pipeline.Add((IProcess)model);
                        }
                    }
                }

                return(pipeline);
            }
        }
Beispiel #14
0
        private static SnmpEngine CreateSnmpEngine(RavenServer server, ObjectStore objectStore)
        {
            (HashSet <SnmpVersion> versions, string handlerVersion) = GetVersions(server);
            var membershipProvider = CreateMembershipProvider(server, versions);

            var handlers = new[]
            {
                new HandlerMapping(handlerVersion, "GET", new GetMessageHandler()),
                new HandlerMapping(handlerVersion, "GETNEXT", new GetNextMessageHandler()),
                new HandlerMapping(handlerVersion, "GETBULK", new GetBulkMessageHandler())
            };

            var messageHandlerFactory = new MessageHandlerFactory(handlers);

            var factory = new SnmpApplicationFactory(new SnmpLogger(Logger), objectStore, membershipProvider, messageHandlerFactory);

            var listener = new Listener();

            if (versions.Contains(SnmpVersion.V3))
            {
                var authenticationPassword = server.Configuration.Monitoring.Snmp.AuthenticationPassword ?? server.Configuration.Monitoring.Snmp.Community;

                IAuthenticationProvider authenticationProvider;
                switch (server.Configuration.Monitoring.Snmp.AuthenticationProtocol)
                {
                case SnmpAuthenticationProtocol.SHA1:
                    authenticationProvider = new SHA1AuthenticationProvider(new OctetString(authenticationPassword));
                    break;

                case SnmpAuthenticationProtocol.MD5:
                    authenticationProvider = new MD5AuthenticationProvider(new OctetString(authenticationPassword));
                    break;

                default:
                    throw new InvalidOperationException($"Unknown authentication protocol '{server.Configuration.Monitoring.Snmp.AuthenticationProtocol}'.");
                }

                var privacyPassword = server.Configuration.Monitoring.Snmp.PrivacyPassword;

                IPrivacyProvider privacyProvider;
                switch (server.Configuration.Monitoring.Snmp.PrivacyProtocol)
                {
                case SnmpPrivacyProtocol.None:
                    privacyProvider = new DefaultPrivacyProvider(authenticationProvider);
                    break;

                case SnmpPrivacyProtocol.DES:
                    privacyProvider = new BouncyCastleDESPrivacyProvider(new OctetString(privacyPassword), authenticationProvider);
                    break;

                case SnmpPrivacyProtocol.AES:
                    privacyProvider = new BouncyCastleAESPrivacyProvider(new OctetString(privacyPassword), authenticationProvider);
                    break;

                default:
                    throw new InvalidOperationException($"Unknown privacy protocol '{server.Configuration.Monitoring.Snmp.AuthenticationProtocol}'.");
                }

                listener.Users.Add(new OctetString(server.Configuration.Monitoring.Snmp.AuthenticationUser), privacyProvider);
            }

            int engineBoots;

            using (server.ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
                using (var tx = context.OpenWriteTransaction())
                {
                    var tree = tx.InnerTransaction.CreateTree(nameof(SnmpWatcher));
                    engineBoots = (int)tree.Increment("EngineBoots", 1);

                    tx.Commit();
                }

            var engineGroup = new EngineGroup(engineBoots, GetIsInTime(server.Configuration.Monitoring))
            {
                EngineId = new OctetString(server.ServerStore.GetServerId().ToString("N"))
            };

            var engine = new SnmpEngine(factory, listener, engineGroup);

            engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, server.Configuration.Monitoring.Snmp.Port));
            engine.Listener.ExceptionRaised += (sender, e) =>
            {
                if (Logger.IsOperationsEnabled)
                {
                    Logger.Operations("SNMP error: " + e.Exception.Message, e.Exception);
                }
            };

            return(engine);
        }
Beispiel #15
0
        public bool DeleteDocument(Guid id, bool allVersions,
                                   ObjectStore objectStore     = DefaultObjectStore,
                                   DocumentClass documentClass = DefaultDocumentClass)
        {
            if (allVersions)
            {
                var deleteInfoRequest = new[]
                {
                    new ObjectRequestType
                    {
                        SourceSpecification = new ObjectSpecification
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(DefaultIDFormat)
                        },
                        PropertyFilter = new PropertyFilterType
                        {
                            maxRecursion          = 1,
                            maxRecursionSpecified = true,
                            IncludeProperties     = new[]
                            {
                                new FilterElementType {
                                    Value = "VersionSeries"
                                }
                            }
                        }
                    }
                };

                var deleteInfoResponse = GetObjects(deleteInfoRequest);

                var series = (from responseProperty in (((SingleObjectResponse)deleteInfoResponse[0]).Object).Property
                              where responseProperty.propertyId == "VersionSeries"
                              select((SingletonObject)responseProperty).Value as ObjectValue).FirstOrDefault();

                if (series != null)
                {
                    id = new Guid(series.objectId);
                }
                else
                {
                    throw new ApplicationException(string.Format("Could not retrieve the version series for {0}",
                                                                 id.ToString(P8ContentEngine.DefaultIDFormat)));
                }
            }

            var deleteRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id     = "1",
                        Action = new ActionType[] { new DeleteAction() },
                        TargetSpecification = new ObjectSpecification
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = (allVersions) ? "VersionSeries" : documentClass.GetDescription(),
                            objectId    = id.ToString(P8ContentEngine.DefaultIDFormat)
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            var deleteResult = Execute(deleteRequest);

            return((deleteResult.Length > 0) && deleteResult[0].id == "1");
        }
        public void Load()
        {
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            string xmlText =
            @"<?xml version=""1.0"" encoding=""utf-16""?>
            <testobjects>
              <testobject id=""2"" x=""8"" f=""9.4"">goodbye</testobject>
              <testobject id=""3"" x=""9"" f=""9.9"">bat</testobject>
              <testobject id=""4"" x=""11"" f=""1.4"">foo</testobject>
            </testobjects>";

            XmlInput xmlinput = new XmlInput(new StringReader(xmlText), "testfile");

            xmlinput.CheckElement("testobjects");
            xmlinput.Read();

            objstore.Load(xmlinput);
            xmlinput.Dispose();

            TestUtil.TestEnumerableAnyOrder(objstore.AllPairs,
                                        new KeyValuePair<Id<TestObject>, TestObject>[] {
                                        new KeyValuePair<Id<TestObject>, TestObject>(new Id<TestObject>(3), new TestObject(9, "bat", 9.9F)),
                                        new KeyValuePair<Id<TestObject>, TestObject>(new Id<TestObject>(4), new TestObject(11, "foo", 1.4F)),
                                        new KeyValuePair<Id<TestObject>, TestObject>(new Id<TestObject>(2), new TestObject(8, "goodbye", 9.4F)) });
        }
        public void TooBig()
        {
            var list = new List<Variable>();
            for (int i = 0; i < 5000; i++)
            {
                list.Add(new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.4.0"), new OctetString("test")));
            }

            var handler = new SetMessageHandler();
            var context = SnmpContextFactory.Create(
                new SetRequestMessage(
                    300,
                    VersionCode.V1,
                    new OctetString("lextm"),
                    list
                    ),
                new IPEndPoint(IPAddress.Loopback, 100),
                new UserRegistry(),
                null,
                null);
            var store = new ObjectStore();
            handler.Handle(context, store);
            var notWritable = (ResponseMessage)context.Response;
            Assert.AreEqual(ErrorCode.TooBig, notWritable.ErrorStatus);
        }
        public IList <IDictionary <string, object> > RetrieveDocumentAccess(Guid id,
                                                                            ObjectStore objectStore     = DefaultObjectStore,
                                                                            DocumentClass documentClass = DefaultDocumentClass)
        {
            var accessInfoRequest = new[]
            {
                new ObjectRequestType
                {
                    SourceSpecification = new ObjectSpecification
                    {
                        objectStore = objectStore.GetDescription(),
                        classId     = documentClass.GetDescription(),
                        objectId    = id.ToString(DefaultIDFormat)
                    },
                    PropertyFilter = new PropertyFilterType
                    {
                        maxRecursion          = 1,
                        maxRecursionSpecified = true,
                        IncludeProperties     = new[]
                        {
                            new FilterElementType {
                                Value = "Permissions"
                            },
                            new FilterElementType {
                                Value = "AccessPermission"
                            },
                            new FilterElementType {
                                Value = "AccessMask"
                            },
                            new FilterElementType {
                                Value = "AccessType"
                            },
                            new FilterElementType {
                                Value = "GranteeName"
                            },
                            new FilterElementType {
                                Value = "GranteeType"
                            },
                            new FilterElementType {
                                Value = "InheritableDepth"
                            },
                            new FilterElementType {
                                Value = "PermissionSource"
                            }
                        }
                    }
                }
            };

            var accessInfoResponse = GetObjects(accessInfoRequest);

            var permissionsList = accessInfoResponse.OfType <SingleObjectResponse>()
                                  .SelectMany(o => o.Object.Property)
                                  .Where(p => p.propertyId == "Permissions")
                                  .Select(p => p as ListOfObject);

            var accessPermissions = new List <IDictionary <string, object> >();

            foreach (var permission in permissionsList.SelectMany(o => o.Value))
            {
                dynamic accessPermission = new ExpandoObject();

                foreach (var property in permission.Property)
                {
                    switch (property.propertyId)
                    {
                    case "AccessMask":
                        accessPermission.AccessMask = ((SingletonInteger32)property).Value;
                        break;

                    case "AccessType":
                        accessPermission.AccessType = ((SingletonInteger32)property).Value;
                        break;

                    case "GranteeName":
                        accessPermission.GranteeName = ((SingletonString)property).Value;
                        break;

                    case "GranteeType":
                        accessPermission.GranteeType = ((SingletonInteger32)property).Value;
                        break;

                    case "InheritableDepth":
                        accessPermission.InheritableDepth = ((SingletonInteger32)property).Value;
                        break;

                    case "PermissionSource":
                        accessPermission.PermissionSource = ((SingletonInteger32)property).Value;
                        break;

                    default:
                        continue;
                    }
                }

                accessPermissions.Add(accessPermission);
            }

            return(accessPermissions);
        }
        public bool RemoveDocumentAccess(Guid id,
                                         IList <string> removeUsers,
                                         ObjectStore objectStore     = DefaultObjectStore,
                                         DocumentClass documentClass = DefaultDocumentClass)
        {
            var permissionsList   = RetrieveDocumentAccess(id, objectStore, documentClass);
            var accessPermissions = removeUsers.Select
                                    (
                u => permissionsList.FirstOrDefault
                (
                    kvp => kvp["GranteeName"].ToString().Equals(u, StringComparison.CurrentCultureIgnoreCase)
                )
                                    ).Select(permissionsList.IndexOf).Where(i => i >= 0).Select
                                    (
                userIndex => new DependentObjectType
            {
                classId                  = "AccessPermission",
                dependentAction          = DependentObjectTypeDependentAction.Delete,
                dependentActionSpecified = true,
                originalIndex            = userIndex,
                originalIndexSpecified   = true
            }
                                    ).ToArray();

            if (accessPermissions.Length == 0)
            {
                return(true);
            }

            var actionProperties = new List <ModifiablePropertyType>
            {
                new ListOfObject
                {
                    propertyId = "Permissions",
                    Value      = accessPermissions
                }
            };

            var updateRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id                  = "1",
                        Action              = new ActionType[] { new UpdateAction() },
                        ActionProperties    = actionProperties.ToArray(),
                        TargetSpecification = new ObjectSpecification
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(DefaultIDFormat)
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            return(Execute(updateRequest, true).Length > 0);
        }
 private CDictionary <int, string> Load()
 {
     ObjectStore = ObjectStore.Load(StableStorageEngine, false);
     return(ObjectStore.Resolve <CDictionary <int, string> >());
 }
Beispiel #21
0
        private static SnmpEngine CreateSnmpEngine(RavenServer server, ObjectStore objectStore)
        {
            (HashSet <SnmpVersion> versions, string handlerVersion) = GetVersions(server);
            var membershipProvider = CreateMembershipProvider(server, versions);

            var handlers = new[]
            {
                new HandlerMapping(handlerVersion, "GET", new GetMessageHandler()),
                new HandlerMapping(handlerVersion, "GETNEXT", new GetNextMessageHandler()),
                new HandlerMapping(handlerVersion, "GETBULK", new GetBulkMessageHandler())
            };

            var messageHandlerFactory = new MessageHandlerFactory(handlers);

            var factory = new SnmpApplicationFactory(new SnmpLogger(Logger), objectStore, membershipProvider, messageHandlerFactory);

            var listener = new Listener();

            if (versions.Contains(SnmpVersion.V3))
            {
                var authenticationUser = server.Configuration.Monitoring.Snmp.AuthenticationUser;

                var authenticationProtocol = server.Configuration.Monitoring.Snmp.AuthenticationProtocol;
                var authenticationPassword = server.Configuration.Monitoring.Snmp.AuthenticationPassword ?? server.Configuration.Monitoring.Snmp.Community;

                var privacyProtocol = server.Configuration.Monitoring.Snmp.PrivacyProtocol;
                var privacyPassword = server.Configuration.Monitoring.Snmp.PrivacyPassword;

                var privacyProvider = CreatePrivacyProvider(authenticationUser, authenticationProtocol, authenticationPassword, privacyProtocol, privacyPassword);

                listener.Users.Add(new OctetString(authenticationUser), privacyProvider);

                var authenticationUserSecondary = server.Configuration.Monitoring.Snmp.AuthenticationUserSecondary;
                if (string.IsNullOrWhiteSpace(authenticationUserSecondary) == false)
                {
                    var authenticationProtocolSecondary = server.Configuration.Monitoring.Snmp.AuthenticationProtocolSecondary;
                    var authenticationPasswordSecondary = server.Configuration.Monitoring.Snmp.AuthenticationPasswordSecondary;

                    var privacyProtocolSecondary = server.Configuration.Monitoring.Snmp.PrivacyProtocolSecondary;
                    var privacyPasswordSecondary = server.Configuration.Monitoring.Snmp.PrivacyPasswordSecondary;

                    var privacyProviderSecondary = CreatePrivacyProvider(authenticationUserSecondary, authenticationProtocolSecondary, authenticationPasswordSecondary, privacyProtocolSecondary, privacyPasswordSecondary);

                    listener.Users.Add(new OctetString(authenticationUserSecondary), privacyProviderSecondary);
                }
            }

            int engineBoots;

            using (server.ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
                using (var tx = context.OpenWriteTransaction())
                {
                    var tree = tx.InnerTransaction.CreateTree(nameof(SnmpWatcher));
                    engineBoots = (int)tree.Increment("EngineBoots", 1);

                    tx.Commit();
                }

            var engineGroup = new EngineGroup(engineBoots, GetIsInTime(server.Configuration.Monitoring))
            {
                EngineId = new OctetString(server.ServerStore.GetServerId().ToString("N"))
            };

            var engine = new SnmpEngine(factory, listener, engineGroup);

            engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, server.Configuration.Monitoring.Snmp.Port));
            engine.Listener.ExceptionRaised += (sender, e) =>
            {
                if (Logger.IsOperationsEnabled)
                {
                    Logger.Operations("SNMP error: " + e.Exception.Message, e.Exception);
                }
            };

            return(engine);
Beispiel #22
0
 public WhereFilter(ObjectStore <TKey, TValue> store)
 {
     this.store = store;
     this.skip  = 0;
     filter     = store.Filter;
 }
 public void NoSuchObject()
 {
     var handler = new GetMessageHandler();
     var mock = new Mock<ScalarObject>(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"));
     mock.Setup(foo => foo.Data).Throws<AccessFailureException>();
     mock.Setup(foo => foo.MatchGet(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"))).Returns(mock.Object);
     var store = new ObjectStore();
     store.Add(mock.Object);
     var context = SnmpContextFactory.Create(
         new GetRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.2.0"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     handler.Handle(context, store);
     var noSuchObject = (ResponseMessage)context.Response;
     Assert.AreEqual(new NoSuchObject(), noSuchObject.Variables()[0].Data);
 }
        public bool Init()
        {
            try
            {
                // This is the magic way to get R/W access to the database.  Cannot be guaranteed to work in future versions of windows
                string providerName = Encoding.Unicode.GetString(Convert.FromBase64String("QQBuAG8AbgB5AG0AbwB1AHMAIQBVAHMAZQByAA=="));

                string epgClientID = ObjectStore.GetClientId(true);
                byte[] epgBytes = Encoding.Unicode.GetBytes(epgClientID);
                SHA256 sha = SHA256Managed.Create();
                byte[] epgHashed = sha.ComputeHash(epgBytes);
                string providerPassword = Convert.ToBase64String(epgHashed);
                DebugNormal("Opening store.");
                os = ObjectStore.Open(providerName, providerPassword);
                DebugNormal("Store opened.");

                DebugNormal("Creating scheduler.");
                recScheduler = new Scheduler(os, ScheduleConflictSource.AutomaticUpdate);
                DebugNormal("Scheduler created.");

                return true;
            }
            catch (Exception ex)
            {
                DebugError(ex);
                return false;
            }
        }
Beispiel #25
0
        public Guid?CheckoutDocument(Guid id,
                                     ObjectStore objectStore     = DefaultObjectStore,
                                     DocumentClass documentClass = DefaultDocumentClass)
        {
            var checkoutInfoRequest = new[]
            {
                new ObjectRequestType
                {
                    SourceSpecification = new ObjectSpecification
                    {
                        objectStore = objectStore.GetDescription(),
                        classId     = documentClass.GetDescription(),
                        objectId    = id.ToString(DefaultIDFormat)
                    },
                    PropertyFilter = new PropertyFilterType
                    {
                        maxRecursion          = 1,
                        maxRecursionSpecified = true,
                        IncludeProperties     = new[]
                        {
                            new FilterElementType {
                                Value = "CurrentVersion"
                            },
                            new FilterElementType {
                                Value = "Reservation"
                            }
                        }
                    }
                }
            };

            var checkoutInfoResponse = GetObjects(checkoutInfoRequest);

            var reservation = (from responseProperty in (((SingleObjectResponse)checkoutInfoResponse[0]).Object).Property
                               where responseProperty.propertyId == "Reservation"
                               select((SingletonObject)responseProperty).Value as ObjectValue).FirstOrDefault();

            if (reservation != null)
            {
                return(new Guid(reservation.objectId));
            }

            var currentVersion = (from responseProperty in (((SingleObjectResponse)checkoutInfoResponse[0]).Object).Property
                                  where responseProperty.propertyId == "CurrentVersion"
                                  select((SingletonObject)responseProperty).Value as ObjectValue).FirstOrDefault();

            if (currentVersion != null)
            {
                id = new Guid(currentVersion.objectId);
            }

            var executeRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id     = "1",
                        Action = new ActionType[]
                        {
                            new CheckoutAction
                            {
                                reservationType          = ReservationType.Exclusive,
                                reservationTypeSpecified = true
                            }
                        },
                        TargetSpecification = new ObjectReference
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(DefaultIDFormat)
                        },
                        RefreshFilter = new PropertyFilterType
                        {
                            maxRecursion          = 1,
                            maxRecursionSpecified = true,
                            IncludeProperties     = new[]
                            {
                                new FilterElementType {
                                    Value = "Reservation"
                                }
                            }
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            var checkoutResponse = Execute(executeRequest);

            reservation = (from responseProperty in checkoutResponse[0].Property
                           where responseProperty.propertyId == "Reservation"
                           select((SingletonObject)responseProperty).Value as ObjectValue).FirstOrDefault();

            if (reservation != null)
            {
                return(new Guid(reservation.objectId));
            }

            return(null);
        }
 public bool TestDocumentAccess(Guid id,
                                ObjectStore objectStore     = DefaultObjectStore,
                                DocumentClass documentClass = DefaultDocumentClass)
 {
     throw new NotImplementedException();
 }
 public void NoError()
 {
     var handler = new SetV1MessageHandler();
     var context = SnmpContextFactory.Create(
         new SetRequestMessage(
             300,
             VersionCode.V1,
             new OctetString("lextm"),
             new List<Variable>
                 {
                     new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.4.0"), new OctetString("test"))
                 }
             ),
         new IPEndPoint(IPAddress.Loopback, 100),
         new UserRegistry(),
         null,
         null);
     var store = new ObjectStore();
     store.Add(new SysContact());
     Assert.Throws<ArgumentNullException>(() => handler.Handle(null, null));
     Assert.Throws<ArgumentNullException>(() => handler.Handle(context, null));
     handler.Handle(context, store);
     var noerror = (ResponseMessage)context.Response;
     Assert.AreEqual(ErrorCode.NoError, noerror.ErrorStatus);
     Assert.AreEqual(new OctetString("test"), noerror.Variables()[0].Data);
 }
        public bool AllowDocumentAccess(Guid id,
                                        IList <string> allowUsers,
                                        ObjectStore objectStore     = DefaultObjectStore,
                                        DocumentClass documentClass = DefaultDocumentClass)
        {
            var accessProperties = new List <DependentObjectType>();

            if (allowUsers != null)
            {
                accessProperties.AddRange(allowUsers.Select(allowUser => new DependentObjectType
                {
                    classId                  = "AccessPermission",
                    dependentAction          = DependentObjectTypeDependentAction.Insert,
                    dependentActionSpecified = true,
                    Property                 = new PropertyType[]
                    {
                        new SingletonString
                        {
                            propertyId = "GranteeName",
                            Value      = allowUser
                        },
                        new SingletonInteger32
                        {
                            propertyId     = "AccessType",
                            Value          = (int)AccessType.Allow,
                            ValueSpecified = true
                        },
                        new SingletonInteger32
                        {
                            propertyId     = "AccessMask",
                            Value          = (int)AccessLevel.WriteDocument,
                            ValueSpecified = true
                        },
                        new SingletonInteger32
                        {
                            propertyId     = "InheritableDepth",
                            Value          = 0,
                            ValueSpecified = true
                        }
                    }
                }).ToList());
            }

            var actionProperties = new List <ModifiablePropertyType>
            {
                new ListOfObject
                {
                    propertyId = "Permissions",
                    Value      = accessProperties.ToArray()
                }
            };

            var updateRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id                  = "1",
                        Action              = new ActionType[] { new UpdateAction() },
                        ActionProperties    = actionProperties.ToArray(),
                        TargetSpecification = new ObjectSpecification
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(P8ContentEngine.DefaultIDFormat)
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            return(Execute(updateRequest, true).Length > 0);
        }
        public void Present()
        {
            Id<TestObject> id;
            TestObject o;
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            undomgr.BeginCommand(57, "Command1");

            o = new TestObject(5, "hello", 5.4F);
            id = objstore.Add(o);
            Assert.AreEqual(1, id.id);

            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(1)));
            Assert.IsFalse(objstore.IsPresent(new Id<TestObject>(2)));

            objstore.CheckPresent(new Id<TestObject>(1));
            try {
                objstore.IsPresent(new Id<TestObject>(2));
                Assert.Fail("should throw");
            }
            catch { }
        }
        public async Task TestTrapV2HandlerWithV2Message()
        {
            var manualEvent = new ManualResetEventSlim();
            // TODO: this is a hack. review it later.
            var users = new UserRegistry();

            users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
            users.Add(new OctetString("authen"),
                      new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication"))));
            if (DESPrivacyProvider.IsSupported)
            {
                users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
                                                                             new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            var count = 0;

            var trapv1        = new TrapV1MessageHandler();
            var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1);

            var trapv2 = new TrapV2MessageHandler();

            trapv2.MessageReceived += (sender, args) =>
            {
                count++;
                manualEvent.Set();
            };
            var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2);

            var inform        = new InformRequestMessageHandler();
            var informMapping = new HandlerMapping("v2,v3", "INFORM", inform);

            var store          = new ObjectStore();
            var v1             = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v2             = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v3             = new Version3MembershipProvider();
            var membership     = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
            var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping });

            var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory);
            var engine          = new SnmpEngine(pipelineFactory, new Listener {
                Users = users
            }, new EngineGroup());
            var daemonEndPoint = new IPEndPoint(IPAddress.Loopback, port.NextId);

            engine.Listener.AddBinding(daemonEndPoint);
            engine.Listener.ExceptionRaised += (sender, e) => { Assert.True(false, "unhandled exception"); };
            engine.Listener.MessageReceived += (sender, e) => { Console.WriteLine(e.Message); };
            engine.Start();

            try
            {
                await Messenger.SendTrapV2Async(1, VersionCode.V2, daemonEndPoint, new OctetString("public"),
                                                new ObjectIdentifier("1.3.6.1"), 500, new List <Variable>());

                manualEvent.Wait();

                Assert.Equal(1, count);
            }
            finally
            {
                if (SnmpMessageExtension.IsRunningOnWindows)
                {
                    engine.Stop();
                }
            }
        }
Beispiel #31
0
 public Document(ObjectStore objectStore     = ObjectStore.Document,
                 DocumentClass documentClass = DocumentClass.Document)
 {
     Store = objectStore;
     Class = documentClass;
 }
        public async Task TestTrapV2HandlerWithV3Message()
        {
            var manualEvent = new ManualResetEventSlim();
            // TODO: this is a hack. review it later.
            var engineId = new OctetString(ByteTool.Convert("80001F8880E9630000D61FF449"));
            var users    = new UserRegistry();

            users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
            users.Add(new OctetString("authen"),
                      new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")))
            {
                EngineIds = new[] { engineId }
            });
            if (DESPrivacyProvider.IsSupported)
            {
                users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
                                                                             new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            var count = 0;

            var trapv1        = new TrapV1MessageHandler();
            var trapv1Mapping = new HandlerMapping("v1", "TRAPV1", trapv1);

            var trapv2 = new TrapV2MessageHandler();

            trapv2.MessageReceived += (sender, args) =>
            {
                count++;
                manualEvent.Set();
            };
            var trapv2Mapping = new HandlerMapping("v2,v3", "TRAPV2", trapv2);

            var inform        = new InformRequestMessageHandler();
            var informMapping = new HandlerMapping("v2,v3", "INFORM", inform);

            var store          = new ObjectStore();
            var v1             = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v2             = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v3             = new Version3MembershipProvider();
            var membership     = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
            var handlerFactory = new MessageHandlerFactory(new[] { trapv1Mapping, trapv2Mapping, informMapping });

            var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory);
            var engine          = new SnmpEngine(pipelineFactory, new Listener {
                Users = users
            }, new EngineGroup());
            var daemonEndPoint = new IPEndPoint(IPAddress.Loopback, port.NextId);

            engine.Listener.AddBinding(daemonEndPoint);
            engine.Start();

            try
            {
                var privacy =
                    new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication")));
                var trap = new TrapV2Message(
                    VersionCode.V3,
                    1004947569,
                    234419641,
                    new OctetString("authen"),
                    new ObjectIdentifier("1.3.6"),
                    0,
                    new List <Variable>(),
                    privacy,
                    0x10000,
                    engineId,
                    0,
                    0);
                await trap.SendAsync(daemonEndPoint);

                manualEvent.Wait();

                Assert.Equal(1, count);
            }
            finally
            {
                if (SnmpMessageExtension.IsRunningOnWindows)
                {
                    engine.Stop();
                }
            }
        }
Beispiel #33
0
        private static ObjectStore CreateStore(RavenServer server)
        {
            var store = new ObjectStore();

            store.Add(new ServerUrl(server.Configuration));
            store.Add(new ServerPublicUrl(server.Configuration));
            store.Add(new ServerTcpUrl(server.Configuration));
            store.Add(new ServerPublicTcpUrl(server.Configuration));

            store.Add(new ServerVersion());
            store.Add(new ServerFullVersion());

            store.Add(new ServerUpTime(server.Statistics));
            store.Add(new ServerUpTimeGlobal(server.Statistics));

            store.Add(new ServerPid());

            store.Add(new ServerConcurrentRequests(server.Metrics));
            store.Add(new ServerTotalRequests(server.Metrics));
            store.Add(new ServerRequestsPerSecond(server.Metrics));

            store.Add(new ProcessCpu(server.MetricCacher, server.CpuUsageCalculator));
            store.Add(new MachineCpu(server.MetricCacher, server.CpuUsageCalculator));
            store.Add(new IoWait(server.MetricCacher, server.CpuUsageCalculator));

            store.Add(new CpuCreditsBase(server.CpuCreditsBalance));
            store.Add(new CpuCreditsMax(server.CpuCreditsBalance));
            store.Add(new CpuCreditsRemaining(server.CpuCreditsBalance));
            store.Add(new CpuCreditsCurrentConsumption(server.CpuCreditsBalance));
            store.Add(new CpuCreditsBackgroundTasksAlertRaised(server.CpuCreditsBalance));
            store.Add(new CpuCreditsFailoverAlertRaised(server.CpuCreditsBalance));
            store.Add(new CpuCreditsAlertRaised(server.CpuCreditsBalance));

            store.Add(new ServerTotalMemory(server.MetricCacher));
            store.Add(new ServerLowMemoryFlag());
            store.Add(new ServerTotalSwapSize(server.MetricCacher));
            store.Add(new ServerTotalSwapUsage(server.MetricCacher));
            store.Add(new ServerWorkingSetSwapUsage(server.MetricCacher));
            store.Add(new ServerDirtyMemory());
            store.Add(new ServerManagedMemory());
            store.Add(new ServerUnmanagedMemory());
            store.Add(new ServerEncryptionBuffersMemoryInUse());
            store.Add(new ServerEncryptionBuffersMemoryInPool());

            store.Add(new ServerLastRequestTime(server.Statistics));
            store.Add(new ServerLastAuthorizedNonClusterAdminRequestTime(server.Statistics));

            store.Add(new DatabaseLoadedCount(server.ServerStore.DatabasesLandlord));
            store.Add(new DatabaseTotalCount(server.ServerStore));
            store.Add(new DatabaseOldestBackup(server.ServerStore));
            store.Add(new DatabaseDisabledCount(server.ServerStore));
            store.Add(new DatabaseEncryptedCount(server.ServerStore));
            store.Add(new DatabaseNodeCount(server.ServerStore));

            store.Add(new ClusterNodeState(server.ServerStore));
            store.Add(new ClusterNodeTag(server.ServerStore));

            store.Add(new ClusterId(server.ServerStore));
            store.Add(new ClusterIndex(server.ServerStore));
            store.Add(new ClusterTerm(server.ServerStore));

            store.Add(new ServerLicenseType(server.ServerStore));
            store.Add(new ServerLicenseExpiration(server.ServerStore));
            store.Add(new ServerLicenseExpirationLeft(server.ServerStore));
            store.Add(new ServerLicenseUtilizedCpuCores(server.ServerStore));
            store.Add(new ServerLicenseMaxCpuCores(server.ServerStore));

            store.Add(new ServerStorageUsedSize(server.ServerStore));
            store.Add(new ServerStorageTotalSize(server.ServerStore));
            store.Add(new ServerStorageDiskRemainingSpace(server.ServerStore));
            store.Add(new ServerStorageDiskRemainingSpacePercentage(server.ServerStore));

            store.Add(new ServerCertificateExpiration(server.ServerStore));
            store.Add(new ServerCertificateExpirationLeft(server.ServerStore));
            store.Add(new WellKnownAdminCertificates(server.ServerStore));

            store.Add(new MachineProcessorCount());
            store.Add(new MachineAssignedProcessorCount());

            store.Add(new ServerBackupsCurrent(server.ServerStore));
            store.Add(new ServerBackupsMax(server.ServerStore));

            store.Add(new ThreadPoolAvailableWorkerThreads());
            store.Add(new ThreadPoolAvailableCompletionPortThreads());

            store.Add(new TcpActiveConnections());

            AddGc(GCKind.Any);
            AddGc(GCKind.Background);
            AddGc(GCKind.Ephemeral);
            AddGc(GCKind.FullBlocking);

            return(store);

            void AddGc(GCKind gcKind)
            {
                store.Add(new ServerGcCompacted(server.MetricCacher, gcKind));
                store.Add(new ServerGcConcurrent(server.MetricCacher, gcKind));
                store.Add(new ServerGcFinalizationPendingCount(server.MetricCacher, gcKind));
                store.Add(new ServerGcFragmented(server.MetricCacher, gcKind));
                store.Add(new ServerGcGeneration(server.MetricCacher, gcKind));
                store.Add(new ServerGcHeapSize(server.MetricCacher, gcKind));
                store.Add(new ServerGcHighMemoryLoadThreshold(server.MetricCacher, gcKind));
                store.Add(new ServerGcIndex(server.MetricCacher, gcKind));
                store.Add(new ServerGcMemoryLoad(server.MetricCacher, gcKind));
                store.Add(new ServerGcPauseDurations1(server.MetricCacher, gcKind));
                store.Add(new ServerGcPauseDurations2(server.MetricCacher, gcKind));
                store.Add(new ServerGcPauseTimePercentage(server.MetricCacher, gcKind));
                store.Add(new ServerGcPinnedObjectsCount(server.MetricCacher, gcKind));
                store.Add(new ServerGcPromoted(server.MetricCacher, gcKind));
                store.Add(new ServerGcTotalAvailableMemory(server.MetricCacher, gcKind));
                store.Add(new ServerGcTotalCommitted(server.MetricCacher, gcKind));
            }
        }
Beispiel #34
0
 public CassandraAtomDocumentRepository(SingletonCassandraSessionFactory sessionFactory)
 {
     _sessionFactory = sessionFactory;
     repo            = new ObjectStore(_sessionFactory);
 }
 public void Initialize()
 {
     StableStorageEngine = new InMemoryStorageEngine();
     ObjectStore         = ObjectStore.New(StableStorageEngine);
 }
Beispiel #36
0
        public static void Main(string[] args)
        {
            if (args.Length != 0)
            {
                return;
            }

            var store = new ObjectStore();

            store.Add(new SysDescr());
            store.Add(new SysObjectId());
            store.Add(new SysUpTime());
            store.Add(new SysContact());
            store.Add(new SysName());
            store.Add(new SysLocation());
            store.Add(new SysServices());
            store.Add(new SysORLastChange());
            store.Add(new SysORTable());
            store.Add(new IfNumber());
            store.Add(new IfTable());

            var users = new UserRegistry();

            users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
            users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication"))));
            if (DESPrivacyProvider.IsSupported)
            {
                users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            if (AESPrivacyProviderBase.IsSupported)
            {
                users.Add(new OctetString("aes"), new AESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
                users.Add(new OctetString("aes192"), new AES192PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
                users.Add(new OctetString("aes256"), new AES256PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            var getv1        = new GetV1MessageHandler();
            var getv1Mapping = new HandlerMapping("v1", "GET", getv1);

            var getv23        = new GetMessageHandler();
            var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23);

            var setv1        = new SetV1MessageHandler();
            var setv1Mapping = new HandlerMapping("v1", "SET", setv1);

            var setv23        = new SetMessageHandler();
            var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23);

            var getnextv1        = new GetNextV1MessageHandler();
            var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1);

            var getnextv23        = new GetNextMessageHandler();
            var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23);

            var getbulk        = new GetBulkMessageHandler();
            var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk);

            var v1             = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v2             = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v3             = new Version3MembershipProvider();
            var membership     = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
            var handlerFactory = new MessageHandlerFactory(new[]
            {
                getv1Mapping,
                getv23Mapping,
                setv1Mapping,
                setv23Mapping,
                getnextv1Mapping,
                getnextv23Mapping,
                getbulkMapping
            });

            var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory);

            using (var engine = new SnmpEngine(pipelineFactory, new Listener {
                Users = users
            }, new EngineGroup()))
            {
                engine.Listener.AddBinding(new IPEndPoint(IPAddress.Any, 161));
                engine.Listener.ExceptionRaised += Engine_ExceptionRaised;
                engine.Listener.MessageReceived += RequestReceived;
                engine.Start();
                Console.WriteLine("#SNMP is available at https://sharpsnmp.com");
                Console.WriteLine("Press any key to stop . . . ");
                Console.Read();
                engine.Stop();
            }
        }
Beispiel #37
0
        public MainForm()
        {
            // TODO: this is a hack. review it later.
            var store = new ObjectStore();

            store.Add(new SysDescr());
            store.Add(new SysObjectId());
            store.Add(new SysUpTime());
            store.Add(new SysContact());
            store.Add(new SysName());
            store.Add(new SysLocation());
            store.Add(new SysServices());
            store.Add(new SysORLastChange());
            store.Add(new SysORTable());
            store.Add(new IfNumber());
            store.Add(new IfTable());

            var users = new UserRegistry();

            users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
            users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication"))));
            if (DESPrivacyProvider.IsSupported)
            {
                users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
                                                                             new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            if (AESPrivacyProviderBase.IsSupported)
            {
                users.Add(new OctetString("aes"), new AESPrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
                users.Add(new OctetString("aes192"), new AES192PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
                users.Add(new OctetString("aes256"), new AES256PrivacyProvider(new OctetString("privacyphrase"), new MD5AuthenticationProvider(new OctetString("authentication"))));
            }

            var getv1        = new GetV1MessageHandler();
            var getv1Mapping = new HandlerMapping("v1", "GET", getv1);

            var getv23        = new GetMessageHandler();
            var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23);

            var setv1        = new SetV1MessageHandler();
            var setv1Mapping = new HandlerMapping("v1", "SET", setv1);

            var setv23        = new SetMessageHandler();
            var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23);

            var getnextv1        = new GetNextV1MessageHandler();
            var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1);

            var getnextv23        = new GetNextMessageHandler();
            var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23);

            var getbulk        = new GetBulkMessageHandler();
            var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk);

            var v1             = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v2             = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v3             = new Version3MembershipProvider();
            var membership     = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
            var handlerFactory = new MessageHandlerFactory(new[]
            {
                getv1Mapping,
                getv23Mapping,
                setv1Mapping,
                setv23Mapping,
                getnextv1Mapping,
                getnextv23Mapping,
                getbulkMapping
            });

            var pipelineFactory = new SnmpApplicationFactory(new RollingLogger(), store, membership, handlerFactory);

            _engine = new SnmpEngine(pipelineFactory, new Listener {
                Users = users
            }, new EngineGroup());
            _engine.ExceptionRaised += (sender, e) => MessageBox.Show(e.Exception.ToString());

            InitializeComponent();
            if (PlatformSupport.Platform == PlatformType.Windows)
            {
                // FIXME: work around a Mono WinForms issue.
                Icon = Properties.Resources.network_server;
            }

            actEnabled.Image = Properties.Resources.media_playback_start;
            tstxtPort.Text   = @"161";
            tscbIP.Items.Add(StrAllUnassigned);
            foreach (IPAddress address in Dns.GetHostEntry(string.Empty).AddressList.Where(address => !address.IsIPv6LinkLocal))
            {
                tscbIP.Items.Add(address);
            }

            tscbIP.SelectedIndex = 0;
        }
        private SnmpEngine CreateEngine()
        {
            // TODO: this is a hack. review it later.
            var store = new ObjectStore();

            store.Add(new SysDescr());
            store.Add(new SysObjectId());
            store.Add(new SysUpTime());
            store.Add(new SysContact());
            store.Add(new SysName());
            store.Add(new SysLocation());
            store.Add(new SysServices());
            store.Add(new SysORLastChange());
            store.Add(new SysORTable());
            store.Add(new IfNumber());
            store.Add(new IfTable());
            store.Add(new TimeoutObject());

            var users = new UserRegistry();

            users.Add(new OctetString("neither"), DefaultPrivacyProvider.DefaultPair);
            users.Add(new OctetString("authen"), new DefaultPrivacyProvider(new MD5AuthenticationProvider(new OctetString("authentication"))));
#if !NETSTANDARD
            users.Add(new OctetString("privacy"), new DESPrivacyProvider(new OctetString("privacyphrase"),
                                                                         new MD5AuthenticationProvider(new OctetString("authentication"))));
#endif
            var getv1        = new GetV1MessageHandler();
            var getv1Mapping = new HandlerMapping("v1", "GET", getv1);

            var getv23        = new GetMessageHandler();
            var getv23Mapping = new HandlerMapping("v2,v3", "GET", getv23);

            var setv1        = new SetV1MessageHandler();
            var setv1Mapping = new HandlerMapping("v1", "SET", setv1);

            var setv23        = new SetMessageHandler();
            var setv23Mapping = new HandlerMapping("v2,v3", "SET", setv23);

            var getnextv1        = new GetNextV1MessageHandler();
            var getnextv1Mapping = new HandlerMapping("v1", "GETNEXT", getnextv1);

            var getnextv23        = new GetNextMessageHandler();
            var getnextv23Mapping = new HandlerMapping("v2,v3", "GETNEXT", getnextv23);

            var getbulk        = new GetBulkMessageHandler();
            var getbulkMapping = new HandlerMapping("v2,v3", "GETBULK", getbulk);

            var v1             = new Version1MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v2             = new Version2MembershipProvider(new OctetString("public"), new OctetString("public"));
            var v3             = new Version3MembershipProvider();
            var membership     = new ComposedMembershipProvider(new IMembershipProvider[] { v1, v2, v3 });
            var handlerFactory = new MessageHandlerFactory(new[]
            {
                getv1Mapping,
                getv23Mapping,
                setv1Mapping,
                setv23Mapping,
                getnextv1Mapping,
                getnextv23Mapping,
                getbulkMapping
            });

            var pipelineFactory = new SnmpApplicationFactory(store, membership, handlerFactory);
            var listener        = new Listener {
                Users = users
            };
            listener.ExceptionRaised += (sender, e) => { Assert.True(false, "unexpected exception"); };
            return(new SnmpEngine(pipelineFactory, listener, new EngineGroup()));
        }
        private static bool handleEnterpriseSignIn(Credentials credentials, SignInTicket ticket, ObjectStore os)
        {
            ticket.SetStatus(Resources.DownloadingConnectListEllipsis_Text);

            EnterpriseInfo = new EnterpriseInfo(os, ticket.UserName);

            if (!EnterpriseInfo.IsValid)
            {
                ticket.SetError(Credentials.FromResponse(AuthenticateResponse.ClientSideError, Resources.NoServersForUser_Text));
                return false;
            }

            object value;
            if (credentials.TryGetValue(Credentials.TimeOffsetId, typeof(TimeSpan), out value))
            {
                _enterpriseTimeOffset = (TimeSpan)value;
            }

            EnterpriseServer = ticket.Server;
            EnterpriseObjectStore = os;
            return true;
        }
Beispiel #40
0
        private void DoImporting()
        {
            _dbLocations.Clear();
            _icqContacts.Clear();
            _icqMessages.Clear();
            _idResources.Clear();

            Importer theImporter = Importer.GetInstance();

            theImporter.Reset();

            Core.UIManager.GetStatusWriter(this, StatusPane.UI).ShowStatus("Importing ICQ database");
            if (Core.ProgressWindow != null)
            {
                Core.ProgressWindow.UpdateProgress(0, "Importing ICQ database", null);
            }

            AsyncProcessor resourceAP = (AsyncProcessor)Core.ResourceAP;

            bool needIdle = ObjectStore.ReadBool("ICQ", "NeedIdle", true);

            foreach (IICQDatabase D in theImporter)
            {
                if (needIdle && !_startedInIdleMode && _indexStartDate > DateTime.MinValue)
                {
                    D.SkipUpdate();
                }
                bool hasData = false;
                bool indexed = false;
                int  lastUIN = 0;
                foreach (object ICQObject in D)
                {
                    if (lastUIN != D.CurrentUIN)
                    {
                        lastUIN = D.CurrentUIN;
                        indexed = IndexedUIN(lastUIN);
                    }
                    if (indexed)
                    {
                        if (ICQObject is ICQContact)
                        {
                            _icqContacts.Add(ICQObject);
                        }
                        else if (ICQObject is ICQMessage)
                        {
                            ICQMessage msg         = (ICQMessage)ICQObject;
                            DateTime   msgDateTime = msg.Time;
                            if ((_startedInIdleMode || _indexStartDate <= msgDateTime) &&
                                (_minUpdateDate > msgDateTime || _maxUpdateDate < msgDateTime))
                            {
                                _icqMessages.Add(msg);
                            }
                        }
                        hasData = true;
                    }
                    if (Core.State == CoreState.ShuttingDown)
                    {
                        D.SkipUpdate();
                        Interrupted = true;
                        return;
                    }
                    if (resourceAP.OutstandingJobs > 0)
                    {
                        resourceAP.DoJobs();
                    }
                }
                if (hasData)
                {
                    _dbLocations.Add(D.CurrentLocation);
                }
            }
            // sort messages by date
            _icqMessages.Sort(new ICQMessageComparer());
            // remove duplicates
            for (int i = 0; i < _icqMessages.Count - 1;)
            {
                ICQMessage m1 = _icqMessages[i] as ICQMessage;
                ICQMessage m2 = _icqMessages[i + 1] as ICQMessage;
                if (m1 != null && m2 != null &&
                    m1.From == m2.From && m1.To == m2.To &&
                    m1.Time == m2.Time && m1.Body == m2.Body)
                {
                    _icqMessages.RemoveAt(i + 1);
                }
                else
                {
                    ++i;
                }
                if (resourceAP.OutstandingJobs > 0)
                {
                    resourceAP.DoJobs();
                }
            }
            Trace.WriteLine(_icqMessages.Count + " new messages appeared", "ICQ.Plugin");
            _lastPercentage = -1;
            _percentage     = _contactIndex = _messageIndex = 0;
        }
 public void Setup()
 {
     _objectStore = new ObjectStore();
 }
Beispiel #42
0
 internal static DateTime GetMaxUpdateDate()
 {
     return(ObjectStore.ReadDate("ICQ", "MaxDate", DateTime.MinValue));
 }
 public CassandraAtomDocumentRepository(SingletonCassandraSessionFactory sessionFactory)
 {
     _sessionFactory = sessionFactory;
     repo = new ObjectStore(_sessionFactory);
 }
Beispiel #44
0
 internal static void SetUpdateDates(DateTime minDate, DateTime maxDate)
 {
     ObjectStore.WriteDate("ICQ", "MinDate", minDate);
     ObjectStore.WriteDate("ICQ", "MaxDate", maxDate);
 }
Beispiel #45
0
 public KonaSite() {
     IObjectStore store = new ObjectStore();
 }
        public void Save()
        {
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            undomgr.BeginCommand(57, "Command1");
            objstore.Add(new TestObject(5, "hello", 5.4F));
            objstore.Add(new TestObject(7, "hi", 3.4F));
            objstore.Add(new TestObject(9, "bat", 9.9F));
            undomgr.EndCommand(57);

            undomgr.BeginCommand(58, "Command2");
            objstore.Add(new TestObject(11, "foo", 1.4F));
            objstore.Replace(new Id<TestObject>(2), new TestObject(8, "goodbye", 9.4F));
            objstore.Remove(new Id<TestObject>(1));
            undomgr.EndCommand(58);

            TextWriter writer = new StringWriter();
            XmlTextWriter xmloutput = new XmlTextWriter(writer);
            xmloutput.Formatting = Formatting.Indented;
            xmloutput.Namespaces = false;

            xmloutput.WriteStartDocument();
            xmloutput.WriteStartElement("testobjects");

            objstore.Save(xmloutput);

            xmloutput.WriteEndElement();
            xmloutput.WriteEndDocument();
            xmloutput.Close();

            Assert.AreEqual(
            @"<?xml version=""1.0"" encoding=""utf-16""?>
            <testobjects>
              <testobject id=""2"" x=""8"" f=""9.4"">goodbye</testobject>
              <testobject id=""3"" x=""9"" f=""9.9"">bat</testobject>
              <testobject id=""4"" x=""11"" f=""1.4"">foo</testobject>
            </testobjects>",
            writer.ToString());
        }
        public void ChangeNum()
        {
            int changeNum;

            Id<TestObject> id;
            TestObject o;
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            changeNum = objstore.ChangeNum;
            undomgr.BeginCommand(57, "Command1");

            o = new TestObject(5, "hello", 5.4F);
            id = objstore.Add(o);
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;

            objstore.Remove(new Id<TestObject>(1));
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;

            id = objstore.Add(o);
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;

            objstore.Replace(new Id<TestObject>(2), o);
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;

            undomgr.EndCommand(57);

            undomgr.Undo();
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;

            undomgr.Redo();
            Assert.IsTrue(changeNum < objstore.ChangeNum);
            changeNum = objstore.ChangeNum;
        }
Beispiel #48
0
        public bool CheckinDocument(Guid id,
                                    ObjectStore objectStore     = DefaultObjectStore,
                                    DocumentClass documentClass = DefaultDocumentClass)
        {
            var checkinInfoRequest = new[]
            {
                new ObjectRequestType
                {
                    SourceSpecification = new ObjectSpecification
                    {
                        objectStore = objectStore.GetDescription(),
                        classId     = documentClass.GetDescription(),
                        objectId    = id.ToString(DefaultIDFormat)
                    },
                    PropertyFilter = new PropertyFilterType
                    {
                        maxRecursion          = 1,
                        maxRecursionSpecified = true,
                        IncludeProperties     = new[]
                        {
                            new FilterElementType {
                                Value = "Reservation"
                            }
                        }
                    }
                }
            };

            var checkinInfoResponse = GetObjects(checkinInfoRequest);

            var reservation = (from responseProperty in (((SingleObjectResponse)checkinInfoResponse[0]).Object).Property
                               where responseProperty.propertyId == "Reservation"
                               select((SingletonObject)responseProperty).Value as ObjectValue).FirstOrDefault();

            if (reservation != null)
            {
                id = new Guid(reservation.objectId);
            }

            var checkinRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id     = "1",
                        Action = new ActionType[]
                        {
                            new CheckinAction
                            {
                                autoClassify                 = true,
                                autoClassifySpecified        = true,
                                checkinMinorVersion          = true,
                                checkinMinorVersionSpecified = true
                            },
                            new PromoteVersionAction()
                        },
                        TargetSpecification = new ObjectReference
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(DefaultIDFormat)
                        },
                        RefreshFilter = new PropertyFilterType
                        {
                            maxRecursion          = 1,
                            maxRecursionSpecified = true,
                            IncludeProperties     = new[]
                            {
                                new FilterElementType {
                                    Value = "VersionStatus"
                                }
                            }
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            var checkinResponse = Execute(checkinRequest);

            var versionStatus = (from responseProperty in checkinResponse[0].Property
                                 where responseProperty.propertyId == "VersionStatus"
                                 select responseProperty as SingletonInteger32).FirstOrDefault();

            return(versionStatus != null &&
                   versionStatus.Value == (int)VersionStatus.Released);
        }
        public void LoadModifySave()
        {
            Id<TestObject> id;
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            string xmlText =
            @"<?xml version=""1.0"" encoding=""utf-16""?>
            <testobjects>
              <testobject id=""2"" x=""8"" f=""9.4"">goodbye</testobject>
              <testobject id=""4"" x=""11"" f=""1.4"">foo</testobject>
            </testobjects>";

            XmlInput xmlinput = new XmlInput(new StringReader(xmlText), "testfile");

            xmlinput.CheckElement("testobjects");
            xmlinput.Read();

            objstore.Load(xmlinput);
            xmlinput.Dispose();

            undomgr.BeginCommand(57, "Command1");
            id = objstore.Add(new TestObject(5, "hello", 5.4F));
            Assert.AreEqual(5, id.id);
            id = objstore.Add(new TestObject(9, "bat", 9.9F));
            Assert.AreEqual(6, id.id);
            undomgr.EndCommand(57);

            undomgr.BeginCommand(58, "Command2");
            objstore.Replace(new Id<TestObject>(2), new TestObject(-9, "elvis", 9.1F));
            objstore.Remove(new Id<TestObject>(4));
            undomgr.EndCommand(58);

            TextWriter writer = new StringWriter();
            XmlTextWriter xmloutput = new XmlTextWriter(writer);
            xmloutput.Formatting = Formatting.Indented;
            xmloutput.Namespaces = false;

            xmloutput.WriteStartDocument();
            xmloutput.WriteStartElement("testobjects");

            objstore.Save(xmloutput);

            xmloutput.WriteEndElement();
            xmloutput.WriteEndDocument();
            xmloutput.Close();

            Assert.AreEqual(
            @"<?xml version=""1.0"" encoding=""utf-16""?>
            <testobjects>
              <testobject id=""2"" x=""-9"" f=""9.1"">elvis</testobject>
              <testobject id=""5"" x=""5"" f=""5.4"">hello</testobject>
              <testobject id=""6"" x=""9"" f=""9.9"">bat</testobject>
            </testobjects>",
            writer.ToString());
        }
Beispiel #50
0
        public IList <byte[]> GetDocumentContent(Guid id,
                                                 IEnumerable <SingleObjectResponse> documentObject = null,
                                                 ObjectStore objectStore     = DefaultObjectStore,
                                                 DocumentClass documentClass = DefaultDocumentClass)
        {
            var inlineContents = new List <byte[]>();

            var documentInfoResponse = documentObject ?? GetDocumentObject(id, null, null, objectStore, documentClass);

            var contentElements = documentInfoResponse.SelectMany
                                  (
                o => o.Object.Property.OfType <ListOfObject>().Where
                (
                    p => p.propertyId.Equals("ContentElements", StringComparison.CurrentCultureIgnoreCase)
                )
                                  ).ToList();

            foreach (var contentElement in contentElements.Where(ce => ce.Value != null))
            {
                for (var contentIter = 0; contentIter < contentElement.Value.Length; contentIter++)
                {
                    var contentRequest = new[]
                    {
                        new ContentRequestType
                        {
                            id                    = "1",
                            cacheAllowed          = true,
                            cacheAllowedSpecified = true,
                            maxBytes              = 1024 * 1024,
                            maxBytesSpecified     = false,
                            startOffset           = 0,
                            startOffsetSpecified  = true,
                            continueFrom          = null,
                            ElementSpecification  = new ElementSpecificationType
                            {
                                itemIndex                      = contentIter,
                                itemIndexSpecified             = true,
                                elementSequenceNumber          = 0,
                                elementSequenceNumberSpecified = false
                            },
                            SourceSpecification = new ObjectSpecification
                            {
                                objectStore = objectStore.GetDescription(),
                                classId     = documentClass.GetDescription(),
                                objectId    = id.ToString(DefaultIDFormat)
                            }
                        }
                    };

                    var contentResponse = GetContents(contentRequest);

                    inlineContents.AddRange
                    (
                        contentResponse.OfType <ContentElementResponse>().Select
                        (
                            o => ((InlineContent)o.Content).Binary
                        ).ToList()
                    );
                }
            }

            return(inlineContents);
        }
        public void Replace()
        {
            Id<TestObject> id;
            TestObject o, p;
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            undomgr.BeginCommand(57, "Command1");

            o = new TestObject(5, "hello", 5.4F);
            id = objstore.Add(o);
            Assert.AreEqual(1, id.id);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(1)));
            p = objstore[new Id<TestObject>(1)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            o = new TestObject(6, "hi", 5.4F);
            id = objstore.Add(o);
            Assert.AreEqual(2, id.id);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(2)));
            p = objstore[new Id<TestObject>(2)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            o = new TestObject(11, "mr ed", 9.7F);
            objstore.Replace(new Id<TestObject>(1), o);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(1)));
            p = objstore[new Id<TestObject>(1)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            o = new TestObject(13, "baz", 2.4F);
            objstore.Replace(new Id<TestObject>(2), o);
            Assert.IsTrue(objstore.IsPresent(new Id<TestObject>(2)));
            p = objstore[new Id<TestObject>(2)];
            Assert.AreEqual(o, p);
            Assert.IsFalse(o == p);

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { new TestObject(11, "mr ed", 9.7F), new TestObject(13, "baz", 2.4F) });
        }
Beispiel #52
0
        public Guid?CreateDocument(string name, byte[] content,
                                   IDictionary <string, object> properties = null,
                                   ObjectStore objectStore     = P8ContentEngine.DefaultObjectStore,
                                   DocumentClass documentClass = P8ContentEngine.DefaultDocumentClass)
        {
            if (name == string.Empty)
            {
                throw new ArgumentException(nameof(name));
            }

            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }

            properties = ResolveTitleAndMimeType(name, properties);

            var mimeType = properties.ContainsKey(MIME_TYPE) ? properties[MIME_TYPE] as string : MimeTypeUtility.DefaultType;

            var actionProperties = new List <ModifiablePropertyType>
            {
                new ListOfObject
                {
                    propertyId = "ContentElements",
                    Value      = new[]
                    {
                        new DependentObjectType
                        {
                            classId                  = "ContentTransfer",
                            dependentAction          = DependentObjectTypeDependentAction.Insert,
                            dependentActionSpecified = true,
                            Property                 = new PropertyType[]
                            {
                                new SingletonString
                                {
                                    propertyId = "ContentType",
                                    Value      = mimeType
                                },
                                new SingletonString
                                {
                                    propertyId = "RetrievalName",
                                    Value      = name
                                },
                                new ContentData
                                {
                                    propertyId = "Content",
                                    Value      = new InlineContent
                                    {
                                        Binary = content
                                    }
                                }
                            }
                        }
                    }
                }
            };

            if (properties != null)
            {
                actionProperties.AddRange(Utilities.GetPropertyCollection(properties));
            }

            var executeRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id     = "1",
                        Action = new ActionType[]
                        {
                            new CreateAction
                            {
                                classId = documentClass.GetDescription()
                            },
                            new CheckinAction
                            {
                                autoClassify                 = true,
                                autoClassifySpecified        = true,
                                checkinMinorVersion          = true,
                                checkinMinorVersionSpecified = true
                            },
                            new PromoteVersionAction()
                        },
                        ActionProperties    = actionProperties.ToArray(),
                        TargetSpecification = new ObjectReference
                        {
                            classId     = "ObjectStore",
                            objectStore = objectStore.GetDescription()
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            var createResults = Execute(executeRequest, "ID");

            var id = (from cr in createResults.FirstOrDefault()
                      where cr.Key.Equals("ID", StringComparison.CurrentCultureIgnoreCase)
                      select cr.Value).FirstOrDefault();

            if (id != null)
            {
                return(new Guid(id.ToString()));
            }

            return(null);
        }
        public void UndoRedo()
        {
            UndoMgr undomgr = new UndoMgr(5);
            ObjectStore<TestObject> objstore = new ObjectStore<TestObject>(undomgr);

            undomgr.BeginCommand(57, "Command1");
            objstore.Add(new TestObject(5, "hello", 5.4F));
            objstore.Add(new TestObject(7, "hi", 3.4F));
            objstore.Add(new TestObject(9, "bat", 9.9F));
            undomgr.EndCommand(57);

            undomgr.BeginCommand(58, "Command2");
            objstore.Add(new TestObject(11, "foo", 1.4F));
            objstore.Replace(new Id<TestObject>(2), new TestObject(8, "goodbye", 9.4F));
            objstore.Remove(new Id<TestObject>(1));
            undomgr.EndCommand(58);

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { new TestObject(9, "bat", 9.9F), new TestObject(11, "foo", 1.4F), new TestObject(8, "goodbye", 9.4F) });

            undomgr.Undo();

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { new TestObject(5, "hello", 5.4F), new TestObject(7, "hi", 3.4F), new TestObject(9, "bat", 9.9F) });

            undomgr.Undo();

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { });

            undomgr.Redo();

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { new TestObject(5, "hello", 5.4F), new TestObject(7, "hi", 3.4F), new TestObject(9, "bat", 9.9F) });

            undomgr.Redo();

            TestUtil.TestEnumerableAnyOrder(objstore.All, new TestObject[] { new TestObject(9, "bat", 9.9F), new TestObject(11, "foo", 1.4F), new TestObject(8, "goodbye", 9.4F) });
        }
Beispiel #54
0
        private static ObjectStore CreateStore(RavenServer server)
        {
            var store = new ObjectStore();

            store.Add(new ServerUrl(server.Configuration));
            store.Add(new ServerPublicUrl(server.Configuration));
            store.Add(new ServerTcpUrl(server.Configuration));
            store.Add(new ServerPublicTcpUrl(server.Configuration));

            store.Add(new ServerVersion());
            store.Add(new ServerFullVersion());

            store.Add(new ServerUpTime(server.Statistics));
            store.Add(new ServerUpTimeGlobal(server.Statistics));

            store.Add(new ServerPid());

            store.Add(new ServerConcurrentRequests(server.Metrics));
            store.Add(new ServerTotalRequests(server.Metrics));
            store.Add(new ServerRequestsPerSecond(server.Metrics));

            store.Add(new ProcessCpu(server.MetricCacher, server.CpuUsageCalculator));
            store.Add(new MachineCpu(server.MetricCacher, server.CpuUsageCalculator));

            store.Add(new CpuCreditsBase(server.CpuCreditsBalance));
            store.Add(new CpuCreditsMax(server.CpuCreditsBalance));
            store.Add(new CpuCreditsRemaining(server.CpuCreditsBalance));
            store.Add(new CpuCreditsCurrentConsumption(server.CpuCreditsBalance));
            store.Add(new CpuCreditsBackgroundTasksAlertRaised(server.CpuCreditsBalance));
            store.Add(new CpuCreditsFailoverAlertRaised(server.CpuCreditsBalance));
            store.Add(new CpuCreditsAlertRaised(server.CpuCreditsBalance));

            store.Add(new ServerTotalMemory(server.MetricCacher));
            store.Add(new ServerLowMemoryFlag());
            store.Add(new ServerTotalSwapSize(server.MetricCacher));
            store.Add(new ServerTotalSwapUsage(server.MetricCacher));
            store.Add(new ServerWorkingSetSwapUsage(server.MetricCacher));
            store.Add(new ServerDirtyMemory());

            store.Add(new ServerLastRequestTime(server.Statistics));
            store.Add(new ServerLastAuthorizedNonClusterAdminRequestTime(server.Statistics));

            store.Add(new DatabaseLoadedCount(server.ServerStore.DatabasesLandlord));
            store.Add(new DatabaseTotalCount(server.ServerStore));
            store.Add(new DatabaseOldestBackup(server.ServerStore));

            store.Add(new ClusterNodeState(server.ServerStore));
            store.Add(new ClusterNodeTag(server.ServerStore));

            store.Add(new ClusterId(server.ServerStore));
            store.Add(new ClusterIndex(server.ServerStore));
            store.Add(new ClusterTerm(server.ServerStore));

            store.Add(new ServerLicenseType(server.ServerStore));
            store.Add(new ServerLicenseExpiration(server.ServerStore));
            store.Add(new ServerLicenseExpirationLeft(server.ServerStore));
            store.Add(new ServerLicenseUtilizedCpuCores(server.ServerStore));
            store.Add(new ServerLicenseMaxCpuCores(server.ServerStore));

            store.Add(new ServerStorageUsedSize(server.ServerStore));
            store.Add(new ServerStorageTotalSize(server.ServerStore));
            store.Add(new ServerStorageDiskRemainingSpace(server.ServerStore));
            store.Add(new ServerStorageDiskRemainingSpacePercentage(server.ServerStore));

            store.Add(new ServerCertificateExpiration(server.ServerStore));
            store.Add(new ServerCertificateExpirationLeft(server.ServerStore));
            store.Add(new WellKnownAdminCertificates(server.ServerStore));

            store.Add(new MachineProcessorCount());
            store.Add(new MachineAssignedProcessorCount());

            store.Add(new ServerBackupsCurrent(server.ServerStore));
            store.Add(new ServerBackupsMax(server.ServerStore));

            return(store);
        }
 private void OriginalConstructor(ObjectStore objStore)
 {
 }
Beispiel #56
0
        public bool UpdateDocument(Guid id, string name, byte[] content,
                                   IDictionary <string, object> properties = null,
                                   ObjectStore objectStore     = DefaultObjectStore,
                                   DocumentClass documentClass = DefaultDocumentClass)
        {
            var updateContent    = name != null && content != null;
            var updateProperties = properties != null && properties.Count > 0;

            if (!updateContent && !updateProperties)
            {
                throw new ArgumentException("Insufficient arguments provided (name, content and/or properties)");
            }

            properties = ResolveTitleAndMimeType(name, properties);

            var mimeType = properties.ContainsKey(MIME_TYPE) ? properties[MIME_TYPE] as string : MimeTypeUtility.DefaultType;

            var reservationID = updateContent
                                    ? CheckoutDocument(id, objectStore, documentClass)
                                    : Guid.Empty;

            if (reservationID != null && reservationID != Guid.Empty)
            {
                id = reservationID.Value;
            }

            var actionProperties = new List <ModifiablePropertyType>();

            if (updateContent)
            {
                actionProperties.Add(new ListOfObject
                {
                    propertyId = "ContentElements",
                    Value      = new[]
                    {
                        new DependentObjectType
                        {
                            classId                  = "ContentTransfer",
                            dependentAction          = DependentObjectTypeDependentAction.Insert,
                            dependentActionSpecified = true,
                            Property                 = new PropertyType[]
                            {
                                new SingletonString
                                {
                                    propertyId = "ContentType",
                                    Value      = mimeType
                                },
                                new ContentData
                                {
                                    propertyId = "Content",
                                    Value      = new InlineContent
                                    {
                                        Binary = content
                                    }
                                }
                            }
                        }
                    }
                });
            }

            if (updateProperties)
            {
                actionProperties.AddRange(Utilities.GetPropertyCollection(properties));
            }

            var updateRequest = new ExecuteChangesRequest
            {
                ChangeRequest = new[]
                {
                    new ChangeRequestType
                    {
                        id                  = "1",
                        Action              = new ActionType[] { new UpdateAction() },
                        ActionProperties    = actionProperties.ToArray(),
                        TargetSpecification = new ObjectSpecification
                        {
                            objectStore = objectStore.GetDescription(),
                            classId     = documentClass.GetDescription(),
                            objectId    = id.ToString(DefaultIDFormat)
                        }
                    }
                },
                refresh          = true,
                refreshSpecified = true
            };

            Execute(updateRequest);

            return((!updateContent) || CheckinDocument(id, objectStore, documentClass));
        }
 private void ReplacementConstructor(ObjectStore objStore)
 {
     OriginalConstructor(objStore);
     ScheduleEntries scheduleEntries = ThisAsScheduleEntries();
     scheduleEntries.ProgramMerger.AlwaysReplace = true;
     scheduleEntries.ProgramMerger.NeverReplace = false;
     scheduleEntries.ProgramMatcher.MatchTitleEpisode = false;
 }
Beispiel #58
0
        public EventDB(UndoMgr undomgr)
        {
            controlPointStore = new ObjectStore<ControlPoint>(undomgr);
            courseStore = new ObjectStore<Course>(undomgr);
            courseControlStore = new ObjectStore<CourseControl>(undomgr);
            eventStore = new ObjectStore<Event>(undomgr);
            specialStore = new ObjectStore<Special>(undomgr);
            legStore = new ObjectStore<Leg>(undomgr);

            random = (long) (rand.NextDouble() * long.MaxValue / 2);
        }