@ file : Suppress (" unused ") Ċ Ċ package Ġorg . i 2 peer . tor . manager Ċ Ċ import Ġarrow . core . Try Ċ import Ġjava . io .* Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . Socket Ċ import Ġjava . util .* Ċ Ċ class ĠTor Config Builder ( private Ġval Ġsettings : ĠTor Settings ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbuffer Ġ= ĠStringBuffer () ĊĊĠĠĠ Ġfun Ġwrite Config ( file : ĠFile ): ĠTry < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate All Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . write Text ( asString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdates Ġthe Ġtor Ġconfig Ġfor Ġall Ġmethods Ġannotated Ġwith ĠSettings Config ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġupdate All Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Class . methods . forEach Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . annotations . forEach Ġ{ Ġannotation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( annotation Ġis ĠSettings Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas String (): ĠString Ġ= Ġbuffer . toString () ĊĊĠĠĠ Ġfun Ġline ( value : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( value )) Ġbuffer . append ( value ). append ("\ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer Ġ= ĠStringBuffer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġconfigure Plug gable Transport s From Settings ( plug gable Transport Client : ĠFile ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( plug gable Transport Client Ġ== Ġnull Ġ|| Ġ! settings . has B rid ges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( plug gable Transport Client . exists () Ġ&& Ġplug gable Transport Client . can Execute ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse B rid ges () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb rid ges Ġ= Ġsettings . listOf Supported B rid ges Ġ?: Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( brid ges . contains (" ob fs 3 ") Ġ|| Ġb rid ges . contains (" ob fs 4 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Plugin Ob fs ( plug gable Transport Client . canonical Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( brid ges . contains (" me ek ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransport Plugin M eek ( plug gable Transport Client . canonical Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( brid ges . length Ġ> Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( bridge Ġin Ġb rid ges . split ("\\ r ? \\ n ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline (" Bridge Ġ$ bridge ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġif Ġ( brid ges . contains (" me ek ")) Ġ" me ek _ lite " Ġelse Ġ" ob fs 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd B rid ges From Settings ( type , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIOException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bridge Ġbinary Ġdoes Ġnot Ġexist : Ġ" Ġ+ Ġplug gable Transport Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. canonical Path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġautom ap Hosts On Resolve From Settings (): ĠTor Config Builder Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . is Autom ap Hosts On Resolve ) Ġautom ap Hosts On Resolve () Ġelse Ġthis ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġconnection Padding From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . has Connection Padding ) Ġconnection Padding () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġcontrol Port Write ToFile From Config (): ĠTor Config Builder Ġ= Ġcontrol Port Write ToFile ( ĊĠĠĠĠĠĠĠ Ġsettings . control Port , ĊĠĠĠĠĠĠĠ ĠFile ( settings . tor Dir , Ġ" control . txt ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġdebug Logs From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . has Debug Logs ) Ġdebug Logs () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġdisable Network From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . disable Network ) Ġdisable Network () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġdns Port From Settings (): ĠTor Config Builder Ġ= Ġdns Port ( settings . dns Port ) ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġhttp Tunnel Port From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . http Tunnel Port Ġ!= Ġnull ) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġreturn Ġhttp Tunnel Port ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . http Tunnel Port , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( settings . has Isolation Address Flag For Tunnel ) Ġ" Is olate Dest Addr " Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġnon Ġexit Ġrelay Ġto Ġbuilder . ĠThis Ġmethod Ġuses Ġa Ġdefault Ġgoogle Ġname server . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/* ĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġnon Exit Relay From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! settings . has Reach able Address () Ġ&& Ġ! settings . has B rid ges () Ġ&& Ġsettings . is Relay ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresol v Ġ= Ġcontext . create Google Name server File () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmake Non Exit Relay ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresol v . getCanonical Path (), Ġsettings . relay Port , Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. relay Nick name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġentry / exit / exclude Ġnodes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġnodes From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġentry Nodes ( settings . entry Nodes ). exit Nodes ( settings . exit Nodes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. exclude Nodes ( settings . exclude Nodes ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġproxy On All Interfaces From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . has Open Proxy On All Interfaces ) Ġproxy On All Interfaces () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġproxy S ocks 5 From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . use S ocks 5 Ġ&& Ġ! settings . has B rid ges Ġ&& Ġ! isNull OrEmpty ( settings . proxy S ocks 5 Host ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġsettings . proxy S ocks 5 Server Port Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproxy S ocks 5 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. proxy S ocks 5 Host , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . proxy S ocks 5 Server Port ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġproxy With Authentication From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! settings . use S ocks 5 Ġ&& Ġ! settings . has B rid ges Ġ&& Ġ! isNull OrEmpty ( settings . proxy Type ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! isNull OrEmpty ( settings . proxy Host ) Ġ&& Ġsettings . proxy Port Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproxy With Authentication ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . proxy Type , Ġsettings . proxy Host , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . proxy Port , Ġsettings . proxy User , Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. proxy Password ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġreachable Addresses From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . has Reach able Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreachable Address Ports ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reachable Address Ports ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġreduced Connection Padding From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( settings . has Reduc ed Connection Padding ) Ġreduced Connection Padding () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġsafe S ocks From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! settings . has Safe S ocks ) Ġsafe S ocks Disable () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġsock s Port From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsock s Port Ġ= Ġsettings . socks Port ĊĠĠĠĠĠĠĠ Ġif Ġ( socks Port . indexOf (': ') Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsock s Port Ġ= Ġsock s Port . split (" :" . to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array ()[ 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! socks Port . equals (" auto ", Ġignore Case Ġ= Ġtrue ) Ġ&& Ġis Local Port Open ( socks Port . toInt ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsock s Port Ġ= Ġ" auto " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsock s Port ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsock s Port , Ġif Ġ( settings . has Isolation Address Flag For Tunnel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Is olate Dest Addr " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġstrict Nodes From Settings (): ĠTor Config Builder Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . has Strict Nodes ) Ġstrict Nodes Enable () Ġelse Ġstrict Nodes Disable () ĊĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġtest S ocks From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! settings . has Test S ocks ) Ġtest S ocks Disable () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġtrans Port From Settings (): ĠTor Config Builder Ġ= Ġtrans Port ( settings . trans Port ) ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġuse B rid ges From Settings (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! settings . has B rid ges ) Ġdont Use B rid ges () Ġelse Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Settings Config ĊĠĠĠ Ġfun Ġvirtual Address Network From Settings (): ĠTor Config Builder Ġ= Ġvirtual Address Network ( settings . virtual Address Network ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġb rid ges Ġfrom Ġb rid ges . txt Ġfile . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd B rid ges ( input : ĠInputStream ?, Ġbridge Type : ĠString , Ġmax B rid ges : ĠInt ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input Ġ== Ġnull Ġ|| Ġis Null OrEmpty ( bridge Type ) Ġ|| Ġmax B rid ges Ġ< Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb rid ges Ġ= ĠArrayList < Bridge >() ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbr Ġ= ĠBufferedReader ( InputStream Reader ( input , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? Ġ= Ġbr . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( line Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= Ġline . split (" Ġ". to Regex (), Ġ 1 ). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tokens . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġbr . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue // bad Ġentry ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb rid ges . add ( Bridge ( tokens [ 0 ], Ġtokens [ 1 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġbr . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġb rid ges . shuffle ( Random ( System . nano Time ())) ĊĠĠĠĠĠĠĠ Ġvar Ġbridge Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġb rid ges ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b . type Ġ== Ġbridge Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbridge ( b . type , Ġb . config ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ bridge Count Ġ> Ġmax B rid ges ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd B rid ges From Settings ( type : ĠString , Ġmax B rid ges : ĠInt ): ĠTor Config Builder Ġ= ĊĠĠĠĠĠĠĠ Ġadd B rid ges ( settings . brid ges , Ġtype , Ġmax B rid ges ) ĊĊĠĠĠ Ġprivate Ġfun Ġautom ap Hosts On Resolve (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Autom ap Hosts On Resolve Ġ 1 "). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbridge ( type : ĠString , Ġconfig : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( type ) Ġ&& Ġ! isNull OrEmpty ( config )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Bridge Ġ"). append ( type ). append (' Ġ'). append ( config ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconnection Padding (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Connection Padding Ġ 1 "). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontrol Port Write ToFile ( control Port : ĠString , Ġcontrol Port File : ĠFile ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Control Port Ġ$ control Port \ n ") ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Control Port Write ToFile Ġ"). append ( control Port File . absolute Path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdebug Logs (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Log Ġdebug Ġsyslog \ n ") ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Log Ġinfo Ġsyslog \ n ") ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Safe Logging Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisable Network (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Disable Network Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdns Port ( dns Port : ĠInt ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dns Port Ġ!= Ġnull ) Ġbuffer . append (" DN SP ort Ġ"). append ( dns Port ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdont Use B rid ges (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Use B rid ges Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġentry Nodes ( entry Nodes : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( entry Nodes )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Entry Nodes Ġ"). append ( entry Nodes ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexclude Nodes ( exclude Nodes : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( exclude Nodes )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Exclude Nodes Ġ"). append ( exclude Nodes ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit Nodes ( exit Nodes : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( exit Nodes )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Exit Nodes Ġ"). append ( exit Nodes ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgeo Ip File ( path : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( path )) Ġbuffer . append (" Geo IP File Ġ"). append ( path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgeo Ip V 6 File ( path : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( path )) Ġbuffer . append (" Geo IPv 6 File Ġ"). append ( path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhttp Tunnel Port ( port : ĠInt ?, Ġisolation Flags : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( port Ġ== Ġnull ) Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġbuffer . append (" HTTP Tunnel Port Ġ"). append ( port ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( is olation Flags )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Ġ"). append ( is olation Flags ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Non Exit Relay ( dns File : ĠString , Ġor Port : ĠInt , Ġnickname : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( buffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Server DNS Res olv Conf File Ġ"). append ( dns File ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" OR Port Ġ"). append ( or Port ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Nick name Ġ"). append ( nickname ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Exit Policy Ġreject Ġ* :* "). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġproxy On All Interfaces (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" S ocks Listen Address Ġ 0 . 0 . 0 . 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġsock s 5 Ġproxy Ġwith Ġno Ġauthentication . ĠThis Ġcan Ġbe Ġset Ġif Ġyou Ġare Ġusing Ġa ĠVPN . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġproxy S ocks 5 ( host : ĠString ?, Ġport : ĠInt ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( host ) Ġ&& Ġport Ġ!= Ġnull ) Ġbuffer . append (" socks 5 Proxy Ġ"). append ( host ). append (': '). append ( port ). append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ'\ n ' ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġproxy With Authentication Ġinformation . ĠIf Ġproxy Type , Ġproxy Host Ġor Ġproxy Port Ġis Ġempty , ĊĠĠĠĠ Ġ* Ġthen Ġthis Ġmethod Ġdoes Ġnothing . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġproxy With Authentication ( ĊĠĠĠĠĠĠĠ Ġproxy Type : ĠString ?, ĊĠĠĠĠĠĠĠ Ġproxy Host : ĠString ?, ĊĠĠĠĠĠĠĠ Ġproxy Port : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġproxy User : ĠString ?, ĊĠĠĠĠĠĠĠ Ġproxy Pass : ĠString ? ĊĠĠĠ Ġ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( proxy Type ) Ġ&& Ġ! isNull OrEmpty ( proxy Host ) Ġ&& Ġproxy Port Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( proxy Type ). append (" Proxy Ġ"). append ( proxy Host ). append (': '). append ( proxy Port ). append ('\ n ') ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proxy User Ġ!= Ġnull Ġ&& Ġproxy Pass Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( proxy Type . equals (" socks 5 ", Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" S ocks 5 Proxy Username Ġ"). append ( proxy User ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" S ocks 5 Proxy Password Ġ"). append ( proxy Pass ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( proxy Type ). append (" Proxy Authenticator Ġ"). append ( proxy User ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (': '). append ( proxy Port ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( proxy Pass Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append ( proxy Type ). append (" Proxy Authenticator Ġ"). append ( proxy User ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (': '). append ( proxy Port ). append ('\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreachable Address Ports ( reachable Addresses Ports : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( reachable Addresses Ports )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Reach able Addresses Ġ"). append ( reachable Addresses Ports ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreduced Connection Padding (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Reduc ed Connection Padding Ġ 1 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsafe S ocks Disable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Safe S ocks Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsafe S ocks Enable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Safe S ocks Ġ 1 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsock s Port ( socks Port : ĠString , Ġisolation Flag : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isNull OrEmpty ( socks Port )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . append (" SOCK SP ort Ġ"). append ( socks Port ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( is olation Flag )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Ġ"). append ( is olation Flag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuffer . append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstrict Nodes Disable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Strict Nodes Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstrict Nodes Enable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Strict Nodes Ġ 1 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest S ocks Disable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Test S ocks Ġ 0 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest S ocks Enable (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Test S ocks Ġ 1 \ n ") ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtrans Port ( trans Port : ĠInt ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( trans Port Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Trans Port Ġ"). append ( trans Port ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransport Plugin M eek ( client Path : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Client Transport Plugin Ġme ek _ lite Ġexec Ġ"). append ( client Path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransport Plugin Ob fs ( client Path : ĠString ): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Client Transport Plugin Ġob fs 3 Ġexec Ġ"). append ( client Path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Client Transport Plugin Ġob fs 4 Ġexec Ġ"). append ( client Path ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuse B rid ges (): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer . append (" Use B rid ges Ġ 1 "). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvirtual Address Network ( address : ĠString ?): ĠTor Config Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isNull OrEmpty ( address )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . append (" Virtual Addr Network Ġ"). append ( address ). append ('\ n ') ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Null OrEmpty ( value : ĠString ?): ĠBoolean Ġ= Ġ( value Ġ== Ġnull Ġ|| Ġvalue . isEmpty ()) ĊĊĠĠĠ Ġprivate Ġfun Ġis Local Port Open ( port : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSocket (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnect ( Inet SocketAddress (" 1 2 7 . 0 . 0 . 1 ", Ġport ), Ġ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠBridge ( internal Ġval Ġtype : ĠString , Ġinternal Ġval Ġconfig : ĠString ) Ċ } Ċ