1package app
2
3import (
4 "github.com/The-Robin-Hood/ufWall/internal/sections/policy"
5 "github.com/The-Robin-Hood/ufWall/internal/sections/rules"
6 "github.com/The-Robin-Hood/ufWall/internal/sections/stats"
7 "github.com/The-Robin-Hood/ufWall/internal/ufw"
8 "github.com/The-Robin-Hood/ufWall/internal/ui"
9)
10
11type model struct {
12 stats ufw.Stats
13 policy ufw.Policy
14 rules []ufw.Rule // (kept for backward compat)
15 ipv4Rules []ufw.Rule
16 ipv6Rules []ufw.Rule
17 err error
18
19 activeSection int
20
21 width int
22 height int
23 styles ui.Styles
24
25 statsSection stats.Model
26 policySection policy.Model
27 rulesSection rules.Model
28}
29
30func InitialModel() model {
31 data := ufw.GetUFWData()
32 styles := ui.NewStyles()
33 return model{
34 stats: data.Stats,
35 rules: data.Rules,
36 ipv4Rules: data.IPv4Rules,
37 ipv6Rules: data.IPv6Rules,
38 policy: data.Policy,
39
40 styles: styles,
41 width: 87,
42 height: 30,
43
44 statsSection: stats.New(styles),
45 policySection: policy.New(styles),
46 rulesSection: rules.New(styles),
47 }
48}