/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 7 - 2 0 2 0 ĠWire Guard ĠLLC . Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 8 - 2 0 2 0 ĠHar sh ĠSh and ily a Ġ< ms f jar vis @ gmail . com >. ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ package Ġcom . wire guard . android . work Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġcom . wire guard . android . di . get Injector Ċ import Ġcom . wire guard . android . model . Tunnel Manager Ċ import Ġcom . wire guard . android . util . Exception Log gers Ċ import Ġcom . wire guard . android . util . Root Shell Ċ import Ġjavax . inject . Inject Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠT unnel Restore Worker ( ĊĠĠĠ Ġapp Context : ĠContext , ĊĠĠĠ Ġworker Params : ĠWorker Parameters Ċ ) Ġ: ĠWorker ( app Context , Ġworker Params ) Ġ{ ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġtunnel Manager : ĠT unnel Manager ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġroot Shell : ĠRoot Shell ĊĊĠĠĠ Ġoverride Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġget Injector ( application Context ). inject ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġroot Shell . run ( result , Ġ" ipt ables Ġ- L Ġ| Ġgrep ĠChain ") ĊĠĠĠĠĠĠĠ Ġroot Shell . run ( result , Ġ" ip 6 tables Ġ- L Ġ| Ġgrep ĠChain ") ĊĠĠĠĠĠĠĠ ĠTim ber . tag (" Restore Work ") ĊĠĠĠĠĠĠĠ Ġval Ġis D ro pping Ġ= Ġresult . any Ġ{ Ġit . contains (" DROP ") Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is D ro pping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠA FW all + Ġsets Ġall Ġpackets Ġto ĠDROP Ġto Ġprevent Ġle aks Ġduring Ġboot . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTrying Ġto Ġstart Ġa ĠWire Guard Ġtunnel Ġin Ġthis Ġphase Ġwill Ġend Ġbad ly , Ġso ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdefer Ġthe Ġjob Ġfor Ġlater . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Packets Ġare Ġcurrently Ġbeing Ġdropped , Ġdefer Ġtunnel Ġstate Ġrestore ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . retry () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Rest oring Ġtunnel Ġstate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtunnel Manager . restore State ( false ). when Complete ( Exception Log gers . D ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ