* feat: Add [DOMAIN_EXPIRATION] placeholder for monitoring domain expiration using WHOIS * test: Fix issue caused by possibility of millisecond elapsed during previous tests * test: Fix test with different behavior based on architecture * docs: Revert accidental change to starttls example * docs: Fix mistake in comment for Condition.hasIPPlaceholder()
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # whois
 | |
| 
 | |
| 
 | |
| Lightweight library for retrieving WHOIS information on a domain.
 | |
| 
 | |
| It automatically retrieves the appropriate WHOIS server based on the domain's TLD by first querying IANA.
 | |
| 
 | |
| 
 | |
| ## Usage
 | |
| ### As an executable
 | |
| To install it:
 | |
| ```console
 | |
| go install github.com/TwiN/whois/cmd/whois@latest
 | |
| ```
 | |
| To run it:
 | |
| ```console 
 | |
| whois example.com
 | |
| ```
 | |
| 
 | |
| ### As a library
 | |
| ```console
 | |
| go get github.com/TwiN/whois
 | |
| ```
 | |
| 
 | |
| #### Query
 | |
| If all you want is the text a WHOIS server would return you, you can use the `Query` method of the `whois.Client` type:
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import "github.com/TwiN/whois"
 | |
| 
 | |
| func main() {
 | |
|     client := whois.NewClient()
 | |
|     output, err := client.Query("example.com")
 | |
|     if err != nil {
 | |
|     	panic(err)
 | |
|     }
 | |
|     println(output)
 | |
| }
 | |
| ```
 | |
| 
 | |
| #### QueryAndParse
 | |
| If you want specific pieces of information, you can use the `QueryAndParse` method of the `whois.Client` type:
 | |
| ```go
 | |
| package main
 | |
| 
 | |
| import "github.com/TwiN/whois"
 | |
| 
 | |
| func main() {
 | |
|     client := whois.NewClient()
 | |
|     response, err := client.QueryAndParse("example.com")
 | |
|     if err != nil {
 | |
|     	panic(err)
 | |
|     }
 | |
|     println(response.ExpirationDate.String()) 
 | |
| }
 | |
| ```
 | |
| Note that because there is no standardized format for WHOIS responses, this parsing may not be successful for every single TLD.
 | |
| 
 | |
| Currently, the only fields parsed are:
 | |
| - `ExpirationDate`: The time.Time at which the domain will expire
 | |
| - `DomainStatuses`: The statuses that the domain currently has (e.g. `clientTransferProhibited`)
 | |
| - `NameServers`: The nameservers currently tied to the domain
 | |
| 
 | |
| If you'd like one or more other fields to be parsed, please don't be shy and create an issue or a pull request.
 |