Browse Source

Alias for ext: to reduce ambiguous ext: used without context

Shelikhoo 5 years ago
parent
commit
d2266bb52c
1 changed files with 26 additions and 6 deletions
  1. 26 6
      infra/conf/router.go

+ 26 - 6
infra/conf/router.go

@@ -260,9 +260,19 @@ func parseDomainRule(domain string) ([]*router.Domain, error) {
 		}
 		return domains, nil
 	}
-
-	if strings.HasPrefix(domain, "ext:") {
-		kv := strings.Split(domain[4:], ":")
+	var isExtDatFile = 0
+	{
+		const prefix = "ext:"
+		if strings.HasPrefix(domain, prefix) {
+			isExtDatFile = len(prefix)
+		}
+		const prefixQualified = "ext-domain:"
+		if strings.HasPrefix(domain, prefixQualified) {
+			isExtDatFile = len(prefixQualified)
+		}
+	}
+	if isExtDatFile != 0 {
+		kv := strings.Split(domain[isExtDatFile:], ":")
 		if len(kv) != 2 {
 			return nil, newError("invalid external resource: ", domain)
 		}
@@ -314,9 +324,19 @@ func toCidrList(ips StringList) ([]*router.GeoIP, error) {
 			})
 			continue
 		}
-
-		if strings.HasPrefix(ip, "ext:") {
-			kv := strings.Split(ip[4:], ":")
+		var isExtDatFile = 0
+		{
+			const prefix = "ext:"
+			if strings.HasPrefix(ip, prefix) {
+				isExtDatFile = len(prefix)
+			}
+			const prefixQualified = "ext-ip:"
+			if strings.HasPrefix(ip, prefixQualified) {
+				isExtDatFile = len(prefixQualified)
+			}
+		}
+		if isExtDatFile != 0 {
+			kv := strings.Split(ip[isExtDatFile:], ":")
 			if len(kv) != 2 {
 				return nil, newError("invalid external resource: ", ip)
 			}