Author SHA1 Message Date
lucretia 0c136f86cb fix(Server): fixes temporary disable input visibility, adds reason text
Build & Deploy / build (push) Successful in 1m43s
2026-07-29 20:18:35 +02:00
2 changed files with 20 additions and 11 deletions
+8 -4
View File
@@ -373,9 +373,13 @@ internal static class ReverseProxyEndpoint
private static string GetClientDisabledMessage(string clientId, ClientAccess access)
{
var reason = string.IsNullOrWhiteSpace(access.DisabledReason)
? ""
: $" Reason: {access.DisabledReason.Trim()}.";
if (access.DisabledManually)
{
return $"Tunnel client '{clientId}' is disabled until it is enabled manually.";
return $"Tunnel client '{clientId}' is disabled until it is enabled manually.{reason}";
}
if (access.DisabledUntilUtc is { } disabledUntil)
@@ -383,12 +387,12 @@ internal static class ReverseProxyEndpoint
var from = access.DisabledFromUtc is { } fromUtc
? $" (scheduled from {fromUtc:O})"
: "";
return $"Tunnel client '{clientId}' is disabled until {disabledUntil:O}.{from}";
return $"Tunnel client '{clientId}' is disabled until {disabledUntil:O}.{from}{reason}";
}
return access.DisabledFromUtc is { } fromUtc2
? $"Tunnel client '{clientId}' is disabled (scheduled from {fromUtc2:O})."
: $"Tunnel client '{clientId}' is disabled.";
? $"Tunnel client '{clientId}' is disabled (scheduled from {fromUtc2:O}).{reason}"
: $"Tunnel client '{clientId}' is disabled.{reason}";
}
private static async Task<string?> GetRequestedModelAsync(HttpRequest request, PathString proxyPath)
+12 -7
View File
@@ -1665,16 +1665,20 @@ function emptyState(text) {
}
function disabledText(client) {
var text = "";
if (client.disabledManually) {
return "Until enabled manually";
text = "Until enabled manually";
} else if (client.disabledUntilUtc) {
text = `Until ${formatDate(client.disabledUntilUtc)}`;
} else if (isScheduled(client)) {
text = `Scheduled from ${formatDate(client.disabledFromUtc)}`;
} else {
text = "Disabled";
}
if (client.disabledUntilUtc) {
return `Until ${formatDate(client.disabledUntilUtc)}`;
if (client.disabledReason) {
text += ` ${escapeHtml(client.disabledReason)}`;
}
if (isScheduled(client)) {
return `Scheduled from ${formatDate(client.disabledFromUtc)}`;
}
return "Disabled";
return text;
}
function isScheduled(client) {
@@ -1793,6 +1797,7 @@ function showDisableModal(clientId) {
function updateWhen() {
const val = overlay.querySelector('input[name="d-when"]:checked').value;
fromInput.style.display = val === "later" ? "" : "none";
fromInput.disabled = val !== "later";
if (val === "now") fromInput.value = "";
}