|
@@ -0,0 +1,84 @@
|
|
|
+package netutils
|
|
|
+
|
|
|
+import (
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type WHOISResult struct {
|
|
|
+ DomainName string `json:"domainName"`
|
|
|
+ RegistryDomainID string `json:"registryDomainID"`
|
|
|
+ Registrar string `json:"registrar"`
|
|
|
+ UpdatedDate time.Time `json:"updatedDate"`
|
|
|
+ CreationDate time.Time `json:"creationDate"`
|
|
|
+ ExpiryDate time.Time `json:"expiryDate"`
|
|
|
+ RegistrantID string `json:"registrantID"`
|
|
|
+ RegistrantName string `json:"registrantName"`
|
|
|
+ RegistrantEmail string `json:"registrantEmail"`
|
|
|
+ AdminID string `json:"adminID"`
|
|
|
+ AdminName string `json:"adminName"`
|
|
|
+ AdminEmail string `json:"adminEmail"`
|
|
|
+ TechID string `json:"techID"`
|
|
|
+ TechName string `json:"techName"`
|
|
|
+ TechEmail string `json:"techEmail"`
|
|
|
+ NameServers []string `json:"nameServers"`
|
|
|
+ DNSSEC string `json:"dnssec"`
|
|
|
+}
|
|
|
+
|
|
|
+func ParseWHOISResponse(response string) (WHOISResult, error) {
|
|
|
+ result := WHOISResult{}
|
|
|
+
|
|
|
+ lines := strings.Split(response, "\n")
|
|
|
+ for _, line := range lines {
|
|
|
+ if strings.HasPrefix(line, "Domain Name:") {
|
|
|
+ result.DomainName = strings.TrimSpace(strings.TrimPrefix(line, "Domain Name:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registry Domain ID:") {
|
|
|
+ result.RegistryDomainID = strings.TrimSpace(strings.TrimPrefix(line, "Registry Domain ID:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registrar:") {
|
|
|
+ result.Registrar = strings.TrimSpace(strings.TrimPrefix(line, "Registrar:"))
|
|
|
+ } else if strings.HasPrefix(line, "Updated Date:") {
|
|
|
+ dateStr := strings.TrimSpace(strings.TrimPrefix(line, "Updated Date:"))
|
|
|
+ updatedDate, err := time.Parse("2006-01-02T15:04:05Z", dateStr)
|
|
|
+ if err == nil {
|
|
|
+ result.UpdatedDate = updatedDate
|
|
|
+ }
|
|
|
+ } else if strings.HasPrefix(line, "Creation Date:") {
|
|
|
+ dateStr := strings.TrimSpace(strings.TrimPrefix(line, "Creation Date:"))
|
|
|
+ creationDate, err := time.Parse("2006-01-02T15:04:05Z", dateStr)
|
|
|
+ if err == nil {
|
|
|
+ result.CreationDate = creationDate
|
|
|
+ }
|
|
|
+ } else if strings.HasPrefix(line, "Registry Expiry Date:") {
|
|
|
+ dateStr := strings.TrimSpace(strings.TrimPrefix(line, "Registry Expiry Date:"))
|
|
|
+ expiryDate, err := time.Parse("2006-01-02T15:04:05Z", dateStr)
|
|
|
+ if err == nil {
|
|
|
+ result.ExpiryDate = expiryDate
|
|
|
+ }
|
|
|
+ } else if strings.HasPrefix(line, "Registry Registrant ID:") {
|
|
|
+ result.RegistrantID = strings.TrimSpace(strings.TrimPrefix(line, "Registry Registrant ID:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registrant Name:") {
|
|
|
+ result.RegistrantName = strings.TrimSpace(strings.TrimPrefix(line, "Registrant Name:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registrant Email:") {
|
|
|
+ result.RegistrantEmail = strings.TrimSpace(strings.TrimPrefix(line, "Registrant Email:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registry Admin ID:") {
|
|
|
+ result.AdminID = strings.TrimSpace(strings.TrimPrefix(line, "Registry Admin ID:"))
|
|
|
+ } else if strings.HasPrefix(line, "Admin Name:") {
|
|
|
+ result.AdminName = strings.TrimSpace(strings.TrimPrefix(line, "Admin Name:"))
|
|
|
+ } else if strings.HasPrefix(line, "Admin Email:") {
|
|
|
+ result.AdminEmail = strings.TrimSpace(strings.TrimPrefix(line, "Admin Email:"))
|
|
|
+ } else if strings.HasPrefix(line, "Registry Tech ID:") {
|
|
|
+ result.TechID = strings.TrimSpace(strings.TrimPrefix(line, "Registry Tech ID:"))
|
|
|
+ } else if strings.HasPrefix(line, "Tech Name:") {
|
|
|
+ result.TechName = strings.TrimSpace(strings.TrimPrefix(line, "Tech Name:"))
|
|
|
+ } else if strings.HasPrefix(line, "Tech Email:") {
|
|
|
+ result.TechEmail = strings.TrimSpace(strings.TrimPrefix(line, "Tech Email:"))
|
|
|
+ } else if strings.HasPrefix(line, "Name Server:") {
|
|
|
+ ns := strings.TrimSpace(strings.TrimPrefix(line, "Name Server:"))
|
|
|
+ result.NameServers = append(result.NameServers, ns)
|
|
|
+ } else if strings.HasPrefix(line, "DNSSEC:") {
|
|
|
+ result.DNSSEC = strings.TrimSpace(strings.TrimPrefix(line, "DNSSEC:"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return result, nil
|
|
|
+}
|