26
26
import java .util .List ;
27
27
import java .util .Map ;
28
28
import java .util .HashMap ;
29
+ import java .util .Collections ;
29
30
30
31
// SnakeYAML
31
32
import org .yaml .snakeyaml .Yaml ;
@@ -107,8 +108,12 @@ public Referer parse(String refererUri, String pageHost) throws URISyntaxExcepti
107
108
}
108
109
109
110
public Referer parse (URI refererUri , String pageHost ) {
111
+ return parse (refererUri , pageHost , Collections .<String >emptyList ());
112
+ }
113
+
114
+ public Referer parse (URI refererUri , String pageHost , List <String > internalDomains ) {
110
115
if (refererUri == null ) { return null ; }
111
- return parse (refererUri .getScheme (), refererUri .getHost (), refererUri .getPath (), refererUri .getRawQuery (), pageHost );
116
+ return parse (refererUri .getScheme (), refererUri .getHost (), refererUri .getPath (), refererUri .getRawQuery (), pageHost , internalDomains );
112
117
}
113
118
114
119
public Referer parse (URL refererUrl , String pageHost ){
@@ -117,6 +122,10 @@ public Referer parse(URL refererUrl, String pageHost){
117
122
}
118
123
119
124
private Referer parse (String scheme , String host , String path , String query , String pageHost ){
125
+ return parse (scheme , host , path , query , pageHost , Collections .<String >emptyList ());
126
+ }
127
+
128
+ private Referer parse (String scheme , String host , String path , String query , String pageHost , List <String > internalDomains ){
120
129
121
130
if (scheme == null || (!scheme .equals ("http" ) && !scheme .equals ("https" ))) return null ;
122
131
@@ -126,6 +135,10 @@ private Referer parse(String scheme, String host, String path, String query, Str
126
135
// 2. Have an algo for stripping subdomains before checking match
127
136
if (host == null ) return null ; // Not a valid URL
128
137
if (host .equals (pageHost )) return new Referer (Medium .INTERNAL , null , null );
138
+ for (String s : internalDomains ) {
139
+ if (s .trim ().equals (host ))
140
+ return new Referer (Medium .INTERNAL , null , null );
141
+ }
129
142
130
143
// Try to lookup our referer. First check with paths, then without.
131
144
// This is the safest way of handling lookups
@@ -264,4 +277,4 @@ private Map<String,RefererLookup> loadReferers(InputStream referersYaml) throws
264
277
265
278
return referers ;
266
279
}
267
- }
280
+ }
0 commit comments