package Ġcom . sar ba ev art ur . w if istream screen . data . http server Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . el vis he w . x log . X Log Ċ import Ġcom . sar ba ev art ur . w if istream screen . data . R Ċ import Ġcom . sar ba ev art ur . w if istream screen . data . other . getLog Ċ import Ġcom . sar ba ev art ur . w if istream screen . data . other . random String Ċ import Ġcom . sar ba ev art ur . w if istream screen . data . settings . Settings ReadOnly Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ class ĠHttp Server Files ( context : ĠContext , Ġprivate Ġval Ġsettings ReadOnly : ĠSettings ReadOnly ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠF AV ICON _ PNG Ġ= Ġ" favicon . png " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLOG O _ PNG Ġ= Ġ" logo . png " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFULL SCREEN _ ON _ PNG Ġ= Ġ" fullscreen - on . png " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFULL SCREEN _ OFF _ PNG Ġ= Ġ" fullscreen - off . png " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSTART _ STOP _ PNG Ġ= Ġ" start - stop . png " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ HTML Ġ= Ġ" index . html " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ HTML _ BACKGROUND _ COLOR Ġ= Ġ" BACKGROUND _ COLOR " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ HTML _ SCREEN _ STREAM _ ADDRESS Ġ= Ġ" SCREEN _ STREAM _ ADDRESS " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ HTML _ START _ STOP _ ADDRESS Ġ= Ġ" START _ STOP _ ADDRESS " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠINDEX _ HTML _ ENABLE _ BUTTON S Ġ= Ġ" ENABLE _ BUTTON S " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML Ġ= Ġ" pin request . html " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML _ STREAM _ REQUIRE _ PIN Ġ= Ġ" STREAM _ REQUIRE _ PIN " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML _ ENTER _ PIN Ġ= Ġ" ENTER _ PIN " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML _ FO UR _ DIG ITS Ġ= Ġ" FO UR _ DIG ITS " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML _ SUBMIT _ TEXT Ġ= Ġ" SUBMIT _ TEXT " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPIN REQUEST _ HTML _ WRONG _ PIN _ MESSAGE Ġ= Ġ" WRONG _ PIN _ MESSAGE " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ HTML _ ADDRESS Ġ= Ġ"/" ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ STREAM _ ADDRESS Ġ= Ġ"/ stream . m jpeg " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ START _ STOP _ ADDRESS Ġ= Ġ"/ start - stop " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEFAULT _ PIN _ ADDRESS Ġ= Ġ"/ ? pin =" ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLOG O _ PNG _ ADDRESS Ġ= Ġ"/ logo . png " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFULL SCREEN _ ON _ PNG _ ADDRESS Ġ= Ġ"/ fullscreen - on . png " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFULL SCREEN _ OFF _ PNG _ ADDRESS Ġ= Ġ"/ fullscreen - off . png " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTART _ STOP _ PNG _ ADDRESS Ġ= Ġ"/ start - stop . png " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġapplication Context : ĠContext Ġ= Ġcontext . application Context ĊĊĠĠĠ Ġval Ġfav icon P ng Ġ= ĠgetFile From Assets ( application Context , ĠF AV ICON _ PNG ) ĊĠĠĠ Ġval Ġlogo P ng Ġ= ĠgetFile From Assets ( application Context , ĠLOG O _ PNG ) ĊĠĠĠ Ġval Ġfull Screen On P ng Ġ= ĠgetFile From Assets ( application Context , ĠFULL SCREEN _ ON _ PNG ) ĊĠĠĠ Ġval Ġfull Screen Off P ng Ġ= ĠgetFile From Assets ( application Context , ĠFULL SCREEN _ OFF _ PNG ) ĊĠĠĠ Ġval Ġstart Stop P ng Ġ= ĠgetFile From Assets ( application Context , ĠSTART _ STOP _ PNG ) ĊĊĠĠĠ Ġprivate Ġval Ġbase Index Html Ġ= ĊĠĠĠĠĠĠĠ ĠString ( getFile From Assets ( application Context , ĠINDEX _ HTML ), ĠStandard Charsets . UTF _ 8 ) ĊĊĠĠĠ Ġprivate Ġval Ġbase Pin Request Html Ġ= ĊĠĠĠĠĠĠĠ ĠString ( getFile From Assets ( application Context , ĠPIN REQUEST _ HTML ), ĠStandard Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPIN REQUEST _ HTML _ STREAM _ REQUIRE _ PIN . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . html _ stream _ require _ pin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPIN REQUEST _ HTML _ ENTER _ PIN . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . html _ enter _ pin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPIN REQUEST _ HTML _ FO UR _ DIG ITS . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . html _ four _ digits ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPIN REQUEST _ HTML _ SUBMIT _ TEXT . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . html _ submit _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġhtml Enable Buttons Ġ= Ġsettings ReadOnly . html Enable Buttons ĊĠĠĠ Ġprivate Ġvar Ġhtml BackColor Ġ= Ġsettings ReadOnly . html BackColor ĊĠĠĠ Ġprivate Ġvar Ġenable Pin Ġ= Ġsettings ReadOnly . enable Pin ĊĠĠĠ Ġprivate Ġvar Ġpin Ġ= Ġsettings ReadOnly . pin ĊĊĠĠĠ Ġfun Ġprepare For Configure (): ĠPair < Boolean , ĠBoolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġhtml Enable Buttons Ġ= Ġsettings ReadOnly . html Enable Buttons ĊĠĠĠĠĠĠĠ Ġhtml BackColor Ġ= Ġsettings ReadOnly . html BackColor ĊĠĠĠĠĠĠĠ Ġenable Pin Ġ= Ġsettings ReadOnly . enable Pin ĊĠĠĠĠĠĠĠ Ġpin Ġ= Ġsettings ReadOnly . pin ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( html Enable Buttons , Ġenable Pin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Stream Address (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Pin ) Ġ"/" Ġ+ Ġrandom String ( 1 6 ) Ġ+ Ġ". m jpeg " ĊĠĠĠĠĠĠĠ Ġelse ĠDEFAULT _ STREAM _ ADDRESS ĊĊĠĠĠ Ġfun Ġconfigure Start Stop Address (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Pin ) Ġ"/" Ġ+ Ġrandom String ( 1 6 ) ĊĠĠĠĠĠĠĠ Ġelse ĠDEFAULT _ START _ STOP _ ADDRESS ĊĊĠĠĠ Ġfun Ġconfigure Index Html ( stream Address : ĠString , Ġstart Stop Address : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġbase Index Html ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINDEX _ HTML _ ENABLE _ BUTTON S . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhtml Enable Buttons . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINDEX _ HTML _ BACKGROUND _ COLOR . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"# % 0 6 X ". format ( 0 x FFFFFF Ġand Ġhtml BackColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( INDEX _ HTML _ SCREEN _ STREAM _ ADDRESS . to Regex (), Ġstream Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( INDEX _ HTML _ START _ STOP _ ADDRESS . to Regex (), Ġstart Stop Address ) ĊĊĠĠĠ Ġfun Ġconfigure Pin Address (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Pin ) ĠDEFAULT _ PIN _ ADDRESS Ġ+ Ġpin Ġelse ĠDEFAULT _ PIN _ ADDRESS ĊĊĠĠĠ Ġfun Ġconfigure Pin Request Html (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Pin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Pin Request Html . replace First ( PIN REQUEST _ HTML _ WRONG _ PIN _ MESSAGE . to Regex (), Ġ"& nbsp ") ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĊĠĠĠ Ġfun Ġconfigure Pin Request Error Html (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( enable Pin ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Pin Request Html ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPIN REQUEST _ HTML _ WRONG _ PIN _ MESSAGE . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context . getString ( R . string . html _ wrong _ pin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĊĠĠĠ Ġprivate Ġfun ĠgetFile From Assets ( context : ĠContext , ĠfileName : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ ĠX Log . d ( getLog (" getFile From Assets ", ĠfileName )) ĊĊĠĠĠĠĠĠĠ Ġcontext . assets . open ( fileName ). use Ġ{ ĠinputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Bytes Ġ= ĠByteArray ( inputStream . available ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . read ( file Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Bytes . isNotEmpty () Ġ|| Ġthrow ĠIllegalStateException ("$ fileName Ġis Ġempty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile Bytes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }