public ActionResult DetailIndex(long userId, long authorId, string key) { //TODO: проверить валидность ключа на md5, проверить что у пользователя есть репозиторий if (IdValidator.IsInvalid(authorId) || string.IsNullOrEmpty(key) || WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(RedirectToAction("Index")); } RemoveTaskCookie(); RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(authorId); UserTask userTask = userTasksRepository.GetTask(key, true); if (userTask == null) { return(RedirectToAction("Index")); } BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); userTask.SetIsBanned(isBanned); userTask.SetAllRights(userId == authorId); return(View("Detail", userTask)); }
public ActionResult Index(long userId) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(RedirectToAction("Index", RouteConfig.MAIN_CONTROLLER_NAME)); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(userId); List <UserTask> tasks = userTasksRepository.GetTasks(); HttpCookie newTaskCookie = HttpContext.Request.Cookies[TASK_COOKIE_NAME]; string taskId = null; if (newTaskCookie != null) { taskId = newTaskCookie.Value; RemoveTaskCookie(); } BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); var model = new UserTasksModel(taskId, tasks, isBanned); return(View(model)); }
private async Task <IEnumerable <BanView> > GetAvailibleBans() { if (_data == null) { return(new List <BanView>()); } using (var dc = new BanRepository()) { var dbBans = await dc.GetActivePermBansAsync(); var data = _data.ToList(); var res = dbBans.Where(x => data.All(y => y.GuidIp != x.GuidIp)).GroupBy(x => x.GuidIp) .Select(x => x.OrderByDescending(y => y.Reason).First()) .Select(x => new BanView { GuidIp = x.GuidIp, Minutesleft = x.MinutesLeft, Num = 0, PlayerComment = x.Player == null ? string.Empty : x.Player.Comment, Reason = x.Reason, PlayerName = x.Player == null ? string.Empty : x.Player.Name }) .ToList(); return(res); } }
public JsonResult AddComment(long userId, long authorId, string key, string comment, int lastShowedComment) { if (IdValidator.IsInvalid(authorId) || string.IsNullOrWhiteSpace(comment) || WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(JsonResultHelper.Error()); } if (comment.Length > UserTasksSettings.COMMENT_MAX_LENGTH) { return(JsonResultHelper.Error()); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); if (isBanned) { return(JsonResultHelper.Error()); } banHelper.RegisterEvent(SectionId.UserTasks, "AddComment", userId, banRepository); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(authorId); //TODO: получить пользователя и если у него указано имя, то заполнить Author comment = OurHtmlHelper.PrepareStringFromUser(comment); //TODO: дописывать (автор) к имени пользователя var taskComment = new TaskComment { Author = null, AuthorId = userId, CreationDate = DateTime.Now.Ticks, Text = comment }; bool isAddedComment = userTasksRepository.AddComment(key, taskComment); List <TaskComment> comments = userTasksRepository.GetComments(key, lastShowedComment); SendMail(string.Format("Пользователь {0} оставил комментарий к таску {1} автора {2}:\r\n{3}", userId, key, authorId, comment)); var htmlItems = new StringBuilder(); foreach (TaskComment newComment in comments) { string item = OurHtmlHelper.RenderRazorViewToString(ControllerContext, "PartialTaskComment", newComment); htmlItems.Insert(0, item); } return (JsonResultHelper.GetUnlimitedJsonResult( new { success = isAddedComment, newComments = htmlItems.ToString(), countNewComments = comments.Count })); }
public AkickModule(Client client, AKickModuleConfig config, BanRepository banRepository) { var channels = new List <AkickModuleChannel>(); foreach (var channelConfig in config.Channels) { channels.Add(new AkickModuleChannel(client, config, channelConfig, banRepository)); } this.Channels = channels; }
public void RegisterEvent(SectionId sectionId, string @event, long userId, BanRepository banRepository) { bool result = banRepository.RegisterEvent(sectionId, @event, userId, _userIp, _browserName); if (!result) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "BanHelper.RegisterEvent НЕ УДАЛОСЬ зарегистрировать событие {0} для секции {1} для пользователя {2}, {3}, {4}!", sectionId, @event, userId, _userIp, _browserName); } }
public List <KeyValuePair <Guid, String> > GetAllBans(String userEmail) { Guid userID = UserRepository.GetUserID(userEmail); var banList = BanRepository.GetUserBans(userID); return(banList .Select(s => new KeyValuePair <Guid, String>( s.ID, (String.Join("-", s.FromDate.ToString(Constants._dateFormat), s.ToDate.ToString(Constants._dateFormat)))) ) .ToList()); }
public JsonResult AddTask(long userId, string task) { if (IdValidator.IsInvalid(userId) || string.IsNullOrWhiteSpace(task) || WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(JsonResultHelper.Error()); } if (task.Length > UserTasksSettings.TASK_MAX_LENGTH) { return(JsonResultHelper.Error()); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); if (isBanned) { return(JsonResultHelper.Error()); } banHelper.RegisterEvent(SectionId.UserTasks, "AddTask", userId, banRepository); UserTasksRepository userTasksRepository = repositoryFactory.CreateUserRepository(userId); task = OurHtmlHelper.PrepareStringFromUser(task); //TODO: дописывать (автор) к имени пользователя var userTask = new UserTask { Author = null, AuthorId = userId, Text = task, CreationDate = DateTime.Now.Ticks, DeletedDate = 0 }; UserTask addedTask = userTasksRepository.AddTask(userTask); if (addedTask == null) { return(JsonResultHelper.Error()); } SendMail(string.Format("Пользователь {0} добавил таск {1}:\r\n{2}", userId, addedTask.Id, task)); HttpContext.Response.Cookies.Add(new HttpCookie(TASK_COOKIE_NAME, addedTask.Id)); string urlToRedirect = Url.Action("Index", RouteConfig.USER_TASKS_CONTROLLER, null, Request.Url.Scheme); return(JsonResultHelper.GetUnlimitedJsonResult(new { success = true, urlToRedirect })); }
internal AkickModuleChannel(Client client, AKickModuleConfig moduleConfig, AkickModuleChannelConfig config, BanRepository banRepository) { this.client = client ?? throw new ArgumentNullException(nameof(client)); this.opChannel = config.OpChannel ?? throw new ArgumentNullException(nameof(opChannel)); this.adminChannels = config.AdminChannels ?? throw new ArgumentNullException(nameof(adminChannels)); this.banRepository = banRepository ?? throw new ArgumentNullException(nameof(banRepository)); this.moduleConfig = moduleConfig ?? throw new ArgumentNullException(nameof(moduleConfig)); this.client.AddPrivateMessageHandler(this.banCommand); foreach (var adminChannel in this.adminChannels) { adminChannel.AddPrivateMessageHandler(this.banCommand); } }
/// <summary> /// Банит пользователя /// </summary> /// <example>localhost/StudyLanguages/Service/BanUser?userId=59&browser=Firefox&userIp=::1§ionId=UserTasks&banType=Today</example> /// <returns></returns> public EmptyResult BanUser() { string dirtyUserId = Request.Params["userId"]; string dirtySectionId = Request.Params["sectionId"]; string dirtyBanType = Request.Params["banType"]; string userIp = Request.Params["userIp"]; string browser = Request.Params["browser"]; string remoteClientIp = RemoteClientHelper.GetClientIpAddress(Request); if (string.IsNullOrEmpty(remoteClientIp) || !remoteClientIp.Equals("176.214.39.34")) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "ServiceController.BanUser кто-то попытался забанить пользователя!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}", dirtyUserId, dirtySectionId, dirtyBanType, userIp, browser); return(new EmptyResult()); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); BanRepository banRepository = repositoryFactory.GetBanRepository(); SectionId sectionId; BanType banType; long userId; if (!Enum.TryParse(dirtySectionId, true, out sectionId) || EnumValidator.IsInvalid(sectionId) || !Enum.TryParse(dirtyBanType, true, out banType) || EnumValidator.IsInvalid(banType) || !long.TryParse(dirtyUserId, out userId) || string.IsNullOrEmpty(userIp) || string.IsNullOrEmpty(browser)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "ServiceController.BanUser НЕ УДАЛОСЬ распрасить данные!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}", dirtyUserId, dirtySectionId, dirtyBanType, userIp, browser); return(new EmptyResult()); } if (!banRepository.AddBan(sectionId, banType, userId, userIp, browser)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "ServiceController.BanUser НЕ УДАЛОСЬ забанить пользователя!!! Настройки: userId={0}, sectionId={1}, banType={2}, userIp={3}, browser={4}", userId, sectionId, banType, userIp, browser); } return(new EmptyResult()); }
public ActionResult NewTaskIndex(long userId) { if (WebSettingsConfig.Instance.IsSectionForbidden(SectionId.UserTasks)) { return(RedirectToAction("Index")); } RepositoryFactory repositoryFactory = WebSettingsConfig.Instance.GetRepositoryFactory(); BanRepository banRepository = repositoryFactory.GetBanRepository(); var banHelper = new BanHelper(Request); bool isBanned = banHelper.IsBanned(SectionId.UserTasks, userId, banRepository); if (isBanned) { return(RedirectToAction("Index")); } return(View("AddNew")); }
public void DeleteBan(Guid banID) { BanRepository.ModifyBan(banID, false, null, null, null, null, null, true); }
protected void btnBan_Click(object sender, EventArgs e) { this._userID = new Guid(Request.QueryString["id"].ToString()); BanRepository.ModifyBan(null, true, this._userID, SessionHelper.UserID, tbxReason.Text , DateTime.Parse(tbxFromDate.Text), DateTime.Parse(tbxToDate.Text), false); }
static void Main(string[] args) { using (var connection = new ConnectionFactory().Create()) { var databaseProvider = new SqliteDatabaseProvider(connection); var migrator = new SimpleMigrator(Assembly.GetEntryAssembly(), databaseProvider, new ConsoleLogger()); migrator.Load(); if (args.ElementAtOrDefault(0) == "migrate") { var runner = new ConsoleRunner(migrator); runner.Run(args.Skip(1).ToArray()); return; } else { migrator.MigrateToLatest(); } } var clientConfig = new ClientConfig() { Server = "ircd.antonymale.co.uk", Port = 6667, IsSecure = false, Nickname = "guarddog", RealName = "guarddog", Username = "******", PermanentlyOp = true, Channels = { new ChannelConfig() { Name = "#test" }, new ChannelConfig() { Name = "#admin" }, }, NickservPassword = "******", RequireCommandPrefixInPrivmsg = true, }; using (var client = new Client(clientConfig)) { var banRepository = new BanRepository(); var aKickModuleConfig = new AKickModuleConfig() { Channels = { new AkickModuleChannelConfig() { OpChannel = client.Channels["#test"], AdminChannels ={ client.Channels["#admin"] }, }, } }; var akick = new AkickModule(client, aKickModuleConfig, banRepository); akick.Load(); client.Open(); Console.ReadLine(); } Console.WriteLine("Hello World!"); }
public bool IsBanned(SectionId sectionId, long userId, BanRepository banRepository) { bool isBanned = banRepository.IsUserBanned(sectionId, userId, _userIp, _browserName); return(isBanned); }
public Ban GetBan(Guid banID) { Ban ban = BanRepository.GetBanInfo(banID); return(ban); }
private bool RegisterBansInternal(IEnumerable <Ban> list, Guid currentServerId) { var bans = list.ToList(); if (!HaveChanges(bans, x => x.Num, (x, y) => x.GuidIp == y.GuidIp && x.Reason == y.Reason && x.Num == y.Num)) { return(false); } using (var banRepository = new BanRepository()) { var db = banRepository.GetActiveBans(currentServerId); var ids = bans.Select(x => x.GuidIp).ToList(); ids.AddRange(db.Select(x => x.GuidIp).ToList()); ids = ids.Distinct().ToList(); var players = _playerRepository.GetPlayers(ids.ToArray()); var bansToUpdate = new List <Arma3BEClient.Libs.ModelCompact.Ban>(); var bansToAdd = new List <Arma3BEClient.Libs.ModelCompact.Ban>(); var playersToUpdateComments = new Dictionary <Guid, string>(); foreach (var ban in db) { bool needUpdate = false; var actual = bans.FirstOrDefault(x => x.GuidIp == ban.GuidIp); if (actual == null) { ban.IsActive = false; needUpdate = true; } else { if (ban.MinutesLeft != actual.Minutesleft) { ban.MinutesLeft = actual.Minutesleft; needUpdate = true; } if (ban.PlayerId == null) { var player = players.FirstOrDefault(x => x.GUID == ban.GuidIp); if (player != null && !string.IsNullOrEmpty(ban.Reason)) { ban.PlayerId = player.Id; var comm = ban.Reason; var ind1 = comm.IndexOf('['); var ind2 = comm.LastIndexOf(']'); if (ind1 > -1 && ind2 > ind1) { comm = comm.Remove(ind1, ind2 - ind1 + 1).Trim(); } if (string.IsNullOrEmpty(player.Comment) || !player.Comment.Contains(comm)) { player.Comment = $"{player.Comment} | {comm}"; if (!playersToUpdateComments.ContainsKey(player.Id)) { playersToUpdateComments.Add(player.Id, player.Comment); } else { playersToUpdateComments[player.Id] = player.Comment; } } needUpdate = true; } } } if (needUpdate) { bansToUpdate.Add(ban); } } foreach (var ban in bans) { var bdb = db.FirstOrDefault(x => x.ServerId == currentServerId && x.GuidIp == ban.GuidIp); if (bdb == null) { var player = players.FirstOrDefault(x => x.GUID == ban.GuidIp); var newBan = new Arma3BEClient.Libs.ModelCompact.Ban { CreateDate = DateTime.UtcNow, GuidIp = ban.GuidIp, IsActive = true, Minutes = ban.Minutesleft, MinutesLeft = ban.Minutesleft, Num = ban.Num, Reason = ban.Reason, ServerId = currentServerId, PlayerId = player?.Id }; bansToAdd.Add(newBan); var comm = replace.Replace(ban.Reason, string.Empty).Trim(); if (player != null && (string.IsNullOrEmpty(player.Comment) || !player.Comment.Contains(comm))) { player.Comment = $"{player.Comment} | {comm}"; if (!playersToUpdateComments.ContainsKey(player.Id)) { playersToUpdateComments.Add(player.Id, player.Comment); } else { playersToUpdateComments[player.Id] = player.Comment; } } } } banRepository.AddOrUpdate(bansToAdd); banRepository.AddOrUpdate(bansToUpdate); _playerRepository.UpdateCommant(playersToUpdateComments); } return(true); }
public void UpdateBan(String banReason, DateTime toDate, Guid banID) { DateTime fefd = toDate; BanRepository.ModifyBan(banID, false, null, null, banReason, null, toDate, null); }