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); }
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)))); }
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"); } }
/// <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()))); }
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)); }
// 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()); }); }
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 }