Exemplo n.º 1
0
        public DeviceSettings(RFIDReader rfid)
        {
            _Parser = new ConfigParser();
            _ReaderAPI = rfid;
            setDefaults();

            //Construct access/post filter with no limit
            _Range = new RssiRangeFilter();
            _AccessFilter = new AccessFilter();
            _AccessFilter.UseRSSIRangeFilter = true;
            _AccessFilter.RssiRangeFilter = _Range;
            _PostFilter = new PostFilter();
            _PostFilter.UseRSSIRangeFilter = true;
            _PostFilter.RssiRangeFilter = _Range;

            //Will trigger inventory with trigger button
            _TriggerInfo = new TriggerInfo();
            _TriggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
            _TriggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
            _TriggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
            _TriggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;

            //Read user membank sequence
            _Op = new TagAccess.Sequence.Operation();
            _Op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
            _Op.ReadAccessParams.MemoryBank = MEMORY_BANK.MEMORY_BANK_USER;
            _Op.ReadAccessParams.ByteCount = 4;
            _Op.ReadAccessParams.ByteOffset = 0;
            _Op.ReadAccessParams.AccessPassword = 0;
        }
Exemplo n.º 2
0
        public DeviceSettings(RFIDReader rfid)
        {
            _Parser    = new ConfigParser();
            _ReaderAPI = rfid;
            setDefaults();

            //Construct access/post filter with no limit
            _Range        = new RssiRangeFilter();
            _AccessFilter = new AccessFilter();
            _AccessFilter.UseRSSIRangeFilter = true;
            _AccessFilter.RssiRangeFilter    = _Range;
            _PostFilter = new PostFilter();
            _PostFilter.UseRSSIRangeFilter = true;
            _PostFilter.RssiRangeFilter    = _Range;

            //Will trigger inventory with trigger button
            _TriggerInfo = new TriggerInfo();
            _TriggerInfo.StartTrigger.Type = START_TRIGGER_TYPE.START_TRIGGER_TYPE_HANDHELD;
            _TriggerInfo.StartTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_PRESSED;
            _TriggerInfo.StopTrigger.Type = STOP_TRIGGER_TYPE.STOP_TRIGGER_TYPE_HANDHELD_WITH_TIMEOUT;
            _TriggerInfo.StopTrigger.Handheld.HandheldEvent = HANDHELD_TRIGGER_EVENT_TYPE.HANDHELD_TRIGGER_RELEASED;

            //Read user membank sequence
            _Op = new TagAccess.Sequence.Operation();
            _Op.AccessOperationCode             = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
            _Op.ReadAccessParams.MemoryBank     = MEMORY_BANK.MEMORY_BANK_USER;
            _Op.ReadAccessParams.ByteCount      = 4;
            _Op.ReadAccessParams.ByteOffset     = 0;
            _Op.ReadAccessParams.AccessPassword = 0;
        }
        public void CanFilter_TwoItems_WithStaticMethod()
        {
            ItemList items = Create4Items();

            IPrincipal user = CreatePrincipal("JustAnotherUser", "Role1");

            AccessFilter.Filter(items, user, security);

            Assert.AreEqual(2, items.Count);
        }
Exemplo n.º 4
0
        public virtual ItemFilter GetEditorFilter(IPrincipal user)
        {
            ItemFilter filter = new AccessFilter(user, securityManager);

            if (!settings.DisplayDataItems)
            {
                filter = new CompositeFilter(new PageFilter(), filter);
            }
            return(filter);
        }
        public IEnumerable <T> FindAllDescendentsOf <T>(ContentItem ancestor, AccessFilter accessFilter = null, PublishedFilter publishedFilter = null) where T : ContentItem
        {
            if (accessFilter == null && publishedFilter == null)
            {
                return(_itemFinder.AllOfType <T>().Where(i => i.AncestralTrail.StartsWith(ancestor.GetTrail())));
            }

            var filter = new AllFilter(accessFilter ?? new AccessFilter(), publishedFilter ?? new PublishedFilter());

            return(_itemFinder.AllOfType <T>().Where(i => i.AncestralTrail.StartsWith(ancestor.GetTrail())).Where(filter.Match));
        }
        public void CanFilter_TwoItems_WithClassInstance()
        {
            ItemList items = Create4Items();

            IPrincipal user = CreatePrincipal("JustAnotherUser", "Role1");

            mocks.ReplayAll();

            AccessFilter filter = new AccessFilter(user, security);

            filter.Filter(items);

            Assert.AreEqual(2, items.Count);
        }
        private static IEnumerable <T> InternalFindAllNonSiteDescendentsOfRoot <T>(AccessFilter accessFilter,
                                                                                   PublishedFilter publishedFilter, Func <T, bool> predicate = null)
            where T : ContentItem
        {
            var root     = FindLanguageIntersection();
            var prefixes = Finder().FindAllDescendentsOf <StartPage>(root).Select(i => i.GetTrail()).ToList();
            var result   = Finder().FindAllDescendentsOf <T>(root, accessFilter, publishedFilter);

            if (predicate != null)
            {
                result = result.Where(predicate);
            }

            // Exclude any items that are children of start pages.
            return(result.Where(r => !prefixes.Any(pref => r.AncestralTrail.StartsWith(pref))));
        }
Exemplo n.º 8
0
        private void accessFilterButton_Click(object sender, EventArgs e)
        {
            string exceptionMsg = "TagPatternA BitOffset:";
            try
            {
                if (m_AppForm.m_ReaderAPI.IsConnected && useAccessFilter_CB.Checked)
                {
                    if (null == m_AccessFilter)
                    {
                        m_AccessFilter = new Symbol.RFID3.AccessFilter();
                    }
                    m_UseAccessFilter = useAccessFilter_CB.Checked;
                    m_AccessFilter.MatchPattern = (MATCH_PATTERN)matchPattern_CB.SelectedIndex;

                    /*
                     *  Tag Pattern A
                     */
                    m_AccessFilter.TagPatternA.MemoryBank = (MEMORY_BANK)memBank_CB1.SelectedIndex;
                    m_AccessFilter.TagPatternA.BitOffset = ushort.Parse(offset_TB1.Text);

                    int maskLengthA = (tagMask_TB1.Text.Length / 2);
                    byte[] filterMaskA = new byte[maskLengthA];
                    exceptionMsg = "TagPatternA Mask:";
                    for (int index = 0; index < maskLengthA; index++)
                    {
                        filterMaskA[index] = byte.Parse(tagMask_TB1.Text.Substring(index * 2, 2),
                            System.Globalization.NumberStyles.HexNumber);
                    }
                    m_AccessFilter.TagPatternA.TagMask = filterMaskA;
                    m_AccessFilter.TagPatternA.TagMaskBitCount = (uint)maskLengthA * 8;

                    int dataLengthA = (MembankData_TB1.Text.Length / 2);
                    byte[] memoryBankDataA = new byte[dataLengthA];
                    exceptionMsg = "TagPatternA Pattern:";
                    for (int index = 0; index < dataLengthA; index++)
                    {
                        memoryBankDataA[index] = byte.Parse(MembankData_TB1.Text.Substring(index * 2, 2),
                            System.Globalization.NumberStyles.HexNumber);
                    }
                    m_AccessFilter.TagPatternA.TagPattern = memoryBankDataA;
                    m_AccessFilter.TagPatternA.TagPatternBitCount = (uint)dataLengthA * 8;

                    if (m_AccessFilter.MatchPattern != MATCH_PATTERN.A)
                    {
                        /*
                         *  Tag Pattern B
                         */
                        exceptionMsg = "TagPatternB BitOffset:";
                        m_AccessFilter.TagPatternB.MemoryBank = (MEMORY_BANK)memBank_CB2.SelectedIndex;
                        m_AccessFilter.TagPatternB.BitOffset = ushort.Parse(offset_TB2.Text);

                        int maskLengthB = (tagMask_TB2.Text.Length / 2);
                        byte[] filterMaskB = new byte[maskLengthB];
                        exceptionMsg = "TagPatternB Mask:";
                        for (int index = 0; index < maskLengthB; index++)
                        {
                            filterMaskB[index] = byte.Parse(tagMask_TB2.Text.Substring(index * 2, 2),
                                System.Globalization.NumberStyles.HexNumber);
                        }
                        m_AccessFilter.TagPatternB.TagMask = filterMaskB;
                        m_AccessFilter.TagPatternB.TagMaskBitCount = (uint)maskLengthB * 8;

                        int dataLengthB = (MembankData_TB2.Text.Length / 2);
                        byte[] memoryBankDataB = new byte[dataLengthB];
                        exceptionMsg = "TagPatternB Pattern:";
                        for (int index = 0; index < dataLengthB; index++)
                        {
                            memoryBankDataB[index] = byte.Parse(MembankData_TB2.Text.Substring(index * 2, 2),
                                System.Globalization.NumberStyles.HexNumber);
                        }
                        m_AccessFilter.TagPatternB.TagPattern = memoryBankDataB;
                        m_AccessFilter.TagPatternB.TagPatternBitCount = (uint)dataLengthB * 8;
                    }
                }
                else if (!useAccessFilter_CB.Checked)
                {
                    m_AccessFilter = null;
                }
                this.Close();
            }
            catch (Exception ex)
            {
                this.m_AppForm.notifyUser(exceptionMsg + ex.Message, "Access Filter");
            }
        }
Exemplo n.º 9
0
 /// <summary>Filters an item by access which returning null if the item is not accessible to the current user.</summary>
 /// <typeparam name="T">Generic argument to allow strongly typed returns.</typeparam>
 /// <param name="item">The item to filter.</param>
 /// <param name="user">The user to filter access for.</param>
 /// <returns>The item if it's accessible to the current user.</returns>
 public static T FilterByAccess <T>(this T item, IPrincipal user) where T : ContentItem
 {
     return(item.FilterWith(new AccessFilter(user, AccessFilter.CurrentSecurityManager())));
 }
Exemplo n.º 10
0
        public virtual ItemFilter GetEditorFilter(IPrincipal user)
        {
            ItemFilter filter = new AccessFilter(user, securityManager);

            return(filter);
        }
        public IEnumerable <T> FindAll <T>(AccessFilter accessFilter, PublishedFilter publishedFilter) where T : ContentItem
        {
            var filter = new AllFilter(accessFilter ?? new AccessFilter(), publishedFilter ?? new PublishedFilter());

            return(_itemFinder.AllOfType <T>().Where(filter.Match));
        }
Exemplo n.º 12
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            StartLogging();

            var connectionString = "mongodb://localhost";
            var client           = new MongoClient(connectionString);
            var db = client.GetDatabase("ItHappenedDB");

            services.AddOptions();
            services.AddMemoryCache();
            services.Configure <IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
            services.Configure <IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));
            services.AddSingleton <IIpPolicyStore, MemoryCacheIpPolicyStore>();
            services.AddSingleton <IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();

            var securityConfiguration = Configuration.GetSection("Security");

            var securitySettings = new SecuritySettings(securityConfiguration["Issue"],
                                                        securityConfiguration["AccessEncryptionKey"],
                                                        securityConfiguration.GetValue <TimeSpan>("AccessExpirationPeriod"),
                                                        securityConfiguration["RefreshEncryptionKey"],
                                                        securityConfiguration.GetValue <TimeSpan>("RefreshExpirationPeriod"));

            var jwtIssuer = new JwtIssuer(securitySettings);

            services.AddSingleton(securitySettings);
            services.AddSingleton <IJwtIssuer>(jwtIssuer);

            var accessTokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer           = false,
                ValidateAudience         = false,
                ValidateLifetime         = true,
                ValidateIssuerSigningKey = true,
                ClockSkew        = TimeSpan.Zero,
                IssuerSigningKey = new SymmetricSecurityKey(
                    Encoding.UTF8.GetBytes(securitySettings.AccessEncryptionKey))
            };

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = accessTokenValidationParameters;
            });

            services
            .AddAuthorization(options =>
            {
                options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
                                        .RequireAuthenticatedUser().Build();
            });

            var accessFilter = new AccessFilter(accessTokenValidationParameters);

            var refreshTokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer           = false,
                ValidateAudience         = false,
                ValidateLifetime         = true,
                ValidateIssuerSigningKey = true,
                IssuerSigningKey         = new SymmetricSecurityKey(
                    Encoding.UTF8.GetBytes(securitySettings.RefreshEncryptionKey)),
                ClockSkew = TimeSpan.Zero
            };

            var refreshFilter = new RefreshTokenFilter(refreshTokenValidationParameters);

            services.AddSingleton(refreshFilter);
            services.AddSingleton(accessFilter);


            var userRepository  = new UserRepository(db);
            var trackingManager = new TrackingManager(userRepository);

            services.AddSingleton <ITrackingManager>(trackingManager);
            services.AddMvc(o =>
            {
                o.Filters.Add(new ActionFilter());
                o.Filters.Add(new ExceptionFilter());
            });
        }
Exemplo n.º 13
0
        static async void Bot_OnMessage(object sender, MessageEventArgs e)
        {
            // UPDATE ADMINS
            ChatMember[] chatAdmins = await vozBot.GetChatAdministratorsAsync(e.Message.Chat);

            List <Admin> admins = new List <Admin>();

            for (int i = 0; i < chatAdmins.Length; i++)
            {
                admins.Add(new Admin {
                    UserId = chatAdmins[i].User.Id
                });
            }
            AccessAdmin.UpdateAdmin(admins);

            // WELCOME
            //-- Get welcome
            if (e.Message.NewChatMembers != null && e.Message.NewChatMembers.Length > 0)
            {
                Random rnd   = new Random();
                int    index = rnd.Next(AccessWelcome.GetWelcome().Count());
                await vozBot.SendTextMessageAsync(
                    chatId : e.Message.Chat,
                    text : MessageHelper.Unmasking(AccessWelcome.GetWelcome()[index].Message, e.Message.From.FirstName, e.Message.From.LastName, e.Message.From.Username, e.Message.Chat.Title)
                    );
            }
            //-- Set welcome
            if (e.Message.Text != null)
            {
                if (e.Message.Text.ToUpper().Contains("/WELCOME "))
                {
                    if (AccessAdmin.GetAdmin().Exists(x => x.UserId == e.Message.From.Id) && MessageHelper.Reform(e.Message.Text.Remove(0, 8)) != "")
                    {
                        AccessWelcome.AddWelcome(new Welcome()
                        {
                            Message = MessageHelper.Reform(e.Message.Text.Remove(0, 8))
                        });

                        await vozBot.SendTextMessageAsync(
                            chatId : e.Message.Chat,
                            text : "Xong!",
                            replyToMessageId : e.Message.MessageId
                            );
                    }
                    else
                    {
                        await vozBot.SendTextMessageAsync(
                            chatId : e.Message.Chat,
                            text : "Không được đâu bạn êy!",
                            replyToMessageId : e.Message.MessageId
                            );
                    }
                }
            }


            // NOTE



            // FILTER
            //-- Get filter
            if (e.Message.Text != null)
            {
                double max       = 0;
                Filter mostMatch = new Filter();
                foreach (var filter in AccessFilter.GetFilter())
                {
                    if (MessageHelper.MatchingRate(e.Message.Text, filter.Key) > max)
                    {
                        max       = MessageHelper.MatchingRate(e.Message.Text, filter.Key);
                        mostMatch = filter;
                    }
                }
                if (max > 0)
                {
                    await vozBot.SendTextMessageAsync(
                        chatId : e.Message.Chat,
                        text : MessageHelper.Unmasking(mostMatch.Message, e.Message.From.FirstName, e.Message.From.LastName, e.Message.From.Username, e.Message.Chat.Title),
                        replyToMessageId : e.Message.MessageId
                        );
                }
            }

            //-- Set filter
            if (e.Message.Text != null)
            {
                if (e.Message.Text.ToUpper().Contains("/FILTER "))
                {
                    if (AccessAdmin.GetAdmin().Exists(x => x.UserId == e.Message.From.Id) && MessageHelper.Reform(e.Message.Text.Remove(0, 7)) != "")
                    {
                        try
                        {
                            char          delim = '|';
                            List <string> keys  = MessageHelper.Reform(e.Message.Text.Remove(0, 7)).Split(delim, StringSplitOptions.RemoveEmptyEntries).ToList();
                            for (int i = 0; i < keys.Count; i++)
                            {
                                keys[i] = keys[i].Trim();
                            }
                            foreach (string key in keys)
                            {
                                if (key == "")
                                {
                                    keys.Remove(key);
                                }
                            }
                            Filter filter = new Filter {
                                Message = keys.Last()
                            };
                            keys.Remove(keys.Last());
                            filter.Key = keys;
                            AccessFilter.AddFilter(filter);

                            await vozBot.SendTextMessageAsync(
                                chatId : e.Message.Chat,
                                text : "Đã xong!",
                                replyToMessageId : e.Message.MessageId
                                );
                        }
                        catch (NullReferenceException)
                        {
                            await vozBot.SendTextMessageAsync(
                                chatId : e.Message.Chat,
                                text : "Lỗi rồi comrade ơi :(",
                                replyToMessageId : e.Message.MessageId
                                );
                        }
                    }
                }
            }


            // Bio
            //-- Get bio
            if (e.Message.Text != null)
            {
                if (e.Message.Text.ToUpper() == "/BIO")
                {
                    bool found = false;
                    if (e.Message.ReplyToMessage == null)
                    {
                        foreach (var bio in AccessBio.GetBio())
                        {
                            if (e.Message.From.Id == bio.UserId)
                            {
                                await vozBot.SendTextMessageAsync(
                                    chatId : e.Message.Chat,
                                    text : MessageHelper.Unmasking(bio.UserBio, e.Message.From.FirstName, e.Message.From.LastName, e.Message.From.Username, e.Message.Chat.Title),
                                    replyToMessageId : e.Message.MessageId
                                    );

                                found = true;
                            }
                        }
                        if (!found)
                        {
                            await vozBot.SendTextMessageAsync(
                                chatId : e.Message.Chat,
                                text : MessageHelper.Reform($"{e.Message.From.FirstName} {e.Message.From.LastName} chưa có cái bio nào cả. Comrade nào viết bio cho {e.Message.From.FirstName} {e.Message.From.LastName} đi mà..."),
                                replyToMessageId : e.Message.MessageId
                                );
                        }
                    }
                    else
                    {
                        foreach (var bio in AccessBio.GetBio())
                        {
                            if (e.Message.ReplyToMessage.From.Id == bio.UserId)
                            {
                                await vozBot.SendTextMessageAsync(
                                    chatId : e.Message.Chat,
                                    text : MessageHelper.Unmasking(bio.UserBio, e.Message.ReplyToMessage.From.FirstName, e.Message.ReplyToMessage.From.LastName, e.Message.ReplyToMessage.From.Username, e.Message.Chat.Title),
                                    replyToMessageId : e.Message.MessageId
                                    );

                                found = true;
                            }
                        }
                        if (!found)
                        {
                            await vozBot.SendTextMessageAsync(
                                chatId : e.Message.Chat,
                                text : MessageHelper.Reform($"{e.Message.ReplyToMessage.From.FirstName} {e.Message.ReplyToMessage.From.LastName} chưa có cái bio nào cả. Comrade nào viết bio cho {e.Message.ReplyToMessage.From.FirstName} {e.Message.ReplyToMessage.From.LastName} đi mà..."),
                                replyToMessageId : e.Message.MessageId
                                );
                        }
                    }
                }
            }

            //-- Set bio
            if (e.Message.Text != null)
            {
                if (e.Message.Text.ToUpper().Contains("/SETBIO "))
                {
                    if (e.Message.ReplyToMessage == null || e.Message.From.Id == e.Message.ReplyToMessage.From.Id)
                    {
                        await vozBot.SendTextMessageAsync(
                            chatId : e.Message.Chat,
                            text : "Tự trọng đê bạn êi!",
                            replyToMessageId : e.Message.MessageId
                            );
                    }
                    else if (AccessAdmin.GetAdmin().Exists(x => x.UserId == e.Message.From.Id) && MessageHelper.Reform(e.Message.Text.Remove(0, 7)) != "")
                    {
                        string biotext = MessageHelper.Reform($"{e.Message.ReplyToMessage.From.FirstName} {e.Message.ReplyToMessage.From.LastName}:\n") + MessageHelper.Reform(e.Message.Text.Remove(0, 7));
                        AccessBio.AddBio(new Bio()
                        {
                            UserId = e.Message.ReplyToMessage.From.Id, UserBio = biotext
                        });

                        await vozBot.SendTextMessageAsync(
                            chatId : e.Message.Chat,
                            text : MessageHelper.Reform($"Đã set bio cho {e.Message.ReplyToMessage.From.FirstName} {e.Message.ReplyToMessage.From.LastName}."),
                            replyToMessageId : e.Message.MessageId
                            );
                    }
                    else
                    {
                        await vozBot.SendTextMessageAsync(
                            chatId : e.Message.Chat,
                            text : "Không set được đâu bạn êy!",
                            replyToMessageId : e.Message.MessageId
                            );
                    }
                }
            }


            /// Private chat
        }