Jun 22, 2026, 1:46 PM
This commit is contained in:
+66
-24
@@ -436,14 +436,21 @@ $tvServers.Add_SelectedItemChanged({
|
|||||||
# Handle Add Server button
|
# Handle Add Server button
|
||||||
$btnAddServer.Add_Click({
|
$btnAddServer.Add_Click({
|
||||||
$server = ""
|
$server = ""
|
||||||
|
$promptMsg = "Enter SQL Server Instance Name (e.g., localhost, srv\SQLEXPRESS):"
|
||||||
|
$title = "Add Server"
|
||||||
|
if ($script:CurrentView -eq "Splunk") {
|
||||||
|
$promptMsg = "Enter Splunk Host Name (e.g., splunk-host-prod-01):"
|
||||||
|
$title = "Add Splunk Host"
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Add-Type -AssemblyName Microsoft.VisualBasic
|
Add-Type -AssemblyName Microsoft.VisualBasic
|
||||||
$server = [Microsoft.VisualBasic.Interaction]::InputBox("Enter SQL Server Instance Name (e.g., localhost, srv\SQLEXPRESS):", "Add Server", "")
|
$server = [Microsoft.VisualBasic.Interaction]::InputBox($promptMsg, $title, "")
|
||||||
} catch {
|
} catch {
|
||||||
# Fallback using current textbox value
|
# Fallback using current textbox value
|
||||||
$server = $txtServerName.Text
|
$server = $txtServerName.Text
|
||||||
if ([string]::IsNullOrWhiteSpace($server)) {
|
if ([string]::IsNullOrWhiteSpace($server)) {
|
||||||
[System.Windows.MessageBox]::Show("Visual Basic assembly not found. Please type the server name in 'Server Name' textbox first, and then click 'Add Server'.", "Add Server Fallback", "OK", "Information")
|
[System.Windows.MessageBox]::Show("Visual Basic assembly not found. Please type the name in 'Server Name' textbox first, and then click 'Add Server'.", $title, "OK", "Information")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -451,47 +458,82 @@ $btnAddServer.Add_Click({
|
|||||||
if ([string]::IsNullOrWhiteSpace($server)) { return }
|
if ([string]::IsNullOrWhiteSpace($server)) { return }
|
||||||
$server = $server.Trim()
|
$server = $server.Trim()
|
||||||
|
|
||||||
if ($settings.Servers -contains $server) {
|
if ($script:CurrentView -eq "SQL") {
|
||||||
[System.Windows.MessageBox]::Show("Server '$server' is already in the list.", "Server Already Exists", "OK", "Information")
|
if ($settings.Servers -contains $server) {
|
||||||
return
|
[System.Windows.MessageBox]::Show("Server '$server' is already in the list.", "Server Already Exists", "OK", "Information")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$settings.Servers = $settings.Servers + $server
|
||||||
|
Write-Log "Successfully added server to list: $server"
|
||||||
|
} else {
|
||||||
|
if ($settings.SplunkHosts -contains $server) {
|
||||||
|
[System.Windows.MessageBox]::Show("Splunk Host '$server' is already in the list.", "Host Already Exists", "OK", "Information")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
$settings.SplunkHosts = $settings.SplunkHosts + $server
|
||||||
|
$script:SplunkHosts = $settings.SplunkHosts
|
||||||
|
Write-Log "Successfully added Splunk host: $server"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Save to settings
|
# Save to settings
|
||||||
$settings.Servers = $settings.Servers + $server
|
|
||||||
$settings | ConvertTo-Json | Set-Content $configPath
|
$settings | ConvertTo-Json | Set-Content $configPath
|
||||||
|
|
||||||
Refresh-ServerTree
|
Refresh-ServerTree
|
||||||
Write-Log "Successfully added server to list: $server"
|
|
||||||
})
|
})
|
||||||
|
|
||||||
# Handle Remove Server button
|
# Handle Remove Server button
|
||||||
$btnRemoveServer.Add_Click({
|
$btnRemoveServer.Add_Click({
|
||||||
$selectedItem = $tvServers.SelectedItem
|
$selectedItem = $tvServers.SelectedItem
|
||||||
if ($null -eq $selectedItem -or $selectedItem.Tag -eq "__ROOT__") {
|
if ($null -eq $selectedItem -or $selectedItem.Tag -eq "__ROOT__") {
|
||||||
[System.Windows.MessageBox]::Show("Please select a server node in the tree to remove.", "Select Server", "OK", "Warning")
|
$msg = if ($script:CurrentView -eq "SQL") { "Please select a server node in the tree to remove." } else { "Please select a Splunk Host node in the tree to remove." }
|
||||||
|
[System.Windows.MessageBox]::Show($msg, "Select Node", "OK", "Warning")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
$serverName = $selectedItem.Tag
|
$serverName = $selectedItem.Tag
|
||||||
# Verify that we selected a server node (it has a string Tag and is in settings.Servers)
|
if ($serverName -is [string]) {
|
||||||
if ($serverName -is [string] -and ($settings.Servers -contains $serverName)) {
|
if ($script:CurrentView -eq "SQL" -and ($settings.Servers -contains $serverName)) {
|
||||||
$confirm = [System.Windows.MessageBox]::Show("Are you sure you want to remove '$serverName' from the list?", "Confirm Server Removal", "YesNo", "Question")
|
$confirm = [System.Windows.MessageBox]::Show("Are you sure you want to remove '$serverName' from the list?", "Confirm Server Removal", "YesNo", "Question")
|
||||||
if ($confirm -eq "Yes") {
|
if ($confirm -eq "Yes") {
|
||||||
$settings.Servers = $settings.Servers | Where-Object { $_ -ne $serverName }
|
$settings.Servers = $settings.Servers | Where-Object { $_ -ne $serverName }
|
||||||
$settings | ConvertTo-Json | Set-Content $configPath
|
Write-Log "Removed server from list: $serverName"
|
||||||
|
} else { return }
|
||||||
Refresh-ServerTree
|
} elseif ($script:CurrentView -eq "Splunk" -and ($settings.SplunkHosts -contains $serverName)) {
|
||||||
Write-Log "Removed server from list: $serverName"
|
$confirm = [System.Windows.MessageBox]::Show("Are you sure you want to remove '$serverName' from the list?", "Confirm Host Removal", "YesNo", "Question")
|
||||||
|
if ($confirm -eq "Yes") {
|
||||||
|
$settings.SplunkHosts = $settings.SplunkHosts | Where-Object { $_ -ne $serverName }
|
||||||
|
$script:SplunkHosts = $settings.SplunkHosts
|
||||||
|
Write-Log "Removed Splunk host from list: $serverName"
|
||||||
|
} else { return }
|
||||||
|
} else {
|
||||||
|
[System.Windows.MessageBox]::Show("Only host/server nodes can be removed.", "Invalid Selection", "OK", "Warning")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Save to settings
|
||||||
|
$settings | ConvertTo-Json | Set-Content $configPath
|
||||||
|
Refresh-ServerTree
|
||||||
} else {
|
} else {
|
||||||
[System.Windows.MessageBox]::Show("Only server nodes can be removed.", "Invalid Selection", "OK", "Warning")
|
[System.Windows.MessageBox]::Show("Only server/host nodes can be removed.", "Invalid Selection", "OK", "Warning")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
# Handle Main -> Host Slunk menu click
|
# Handle Main -> SQL Servers menu click
|
||||||
$menuHostSlunk.Add_Click({
|
$menuSqlServers.Add_Click({
|
||||||
Write-Log "Main -> Host Slunk menu item clicked."
|
$script:CurrentView = "SQL"
|
||||||
[System.Windows.MessageBox]::Show("Host Slunk menu option selected.", "Host Slunk", "OK", "Information")
|
$grpDirectory.Header = "SQL Server Directory"
|
||||||
|
Write-Log "Switched view to SQL Server Directory."
|
||||||
|
Refresh-ServerTree
|
||||||
|
})
|
||||||
|
|
||||||
|
# Handle Main -> Host Splunk menu click
|
||||||
|
$menuHostSplunk.Add_Click({
|
||||||
|
$script:CurrentView = "Splunk"
|
||||||
|
$grpDirectory.Header = "Splunk Hosts Directory"
|
||||||
|
Write-Log "Switched view to Splunk Observability Cloud."
|
||||||
|
|
||||||
|
# Fetch Splunk Hosts dynamically from API (or fallback/demo)
|
||||||
|
$script:SplunkHosts = Get-SplunkAPIHosts
|
||||||
|
Refresh-ServerTree
|
||||||
})
|
})
|
||||||
|
|
||||||
# 5. Connection logic
|
# 5. Connection logic
|
||||||
|
|||||||
Reference in New Issue
Block a user