コード例 #1
0
        public override void Init()
        {
            auditFactory = AuditFactory.CreateSingleton();
            if (config.AuditConnectionString != null &&
                config.AuditConnectionString.Contains("DefaultEndpointsProtocol"))
            {
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "messageaudit"),
                                 AuditType.Message);
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "useraudit"), AuditType.User);
            }
            else if (config.AuditConnectionString != null)
            {
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.Message);
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.User);
            }

            messageAuditor = auditFactory.GetAuditor(AuditType.Message);
            userAuditor    = auditFactory.GetAuditor(AuditType.User);
            logger?.LogDebugAsync("MQTT adapter audit factory added.").GetAwaiter();

            forcePerReceiveAuthn   = Channel as UdpChannel != null;
            session.OnPublish     += Session_OnPublish;
            session.OnSubscribe   += Session_OnSubscribe;
            session.OnUnsubscribe += Session_OnUnsubscribe;
            session.OnDisconnect  += Session_OnDisconnect;
            ;
            session.OnConnect += Session_OnConnect;
            logger?.LogInformationAsync($"MQTT adpater on channel '{Channel.Id}' is initialized.").GetAwaiter();
        }
コード例 #2
0
        /// <summary>
        /// adds the new users and clients to userClients
        /// </summary>
        /// <param name="users"></param>
        /// <param name="clients"></param>
        private static void Allocate(IEnumerable <int> users, IEnumerable <int> clients, int actionUser)
        {
            using (EverestPortalContext context = new EverestPortalContext())
            {
                foreach (var userId in users)
                {
                    foreach (var clientId in clients)
                    {
                        if (!context.userClient.Any(x => (x.UserID == userId && x.ClientID == clientId)))//Checks If already User Assigned to Client
                        {
                            context.userClient.Add(new UserClient {
                                UserID = userId, ClientID = clientId
                            });
                        }
                    }
                    ;
                }
                context.SaveChanges();

                foreach (var userId in users)
                {
                    var       objClient = context.Users.SingleOrDefault(p => p.UserID == userId);
                    IAuditLog log       = AuditFactory.GetInstance(typeof(User).Name);
                    log.SaveVersion <User>(objClient, actionUser);
                }
            }
        }
コード例 #3
0
        public AzureQueueStorageSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            loadQueue = new ConcurrentQueue <EventMessage>();

            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            queue = nvc["queue"];

            string ttlString = nvc["ttl"];

            if (!string.IsNullOrEmpty(ttlString))
            {
                ttl = TimeSpan.Parse(ttlString);
            }

            Uri.TryCreate(metadata.SymmetricKey, UriKind.Absolute, out Uri sasUri);

            if (sasUri == null)
            {
                storage = QueueStorage.New(
                    $"DefaultEndpointsProtocol=https;AccountName={uri.Authority.Split(new[] { '.' })[0]};AccountKey={metadata.SymmetricKey};",
                    10000, 1000);
            }
            else
            {
                string connectionString = $"BlobEndpoint={queue};SharedAccessSignature={metadata.SymmetricKey}";
                storage = QueueStorage.New(connectionString, 1000, 5120000);
            }
        }
コード例 #4
0
        public WsnProtocolAdapter(PiraeusConfig config, GraphManager graphManager, IChannel channel, HttpContext context, ILog logger = null)
        {
            this.config       = config;
            this.graphManager = graphManager;
            this.Channel      = channel;
            this.logger       = logger;

            IdentityDecoder decoder = new IdentityDecoder(config.ClientIdentityNameClaimType, context, config.GetClientIndexes());

            identity     = decoder.Id;
            localIndexes = decoder.Indexes;

            MessageUri messageUri = new MessageUri(context.Request);

            this.contentType   = messageUri.ContentType;
            this.cacheKey      = messageUri.CacheKey;
            this.resource      = messageUri.Resource;
            this.subscriptions = messageUri.Subscriptions != null ? new List <string>(messageUri.Subscriptions) : null;
            this.indexes       = messageUri.Indexes != null ? new List <KeyValuePair <string, string> >(messageUri.Indexes) : null;

            auditFactory = AuditFactory.CreateSingleton();
            if (config.AuditConnectionString != null && config.AuditConnectionString.Contains("DefaultEndpointsProtocol"))
            {
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "messageaudit"), AuditType.Message);
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "useraudit"), AuditType.User);
            }
            else if (config.AuditConnectionString != null)
            {
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.Message);
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.User);
            }

            messageAuditor = auditFactory.GetAuditor(AuditType.Message);
            userAuditor    = auditFactory.GetAuditor(AuditType.User);
        }
コード例 #5
0
        public override void Init()
        {
            Trace.TraceInformation("{0} - MQTT Protocol Adapter intialization on Channel '{1}'.", DateTime.UtcNow.ToString("yyyy-MM-ddTHH-MM-ss.fffff"), Channel.Id);

            auditFactory = AuditFactory.CreateSingleton();
            if (config.AuditConnectionString != null && config.AuditConnectionString.Contains("DefaultEndpointsProtocol"))
            {
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "messageaudit"), AuditType.Message);
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "useraudit"), AuditType.User);
            }
            else if (config.AuditConnectionString != null)
            {
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.Message);
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.User);
            }

            messageAuditor = auditFactory.GetAuditor(AuditType.Message);
            userAuditor    = auditFactory.GetAuditor(AuditType.User);

            forcePerReceiveAuthn   = Channel as UdpChannel != null;
            session.OnPublish     += Session_OnPublish;
            session.OnSubscribe   += Session_OnSubscribe;
            session.OnUnsubscribe += Session_OnUnsubscribe;
            session.OnDisconnect  += Session_OnDisconnect;;
            session.OnConnect     += Session_OnConnect;
            logger?.LogInformation($"MQTT adpater on channel '{Channel.Id}' is initialized.");
        }
コード例 #6
0
        public EventGridSink(SubscriptionMetadata metadata)
            : base(metadata)
        {
            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            topicHostname = uri.Authority;
            topicKey      = metadata.SymmetricKey;
            string uriString = new Uri(metadata.SubscriptionUriString).ToString();

            resourceUriString = uriString.Replace("/" + uri.Segments[uri.Segments.Length - 1], "");
            if (!int.TryParse(nvc["clients"], out clientCount))
            {
                clientCount = 1;
            }

            ServiceClientCredentials credentials = new TopicCredentials(topicKey);

            clients = new EventGridClient[clientCount];
            for (int i = 0; i < clientCount; i++)
            {
                clients[i] = new EventGridClient(credentials);
            }
        }
コード例 #7
0
        public IoTHubSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);
            string keyName          = nvc["keyname"];

            deviceId      = nvc["deviceid"];
            methodName    = nvc["method"];
            propertyName  = nvc["propname"];
            propertyValue = nvc["propvalue"];

            if (string.IsNullOrEmpty(methodName))
            {
                deviceClient = DeviceClient.CreateFromConnectionString(string.Format(
                                                                           "HostName={0};DeviceId={1};SharedAccessKey={2}", uri.Authority, deviceId, metadata.SymmetricKey));
            }
            else
            {
                serviceClient = ServiceClient.CreateFromConnectionString(string.Format(
                                                                             "HostName={0};SharedAccessKeyName={1};SharedAccessKey={2}", uri.Authority, keyName,
                                                                             metadata.SymmetricKey));
            }
        }
コード例 #8
0
        public void DeleteUser(UserDTO uObj)
        {
            User Objuser     = dbContext.Users.SingleOrDefault(p => p.UserID == uObj.UserID);
            var  userRoles   = dbContext.userRole.Where(u => u.UserID == uObj.UserID);
            var  userClients = dbContext.userClient.Where(item => item.UserID == uObj.UserID).ToList();
            var  passwords   = dbContext.PasswordHistories.Where(item => item.UserID == uObj.UserID).ToList();
            var  tokens      = dbContext.ResetTokens.Where(item => item.UserID == uObj.UserID).ToList();

            using (var transaction = dbContext.Database.BeginTransaction())
            {
                //delete from UserClients
                dbContext.userClient.RemoveRange(userClients);
                //delete from UserRole
                dbContext.userRole.RemoveRange(userRoles);
                //delete password history entries
                dbContext.PasswordHistories.RemoveRange(passwords);
                //delete password history entries
                dbContext.ResetTokens.RemoveRange(tokens);
                //delete from Users
                dbContext.Users.Remove(Objuser);

                //add entry in audit
                IAuditLog log = AuditFactory.GetInstance(typeof(User).Name);
                log.SaveVersion <User>(Objuser, uObj.ActionUser);

                dbContext.SaveChanges();
                transaction.Commit();
            }
        }
コード例 #9
0
        private void InitializeAuditor(PiraeusConfig config)
        {
            if (!string.IsNullOrEmpty(config.AuditConnectionString) &&
                AuditFactory.CreateSingleton().GetAuditor(AuditType.User) == null)
            {
                auditFactory = AuditFactory.CreateSingleton();

                if (config.AuditConnectionString.ToLowerInvariant().Contains("AccountName="))
                {
                    auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "messageaudit"),
                                     AuditType.Message);
                    auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString, "useraudit"), AuditType.User);
                }
                else
                {
                    string pathString =
                        config.AuditConnectionString.LastIndexOf("/") == config.AuditConnectionString.Length - 1
                            ? config.AuditConnectionString
                            : config.AuditConnectionString + "/";
                    auditFactory.Add(new FileAuditor(string.Format($"{pathString}messageaudit.txt")),
                                     AuditType.Message);
                    auditFactory.Add(new FileAuditor(string.Format($"{pathString}useraudit.txt")), AuditType.User);
                }
            }
        }
コード例 #10
0
ファイル: RedisSink.cs プロジェクト: lulzzz/piraeus-2
        public RedisSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            tqueue = new TaskQueue();
            cqm    = new ConcurrentQueueManager();

            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);

            uri = new Uri(metadata.NotifyAddress);

            connectionString = $"{uri.Authority}:6380,password={metadata.SymmetricKey},ssl=True,abortConnect=False";

            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            if (!int.TryParse(nvc["db"], out dbNumber))
            {
                dbNumber = -1;
            }

            if (TimeSpan.TryParse(nvc["expiry"], out TimeSpan expiration))
            {
                expiry = expiration;
            }

            if (string.IsNullOrEmpty(metadata.ClaimKey))
            {
                cacheClaimType = metadata.ClaimKey;
            }

            connection = ConnectionMultiplexer.ConnectAsync(connectionString).GetAwaiter().GetResult();
            database   = connection.GetDatabase(dbNumber);
        }
コード例 #11
0
ファイル: WebHookSink.cs プロジェクト: lulzzz/piraeus-2
        public WebHookSink(SubscriptionMetadata metadata, ILog logger)
            : base(metadata, logger)
        {
            this.logger = logger;
            auditor     = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);

            address = new Uri(metadata.NotifyAddress).ToString();
        }
コード例 #12
0
        public void SubmitMarketbaseDetailsInformation(int MarketBaseId)
        {
            var       identity  = (ClaimsIdentity)User.Identity;
            int       uid       = Convert.ToInt32(identity.Claims.FirstOrDefault(c => c.Type == "userid").Value.ToString());
            var       objClient = _db.MarketBases.Where(u => u.Id == MarketBaseId).ToList <MarketBase>().FirstOrDefault();
            IAuditLog log       = AuditFactory.GetInstance(typeof(MarketBase).Name);

            log.SaveVersion <MarketBase>(objClient, uid);
        }
コード例 #13
0
        public static IAuditFactory CreateSingleton()
        {
            if (instance == null)
            {
                instance = new AuditFactory();
            }

            return(instance);
        }
コード例 #14
0
        public void UseCaseShouldCallGatewayToInsertAuditData()
        {
            var auditRequest = TestHelpers.CreateAuditRequestObject(_faker);

            _mockGateway.Setup(x => x.GenerateAdminAuditRecord(AuditFactory.ToAdminAuditRequest(auditRequest)));
            _classUnderTest.CreateAdminAudit(auditRequest);

            _mockGateway.Verify(x => x.GenerateAdminAuditRecord(It.IsAny <MyRentAccountAdminAudit>()), Times.Once);
        }
コード例 #15
0
        public void CanMapInputToGenerateResidentAuditRequestObject()
        {
            var auditRequest = TestHelpers.CreateResidentAuditRequestObject(_faker, true);

            var factoryResponse = AuditFactory.ToResidentAuditRequest(auditRequest);

            factoryResponse.hackney_accountnumber.Should().Be(auditRequest.RentAccountNumber);
            factoryResponse.hackney_postcode.Should().Be(auditRequest.PostCode);
        }
コード例 #16
0
        public async Task <GetAllAuditsResponse> GetAuditByUser(string userEmail)
        {
            var envRecordLimit = Environment.GetEnvironmentVariable("AUDIT_RECORD_LIMIT");
            int recordLimit    = envRecordLimit != null?int.Parse(envRecordLimit) : 20;

            var auditRecords = await _gateway.GetAuditByUser(userEmail.ToLower(), recordLimit);

            //TODO: check querstring values are correct
            return(AuditFactory.ToGetAllAuditsResponse(auditRecords));
        }
コード例 #17
0
 public HttpResponseMessage SubmitMarketBase(int[] MarketBaseIds, int userId)
 {
     foreach (int MarketBaseId in MarketBaseIds)
     {
         var       objClient = _db.MarketBases.Where(u => u.Id == MarketBaseId).ToList <MarketBase>().FirstOrDefault();
         IAuditLog log       = AuditFactory.GetInstance(typeof(MarketBase).Name);
         log.SaveVersion <MarketBase>(objClient, userId);
     }
     return(Request.CreateResponse(HttpStatusCode.OK));
 }
コード例 #18
0
        public void CanMapInputToGenerateResidentAuditRequestObjectForAnonUser()
        {
            var auditRequest = TestHelpers.CreateResidentAuditRequestObject(_faker, false);

            var factoryResponse = AuditFactory.ToResidentAuditRequest(auditRequest);

            factoryResponse.hackney_accountnumber.Should().Be(auditRequest.RentAccountNumber);
            factoryResponse.hackney_postcode.Should().Be(auditRequest.PostCode);
            factoryResponse.hackney_name.Should().Equals("Anonymous Rent Account Audit History");
        }
コード例 #19
0
 public CoapRequestDispatcher(CoapSession session, IChannel channel)
 {
     this.channel       = channel;
     this.session       = session;
     auditor            = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
     coapObserved       = new Dictionary <string, byte[]>();
     coapUnobserved     = new HashSet <string>();
     adapter            = new OrleansAdapter(session.Identity, channel.TypeId, "CoAP");
     adapter.OnObserve += Adapter_OnObserve;
     LoadDurablesAsync().LogExceptions();
 }
コード例 #20
0
        public async Task UseCaseShouldCallGatewayToInsertResidentAuditData()
        {
            var token        = "12345";
            var auditRequest = TestHelpers.CreateResidentAuditRequestObject(_faker, true);

            _mockCrmTokenGateway.Setup(x => x.GetCRMToken()).ReturnsAsync(token);
            _mockCrmGateway.Setup(x => x.GenerateResidentAuditRecord(AuditFactory.ToResidentAuditRequest(auditRequest), token)).ReturnsAsync(true);
            await _classUnderTest.CreateResidentAudit(auditRequest).ConfigureAwait(true);

            _mockCrmGateway.Verify(x => x.GenerateResidentAuditRecord(It.IsAny <MyRentAccountResidentAudit>(), token), Times.Once);
        }
コード例 #21
0
        public MachineLearningSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            this.logger = logger;
            auditor     = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri         = new Uri(metadata.NotifyAddress);
            token       = metadata.SymmetricKey;
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            outputPiSystem = nvc["r"];
        }
コード例 #22
0
        public HttpResponseMessage SubmitSubscription(int[] subscriptionIds, int UserId)
        {
            foreach (int subscriptionId in subscriptionIds)
            {
                var objClient = dbContext.subscription.Where(u => u.SubscriptionId == subscriptionId).ToList().FirstOrDefault();

                IAuditLog log = AuditFactory.GetInstance(typeof(Subscription).Name);
                log.SaveVersion <Subscription>(objClient, UserId);
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
コード例 #23
0
ファイル: EventGridSink.cs プロジェクト: lulzzz/piraeus-2
        public EventGridSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            topicHostname = uri.Authority;
            topicKey      = metadata.SymmetricKey;
            string uriString = new Uri(metadata.SubscriptionUriString).ToString();

            resourceUriString = uriString.Replace("/" + uri.Segments[^ 1], "");
コード例 #24
0
        public OrleansAdapter(string identity, string channelType, string protocolType, HttpContext context = null)
        {
            auditor           = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            this.identity     = identity;
            this.channelType  = channelType;
            this.protocolType = protocolType;
            this.context      = context;

            container          = new Dictionary <string, Tuple <string, string> >();
            ephemeralObservers = new Dictionary <string, IMessageObserver>();
            durableObservers   = new Dictionary <string, IMessageObserver>();
        }
コード例 #25
0
        public void CanMapInputToGenerateAdminAuditRequestObject()
        {
            var auditRequest = TestHelpers.CreateAuditRequestObject(_faker);

            var factoryResponse = AuditFactory.ToAdminAuditRequest(auditRequest);

            factoryResponse.User.Should().Be(auditRequest.User);
            factoryResponse.RentAccountNumber.Should().Be(auditRequest.RentAccountNumber);
            factoryResponse.AuditAction.Should().Be(auditRequest.AuditAction);
            factoryResponse.CSSOLogin.Should().Be(auditRequest.CSSOLogin.ToString());
            factoryResponse.TimeStamp.Should().NotBeNullOrEmpty();
        }
コード例 #26
0
        public ServiceBusTopicSink(SubscriptionMetadata metadata)
            : base(metadata)
        {
            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            keyName = nvc["keyname"];
            topic   = nvc["topic"];
            string symmetricKey = metadata.SymmetricKey;

            connectionString = String.Format("Endpoint=sb://{0}/;SharedAccessKeyName={1};SharedAccessKey={2}", uri.Authority, keyName, symmetricKey);
        }
コード例 #27
0
 public CoapRequestDispatcher(CoapSession session, IChannel channel, PiraeusConfig config, GraphManager graphManager, ILog logger = null)
 {
     this.channel       = channel;
     this.session       = session;
     this.config        = config;
     this.graphManager  = graphManager;
     this.logger        = logger;
     auditor            = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
     coapObserved       = new Dictionary <string, byte[]>();
     coapUnobserved     = new HashSet <string>();
     adapter            = new OrleansAdapter(session.Identity, channel.TypeId, "CoAP", graphManager, logger);
     adapter.OnObserve += Adapter_OnObserve;
     LoadDurablesAsync().LogExceptions(logger);
 }
コード例 #28
0
        public ServiceBusTopicSink(SubscriptionMetadata metadata, ILog logger = null)
            : base(metadata, logger)
        {
            auditor = AuditFactory.CreateSingleton().GetAuditor(AuditType.Message);
            uri     = new Uri(metadata.NotifyAddress);
            NameValueCollection nvc = HttpUtility.ParseQueryString(uri.Query);

            keyName = nvc["keyname"];
            topic   = nvc["topic"];
            string symmetricKey = metadata.SymmetricKey;

            connectionString =
                $"Endpoint=sb://{uri.Authority}/;SharedAccessKeyName={keyName};SharedAccessKey={symmetricKey}";
        }
コード例 #29
0
        public void CanMapAuditRecordsToGetAllAdminAuditsResponseObject()
        {
            var auditRecords = new List <AdminAuditRecord>
            {
                TestHelpers.CreateAuditRecordObject(_faker),
                TestHelpers.CreateAuditRecordObject(_faker)
            };

            var factoryResponse = AuditFactory.ToGetAllAuditsResponse(auditRecords);

            factoryResponse.Should().NotBeNull();
            factoryResponse.AuditRecords.Count.Should().Equals(auditRecords.Count);
            factoryResponse.AuditRecords[0].User.Should().Equals(auditRecords[0].User);
            factoryResponse.AuditRecords[0].CSSOLogin.ToString().Should().Equals(auditRecords[0].CSSOLogin);
        }
コード例 #30
0
        private void InitializeAuditor(PiraeusConfig config)
        {
            auditFactory = AuditFactory.CreateSingleton();
            if (config.AuditConnectionString != null && config.AuditConnectionString.Contains("DefaultEndpointsProtocol"))
            {
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString), AuditType.Message);
                auditFactory.Add(new AzureTableAuditor(config.AuditConnectionString), AuditType.User);
            }
            else if (config.AuditConnectionString != null)
            {
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.Message);
                auditFactory.Add(new FileAuditor(config.AuditConnectionString), AuditType.User);
            }

            userAuditor = auditFactory.GetAuditor(AuditType.User);
        }