105 lines
5.1 KiB
Go
105 lines
5.1 KiB
Go
|
|
package pretty
|
||
|
|
|
||
|
|
import (
|
||
|
|
"dehasher/internal/sqlite"
|
||
|
|
"fmt"
|
||
|
|
"github.com/charmbracelet/lipgloss"
|
||
|
|
"github.com/charmbracelet/lipgloss/tree"
|
||
|
|
)
|
||
|
|
|
||
|
|
func WhoIsTree(root string, record sqlite.WhoisRecord) {
|
||
|
|
enumeratorStyle := lipgloss.NewStyle().Foreground(purple).MarginRight(1)
|
||
|
|
rootStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("63"))
|
||
|
|
itemStyle := lipgloss.NewStyle().Foreground(gray)
|
||
|
|
|
||
|
|
rootTree := tree.Root(root)
|
||
|
|
|
||
|
|
// Child Trees
|
||
|
|
// Root Audit Tree
|
||
|
|
auditTree := tree.Root("Audit")
|
||
|
|
auditTree.Child(fmt.Sprintf("Created Date: %s", record.Audit.CreatedDate))
|
||
|
|
auditTree.Child(fmt.Sprintf("Updated Date: %s", record.Audit.UpdatedDate))
|
||
|
|
rootTree.Child(auditTree)
|
||
|
|
|
||
|
|
// Root Name Servers Tree
|
||
|
|
nameServersTree := tree.Root("Name Servers")
|
||
|
|
nameServersTree.Child("Host Names: " + fmt.Sprintf("%v", record.NameServers.HostNames))
|
||
|
|
nameServersTree.Child("IPs: " + fmt.Sprintf("%v", record.NameServers.IPs))
|
||
|
|
nameServersTree.Child("Raw Text: " + record.NameServers.RawText)
|
||
|
|
|
||
|
|
// Root Registry Data Tree
|
||
|
|
registryDataTree := tree.Root("Registry Data")
|
||
|
|
registryDataTree.Child("Audit: " + fmt.Sprintf("%v", record.RegistryData.Audit))
|
||
|
|
registryDataTree.Child("Created Date: " + record.RegistryData.CreatedDate)
|
||
|
|
registryDataTree.Child("Created Date Normalized: " + record.RegistryData.CreatedDateNormalized)
|
||
|
|
registryDataTree.Child("Domain Name: " + record.RegistryData.DomainName)
|
||
|
|
registryDataTree.Child("Expires Date: " + record.RegistryData.ExpiresDate)
|
||
|
|
registryDataTree.Child("Expires Date Normalized: " + record.RegistryData.ExpiresDateNormalized)
|
||
|
|
registryDataTree.Child("Footer: " + record.RegistryData.Footer)
|
||
|
|
registryDataTree.Child("Header: " + record.RegistryData.Header)
|
||
|
|
|
||
|
|
// Registry Data Name Servers Tree
|
||
|
|
registryNameServersTree := tree.Root("Name Servers")
|
||
|
|
registryNameServersTree.Child("Host Names: " + fmt.Sprintf("%v", record.RegistryData.NameServers.HostNames))
|
||
|
|
registryNameServersTree.Child("IPs: " + fmt.Sprintf("%v", record.RegistryData.NameServers.IPs))
|
||
|
|
registryNameServersTree.Child("Raw Text: " + record.RegistryData.NameServers.RawText)
|
||
|
|
registryDataTree.Child(registryNameServersTree)
|
||
|
|
|
||
|
|
// Root Registry Data Tree
|
||
|
|
registryDataTree.Child("Parse Code: " + fmt.Sprintf("%d", record.RegistryData.ParseCode))
|
||
|
|
registryDataTree.Child("Raw Text: " + record.RegistryData.RawText)
|
||
|
|
registryDataTree.Child("Registrar IANA ID: " + record.RegistryData.RegistrarIANAID)
|
||
|
|
registryDataTree.Child("Registrar Name: " + record.RegistryData.RegistrarName)
|
||
|
|
registryDataTree.Child("Status: " + record.RegistryData.Status)
|
||
|
|
registryDataTree.Child("Stripped Text: " + record.RegistryData.StrippedText)
|
||
|
|
registryDataTree.Child("Updated Date: " + record.RegistryData.UpdatedDate)
|
||
|
|
registryDataTree.Child("Updated Date Normalized: " + record.RegistryData.UpdatedDateNormalized)
|
||
|
|
registryDataTree.Child("Whois Server: " + record.RegistryData.WhoisServer)
|
||
|
|
|
||
|
|
// Root Contract Tree
|
||
|
|
technicalContactTree := tree.Root("Technical Contact")
|
||
|
|
technicalContactTree.Child("City: " + record.TechnicalContact.City)
|
||
|
|
technicalContactTree.Child("Country: " + record.TechnicalContact.Country)
|
||
|
|
technicalContactTree.Child("Country Code: " + record.TechnicalContact.CountryCode)
|
||
|
|
technicalContactTree.Child("Name: " + record.TechnicalContact.Name)
|
||
|
|
technicalContactTree.Child("Organization: " + record.TechnicalContact.Organization)
|
||
|
|
technicalContactTree.Child("Postal Code: " + record.TechnicalContact.PostalCode)
|
||
|
|
technicalContactTree.Child("Raw Text: " + record.TechnicalContact.RawText)
|
||
|
|
technicalContactTree.Child("State: " + record.TechnicalContact.State)
|
||
|
|
technicalContactTree.Child("Street 1: " + record.TechnicalContact.Street1)
|
||
|
|
technicalContactTree.Child("Telephone: " + record.TechnicalContact.Telephone)
|
||
|
|
|
||
|
|
// Root Tree Children
|
||
|
|
rootTree.Child("Contact Email: " + record.ContactEmail)
|
||
|
|
rootTree.Child("Created Date: " + record.CreatedDate)
|
||
|
|
rootTree.Child("Created Date Normalized: " + record.CreatedDateNormalized)
|
||
|
|
rootTree.Child("Domain Name: " + record.DomainName)
|
||
|
|
rootTree.Child("Domain Name Ext: " + record.DomainNameExt)
|
||
|
|
rootTree.Child("Estimated Domain Age: " + fmt.Sprintf("%d", record.EstimatedDomainAge))
|
||
|
|
rootTree.Child("Expires Date: " + record.ExpiresDate)
|
||
|
|
rootTree.Child("Expires Date Normalized: " + record.ExpiresDateNormalized)
|
||
|
|
rootTree.Child("Footer: " + record.Footer)
|
||
|
|
rootTree.Child("Header: " + record.Header)
|
||
|
|
rootTree.Child(nameServersTree)
|
||
|
|
rootTree.Child("Parse Code: " + fmt.Sprintf("%d", record.ParseCode))
|
||
|
|
rootTree.Child("Raw Text: " + record.RawText)
|
||
|
|
rootTree.Child("Registrant: " + fmt.Sprintf("%v", record.Registrant))
|
||
|
|
rootTree.Child("Registrar IANA ID: " + record.RegistrarIANAID)
|
||
|
|
rootTree.Child("Registrar Name: " + record.RegistrarName)
|
||
|
|
rootTree.Child(registryDataTree)
|
||
|
|
rootTree.Child("Status: " + record.Status)
|
||
|
|
rootTree.Child("Stripped Text: " + record.StrippedText)
|
||
|
|
rootTree.Child(technicalContactTree)
|
||
|
|
rootTree.Child("Updated Date: " + record.UpdatedDate)
|
||
|
|
rootTree.Child("Updated Date Normalized: " + record.UpdatedDateNormalized)
|
||
|
|
|
||
|
|
// Styles
|
||
|
|
rootTree.Enumerator(tree.RoundedEnumerator)
|
||
|
|
rootTree.EnumeratorStyle(enumeratorStyle)
|
||
|
|
rootTree.RootStyle(rootStyle)
|
||
|
|
rootTree.ItemStyle(itemStyle)
|
||
|
|
|
||
|
|
// Print Tree
|
||
|
|
fmt.Println(rootTree)
|
||
|
|
}
|