-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathparser_ua.go
More file actions
79 lines (72 loc) · 5.4 KB
/
parser_ua.go
File metadata and controls
79 lines (72 loc) · 5.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package whoisparser
import (
"regexp"
)
var uaParser = &Parser{
errorRegex: &ParseErrorRegex{
NoSuchDomain: regexp.MustCompile(`No entries found for`),
RateLimit: nil,
MalformedRequest: regexp.MustCompile(`Unimplemented object service`),
},
registrarRegex: &RegistrarRegex{
DomainName: regexp.MustCompile(`domain: *(.*)`),
NameServers: regexp.MustCompile(`nserver: *(.*)`),
DomainStatus: regexp.MustCompile(`(?s)nserver:.*?status: *(.*?)\ncreated`),
CreatedDate: regexp.MustCompile(`domain:(?:.*\s)*?created: *(.*)`),
UpdatedDate: regexp.MustCompile(`domain:(?:.*\s)*?modified: *(.*)`),
ExpirationDate: regexp.MustCompile(`domain:(?:.*\s)*?expires: *(.*)`),
Emails: regexp.MustCompile(`abuse-email: *(.*)`),
RegistrarName: regexp.MustCompile(`registrar: *(.*)`),
},
techRegex: &RegistrantRegex{
ID: nil,
Name: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:person|person-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Organization: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:organization|organization-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Street: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
City: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:(?:address|address-loc):.*\n)(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
StreetExt: nil,
Province: nil,
PostalCode: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:postal-code|postal-code-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Country: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?(?:country|country-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Phone: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?phone: *(.*?)\n`),
PhoneExt: nil,
Fax: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?fax: *(.*?)\n`),
FaxExt: nil,
Email: regexp.MustCompile(`Technical Contacts:\n(?:.+\n)+?e-mail: *(.*?)\n`),
},
adminRegex: &RegistrantRegex{
ID: nil,
Name: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:person|person-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Organization: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:organization|organization-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Street: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
City: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:(?:address|address-loc):.*\n)(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
StreetExt: nil,
Province: nil,
PostalCode: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:postal-code|postal-code-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Country: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?(?:country|country-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Phone: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?phone: *(.*?)\n`),
PhoneExt: nil,
Fax: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?fax: *(.*?)\n`),
FaxExt: nil,
Email: regexp.MustCompile(`Administrative Contacts:\n(?:.+\n)+?e-mail: *(.*?)\n`),
},
registrantRegex: &RegistrantRegex{
ID: nil,
Name: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:person|person-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Organization: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:organization|organization-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Street: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
City: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:(?:address|address-loc):.*\n)(?:address|address-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
StreetExt: nil,
Province: nil,
PostalCode: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:postal-code|postal-code-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Country: regexp.MustCompile(`Registrant:\n(?:.+\n)+?(?:country|country-loc):\s+((?:.+(?:[^n][^\\][^a]|[^n][^\\]a|[^n]\\a|[^n]\\[^a]|n\\[^a]|n[^\\][^a]))|(?:.{1,2}))\n`),
Phone: regexp.MustCompile(`Registrant:\n(?:.+\n)+?phone: *(.*?)\n`),
PhoneExt: nil,
Fax: regexp.MustCompile(`Registrant:\n(?:.+\n)+?fax: *(.*?)\n`),
FaxExt: nil,
Email: regexp.MustCompile(`Registrant:\n(?:.+\n)+?e-mail: *(.*?)\n`),
},
}
func init() {
RegisterParser(".ua", uaParser)
}