public void Handle(IVoltronSession session, ModerationRequest packet) { if (session.IsAnonymous) { return; } using (var da = DAFactory.Get) { var user = da.Users.GetById(session.UserId); var mod = user.is_moderator; var admin = user.is_admin; if (!(mod || admin)) { return; } switch (packet.Type) { case ModerationRequestType.IPBAN_USER: case ModerationRequestType.BAN_USER: case ModerationRequestType.KICK_USER: var targetAvatar = packet.EntityId; if (packet.Type == ModerationRequestType.BAN_USER || packet.Type == ModerationRequestType.IPBAN_USER) { var ava = da.Avatars.Get(packet.EntityId); if (ava != null) { var theiruser = da.Users.GetById(ava.user_id); if (theiruser != null && !(theiruser.is_admin || theiruser.is_moderator)) { FSO.Server.Api.Api.INSTANCE.SendBanMail(theiruser.username, theiruser.email, 0); // Need to handle end_date in the future da.Users.UpdateBanned(theiruser.user_id, true); if (packet.Type == ModerationRequestType.IPBAN_USER && theiruser.last_ip != "127.0.0.1" && theiruser.last_ip != "::1") { da.Bans.Add(theiruser.last_ip, theiruser.user_id, "Banned from ingame", 0, theiruser.client_id); } } else { return; } } } Sessions.GetByAvatarId(targetAvatar)?.Close(); break; } } }
public async Task <bool> SetModerationState(long amId, string version, Amsv1MaterialData materialData) { var uri = _baseUri + $"/api/{_apiVersion}/am/{amId}/version/{version}/moderation"; try { var status = materialData.ModerationState; if (_moderationStateMap.TryGetValue(materialData.ModerationState, out var mappedStatus)) { status = mappedStatus; } var request = new ModerationRequest { Status = status, Comment = materialData.ModerationComment ?? string.Empty }; var reqContent = new StringContent(request.ToJson(), Encoding.UTF8, "application/json"); using (var response = await _httpClient.PutAsync(uri, reqContent)) { var content = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { if (response.StatusCode == HttpStatusCode.PreconditionFailed) { _logger.Error("[MODERATION_FAIL] Unable to add moderation to material {amid} uuid {uuid} firm {firmid}. Moderation info: {info}, Response: {content}", amId, materialData.Uuid, materialData.FirmId, request, content); } else { response.EnsureSuccessStatusCode(); } } _logger.Information("[MODERATION_SUCCESS] Ad material {uuid} {firmid} successfully moderated with state: {state}, comment: {comment}", materialData.Uuid, materialData.FirmId, materialData.ModerationState, materialData.ModerationComment); return(response.IsSuccessStatusCode); } } catch (Exception ex) { _logger.Error(ex, "Exception occured while moderating material {amid}", amId); throw; } }
public void Handle(IVoltronSession session, ModerationRequest packet) { if (session.IsAnonymous) { return; } using (var da = DAFactory.Get()) { var user = da.Users.GetById(session.UserId); var mod = user.is_moderator; var admin = user.is_admin; if (!(mod || admin)) { return; } switch (packet.Type) { case ModerationRequestType.IPBAN_USER: case ModerationRequestType.BAN_USER: case ModerationRequestType.KICK_USER: var targetAvatar = packet.EntityId; if (packet.Type == ModerationRequestType.BAN_USER || packet.Type == ModerationRequestType.IPBAN_USER) { var ava = da.Avatars.Get(packet.EntityId); if (ava != null) { var theiruser = da.Users.GetById(ava.user_id); if (theiruser != null && !(theiruser.is_admin || theiruser.is_moderator)) { FSO.Server.Api.Api.INSTANCE?.SendBanMail(theiruser.username, theiruser.email, 0); // Need to handle end_date in the future da.Users.UpdateBanned(theiruser.user_id, true); if (packet.Type == ModerationRequestType.IPBAN_USER && theiruser.last_ip != "127.0.0.1" && theiruser.last_ip != "::1") { da.Bans.Add(theiruser.last_ip, theiruser.user_id, "Banned from ingame", 0, theiruser.client_id); } } else { return; } } } Sessions.GetByAvatarId(targetAvatar)?.Close(); break; case ModerationRequestType.CHANGE_MENTOR_STATUS: { var tAvatar = packet.EntityId; var ava = da.Avatars.Get(packet.EntityId); if (ava != null) { var theiruser = da.Users.GetById(ava.user_id); if (theiruser != null) // should admins also be able to be mentors? right now there's no rule against it { var newvalue = !da.Users.GetMentorStatus(ava.user_id); da.Users.SetMentorStatus(theiruser.user_id, newvalue); // toggle the setting held for the current avatar } } } break; } } }