Add warning modal support and checks for blocked binaries and directories

Introduce `WarnBlock` to handle non-fatal warnings displayed in a warning modal. Add pre-elimination checks to identify blocked binaries and directories based on running processes or enabled services. Enhance path normalization for robust comparisons.
This commit is contained in:
Evan Hosinski
2025-10-10 22:53:20 -04:00
parent 2b6c4eb4cd
commit 192ce28d89
3 changed files with 125 additions and 29 deletions
+13 -1
View File
@@ -2,6 +2,7 @@ package tui
import (
"encoding/json"
"errors"
"fmt"
"os"
@@ -120,7 +121,12 @@ func (m AppModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
case RequestEliminateMsg:
if err := m.performEliminate(v.TypeKey, v.Index); err != nil {
m.detail.modalErr = err.Error()
var wb WarnBlock
if errors.As(err, &wb) {
m.detail.modalWarn = wb.Error()
} else {
m.detail.modalErr = err.Error()
}
return m, nil
}
// success -> rebuild list and go back
@@ -168,6 +174,9 @@ func (m *AppModel) performEliminate(typeKey string, idx int) error {
m.data.AutoRuns = append(m.data.AutoRuns[:idx], m.data.AutoRuns[idx+1:]...)
case "binaries":
b := m.data.Binaries[idx]
if err := CheckBinaryBlocked(b, m.data); err != nil {
return err
}
if err := EliminateBinary(b); err != nil {
return err
}
@@ -180,6 +189,9 @@ func (m *AppModel) performEliminate(typeKey string, idx int) error {
m.data.OutboundConnections = append(m.data.OutboundConnections[:idx], m.data.OutboundConnections[idx+1:]...)
case "directories":
d := m.data.Directories[idx]
if err := CheckDirectoryBlocked(d, m.data); err != nil {
return err
}
if err := EliminateDirectory(d); err != nil {
return err
}