454 lines
14 KiB
Markdown
454 lines
14 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## Upcoming - 0000-00-00
|
|
|
|
###### Diffs
|
|
|
|
- [AMWD.Common](https://git.am-wd.de/AM.WD/common/compare/v2.0.1...HEAD)
|
|
- [AMWD.Common.AspNetCore](https://git.am-wd.de/AM.WD/common/compare/asp/v3.0.0...HEAD)
|
|
- [AMWD.Common.EntityFrameworkCore](https://git.am-wd.de/AM.WD/common/compare/efc/v3.0.0...HEAD)
|
|
- [AMWD.Common.MessagePack](https://git.am-wd.de/AM.WD/common/compare/main...HEAD)
|
|
- [AMWD.Common.Test](https://git.am-wd.de/AM.WD/common/compare/test/v2.1.1...HEAD)
|
|
|
|
### Added
|
|
|
|
- `ArReader` and `ArWriter` for Unix archives
|
|
- `TarReader` and `TarWriter` for TAR archives
|
|
- `.AddRange()` for collections
|
|
- `.AddIfNotNull()` for collections
|
|
- `DomainComparer` ordering alphabetically from TLD to sub-domain
|
|
- `IPAddressComparer` able to compare IPv4 and IPv6
|
|
- `VersionStringComparer` to compare version strings (SemVer)
|
|
|
|
### Changed
|
|
|
|
- Solution restructured to use multiple test projects
|
|
- Optimized for C# 12
|
|
- `IPNetwork` is used from (as `Microsoft.AspNetCore.HttpOverrides` is tagged as "out of support"):
|
|
- .NET Standard 2.0 and .NET 6.0: `Microsoft.AspNetCore.HttpOverrides.IPNetwork`
|
|
- .NET 8.0: `System.Net.IPNetwork`
|
|
- Moved `MessagePack` formatter extensions to own package `AMWD.Common.MessagePack`
|
|
- `GetAlignedInterval()` (without Local/Utc) is now public accessible
|
|
|
|
### Removed
|
|
|
|
- `GetDisplayName` for enum values was removed
|
|
|
|
|
|
## asp/v3.0.0, efc/v3.0.0 - 2023-12-28
|
|
|
|
###### Diffs
|
|
|
|
- [AMWD.Common.AspNetCore](https://git.am-wd.de/AM.WD/common/compare/asp/v2.2.0...asp/v3.0.0)
|
|
- [AMWD.Common.EntityFrameworkCore](https://git.am-wd.de/AM.WD/common/compare/efc/v2.0.1...efc/v3.0.0)
|
|
|
|
### Added
|
|
|
|
- Support for .NET 8.0 LTS
|
|
|
|
### Changed
|
|
|
|
- Renamed all private members to start with an underscore
|
|
- Split "Add `DateOnly` and `TimeOnly` converters" into two extension methods
|
|
|
|
|
|
## asp/v2.2.0 - 2023-12-05
|
|
|
|
###### Diffs
|
|
|
|
- [AMWD.Common.AspNetCore](https://git.am-wd.de/AM.WD/common/compare/asp/v2.1.0...asp/v2.2.0)
|
|
|
|
### Changed
|
|
|
|
- Using `AddHostedService<>()` with "implementation factory" for `AddSingletonHostedService<>()` to resove singleton instance
|
|
- `GetRemoteIpAddress()` converts a mixed IPv4 address on IPv6 (e.g. `::ffff:127.0.0.1`) to a clean IPv4 address (e.g. `127.0.0.1`)
|
|
|
|
### Removed
|
|
|
|
- Removed `BackgroundServiceStarter`
|
|
|
|
|
|
## v2.0.1, asp/v2.1.0, efc/v2.0.1, test/v2.1.1 - 2023-11-23
|
|
|
|
###### Diffs
|
|
|
|
- [AMWD.Common](https://git.am-wd.de/AM.WD/common/compare/v2.0.0...v2.0.1)
|
|
- [AMWD.Common.AspNetCore](https://git.am-wd.de/AM.WD/common/compare/asp/v2.0.0...asp/v2.1.0)
|
|
- [AMWD.Common.EntityFrameworkCore](https://git.am-wd.de/AM.WD/common/compare/efc/v2.0.0...efc/v2.0.1)
|
|
- [AMWD.Common.Test](https://git.am-wd.de/AM.WD/common/compare/test/v2.1.0...test/v2.1.1)
|
|
|
|
### Added
|
|
|
|
- Added `ConfigureAwait(false)` to async calls where appropriate
|
|
- Added localhost and private IPv6 subnet to `UseProxyHosting()`
|
|
|
|
### Changed
|
|
|
|
- Changed order of header evaluation for remote IP address parsing: `Cf-Connecting-Ip`, `X-Real-IP`, `X-Forwarded-For`
|
|
|
|
### Fixed
|
|
|
|
- `GetRemoteIpAddress()` is able to get address when multiple proxies are used
|
|
|
|
|
|
## test/v2.1.0 - 2023-10-13
|
|
|
|
###### Diffs
|
|
|
|
- [AMWD.Common.Test](https://git.am-wd.de/AM.WD/common/compare/test/v2.0.0...test/v2.1.0)
|
|
|
|
### Added
|
|
|
|
- Added `SnapshotAssert` for better UnitTesting
|
|
|
|
### Changed
|
|
|
|
- Moved `AMWD.Common.Moq` to `AMWD.Common.Test`
|
|
|
|
|
|
## [v2.0.0](https://git.am-wd.de/AM.WD/common/compare/v1.13.0...v2.0.0) - 2023-08-08
|
|
|
|
### Added
|
|
|
|
- `CommandLineParser` as alternative to the `ConfigurationBuilder.AddCommandLine` from Microsoft
|
|
|
|
### Removed
|
|
|
|
- Support for .NET Core 3.1
|
|
|
|
|
|
## [v1.13.0](https://git.am-wd.de/AM.WD/common/compare/v1.12.0...v1.13.0) - 2023-06-27
|
|
|
|
### Added
|
|
|
|
- `ProtectedPathMiddleware` to secure even static file paths
|
|
|
|
### Changed
|
|
|
|
- Moved `BasicAuthentication`* into sub-namespace `Security`
|
|
|
|
|
|
## [v1.12.0](https://git.am-wd.de/AM.WD/common/compare/v1.11.1...v1.12.0) - 2023-06-01
|
|
|
|
### Changed
|
|
|
|
- Renamed `IPBlacklistAttribute` to `IPBlockListAttribute`
|
|
- Renamed `IPWhitelistAttribute` to `IPAllowListAttribute`
|
|
- `HttpContextExtensions`
|
|
- `GetAntiforgeryToken()` now returns the header name also
|
|
- `GetRemoteIpAddress()` checks following additional headers by default:
|
|
- `X-Forwarded-For`
|
|
- `X-Real-IP`
|
|
- `CF-Connecting-IP`
|
|
|
|
|
|
## [v1.11.1](https://git.am-wd.de/AM.WD/common/compare/v1.11.0...v1.11.1) - 2023-05-11
|
|
|
|
### Fixed
|
|
|
|
- `JsonExtensions.GetValue<T>()` now is case insensitive and detects the correct property name of a `JObject`.
|
|
|
|
|
|
## [v1.11.0](https://git.am-wd.de/AM.WD/common/compare/v1.10.0...v1.11.0) - 2023-03-29
|
|
|
|
### Added
|
|
|
|
- `directory.build.props` and `directory.build.targets`
|
|
- `GetDisplayName()` extension for enums (`DisplayAttribute(Name = "")`)
|
|
- `FileLogger` as additional `ILogger` implementation (from `Microsoft.Extensions.Logging`)
|
|
- `StartTransaction(Async)` as `DbContext` extensions; prevents exceptions on `InMemory` database
|
|
|
|
|
|
## [v1.10.0](https://git.am-wd.de/AM.WD/common/compare/v1.9.0...v1.10.0) - 2022-09-18
|
|
|
|
### Fixed
|
|
|
|
- Over-/Underflow behaviour for IPAddress de-/increment
|
|
- Await behaviour for AsyncQueue (not required to marshal back to the original captured context)
|
|
|
|
### Removed
|
|
|
|
- Removing dependency from DNS package
|
|
It's now used via reflection when possible (otherwise exeption)
|
|
|
|
|
|
## [v1.9.0](https://git.am-wd.de/AM.WD/common/compare/v1.8.1...v1.9.0) - 2022-08-14
|
|
|
|
### Added
|
|
|
|
- `AsyncQueue<T>` to `AMWD.Common.Utilities` with namespace `System.Collections.Generic`
|
|
|
|
|
|
## [v1.8.1](https://git.am-wd.de/AM.WD/common/compare/v1.8.0...v1.8.1) - 2022-08-07
|
|
|
|
### Fixed
|
|
|
|
- UnitTests
|
|
- BasicAuthentication modules now all use the cancellation token
|
|
|
|
|
|
## [v1.8.0](https://git.am-wd.de/AM.WD/common/compare/v1.7.0...v1.8.0) - 2022-08-07
|
|
|
|
### Added
|
|
|
|
- Converters for `Newtonsoft.Json`
|
|
- `ByteArrayHexConverter` to get an byte array as hex string instead of Base64
|
|
- `IPAddressConverter` to make `System.Net.IPAdress`es (and list forms) serializable
|
|
- `IPNetworkConverter` to make `Microsoft.AspNetCore.HttpOverrides.IPNetwork` (and list forms) serializable
|
|
- Formatters for `MessagePack`
|
|
- `IPAddressFormatter` to serialize an `System.Net.IPAddress`
|
|
- `IPAddressArrayFormatter` to serialize arrays of `System.Net.IPAddress`es
|
|
- `IPAddressListFormatter` to serialize lists of `System.Net.IPAddress`es
|
|
- `IPNetworkFormatter` to serialize an `Microsoft.AspNetCore.HttpOverrides.IPNetwork`
|
|
- `IPNetworkArrayFormatter` to serialize arrays of `Microsoft.AspNetCore.HttpOverrides.IPNetwork`
|
|
- `IPNetworkListFormatter` to serialize lists of `Microsoft.AspNetCore.HttpOverrides.IPNetwork`
|
|
|
|
### Changed
|
|
|
|
- `IBasicAuthenticationValidator` has the possibillity to cancel the operation
|
|
|
|
|
|
## [v1.7.0](https://git.am-wd.de/AM.WD/common/compare/v1.6.1...v1.7.0) - 2022-07-24
|
|
|
|
### Added
|
|
|
|
- UnitTests for `AspNetCore` as far as testable without massive work
|
|
- `IPAddress.Increment` and `IPAddress.Decrement` extensions
|
|
- `NetworkHelper.ParseNetwork` and `NetworkHelper.TryParseNetwork` to parse a CIDR (e.g. 192.168.178.0/24) network
|
|
- `IPNetwork.ExpandNetwork` to create a list with all contained `IPAddress`es
|
|
|
|
### Changed
|
|
|
|
- `BasicAuthenticationAttribute` now respects the `IBasicAuthenticationValidator.Realm` when the own `Realm` property is not set
|
|
- CI scripts
|
|
- Updated all package references to latest builds (as on 2022-07-23)
|
|
|
|
### Removed
|
|
|
|
- `IBasicAuthenticationValidator.Realm` is now a read-only property (removed public set)
|
|
|
|
|
|
## [v1.6.1](https://git.am-wd.de/AM.WD/common/compare/v1.6.0...v1.6.1) - 2022-06-23
|
|
|
|
### Added
|
|
|
|
- `BasicAuthenticationAttribute` sets the `HttpContext.User` property when successfully validated
|
|
|
|
### Changed
|
|
|
|
- Moved `BasicAuthenticationAttribute` from `ActionFilter` to `IAsyncAuthorizationFilter`
|
|
|
|
### Fixed
|
|
|
|
- `TimeSpan.ToShortString()` is now capable of negative values
|
|
|
|
|
|
## [v1.6.0](https://git.am-wd.de/AM.WD/common/compare/v1.5.3...v1.6.0) - 2022-06-22
|
|
|
|
### Changed
|
|
|
|
- All attributes now reside in `Microsoft.AspNetCore.Mvc.Filters` namespace
|
|
|
|
### Fixed
|
|
|
|
- Fixed `BasicAuthenticationAttribute`
|
|
|
|
|
|
## [v1.5.3](https://git.am-wd.de/AM.WD/common/compare/v1.5.2...v1.5.3) - 2022-06-22
|
|
|
|
### Changed
|
|
|
|
- `BasicAuthenticationAttribute` is now in namespace `AMWD.Common.AspNetCore.Attributes`
|
|
|
|
### Fixed
|
|
|
|
- Fixed problem with `ForbidResult` without having an authentication schema defined
|
|
Now only HTTP Status 403 (Forbid) is returned
|
|
|
|
|
|
## [v1.5.2](https://git.am-wd.de/AM.WD/common/compare/v1.5.1...v1.5.2) - 2022-06-20
|
|
|
|
### Removed
|
|
|
|
- Removed support for .NET 5.0 due to EOL (2022-05-10, see [.NET and .NET Core release lifecycle](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core#lifecycle))
|
|
|
|
|
|
## [v1.5.1](https://git.am-wd.de/AM.WD/common/compare/v1.5.0...v1.5.1) - 2022-06-20
|
|
|
|
### Changed
|
|
|
|
- Changed from `Assembly.GetExecutingAssmebly().Location` to `AppContext.BaseDirectory` due to single-file applications
|
|
|
|
|
|
## [v1.5.0](https://git.am-wd.de/AM.WD/common/compare/v1.4.3...v1.5.0) - 2022-06-15
|
|
|
|
### Added
|
|
|
|
- `TcpClientMoq` to test communication via a `TcpClient`
|
|
- EntityFramework Core Converters for new `DateOnly` and `TimeOnly` datatypes when using SQL Server on .NET 6.0 (Bug on Microsoft's EntityFramework)
|
|
- `HttpContext.IsLocalRequest()` to determine whether the request was from local or remote
|
|
- `IPWhitelistAttribute` and `IPBlacklistAttribute` to allow/restrict access on specific controllers/actions
|
|
|
|
|
|
## [v1.4.3](https://git.am-wd.de/AM.WD/common/compare/v1.4.2...v1.4.3) - 2022-05-12
|
|
|
|
### Fixed
|
|
|
|
- Fixed detection of SQLServer for EFCore extensions
|
|
|
|
|
|
## [v1.4.2](https://git.am-wd.de/AM.WD/common/compare/v1.4.1...v1.4.2) - 2022-05-06
|
|
|
|
### Added
|
|
|
|
- New extension for `StringBuilder` `AppendLine(value: string, newLine: string)` to add a line with a explicit defined new line character
|
|
|
|
|
|
## [v1.4.1](https://git.am-wd.de/AM.WD/common/compare/v1.4.0...v1.4.1) - 2022-03-23
|
|
### Added
|
|
|
|
- `IntegrityHashTagHelper` can be used with `asp-integrity="true|false"` and `asp-integrity-strength="256|384|512"`
|
|
- `WaitAvailableAsync` can be used to wait for a database connection to be available
|
|
|
|
### Changed
|
|
|
|
- `ApplyMigrationsAsync` uses `WaitAvailableAsync` internally
|
|
|
|
### Fixed
|
|
|
|
- `InMemory` database provider does not fail on "migration" (none possible)
|
|
|
|
|
|
## [v1.4.0](https://git.am-wd.de/AM.WD/common/compare/v1.3.0...v1.4.0) - 2022-02-11
|
|
|
|
### Added
|
|
|
|
- New NuGet package `AMWD.Common.Moq` with `HttpRequestHandlerMoq` class
|
|
- Supporting `InMemory` Database as provider
|
|
|
|
### Changed
|
|
|
|
- Enhanced Stopwatch/Timer delta due to unsharp resolution using timers
|
|
- `IBasicAuthenticationValidator` now also provides the realm as property (resolving a string on DI is bad style)
|
|
|
|
|
|
## [v1.3.0](https://git.am-wd.de/AM.WD/common/compare/v1.2.0...v1.3.0) - 2021-12-21
|
|
|
|
### Added
|
|
|
|
- `BasicAuthenticationHandler` to use instead of other handlers (instead of e.g. CookieAuthentication)
|
|
- `BasicAuthenticationAttribute` to restrict single actions
|
|
|
|
### Changed
|
|
|
|
- Simplified package references on AspNetCore
|
|
- Changed NuGet package `DnsClient` to `DNS`
|
|
|
|
|
|
## [v1.2.0](https://git.am-wd.de/AM.WD/common/compare/v1.1.0...v1.2.0) - 2021-12-19
|
|
|
|
### Added
|
|
|
|
- CHANGELOG
|
|
- `HtmlHelper.IsDarkColor` to classify a color as dark or light one (by luminance)
|
|
- `ReadLine` and `ReadLineAsync` as `StreamExtensions`
|
|
|
|
### Changed
|
|
|
|
- Unit-Tests enhanced
|
|
- Unit-Tests excluded from code coverage calcualtion
|
|
- Updated NuGet package `NetRevisionTask`
|
|
|
|
|
|
## [v1.1.0](https://git.am-wd.de/AM.WD/common/compare/v1.0.2...v1.1.0) - 2021-11-22
|
|
|
|
### Added
|
|
|
|
- `AddSingletonHostedService<TService, TImplementation>` using an interface and an implementation type
|
|
- Unit-Tests for `AMWD.Common` (ca. 60% Branch-Coverage, target: above 90%)
|
|
- `IsValidEmailAddress` check whether a string is a valid email address, optionally with DNS check (MX record)
|
|
- AES and 3DES De-/Encrypt enhanced for string to string (plain/base64)
|
|
|
|
### Changed
|
|
|
|
- CI Build-Process splitted into: build, test, deploy
|
|
- `GetAlignedInterval` splitted into `GetAlignedIntervalUtc` and `GetAlignedIntervalLocal` to respect daylight saving times
|
|
- `HexToBytes` checks for valid characters by using RegEx
|
|
|
|
### Fixed
|
|
|
|
- `Sha256` as string extension
|
|
|
|
|
|
## [v1.0.2](https://git.am-wd.de/AM.WD/common/compare/v1.0.1...v1.0.2) - 2021-11-09
|
|
|
|
### Added
|
|
|
|
- .NET 6.0 (LTS) compatibility
|
|
- Versioning in README
|
|
|
|
### Changed
|
|
|
|
- CI Build modified
|
|
- C# Update from 9.0 to 10.0
|
|
|
|
### Fixed
|
|
|
|
- Comments updated / enhanced
|
|
|
|
|
|
## [v1.0.1](https://git.am-wd.de/AM.WD/common/compare/v1.0.0...v1.0.1) - 2021-10-25
|
|
|
|
### Added
|
|
|
|
- `ParseDecimal` added to prevent problems with comma/dot as decimal separator
|
|
|
|
### Changed
|
|
|
|
- NuGet packages reside on `artifacts/`
|
|
|
|
### Fixed
|
|
|
|
- MySQL library is now working correctly via reflection
|
|
|
|
|
|
## [v1.0.0](https://git.am-wd.de/AM.WD/common/compare/v0.0.2...v1.0.0) - 2021-10-24
|
|
|
|
### Added
|
|
|
|
- Lizenz
|
|
- Readme
|
|
|
|
### Changed
|
|
|
|
- `CustomFloatingPointModelBinder*` renamed to `InvariantFloatingPointModelBinder*`
|
|
- `ResolveHost` returns a list of resolved ip addresses
|
|
- `ResolveInterface` returns a list of resolved ip addresses
|
|
|
|
### Removed
|
|
|
|
- `IPAddress fallback` parameter removed from `ResolveHost`
|
|
- `IPAddress fallback` parameter removed from `ResolveInterface`
|
|
- `ResolveInterface` does not use DNS to resolve the input (kind a weired behaviour)
|
|
|
|
|
|
## [v0.0.2](https://git.am-wd.de/AM.WD/common/compare/v0.0.1...v0.0.2) - 2021-10-23
|
|
|
|
### Added
|
|
|
|
- NuGet packages have an icon
|
|
|
|
### Changed
|
|
|
|
- Additional information for NuGet packages
|
|
|
|
|
|
## [v0.0.1](https://git.am-wd.de/AM.WD/common/commits/v0.0.1) - 2021-10-23
|
|
|
|
Initial release
|