package Ġcom . dev o . feeds . data Ċ Ċ import Ġorg . apache . commons . validator . rout ines . Inet Address Validator Ċ Ċ object ĠType Inference Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠIP _ VALID ATOR Ġ= ĠInet Address Validator () ĊĠĠĠ Ġprivate Ġval ĠDO MAIN _ REGEX Ġ= ĠRegex ( ĊĠĠĠĠĠĠĠ Ġ"^ (? = .{ 1 , 2 5 5 }$ )[ 0 - 9 A - Za - z ]( ?: (?: [ 0 - 9 A - Za - z ] |- ){ 0 , 6 1 }[ 0 - 9 A - Za - z ]) ?" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( ?: \\ .[ 0 - 9 A - Za - z ]( ?: (?: [ 0 - 9 A - Za - z ] |- ){ 0 , 6 1 }[ 0 - 9 A - Za - z ]) ? )* \\. ? $" ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval ĠMD 5 _ REGEX Ġ= ĠRegex ("[ 0 - 9 a - f ]{ 3 2 }$ ") ĊĠĠĠ Ġprivate Ġval ĠSHA 1 _ REGEX Ġ= ĠRegex ("[ 0 - 9 a - f ]{ 4 0 }\ $ ") ĊĠĠĠ Ġprivate Ġval ĠSHA 2 5 6 _ REGEX Ġ= ĠRegex ("[ 0 - 9 a - f ]{ 6 4 }\ $ ") ĊĠĠĠ Ġprivate Ġval ĠURL _ REGEX Ġ= ĠRegex ("^ ( https ?| ftp | file ) :// [- a - zA - Z 0 - 9 + & @ # /% ?= ~ _| !: ,. ; ]* [- a - zA - Z 0 - 9 + & @ # /% = ~ _| ]") ĊĠĠĠ Ġprivate Ġval ĠPORT _ ENDING _ REGEX Ġ= ĠRegex (" :\\ d +$ ") ĊĊĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠ Ġinternal Ġfun Ġis MD 5 ( input : ĠString ): ĠBoolean Ġ= Ġinput . length Ġ== Ġ 3 2 Ġ&& ĠMD 5 _ REGEX . matches ( input ) ĊĊĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠ Ġinternal Ġfun Ġis Sha 1 ( input : ĠString ): ĠBoolean Ġ= Ġinput . length Ġ== Ġ 4 0 Ġ&& ĠSHA 1 _ REGEX . matches ( input ) ĊĊĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠ Ġinternal Ġfun Ġis Sha 2 5 6 ( input : ĠString ): ĠBoolean Ġ= Ġinput . length Ġ== Ġ 6 4 Ġ&& ĠSHA 2 5 6 _ REGEX . matches ( input ) ĊĊĠĠĠ Ġinternal Ġfun Ġis Ip ( input : ĠString ): ĠBoolean Ġ= ĠIP _ VALID ATOR . isValid ( input ) ĊĊĠĠĠ Ġinternal Ġfun Ġis Domain ( input : ĠString ): ĠBoolean Ġ= ĠDO MAIN _ REGEX . matches ( input ) ĊĊĠĠĠ Ġinternal Ġfun Ġis Link ( input : ĠString ): ĠBoolean Ġ= ĠURL _ REGEX . matches ( input ) ĊĊĠĠĠ Ġprivate Ġfun Ġdomain Or Hostname ( input : ĠString ): ĠString Ġ= Ġwhen Ġ( input . filter Ġ{ Ġit Ġ== Ġ'.' Ġ}. count ()) Ġ{ ĊĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" hostname " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" domain " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġip Or Domain With Port ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġip Or Host Ġ= Ġinput . substring ( 0 , Ġinput . lastIndexOf (" :" )) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ip ( ip Or Host ) Ġ-> Ġ" ip | port " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Domain ( ip Or Host ) Ġ-> Ġ" domain | port " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinfer Type ( input : ĠString ?): ĠString Ġ= Ġwhen Ġ( input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ip ( input ) Ġ-> Ġ" ip - dst " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Domain ( input ) Ġ-> Ġdomain Or Hostname ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis MD 5 ( input ) Ġ-> Ġ" md 5 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sha 1 ( input ) Ġ-> Ġ" sha 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Sha 2 5 6 ( input ) Ġ-> Ġ" sha 2 5 6 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Link ( input ) Ġ-> Ġ" link " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPORT _ ENDING _ REGEX . matches ( input ) Ġ-> Ġip Or Domain With Port ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" unknown " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ