github.com/wtfutil/wtf@v0.43.0/modules/security/widget.go (about)

     1  package security
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/rivo/tview"
     8  	"github.com/wtfutil/wtf/view"
     9  )
    10  
    11  type Widget struct {
    12  	view.TextWidget
    13  
    14  	settings *Settings
    15  }
    16  
    17  func NewWidget(tviewApp *tview.Application, redrawChan chan bool, settings *Settings) *Widget {
    18  	widget := Widget{
    19  		TextWidget: view.NewTextWidget(tviewApp, redrawChan, nil, settings.Common),
    20  
    21  		settings: settings,
    22  	}
    23  
    24  	return &widget
    25  }
    26  
    27  /* -------------------- Exported Functions -------------------- */
    28  
    29  func (widget *Widget) Refresh() {
    30  
    31  	if widget.Disabled() {
    32  		return
    33  	}
    34  
    35  	widget.Redraw(widget.content)
    36  }
    37  
    38  /* -------------------- Unexported Functions -------------------- */
    39  
    40  func (widget *Widget) content() (string, string, bool) {
    41  	data := NewSecurityData()
    42  	data.Fetch()
    43  	var str string
    44  
    45  	if data.WifiName != "" {
    46  		str += fmt.Sprintf(" [%s]WiFi[white]\n", widget.settings.Colors.Subheading)
    47  		str += fmt.Sprintf(" %8s: %s\n", "Network", data.WifiName)
    48  		str += fmt.Sprintf(" %8s: %s\n", "Crypto", data.WifiEncryption)
    49  		str += "\n"
    50  	}
    51  
    52  	str += fmt.Sprintf(" [%s]Firewall[white]\n", widget.settings.Colors.Subheading)
    53  	str += fmt.Sprintf(" %8s: %4s\n", "Status", data.FirewallEnabled)
    54  	str += fmt.Sprintf(" %8s: %4s\n", "Stealth", data.FirewallStealth)
    55  	str += "\n"
    56  
    57  	str += fmt.Sprintf(" [%s]Users[white]\n", widget.settings.Colors.Subheading)
    58  	str += fmt.Sprintf("  %s", strings.Join(data.LoggedInUsers, "\n  "))
    59  	str += "\n\n"
    60  
    61  	str += fmt.Sprintf(" [%s]DNS[white]\n", widget.settings.Colors.Subheading)
    62  	str += fmt.Sprintf("  %12s\n", data.DnsAt(0))
    63  	str += fmt.Sprintf("  %12s\n", data.DnsAt(1))
    64  	str += "\n"
    65  
    66  	return widget.CommonSettings().Title, str, false
    67  }