-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathmain.go
84 lines (71 loc) · 2.48 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package main
import (
"code.rocketnine.space/tslocum/cview"
"github.com/MasonCompetitiveCyber/vindicta/monitor"
"github.com/gdamore/tcell/v2"
)
func main() {
// Define the Application
app := cview.NewApplication()
// Enable Using Mouse
app.EnableMouse(true)
// Define Tabbed Panels
panels := cview.NewTabbedPanels()
// Properties of Panels
panels.SetBorder(true)
panels.SetBorderColor(tcell.ColorYellow)
panels.SetTitle("Vindicta")
panels.SetTitleColor(tcell.ColorBlue)
panels.SetTabTextColor(tcell.ColorPurple)
panels.SetBorderAttributes(tcell.AttrBold)
panels.SetTabBackgroundColor(tcell.ColorBlueViolet)
panels.SetTabTextColor(tcell.ColorWhite)
panels.SetTabBackgroundColorFocused(tcell.ColorOrange)
// Redraw on some change
panels.SetChangedFunc(func() { app.Draw() })
// Call UI Tabs for each
// SSH Logs Tab
ssh := monitor.SshLogs(app)
// File System Monitoring Tab
file := monitor.FileSystemPanel(app)
// Network Connections and Process Monitoring Tab
netproc := monitor.DisplaySocks(app)
// Attach The Tabs Above To The Panels
panels.AddTab("ssh", "[1] SSH", ssh)
panels.AddTab("NetAndProc", "[2] Network and Processes", netproc)
panels.AddTab("filesystem", "[3] Filesystem", file)
// panels.AddTab("firewall", "[4] Firewall", cview.NewTextView())
// panels.AddTab("webserver", "[5] Webserver", cview.NewTextView())
// panels.AddTab("services", "[6] Services", cview.NewTextView())
// panels.AddTab("kill", "[7] Kill Process", cview.NewTextView())
app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
if event.Rune() == 113 { // 113 means q
app.Stop()
} else if event.Rune() == 49 { // 49 means 1
panels.SetCurrentTab("ssh")
} else if event.Rune() == 50 { // 50 means 2
panels.SetCurrentTab("NetAndProc")
} else if event.Rune() == 51 {
panels.SetCurrentTab("filesystem")
// } else if event.Rune() == 52 {
// panels.SetCurrentTab("firewall")
// } else if event.Rune() == 53 {
// panels.SetCurrentTab("webserver")
// } else if event.Rune() == 54 {
// panels.SetCurrentTab("services")
// } else if event.Rune() == 55 {
// panels.SetCurrentTab("kill")
} else if event.Rune() == 35 { // Uppercase # for editing
// Call the CreateInput function and get the callback function
inputCallback := monitor.CreateInput(panels, app)
// Call the callback function to display the form
inputCallback()
}
return event
})
// Set Panels as Root
app.SetRoot(panels, true)
if err := app.Run(); err != nil {
panic(err)
}
}