#!/opt/thinlinc/libexec/python3
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2018 Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import os
import sys
import signal
import locale
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
from thinlinc import hiveconf
from thinlinc . daemon import daemon_init , write_pid_file
from thinlinc . version import TL_VERSION , TL_BUILDNUM
from thinlinc . prefix import get_tl_prefix , get_tl_run_prefix
from thinlinc . tllogger import Logger
from thinlinc . tlwebaccess . server import WebAccessServer
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
OOoOoo000O00 = None
if 55 - 55: o0Oo - ii1I1iII1I1I . i1I1IiIIiIi1 % oo0O000ooO * iIIiiIIiii1
def iIi1ii1I1iI11 ( n , sf ) :
 OOoOoo000O00 . info ( "Caught SIGTERM, Exiting..." )
 sys . exit ( 0 )
 if 55 - 55: I11II1Ii % iIi
def ii ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 91 - 91: iI . iIIiiIIiii1 . ooOOO / oo0O000ooO * I11II1Ii / OooOoo
 oOooo0OOO = ( len ( sys . argv ) > 1 and sys . argv [ 1 ] == "--foreground" )
 if 53 - 53: Ii * Oo * o0Oo . i1iiIII111
 if os . getuid ( ) != 0 and not oOooo0OOO :
  print ( "This program must be run as root." )
  sys . exit ( 1 )
  if 14 - 14: I1I / I11II1Ii
 ooOOooO0 = hiveconf . open_hive ( os . path . join ( get_tl_prefix ( ) ,
 "etc" , "thinlinc.hconf" ) )
 if 13 - 13: I11II1Ii
 iiIII = ooOOooO0 . get_string ( "/vsm/setup_completed" )
 if TL_VERSION and iiIII != TL_VERSION :
  sys . exit ( "The setup has not been completed - please run tl-setup" )
  if 28 - 28: I1Ii1I1 . Iii1i - ooOOO - i1I1IiIIiIi1
 if not oOooo0OOO :
  O0000OooOoo00 = ooOOooO0 . get_string ( "/webaccess/logging/logfile" ,
 "/var/log/tlwebaccess.log" )
  daemon_init ( O0000OooOoo00 )
  if 70 - 70: i1iiIII111
  if 8 - 8: iIi
 global OOoOoo000O00
 OOoOoo000O00 = Logger ( ooOOooO0 , "webaccess" , mainloggername = "tlwebaccess" ,
 fd = sys . stdout , include_pid = True )
 if 62 - 62: I1Ii1I1 % iIIiiIIiii1 . I1Ii1I1 . iI . i1i1i1111I
 if not oOooo0OOO :
  if 87 - 87: Oo - iIi
  if 32 - 32: Ii % i1i1i1111I % iIi - iIIiiIIiii1 % i1iiIII111
  o0OoOOo00OOO = "/var/run/tlwebaccess.pid"
  if os . path . exists ( o0OoOOo00OOO ) :
   with open ( o0OoOOo00OOO ) as i11ii1i1I :
    IiI = int ( i11ii1i1I . readline ( ) )
   try :
    os . kill ( IiI , 0 )
   except ProcessLookupError :
    OOoOoo000O00 . info ( "Removing stale PID file for process %s" % IiI )
    os . unlink ( o0OoOOo00OOO )
   except OSError as o00O000o0 :
    OOoOoo000O00 . error ( "Error probing existing tlwebaccess process with PID %s. Exiting." % IiI )
    sys . exit ( 1 )
   else :
    OOoOoo000O00 . error ( "Process already running with PID %s. Exiting." % IiI )
    sys . exit ( 1 )
    if 71 - 71: Oo * ooOOO / Oo
  write_pid_file ( o0OoOOo00OOO )
  if 14 - 14: OooOoo % oOo0O00 + I1I % i1iiIII111 * ooOOO / iIIiiIIiii1
 OOoOoo000O00 . info ( "ThinLinc Web Access version %s build %s starting..." % ( str ( TL_VERSION ) , str ( TL_BUILDNUM ) ) )
 if 63 - 63: i1i1i1111I . ii1I1iII1I1I * ooOOO
 if 6 - 6: i1iiIII111
 signal . signal ( signal . SIGTERM , iIi1ii1I1iI11 )
 if 99 - 99: ooOOO * I1Ii1I1
 if 95 - 95: ii1I1iII1I1I % Iii1i % i1i1i1111I . OooOoo
 if 70 - 70: IiIIii11Ii
 try :
  IiII = os . umask ( 0o066 )
  try :
   os . makedirs ( get_tl_run_prefix ( ) )
  finally :
   os . umask ( IiII )
 except FileExistsError :
  pass
 except OSError as o00O000o0 :
  OOoOoo000O00 . error ( "Unable to create runtime directory: %s" % str ( o00O000o0 ) )
  OOoOoo000O00 . error ( "Exiting" )
  sys . exit ( 1 )
  if 6 - 6: i1 / Oo * IiIIii11Ii
  if 100 - 100: iI - OooOoo * I1Ii1I1 / ii1I1iII1I1I / Iii1i
 try :
  I11iIi1i = os . path . join ( get_tl_run_prefix ( ) , "webaccess" )
  os . mkdir ( I11iIi1i , 0o700 )
 except FileExistsError :
  pass
 except OSError as o00O000o0 :
  OOoOoo000O00 . error ( "Unable to create pipe directory: %s" % str ( o00O000o0 ) )
  OOoOoo000O00 . error ( "Exiting" )
  sys . exit ( 1 )
  if 49 - 49: oo0O000ooO
 try :
  iIIiii1iI = WebAccessServer ( )
 except OSError as o00O000o0 :
  OOoOoo000O00 . error ( "Could not start HTTP service: %s" % o00O000o0 )
  sys . exit ( 1 )
  if 43 - 43: ooOOO . iIIiiIIiii1 + o0Oo
 try :
  try :
   if 87 - 87: Iii1i + ooOOO . iIi / Ii + Oo
   if 77 - 77: i1iiIII111 + iI - Oo % o0Oo
   while True :
    iIIiii1iI . handle_request ( )
    if 74 - 74: Ii + ii1I1iII1I1I
  finally :
   iIIiii1iI . server_close ( ) ;
   if 1 - 1: I1I % ii1I1iII1I1I + i1iiIII111 . i1iiIII111 % Oo
 except KeyboardInterrupt :
  OOoOoo000O00 . info ( "Caught <CTRL-C>, Exiting..." )
  sys . exit ( 0 )
  if 93 - 93: oOo0O00 % ii1I1iII1I1I * i1iiIII111
if __name__ == "__main__" :
 ii ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
