コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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);
        }