123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 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
- }
|