Skip to content

Commit

Permalink
Merge pull request #2720 from Particular/maintenance-port-fix
Browse files Browse the repository at this point in the history
UrlAcl for maintenance port uses `+` only for localhost
  • Loading branch information
mikeminutillo authored Nov 26, 2021
2 parents 96f2a49 + 20a7486 commit 9673e7e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,12 @@ public string AclMaintenanceUrl
{
get
{
var baseUrl = $"http://+:{DatabaseMaintenancePort}/";
//RavenDB when provided with localhost as the hostname will try to open ports on all interfaces
//by using + http binding. This in turn requires a matching UrlAcl registration.
var baseUrl = string.Equals("localhost", HostName, StringComparison.OrdinalIgnoreCase)
? $"http://+:{DatabaseMaintenancePort}/"
: $"http://{HostName}:{DatabaseMaintenancePort}/";

return baseUrl;
}
}
Expand Down Expand Up @@ -212,13 +217,19 @@ public void RemoveUrlAcl()
{
//This is an old aclurl registration for embedded RavenDB instance that includes the hostname.
//We need that to make sure we can clean-up old registration when removing instances created
//using pre 4.17 versions of ServiceControl.
var legacyAclMaintenanceUrl = $"http://{HostName}:{DatabaseMaintenancePort}/";
//by previous versions of ServiceControl

//pre 4.17 versions of ServiceControl were using hostnames in all cases
var pre417LegacyAclMaintenanceUrl = $"http://{HostName}:{DatabaseMaintenancePort}/";

//pre 4.21 version of ServiceControl were using + in all cases
var pre421LegacyAclMaintenanceUlr = $"http://+:{DatabaseMaintenancePort}";

bool IsServiceControlAclUrl(UrlReservation r) =>
r.Url.StartsWith(AclUrl, StringComparison.OrdinalIgnoreCase) ||
r.Url.StartsWith(AclMaintenanceUrl, StringComparison.OrdinalIgnoreCase) ||
r.Url.StartsWith(legacyAclMaintenanceUrl, StringComparison.OrdinalIgnoreCase);
r.Url.StartsWith(pre417LegacyAclMaintenanceUrl, StringComparison.OrdinalIgnoreCase) ||
r.Url.StartsWith(pre421LegacyAclMaintenanceUlr, StringComparison.OrdinalIgnoreCase);

foreach (var urlReservation in UrlReservation.GetAll().Where(IsServiceControlAclUrl))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,12 @@ public string AclMaintenanceUrl
{
get
{
var baseUrl = $"http://+:{DatabaseMaintenancePort}/";
//RavenDB when provided with localhost as the hostname will try to open ports on all interfaces
//by using + http binding. This in turn requires a matching UrlAcl registration.
var baseUrl = string.Equals("localhost", HostName, StringComparison.OrdinalIgnoreCase)
? $"http://+:{DatabaseMaintenancePort}/"
: $"http://{HostName}:{DatabaseMaintenancePort}/";

return baseUrl;
}
}
Expand Down

0 comments on commit 9673e7e

Please sign in to comment.