/** Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ġor Ġmore Ċ Ġ* Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ġdistributed Ġwith Ċ Ġ* Ġthis Ġwork Ġfor Ġadditional Ġinformation Ġregarding Ġcopyright Ġownership . Ċ Ġ* ĠThe ĠASF Ġlicenses Ġthis Ġfile Ġto ĠYou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ċ Ġ* Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ċ Ġ* Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ // ĠJDK Ġimports Ċ package Ġai . plat on . pulsar . filter Ċ Ċ import Ġai . plat on . pulsar . common . App Paths . PATH _ BAN N ED _ URL S Ċ import Ġai . plat on . pulsar . common . App Paths . PATH _ UN RE ACH ABLE _ HOST S Ċ import Ġai . plat on . pulsar . common . FS Utils Ċ import Ġai . plat on . pulsar . common . Local FS Utils Ċ import Ġai . plat on . pulsar . common . config . Immutable Config Ċ import Ġai . plat on . pulsar . crawl . filter . C rawl Url Filter Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠFilters ĠURLs Ġbased Ġon Ġa Ġfile Ġof Ġregular Ġexpressions Ġusing Ġthe Ċ Ġ* Ġ[ Java ĠRegex Ġimplementation ][ java . util . regex ]. Ċ Ġ*/ Ċ class ĠB anned Url Filter ( val Ġconf : ĠImmutable Config ) Ġ: ĠC rawl Url Filter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġb anned Urls : ĠMutable Set < String > Ġ= ĠHashSet () ĊĠĠĠ Ġprivate Ġval Ġunreachable Hosts : ĠMutable Set < String > Ġ= ĠHashSet () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġb anned Urls . addAll ( FS Utils . read All Lines Sil ent ( PATH _ BAN N ED _ URL S , Ġconf )) ĊĠĠĠĠĠĠĠ Ġunreachable Hosts . addAll ( Local FS Utils . read All Lines Sil ent ( PATH _ UN RE ACH ABLE _ HOST S )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( url : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( b anned Urls . contains ( url ) Ġ|| Ġunreachable Hosts . contains ( url )) Ġnull Ġelse Ġurl ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠURL FILTER _ DATE _ FILE Ġ= Ġ" ur lf ilter . date . file " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠURL FILTER _ DATE _ R ULES Ġ= Ġ" ur lf ilter . date . rules " ĊĠĠĠ Ġ} Ċ }