#!/opt/thinlinc/libexec/python3
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2020 Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import os
import sys
import errno
import signal
import locale
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
import socket
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
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
from thinlinc . tllogger import Logger
from thinlinc . tlwebadm . server import WebAdminServer
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
iI111iiIi11i = None
if 77 - 77: iIiii1i - ooo0O0oO00 . o00o0OO00O
def Ooo ( n , sf ) :
 iI111iiIi11i . info ( "Caught SIGTERM, Exiting..." )
 sys . exit ( 0 )
 if 9 - 9: ii . Ii * i1
 if 9 - 9: i1iiIII111
def i1Ii1i ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 93 - 93: IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo . Ooo0Ooo
 OO0o000o = ( len ( sys . argv ) > 1 and sys . argv [ 1 ] == "--foreground" )
 if 8 - 8: i1iiIII111 * i1 . I1I / ooo0O0oO00
 if os . getuid ( ) != 0 and not OO0o000o :
  print ( "This program must be run as root." )
  sys . exit ( 1 )
  if 58 - 58: I1Ii1I1 - ooOOO
 oO0 = hiveconf . open_hive ( os . path . join ( get_tl_prefix ( ) ,
 "etc" , "thinlinc.hconf" ) )
 if 13 - 13: ooo0O0oO00
 iiIII = oO0 . 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 - iI1iII1I1I1i
 if not OO0o000o :
  O0000OooOoo00 = oO0 . get_string ( "/tlwebadm/logging/logfile" ,
 "/var/log/tlwebadm.log" )
  daemon_init ( O0000OooOoo00 )
  if 70 - 70: i1iiIII111
  if 8 - 8: o00o0OO00O
 global iI111iiIi11i
 iI111iiIi11i = Logger ( oO0 , "tlwebadm" , mainloggername = "tlwebadm" , fd = sys . stdout ,
 include_pid = True )
 if 62 - 62: I1Ii1I1 % iIiii1i . I1Ii1I1 . ii . i1i1i1111I
 I1i = oO0 . get_string ( "/tlwebadm/password" , "" )
 if 75 - 75: ii . Ooo0Ooo . o00o0OO00O * iIiii1i % i1iiIII111
 if I1i == "" :
  iI111iiIi11i . error ( "No password configured. Exiting." )
  sys . exit ( 1 )
  if 34 - 34: i1iiIII111 * i1
  if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i
 if I1i . startswith ( "{SHA1}" ) :
  iI111iiIi11i . error ( "Weak password hash algorithm detected. Please regenerate the password. Exiting." )
  sys . exit ( 1 )
  if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
 if not OO0o000o :
  if 32 - 32: I1Ii1I1 + ooo0O0oO00 - oOo0O00
  if 79 - 79: Iii1i % ooo0O0oO00 * Oo + ooOOO / Oo . ooo0O0oO00
  I1i1Ii = "/var/run/tlwebadm.pid"
  if os . path . exists ( I1i1Ii ) :
   with open ( I1i1Ii ) as Ooo0OO :
    ii1Ii1I = int ( Ooo0OO . readline ( ) )
   try :
    os . kill ( ii1Ii1I , 0 )
   except OSError as oo0 :
    if oo0 . errno != errno . ESRCH :
     iI111iiIi11i . error ( "Error probing existing tlwebadm process with PID %s. Exiting." % ii1Ii1I )
     sys . exit ( 1 )
     if 20 - 20: IiIIii11Ii . ooo0O0oO00 % Ooo0Ooo / Ii / oOo0O00
    iI111iiIi11i . info ( "Removing stale PID file for process %s" % ii1Ii1I )
    os . unlink ( I1i1Ii )
   else :
    iI111iiIi11i . error ( "Process already running with PID %s. Exiting." % ii1Ii1I )
    sys . exit ( 1 )
    if 47 - 47: IiIIii11Ii
  write_pid_file ( I1i1Ii )
  if 27 - 27: Oo / ooo0O0oO00 + ii - OooOoo * I1Ii1I1 / I1Ii1I1
 iI111iiIi11i . info ( "ThinLinc Web Administration version %s build %s starting..." % ( str ( TL_VERSION ) , str ( TL_BUILDNUM ) ) )
 if 53 - 53: I1Ii1I1
 if 95 - 95: i1 - I1Ii1I1 + Oo
 signal . signal ( signal . SIGTERM , Ooo )
 if 49 - 49: IIiIIiIi11I1
 try :
  iIIiii1iI = WebAdminServer ( )
 except OSError as oo0 :
  iI111iiIi11i . error ( "Could not start HTTP service: %s" % oo0 )
  sys . exit ( 1 )
  if 43 - 43: ooOOO . iIiii1i + ooo000
 try :
  try :
   iIIiii1iI . serve_forever ( )
   if 87 - 87: Iii1i + ooOOO . o00o0OO00O / Ii + Oo
   sys . exit ( 1 )
  finally :
   iIIiii1iI . server_close ( )
 except KeyboardInterrupt :
  iI111iiIi11i . info ( "Caught <CTRL-C>, Exiting..." )
  sys . exit ( 0 )
  if 77 - 77: i1iiIII111 + ii - Oo % ooo000
  if 74 - 74: Ii + Ooo0Ooo
if __name__ == "__main__" :
 i1Ii1i ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
