Exemple #1
0
 public void AddServerIdentity(PSKIdentity pskIdentity)
 {
     if (ServerIdentities == null)
     {
         ServerIdentities = new List <PSKIdentity>();
     }
     ServerIdentities.Add(pskIdentity);
 }
Exemple #2
0
        public PSKIdentity GetPSKIdentity()
        {
            PSKIdentity result = null;

            if ((ServerIdentities != null) && ServerIdentities.Count > 0)
            {
                int index;
                lock (this)
                {
                    index = _ServerIdentityIndex = (_ServerIdentityIndex + 1) % ServerIdentities.Count;
                }
                result = ServerIdentities[index];
            }
            return(result);
        }
 public List<BootstrapServer> GetBootstrapServers()
 {
     List<BootstrapServer> result = _CachedBootstrapServers;
     if (result == null)
     {
         lock (this)
         {
             result = _CachedBootstrapServers;
             if (result == null)
             {
                 result = new List<BootstrapServer>();
                 IMongoDatabase database = GetDatabase(DATABASE_NAME, false);
                 IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("BootstrapServer");
                 IAsyncCursor<BsonDocument> mongoCursor = collection.FindSync(new BsonDocument());
                 while (mongoCursor.MoveNext())
                 {
                     foreach (BsonDocument item in mongoCursor.Current)
                     {
                         BootstrapServer bootstrapServer = new BootstrapServer();
                         bootstrapServer.Url = BsonHelper.GetString(item, "_id");
                         if (item.Contains("ServerIdentities"))
                         {
                             BsonArray array = item["ServerIdentities"].AsBsonArray;
                             foreach (BsonValue arrayItem in array)
                             {
                                 BsonDocument pskIdentityDoc = arrayItem.AsBsonDocument;
                                 if (pskIdentityDoc != null)
                                 {
                                     PSKIdentity pskIdentity = new PSKIdentity();
                                     pskIdentity.Identity = BsonHelper.GetString(pskIdentityDoc, "_id");
                                     pskIdentity.Secret = BsonHelper.GetString(pskIdentityDoc, "Secret");
                                     bootstrapServer.AddServerIdentity(pskIdentity);
                                 }
                             }
                         }
                         if (item.Contains("ServerCertificate"))
                         {
                             BsonDocument serverCertificateDoc = item["ServerCertificate"].AsBsonDocument;
                             if (serverCertificateDoc != null)
                             {
                                 bootstrapServer.ServerCertificate = new Certificate();
                                 bootstrapServer.ServerCertificate.CertificateFormat = (TCertificateFormat)BsonHelper.GetInt32(serverCertificateDoc, "_id");
                                 bootstrapServer.ServerCertificate.RawCertificate = BsonHelper.GetString(serverCertificateDoc, "RawCertificate");
                             }
                         }
                         result.Add(bootstrapServer);
                     }
                 }
                 _CachedBootstrapServers = result;
             }
         }
     }
     return result;
 }
 public void AddServerIdentity(PSKIdentity pskIdentity)
 {
     if (ServerIdentities == null)
         ServerIdentities = new List<PSKIdentity>();
     ServerIdentities.Add(pskIdentity);
 }
 public List<Server> GetServers()
 {
     List<Server> result = _CachedLWM2MServers;
     if (result == null)
     {
         lock (this)
         {
             result = _CachedLWM2MServers;
             if (result == null)
             {
                 result = new List<Server>();
                 IMongoDatabase database = GetDatabase(DATABASE_NAME, false);
                 IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("Server");
                 IAsyncCursor<BsonDocument> mongoCursor = collection.FindSync(new BsonDocument());
                 while (mongoCursor.MoveNext())
                 {
                     foreach (BsonDocument item in mongoCursor.Current)
                     {
                         LWM2MServer lwm2mServer = new LWM2MServer();
                         lwm2mServer.Url = BsonHelper.GetString(item, "_id");
                         lwm2mServer.Lifetime = (uint)BsonHelper.GetInt64(item, "Lifetime");
                         lwm2mServer.DefaultMinimumPeriod = (uint?)BsonHelper.GetLong(item, "DefaultMinimumPeriod");
                         lwm2mServer.DefaultMaximumPeriod = (uint?)BsonHelper.GetLong(item, "DefaultMaximumPeriod");
                         lwm2mServer.DisableTimeout = (uint?)BsonHelper.GetLong(item, "DisableTimeout");
                         lwm2mServer.NotificationStoringWhenOffline = BsonHelper.GetBoolean(item, "NotificationStoringWhenOffline");
                         lwm2mServer.Binding = (TBindingMode)BsonHelper.GetInt32(item, "Binding");
                         if (item.Contains("ServerIdentities"))
                         {
                             BsonArray array = item["ServerIdentities"].AsBsonArray;
                             foreach (BsonValue arrayItem in array)
                             {
                                 BsonDocument pskIdentityDoc = arrayItem.AsBsonDocument;
                                 if (pskIdentityDoc != null)
                                 {
                                     PSKIdentity pskIdentity = new PSKIdentity();
                                     pskIdentity.Identity = BsonHelper.GetString(pskIdentityDoc, "_id");
                                     pskIdentity.Secret = BsonHelper.GetString(pskIdentityDoc, "Secret");
                                     lwm2mServer.AddServerIdentity(pskIdentity);
                                 }
                             }
                         }
                         if (item.Contains("ServerCertificate"))
                         {
                             BsonDocument serverCertificateDoc = item["ServerCertificate"].AsBsonDocument;
                             if (serverCertificateDoc != null)
                             {
                                 lwm2mServer.ServerCertificate = new Certificate();
                                 lwm2mServer.ServerCertificate.CertificateFormat = (TCertificateFormat)BsonHelper.GetInt32(serverCertificateDoc, "_id");
                                 lwm2mServer.ServerCertificate.RawCertificate = BsonHelper.GetString(serverCertificateDoc, "RawCertificate");
                             }
                         }
                         Server server = new Server(lwm2mServer);
                         server.ShortServerID = result.Count + 1;
                         foreach (Model.Security endPoint in server.EndPoints)
                         {
                             endPoint.ShortServerID = server.ShortServerID;
                         }
     #if DEBUG
                         if (lwm2mServer.Url.ToLower().Contains(Environment.MachineName.ToLower()))
                         {
                             result.Add(server);
                         }
     #else
                         result.Add(server);
     #endif
                     }
                 }
                 _CachedLWM2MServers = result;
             }
         }
     }
     return result;
 }
 public void SavePSKIdentity(PSKIdentity pskIdentity, TObjectState state)
 {
     IMongoDatabase database = GetDatabase(DATABASE_NAME, true);
     IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>(COLLECTION_NAME);
     EnsureIndexExists<BsonDocument>(collection, "OrganisationID");
     FilterDefinition<BsonDocument> query = Builders<BsonDocument>.Filter.Eq("_id", pskIdentity.Identity);
     if ((state == TObjectState.Add) || (state == TObjectState.Update))
     {
         BsonDocument doc = new BsonDocument();
         BsonHelper.SetValue(doc, "_id", pskIdentity.Identity);
         BsonHelper.SetValue(doc, "Secret", pskIdentity.Secret);
         BsonHelper.SetValue(doc, "OrganisationID", pskIdentity.OrganisationID);
         UpdateOptions options = new UpdateOptions();
         options.IsUpsert = true;
         collection.ReplaceOne(query, doc, options);
     }
     else if (state == TObjectState.Delete)
     {
         collection.DeleteOne(query);
     }
     BroadcastTableChange(COLLECTION_NAME, pskIdentity.Identity);
 }
 private PSKIdentity LoadPSKIdentityFromDoc(BsonDocument doc)
 {
     PSKIdentity result = null;
     if (doc != null)
     {
         result = new PSKIdentity();
         result.Identity = BsonHelper.GetString(doc, "_id");
         result.Secret = BsonHelper.GetString(doc, "Secret");
         result.OrganisationID = BsonHelper.GetInt32(doc, "OrganisationID");
     }
     return result;
 }