| 
									
										
										
										
											2016-03-19 11:16:08 +00:00
										 |  |  | package middleware
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-20 10:44:03 +00:00
										 |  |  | import (
 | 
					
						
							|  |  |  | 	"strings"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/miekg/dns"
 | 
					
						
							|  |  |  | )
 | 
					
						
							| 
									
										
										
										
											2016-03-19 11:16:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Name represents a domain name.
 | 
					
						
							|  |  |  | type Name string
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-12 22:34:44 +01:00
										 |  |  | // Matches checks to see if other is a subdomain (or the same domain) of n.
 | 
					
						
							|  |  |  | // This method assures that names can be easily and consistently matched.
 | 
					
						
							|  |  |  | func (n Name) Matches(child string) bool {
 | 
					
						
							|  |  |  | 	if dns.Name(n) == dns.Name(child) {
 | 
					
						
							|  |  |  | 		return true
 | 
					
						
							|  |  |  | 	}
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return dns.IsSubDomain(string(n), child)
 | 
					
						
							| 
									
										
										
										
											2016-03-19 11:16:08 +00:00
										 |  |  | }
 | 
					
						
							| 
									
										
										
										
											2016-03-20 10:44:03 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Normalize lowercases and makes n fully qualified.
 | 
					
						
							|  |  |  | func (n Name) Normalize() string {
 | 
					
						
							|  |  |  | 	return strings.ToLower(dns.Fqdn(string(n)))
 | 
					
						
							|  |  |  | }
 |