87bcb6807f
GUI: - URL column in endpoint grid + Copy URL toolbar button so the full http://host:port/hook/<slug> is one click away - Double-click a row to open the edit dialog - Bearer/HMAC sections in the editor hide when the auth mode doesn't use them, and reappear with previously-entered values when switched back - Log panel auto-scroll checkbox (default on) plus 3s polling so log entries stream in without manual refresh - Secret fields are now plain text with a Copy button. Anyone who can open the admin-pipe-ACL'd GUI is already SYSTEM-equivalent on the host, so masking the value just made recovery harder. PFX password in Server Settings gets the same treatment. Service: - Admin pipe ops log info-level lines on every mutation (create/update/delete/enable/disable/update-config/bind-https) so GUI activity is visible in the Serilog file - /hook/{slug} accepts GET as well as POST so a browser smoke-test works without curl - /favicon.ico returns 204 so browser hits don't pollute logs with 404s - AdminPipeServer no longer strips plaintext secrets when sending config to the GUI; the pipe ACL already restricts to SYSTEM/Admins Scripts: - New deploy.ps1: stops + republishes + copies binaries to C:\Program Files\WebhookServer + (re)installs the Windows Service - install-service.ps1 now uses sc.exe argv splatting consistently for both create and config paths Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
34 lines
998 B
C#
34 lines
998 B
C#
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using WebhookServer.Gui.ViewModels;
|
|
|
|
namespace WebhookServer.Gui.Views;
|
|
|
|
public partial class EndpointEditor : Window
|
|
{
|
|
public EndpointEditor()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void OnSave(object sender, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is EndpointEditorViewModel vm)
|
|
vm.SaveCommand.Execute(null);
|
|
DialogResult = true;
|
|
Close();
|
|
}
|
|
|
|
private void OnCopyBearer(object sender, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is EndpointEditorViewModel vm && !string.IsNullOrEmpty(vm.BearerSecret))
|
|
try { Clipboard.SetText(vm.BearerSecret); } catch { /* clipboard busy — silent */ }
|
|
}
|
|
|
|
private void OnCopyHmac(object sender, RoutedEventArgs e)
|
|
{
|
|
if (DataContext is EndpointEditorViewModel vm && !string.IsNullOrEmpty(vm.HmacSecret))
|
|
try { Clipboard.SetText(vm.HmacSecret); } catch { /* clipboard busy — silent */ }
|
|
}
|
|
}
|