diff --git a/Modules/AntiDLL-CS2-SimpleAdmin/AntiDLL_CS2_SimpleAdmin.cs b/Modules/AntiDLL-CS2-SimpleAdmin/AntiDLL_CS2_SimpleAdmin.cs index 2a13f11..6351588 100644 --- a/Modules/AntiDLL-CS2-SimpleAdmin/AntiDLL_CS2_SimpleAdmin.cs +++ b/Modules/AntiDLL-CS2-SimpleAdmin/AntiDLL_CS2_SimpleAdmin.cs @@ -10,14 +10,17 @@ using CounterStrikeSharp.API.Core; using CounterStrikeSharp.API.Core.Capabilities; using Microsoft.Extensions.Logging; using AntiDLL.API; +using System.Text.Json; +using System.Net.Http.Headers; public class PluginConfig : IBasePluginConfig { - [JsonPropertyName("ConfigVersion")] public int Version { get; set; } = 1; + [JsonPropertyName("ConfigVersion")] public int Version { get; set; } = 2; [JsonPropertyName("Reason")] public string Reason { get; set; } = "Invalid event detected!"; [JsonPropertyName("Duration")] public int Duration { get; set; } = 0; [JsonPropertyName("CommandToExecute")] public string CommandToExecute { get; set; } = "css_addban {steamid64} {duration} {reason}"; [JsonPropertyName("BanType")] public string BanType { get; set; } = "auto"; + [JsonPropertyName("WebhookUrl")] public string WebhookUrl { get; set; } = ""; } public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig @@ -29,7 +32,7 @@ public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig AntiDll { get; } = new("AntiDLL"); private static PluginCapability SimpleAdminApi { get; } = new("simpleadmin:api"); private static ICS2_SimpleAdminApi? _simpleAdminApi; - + public override string ModuleName => "AntiDLL [CS2-SimpleAdmin Module]"; public override string ModuleDescription => "AntiDLL module for CS2-SimpleAdmin integration"; public override string ModuleVersion => "1.0.1"; @@ -39,12 +42,12 @@ public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig(OnClientDisconnect); } - + public void OnConfigParsed(PluginConfig config) { Config = config; } - + public override void OnAllPluginsLoaded(bool hotReload) { try @@ -56,7 +59,7 @@ public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig OnDetection(player, eventName)); // return; // } - + Logger.LogInformation("Detected \"{eventName}\" for \"{player}({steamid})\"", eventName, player.PlayerName, player.SteamID.ToString()); + _ = SendWebhook(eventName, player.PlayerName, player.SteamID.ToString()); } private void PunishPlayer(CCSPlayerController player) { if (!_bannedPlayers.Add(player.Slot)) return; - + if (_banType == 1 && _simpleAdminApi != null) { _simpleAdminApi.IssuePenalty(new SteamID(player.SteamID), null, PenaltyType.Ban, Config.Reason, Config.Duration); @@ -143,11 +147,36 @@ public sealed class AntiDLL_CS2_SimpleAdmin : BasePlugin, IPluginConfig(OnClientDisconnect); - + var antidll = AntiDll.Get(); if (antidll != null) { antidll.OnDetection -= OnDetection; } } + + // Discord Webhook + private async Task SendWebhook(string eventName, string playerName, string steamid) + { + var webhookUrl = Config.WebhookUrl; + if (string.IsNullOrEmpty(webhookUrl)) + return; + + var payload = new + { + content = $"Detected \"{eventName}\" for \"{playerName}({steamid})\"" + }; + + var json = JsonSerializer.Serialize(payload); + + using var client = new HttpClient(); + using var content = new StringContent(json, System.Text.Encoding.UTF8, new MediaTypeHeaderValue("application/json")); + + var response = await client.PostAsync(webhookUrl, content); + + if (!response.IsSuccessStatusCode) + { + Logger.LogError("Failed to forward event to webhook: {response}", response.ReasonPhrase); + } + } } \ No newline at end of file