An unhandled exception occurs when running a LINQ query that includes DateTime.UtcNow - TimeSpan as a condition in Where(). EF Core cannot translate this expression into SQL.
This commit updates the cheat detection logic to allow ignoring specific weapons for DetectionType.Bone.
- Modified Detection.cs to include the shouldIgnoreDetection check for DetectionType.Bone, similar to how it's handled for Recoil and Chest detection types.
- Updated AnticheatConfiguration.cs to add an entry for DetectionType.Bone under Game.IW4 in the IgnoredDetectionSpecification, allowing you to configure weapon regexes to ignore for this detection type.
* Feature: Add ResolvedExternalIPAddress to API and Master Communication
This commit introduces the `ResolvedExternalIPAddress` property to enhance IP address reporting.
1. **Server API (`WebfrontCore/Controllers/API/Server.cs`):**
The `ResolvedExternalIPAddress` property has been added to the JSON
responses for the `/api/server` endpoints. This property is nullable
and contains the IPv4 string value of the manager's external IP address
if the server's resolved IP endpoint is an internal address. Otherwise,
it is null.
2. **Master Server Communication (`MasterCommunication.cs` and `ApiServer.cs`):**
- The `ApiServer` DTO (in `Application/API/Master/ApiServer.cs`) now
includes the `ResolvedExternalIPAddress` property (serialized as
`resolved_external_ip_address`).
- The `UploadStatus` method in `Application/Misc/MasterCommunication.cs`
now populates this property for each server being reported to the
master server, using the same logic (external IP if server's own
resolved IP is internal).
This provides more comprehensive IP address information both through the
web API and to the master server.
---------
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
* Update tempban command to use minutes instead of hours
The duration calculation for tempbans now uses minutes rather than hours for greater precision. This change ensures better alignment with user expectations and configurations in smaller timeframes.
* Update regex patterns to enforce stricter input validation
Adjusted regex in `ParseTimespan` and `TempBanCommand` to ensure input starts with 1-5 numeric characters, improving validation. This prevents malformed user inputs and enhances overall command reliability.
* \w includes digits. Who knew.
* chore: fix T5 parser for the upcoming update
* chore: add credits
* chore: fix credits for consistency elsewhere...
Since I'm already here
* fix credits here
* andn here
The conditional statement in the event parsing logic was incorrect, causing all events to be parsed regardless of the ignore flag. This change corrects the logic to ensure that only non-ignored events are parsed.
Checks if it's installed and its version before trying to install/update it. Current behaviour reinstalls the tool on each rebuild. Reduces build time from 53s to 17s in testing.
* Refactor PromptClientInput to accept string array for prompt
Updated the `PromptClientInput` method to accept a string array instead of a single string. This change ensures that multiple prompts can be handled, improving input flexibility and client communication. Additionally, modified related method calls to maintain consistency with the new input type.
* Refactor PromptClientInput to support parsed result and errors
Updated PromptClientInput to handle parsed input results and return error messages instead of raw strings. Introduced ParsedInputResult<TResult> class to encapsulate parsing results and errors, enhancing client validation and feedback mechanism.
Update tooltip text generation in MetaRegistration
The tooltip text generation in MetaRegistration.cs is updated to use Humanizer's 'HumanizeForCurrentCulture' method with 'TimeUnit.Hour' as maxUnit. This change leverages the Humanizer library to provide more precise and localized time formatting.
A using statement was added to ensure proper disposal of the CancellationTokenSource. Additional error handling was also included to catch an OperationCanceledException and prevent it from causing unintended side effects. The client response is now properly disposed in the finally block.
A new utility method named 'PromptClientInput' has been added in the Utilities.cs file. This method accepts client, prompt, and validator as inputs and allows taking action based on client responses. Included subscription and unsubscription to the 'ClientMessaged' game event, and handling of cancellation token to control the execution flow.