public OM2MResponseStatusCode DeregisterAE(string aeId) { try { using (var db = new OM2MDbContext()) { OM2MAEEntity data; try { data = db.Resources.Single(x => x is OM2MAEEntity && ((OM2MAEEntity)x).AEId == aeId) as OM2MAEEntity; } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } db.Resources.Remove(data); db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Deleted); }
public OM2MResponseStatusCode RefreshAEAssociationWithServiceSubscription(string aeId, string serviceSubscriptionId) { try { using (var db = new OM2MDbContext()) { Model.OM2MDbServiceSubscription data; try { data = db.ServiceSubscriptions.Single(x => x.AEId == aeId && x.ServiceSubscriptionId == serviceSubscriptionId); } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Updated); }
public OM2MResponseStatusCode RefreshAERegistration(string aeId, string pointOfAccess, DateTime expirationTime, OM2MSchedule reachabilitySchedule) { try { using (var db = new OM2MDbContext()) { OM2MAEEntity data; try { data = db.Resources.Single(x => x is OM2MAEEntity && x.ResourceId == aeId) as OM2MAEEntity; } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Updated); }
public OM2MResponseStatusCode DeleteRoleFromM2MService(string serviceId, string[] serviceRoleIds) { if (serviceId == null) { throw new ArgumentNullException(nameof(serviceId)); } if (serviceRoleIds == null) { throw new ArgumentNullException(nameof(serviceRoleIds)); } try { using (var db = new OM2MDbContext()) { Model.OM2MServiceEntity data; // Get service try { data = db.Services.Single(x => x.ServiceId == serviceId); } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } // Check roleId existing foreach (var roleId in serviceRoleIds) { if (!data.ServiceRoleIds.Contains(roleId)) { return(OM2MResponseStatusCode.NoMembers); } } // Remove roleIds foreach (var roleId in serviceRoleIds) { data.ServiceRoleIds.Remove(roleId); } db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Ok); }
public OM2MResponseStatusCode AddRoleToM2MService(string serviceId, string[] serviceRoleIds) { if (serviceId == null) { throw new ArgumentNullException(nameof(serviceId)); } if (serviceRoleIds == null) { throw new ArgumentNullException(nameof(serviceRoleIds)); } try { using (var db = new OM2MDbContext()) { Model.OM2MServiceEntity data; try { data = db.Services.Single(x => x.ServiceId == serviceId); } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } foreach (var roleId in serviceRoleIds) { if (!data.ServiceRoleIds.Contains(roleId)) { data.ServiceRoleIds.Add(roleId); } } db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Ok); }
private void InitCseBase() { var cseConfig = CseConfig; using (var db = new OM2MDbContext()) { var cseBaseEntity = new OM2MCseBaseEntity(); var query = db.Resources.OfType <OM2MAccessControlPolicyEntity>(); var acpEntity = query.First(); cseBaseEntity.AccessControlPolicyIds.Add(acpEntity.ResourceId); cseBaseEntity.Resources.Add(acpEntity); cseBaseEntity.CreationTime = OM2MTimeStamp.NowTimeStamp; cseBaseEntity.LastModifiedTime = cseBaseEntity.CreationTime; cseBaseEntity.CseId = cseConfig.CseBaseId; cseBaseEntity.CseType = (int)cseConfig.CseType; cseBaseEntity.ResourceName = cseConfig.CseBaseName; cseBaseEntity.ResourceId = $"/{cseConfig.CseBaseId}"; cseBaseEntity.ResourceType = (int)OM2MResourceType.CSEBase; cseBaseEntity.HierarchicalUri = $"/{cseConfig.CseBaseId}/{cseConfig.CseBaseName}"; cseBaseEntity.SupportedResourceType.AddRange(new OM2MResourceType[] { OM2MResourceType.AccessControlPolicy, OM2MResourceType.AE, OM2MResourceType.Container, OM2MResourceType.ContentInstance, OM2MResourceType.CSEBase, OM2MResourceType.Group, OM2MResourceType.Node, OM2MResourceType.PollingChannel, OM2MResourceType.RemoteCSE, OM2MResourceType.Request, OM2MResourceType.Subscription }); cseBaseEntity.PointOfAccess.Add("http://localhost:5000/"); db.Resources.Add(cseBaseEntity); var uriMapEntity = new OM2MUriMapEntity(); uriMapEntity.Uri = cseBaseEntity.HierarchicalUri; uriMapEntity.ResourceId = cseBaseEntity.ResourceId; db.UriMaps.Add(uriMapEntity); db.SaveChanges(); } }
public OM2MResponseStatusCode CreateM2MService(string name, string description, out string serviceId) { if (name == null) { throw new ArgumentNullException(nameof(name)); } string serviceId_; serviceId = null; serviceId_ = Guid.NewGuid().ToString(); try { using (var db = new OM2MDbContext()) { var temp = db.Services.Count(x => x.Name == name); if (temp != 0) { return(OM2MResponseStatusCode.AlreadyExists); } var data = new Model.OM2MServiceEntity(); data.Name = name; data.Description = description; data.ServiceId = serviceId_; db.Services.Add(data); db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } serviceId = serviceId_; return(OM2MResponseStatusCode.Created); }
public OM2MResponseStatusCode AssociateAEWithServiceSubscription(string aeId, string credentialId, string applicationId, out string serviceSubscriptionId) { string serviceSubscriptionId_ = Guid.NewGuid().ToString(); try { using (var db = new OM2MDbContext()) { // Check duplicate while (true) { var temp = db.ServiceSubscriptions.Count(x => x.ServiceSubscriptionId == serviceSubscriptionId_); if (temp == 0) { break; } serviceSubscriptionId_ = Guid.NewGuid().ToString(); } var data = new Model.OM2MDbServiceSubscription(); data.ServiceSubscriptionId = serviceSubscriptionId_; data.AEId = aeId; data.CredentialId = credentialId; data.ApplicationId = applicationId; db.ServiceSubscriptions.Add(data); db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); serviceSubscriptionId = null; return(OM2MResponseStatusCode.InternalServerError); } serviceSubscriptionId = serviceSubscriptionId_; return(OM2MResponseStatusCode.Created); }
private void InitACP() { using (var db = new OM2MDbContext()) { var cseConfig = CseConfig; var acpId = db.GenerateId(); var acpEntity = new OM2MAccessControlPolicyEntity(); acpEntity.ParentId = $"/{cseConfig.CseBaseId}"; acpEntity.CreationTime = OM2MTimeStamp.NowTimeStamp; acpEntity.LastModifiedTime = acpEntity.CreationTime; acpEntity.ResourceId = $"/{cseConfig.CseBaseId}/acp-{acpId}"; acpEntity.ResourceName = CseConfig.AdminAcpName; acpEntity.ResourceType = (int)OM2MResourceType.AccessControlPolicy; acpEntity.HierarchicalUri = $"/{cseConfig.CseBaseId}/{cseConfig.CseBaseName}/{acpEntity.ResourceName}"; var ruleEntity = new OM2MAccessControlRuleEntity(); ruleEntity.AccessControlOriginators.Add(CseConfig.AdminOriginator); ruleEntity.AccessControlOperations = 63; acpEntity.SelfPrivileges.Add(ruleEntity); ruleEntity = new OM2MAccessControlRuleEntity(); ruleEntity.AccessControlOriginators.Add(CseConfig.AdminOriginator); ruleEntity.AccessControlOriginators.Add($"/{cseConfig.CseBaseId}"); ruleEntity.AccessControlOperations = 63; acpEntity.Privileges.Add(ruleEntity); db.Resources.Add(acpEntity); var uriMapEntity = new OM2MUriMapEntity(); uriMapEntity.Uri = acpEntity.HierarchicalUri; uriMapEntity.ResourceId = acpEntity.ResourceId; db.UriMaps.Add(uriMapEntity); db.SaveChanges(); } }
public OM2MResponseStatusCode DeleteM2MService(string serviceId) { if (serviceId == null) { throw new ArgumentNullException(nameof(serviceId)); } try { using (var db = new OM2MDbContext()) { Model.OM2MServiceEntity data; try { data = db.Services.Single(x => x.ServiceId == serviceId); } catch (InvalidOperationException ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.NotFound); } db.Services.Remove(data); db.SaveChanges(); } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } return(OM2MResponseStatusCode.Deleted); }
public OM2MResponseStatusCode RegisterAE(string pointOfAccess, string applicationId, string credentialId, DateTime exprirationTime, OM2MSchedule reachabilitySchedule, ref string aeId) { if (applicationId == null) { throw new ArgumentNullException(nameof(applicationId)); } if (aeId != null) { if (aeId.Length < 2 && aeId[0] != 'S') { throw new ArgumentException(nameof(aeId)); } } string serviceSubscriptionId; string aeId_ = aeId; int dummyId = 0; using (var db = new OM2MDbContext()) { db.Database.BeginTransaction(); if (aeId_ == null) { var id = db.GenerateId(); aeId_ = $"C{dummyId}"; } if (ServiceSubscription.AssociateAEWithServiceSubscription(aeId_, credentialId, applicationId, out serviceSubscriptionId) != OM2MResponseStatusCode.Ok) { db.Database.RollbackTransaction(); return(OM2MResponseStatusCode.InternalServerError); } try { // Check duplicate var query = db.Resources.Where(x => x.ResourceId == aeId_); if (query.Count() == 0) { var data = query.First() as OM2MAEEntity; data.AEId = aeId_; data.AppId = applicationId; //data.CredentialId = credentialId; //data.ExpirationTime = exprirationTime; } else { var data = new OM2MAEEntity(); data.AEId = aeId_; data.AppId = applicationId; //data.CredentialId = credentialId; //data.ExpirationTime = exprirationTime; db.Resources.Add(data); } db.SaveChanges(); db.Database.CommitTransaction(); } catch (Exception ex) { db.Database.RollbackTransaction(); Debug.WriteLine(ex.ToString()); return(OM2MResponseStatusCode.InternalServerError); } aeId = aeId_; } return(OM2MResponseStatusCode.Created); }