#!/opt/thinlinc/libexec/python3
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2014 Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import sys
import os
import locale
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
from thinlinc import hiveconf
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
from thinlinc . sessioninfo import GPSError , get_public_sessioninfo
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
from thinlinc . optionparse import OptionParser
from thinlinc . optcomplete import CompletionResult , NoneCompleter
from thinlinc . version import TL_VERSION
if 98 - 98: I11iiIi11i1I % oOO
def i1ii1 ( username , param , nofolder = 0 ) :
 ooo0O0oO00 = o00o0OO00O ( username , param )
 if isinstance ( ooo0O0oO00 , dict ) :
  if nofolder :
   sys . exit ( "%s is a folder, not a parameter (try -a)" % param )
  else :
   return ooo0O0oO00
 elif isinstance ( ooo0O0oO00 , list ) :
  return " " . join ( map ( str , ooo0O0oO00 ) )
 else :
  return ooo0O0oO00
  if 57 - 57: iiIi1 - ii % Ii * i1i1i1111I / Ii
def o00o0OO00O ( session_info , param ) :
 if param . startswith ( "/" ) :
  param = param [ 1 : ]
  if 43 - 43: I11iiIi11i1I
 if param . endswith ( "/" ) :
  param = param [ : - 1 ]
  if 31 - 31: IIiIIiIi11I1 * oOO / OooOoo
 oOooo0OOO = param . split ( "/" )
 if 53 - 53: Ii * Oo * ooo000 . i1iiIII111
 if oOooo0OOO == [ "" ] :
  return session_info
  if 14 - 14: I1I / oOO
 ooOOooO0 = session_info
 for param in oOooo0OOO :
  ooOOooO0 = ooOOooO0 . get ( param )
  if ooOOooO0 == None :
   sys . exit ( "No such parameter as %s" % param )
   if 13 - 13: oOO
 return ooOOooO0
 if 2 - 2: i1
def IIiIiiIiI ( pwd , line , point , prefix , suffix ) :
 try :
  OO0000 = oOoo0 ( verbose = False )
 except Exception :
  return CompletionResult ( completions = [ ] , nospace = False )
 Iio0 = [ ]
 if not prefix . startswith ( "/" ) :
  Iio0 . append ( "/" )
  if 11 - 11: ii . i1i1i1111I
 I1i = i1111IIi ( OO0000 , "/" , len ( prefix . split ( "/" ) ) )
 Iio0 += [ path + "/" for path in I1i if path . startswith ( prefix ) and len ( path . split ( "/" ) ) <= len ( prefix . split ( "/" ) ) or prefix == '' ]
 if 86 - 86: i1 + ooo000 + oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i
 if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
 if 32 - 32: I1Ii1I1 + oOO - oOo0O00
 if 79 - 79: Iii1i % oOO * Oo + ooOOO / Oo . oOO
 if len ( Iio0 ) == 1 :
  if 20 - 20: ii + i1iiIII111 / I1I
  Ooo0OO = Iio0 [ 0 ]
  if 6 - 6: i1iiIII111
  if 99 - 99: ooOOO * I1Ii1I1
  I1i = i1111IIi ( OO0000 , "/" , len ( prefix . split ( "/" ) ) + 1 )
  Iio0 += [ path + "/" for path in I1i if path . startswith ( Ooo0OO ) ]
  if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
 return CompletionResult ( completions = Iio0 , nospace = True )
 if 70 - 70: IiIIii11Ii
 if 75 - 75: Ooo0Ooo / Ii / IiIIii11Ii + IiIIii11Ii . I1I
def i1I11ii ( prefix , folder ) :
 Iio0 = [ ]
 for iii1II11 , ooo0O0oO00 in folder . items ( ) :
  if isinstance ( ooo0O0oO00 , dict ) :
   I1iI = [ val for iii1II11 , val in ooo0O0oO00 . items ( ) if not isinstance ( val , dict ) ]
   if ooo0O0oO00 != { } :
    Iio0 += i1I11ii ( prefix + iii1II11 + "/" , ooo0O0oO00 )
  elif not isinstance ( iii1II11 , dict ) :
   Iio0 . append ( str ( prefix ) + str ( iii1II11 ) )
   if 5 - 5: I1I / IiIIii11Ii - i1 + i1
 return Iio0
 if 4 - 4: ooo000 / ooOOO + ooOOO . I11iiIi11i1I + oOO - i1iiIII111
def i1111IIi ( tree , prefix , depth = 0 ) :
 I1i = [ ]
 ii1Iii = { }
 if depth > 0 :
  for iii1II11 , ooo0O0oO00 in tree . items ( ) :
   if isinstance ( ooo0O0oO00 , dict ) :
    ii1Iii . update ( ooo0O0oO00 )
    I1i . append ( prefix + iii1II11 )
    OOO00oO0oOo0O = i1111IIi ( ooo0O0oO00 , prefix + iii1II11 + "/" , depth - 1 )
    I1i += OOO00oO0oOo0O
    if 1 - 1: I1I % Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
 return I1i
 if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
def OooO0O00o0 ( pwd , line , point , prefix , suffix ) :
 try :
  OO0000 = oOoo0 ( verbose = False )
 except Exception :
  return CompletionResult ( completions = [ ] , nospace = False )
 Iio0 = [ ]
 if 73 - 73: oOO - oOo0O00 . oOo0O00
 if prefix == '' :
  Iio0 . append ( "/" )
  if 27 - 27: ii % i1iiIII111 * iI1iII1I1I1i - iI1iII1I1I1i
  if 87 - 87: IIiIIiIi11I1 % I1Ii1I1
 I1i = i1111IIi ( OO0000 , "/" , len ( prefix . split ( "/" ) ) )
 Iio0 += [ path + "/" for path in I1i if path . startswith ( prefix ) and len ( path . split ( "/" ) ) <= len ( prefix . split ( "/" ) ) or prefix == '' ]
 if 85 - 85: oOo0O00
 if 66 - 66: ii * i1i1i1111I + oOo0O00 / I1I / Iii1i / Ii
 if 32 - 32: i1i1i1111I % Ooo0Ooo - iiIi1 * I1I
 if 92 - 92: IIiIIiIi11I1 - i1 - Iii1i / Ooo0Ooo . I1Ii1I1 / I11iiIi11i1I
 oooOoO0000 = i1I11ii ( "/" , OO0000 )
 Iio0 += [ param for param in oooOoO0000 if ( prefix == '=/' and len ( param . split ( "/" ) ) == 2 ) or ( param . startswith ( prefix ) and len ( param . split ( "/" ) ) <= len ( prefix . split ( "/" ) ) ) ]
 if 41 - 41: I11iiIi11i1I % oOO - I1Ii1I1 - IIiIIiIi11I1
 if 58 - 58: ooOOO / IIiIIiIi11I1 % i1
 if 36 - 36: oOo0O00 . ooOOO / i1iiIII111 + oOO
 if 11 - 11: i1 / ooo000
 if 89 - 89: I1I * i1i1i1111I
 if 54 - 54: oOO + Ooo0Ooo - I1I . Ooo0Ooo
 if len ( Iio0 ) == 1 and Iio0 [ 0 ] . endswith ( "/" ) :
  Ooo0OO = Iio0 [ 0 ]
  if 50 - 50: Iii1i * ooo000 % Iii1i - oOo0O00 + ooo000
  if 54 - 54: oOO * i1 % i1 - Ooo0Ooo + IIiIIiIi11I1
  I1i = i1111IIi ( OO0000 , "/" , len ( prefix . split ( "/" ) ) )
  Iio0 += [ path + "/" for path in I1i if path . startswith ( Ooo0OO ) ]
  if 4 - 4: ooo000 + I1Ii1I1 * OooOoo - ii
  if 69 - 69: ooo000
  Iio0 += [ param for param in oooOoO0000 if ( param . startswith ( Ooo0OO ) and len ( param . split ( "/" ) ) <= len ( prefix . split ( "/" ) ) + 1 ) ]
  if 76 - 76: Iii1i * Ooo0Ooo . iI1iII1I1I1i / Ii / ooOOO
  if 49 - 49: iI1iII1I1I1i / i1iiIII111 + ooo000
  if 36 - 36: i1i1i1111I + Iii1i - oOO * Ii
 return CompletionResult ( completions = Iio0 , nospace = False )
 if 45 - 45: i1i1i1111I * Ii
 if 97 - 97: i1
def iiiiI1i1iI1 ( ) :
 if 33 - 33: ii / Oo % I1Ii1I1
 ooO00OO0oo0 = OptionParser ( version = TL_VERSION ,
 usage = "%prog [options] <parameter>" )
 if 89 - 89: Oo / oOo0O00 * ii * iiIi1 . IiIIii11Ii . oOO
 ooO00OO0oo0 . add_option ( "-a" , "--all-entries" ,
 action = "append" ,
 default = [ ] ,
 metavar = "FOLDER" ,
 dest = "walk_folder" ,
 help = "print all parameters and values in a folder" ,
 completer = IIiIiiIiI )
 if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i
 ooO00OO0oo0 . add_option ( "-e" , "--eval" ,
 action = "append" ,
 default = [ ] ,
 metavar = "VAR=parameter" ,
 dest = "e_params" ,
 completer = NoneCompleter ( ) ,
 help = """print parameter value in a format suitable
                                for assignment to a shell variable, via
                                evaluation""" )
 if 91 - 91: I1Ii1I1 - I11iiIi11i1I
 ooO00OO0oo0 . set_argument_completer ( OooO0O00o0 )
 if 84 - 84: oOO % iI1iII1I1I1i - Ooo0Ooo
 return ooO00OO0oo0
 if 94 - 94: i1iiIII111 + i1i1i1111I / iI1iII1I1I1i + iI1iII1I1I1i / iiIi1
 if 79 - 79: i1iiIII111 - IIiIIiIi11I1 . I1Ii1I1 + I1I - ooOOO + i1iiIII111
def oOoo0 ( verbose = True ) :
 if 36 - 36: ooOOO * Iii1i % I1I % i1 . Ooo0Ooo
 oO00OOooOoO0o = hiveconf . open_hive ( "/opt/thinlinc/etc/thinlinc.hconf" )
 if 40 - 40: IiIIii11Ii % oOO - IiIIii11Ii % oOO - IiIIii11Ii + iI1iII1I1I1i
 if 35 - 35: i1 + I1I . i1iiIII111
 try :
  ii1II = get_public_sessioninfo ( oO00OOooOoO0o )
 except GPSError as oOoOo :
  if verbose :
   print ( str ( oOoOo ) , "Exiting" , file = sys . stderr )
  sys . exit ( 1 )
  if 39 - 39: oOO
 if 0 == len ( ii1II ) :
  if verbose :
   print ( "No session information matching current environment. Exiting" , file = sys . stderr )
  sys . exit ( 1 )
 elif 1 < len ( ii1II ) :
  if verbose :
   print ( "Multiple sessions matching current information. Should not happen! Exiting" , file = sys . stderr )
  sys . exit ( 1 )
  if 17 - 17: Ii . oOo0O00 % OooOoo
 return ii1II [ 0 ]
 if 82 - 82: Iii1i . oOo0O00 % IIiIIiIi11I1 - iI1iII1I1I1i
 if 44 - 44: ooOOO . IIiIIiIi11I1
def iIi111ii ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 20 - 20: i1i1i1111I + Oo / Ooo0Ooo % ii % ii
 ooO00OO0oo0 = iiiiI1i1iI1 ( )
 if 29 - 29: iI1iII1I1I1i - oOo0O00 - Ooo0Ooo % iiIi1 + ii
 ( i1iI1 , ii1ii ) = ooO00OO0oo0 . parse_args ( )
 if 1 - 1: ii - oOo0O00 - i1 . oOo0O00
 if not ( i1iI1 . walk_folder or i1iI1 . e_params or ii1ii ) :
  ooO00OO0oo0 . error ( "no parameter specified" )
  if 91 - 91: iI1iII1I1I1i * i1 . ooOOO
 I1iIiii = i1iI1 . walk_folder
 if 40 - 40: iiIi1 * iI1iII1I1I1i + iI1iII1I1I1i . oOo0O00 * ooo000
 Oo0oO0O0O = [ ]
 if 4 - 4: i1
 for IiiI11IIi1I in i1iI1 . e_params :
  oOOOO0ooO = IiiI11IIi1I . split ( "=" , 1 )
  if not oOOOO0ooO [ 1 : ] :
   ooO00OO0oo0 . error ( "invalid argument to -e" )
  Oo0oO0O0O . append ( oOOOO0ooO )
  if 53 - 53: oOo0O00 - ooo000 * Ii % i1i1i1111I - ooOOO + i1iiIII111
 ii1II = oOoo0 ( )
 if 15 - 15: Iii1i % oOO * Ooo0Ooo - Ii
 if 25 - 25: ii + iI1iII1I1I1i - I1I . oOO + OooOoo
 for ( OOoo00o0oO0o0 , IiiI11IIi1I ) in Oo0oO0O0O :
  ooo0O0oO00 = i1ii1 ( ii1II , IiiI11IIi1I , nofolder = 1 )
  print ( "%s=%s" % ( OOoo00o0oO0o0 , ooo0O0oO00 ) )
  if 53 - 53: i1
  if 15 - 15: OooOoo . oOo0O00 - ooOOO % Ooo0Ooo
 for IiiI11IIi1I in ii1ii :
  print ( i1ii1 ( ii1II , IiiI11IIi1I , nofolder = 1 ) )
  if 62 - 62: iI1iII1I1I1i / OooOoo % I1I - ii
  if 66 - 66: i1i1i1111I / Ooo0Ooo + I11iiIi11i1I + Iii1i + oOo0O00 + iiIi1
 for o0OOO00OO in I1iIiii :
  oo0OoOoO0O0OO = o00o0OO00O ( ii1II , o0OOO00OO )
  if not isinstance ( oo0OoOoO0O0OO , dict ) :
   print ( "%s: not a folder" % o0OOO00OO , file = sys . stderr )
   continue
   if 85 - 85: IIiIIiIi11I1 / OooOoo . iiIi1 % Oo + Oo - I11iiIi11i1I
  for IiiI11IIi1I in oo0OoOoO0O0OO . keys ( ) :
   ooo0O0oO00 = i1ii1 ( ii1II , os . path . join ( o0OOO00OO , IiiI11IIi1I ) )
   if isinstance ( ooo0O0oO00 , dict ) :
    print ( IiiI11IIi1I + "/" )
   else :
    print ( "%s = %s" % ( IiiI11IIi1I , ooo0O0oO00 ) )
    if 59 - 59: OooOoo
    if 53 - 53: i1i1i1111I / ooOOO - ii + ooo000 * i1i1i1111I * i1iiIII111
if __name__ == "__main__" :
 iIi111ii ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
