#!/opt/thinlinc/libexec/python3
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2008-2014 Cendio AB.
# For more information, see http://www.cendio.com
#
# action: Waiting for smart card connection
#
if 82 - 82: Iii1i
import sys
import os
import socket
import time
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 get_public_sessioninfo , GPSConnectionError
from thinlinc import prefix
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
iI111iiIi11i = 10
if 77 - 77: iIiii1i - ooo0O0oO00 . o00o0OO00O
def Ooo ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 9 - 9: ii . Ii * i1
 ii1iI1I = hiveconf . open_hive ( os . path . join ( prefix . get_tl_prefix ( ) ,
 "etc" , "thinlinc.hconf" ) )
 if 28 - 28: o00o0OO00O / IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo
 try :
  IIII1i1 = get_public_sessioninfo ( ii1iI1I )
 except GPSConnectionError as i1Iiiii1 :
  print ( i1Iiiii1 , file = sys . stderr )
  return
  if 58 - 58: I1Ii1I1 - ooOOO
 if 0 == len ( IIII1i1 ) :
  print ( "No session information matching current environment." , file = sys . stderr )
  return
 elif 1 < len ( IIII1i1 ) :
  print ( "Multiple sessions matching current information. Should not happen!" , file = sys . stderr )
  return
  if 60 - 60: iI1iII1I1I1i . ooo0O0oO00
 IIII1i1 = IIII1i1 [ 0 ]
 if 13 - 13: ooo0O0oO00
 if "client_params" not in IIII1i1 :
  print ( "No client_params found" , file = sys . stderr )
  return
  if 2 - 2: i1
 IIiIiiIiI = IIII1i1 [ "client_params" ]
 if "capabilities" not in IIiIiiIiI :
  print ( "Client doesn't support capabilities" , file = sys . stderr )
  return
  if 34 - 34: Ooo0Ooo + ooo0O0oO00 * IIiIIiIi11I1 * OooOoo
 Ii111 = IIiIiiIiI [ "capabilities" ]
 if "smartcard" not in Ii111 :
  print ( "Client has no smartcard capability" , file = sys . stderr )
  return
  if 8 - 8: Ii + o00o0OO00O . iIiii1i - I1Ii1I1 % iIiii1i . i1i1i1111I
 ii1iIi1i11i = os . getenv ( "PCSCTUN_SERVER" )
 if ii1iIi1i11i is None :
  sys . exit ( "Cannot work without a $PCSCTUN_SERVER" )
  if 80 - 80: Ooo0Ooo
 ( O00Oo , O00O ) = ii1iIi1i11i . split ( ":" )
 if 59 - 59: Iii1i . ii - o00o0OO00O
 for ii1IiIiiII in range ( iI111iiIi11i ) :
  try :
   I1I111i11I = socket . getaddrinfo ( O00Oo , O00O , socket . AF_UNSPEC ,
 socket . SOCK_STREAM )
  except OSError as iii11i :
   print ( iii11i , file = sys . stderr )
   return
   if 35 - 35: I1I % i1iiIII111 * I1I
  for Ooo0OO in I1I111i11I :
   ii1Ii1I , oo0 , i11iIii , OO , iiI1I11iiiiI = Ooo0OO
   if 4 - 4: i1iiIII111 * Ooo0Ooo
   try :
    I1iI = socket . socket ( ii1Ii1I , oo0 , i11iIii )
   except OSError as iii11i :
    I1iI = None
    continue
    if 5 - 5: I1I / IiIIii11Ii - i1 + i1
   try :
    I1iI . connect ( iiI1I11iiiiI )
   except OSError as iii11i :
    I1iI . close ( )
    I1iI = None
    continue
    if 4 - 4: ooo000 / ooOOO + ooOOO . iIiii1i + ooo0O0oO00 - i1iiIII111
    if 4 - 4: ooOOO
   I1iI . close ( )
   return
   if 23 - 23: Ii + ii . IiIIii11Ii - i1iiIII111 * Ooo0Ooo
  time . sleep ( 1 )
  if 78 - 78: ooo000 . I1I % Ii + Ooo0Ooo * Iii1i
 print ( "Timeout waiting for smart card tunnel" , file = sys . stderr )
 if 67 - 67: I1I * Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
if __name__ == "__main__" :
 Ooo ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
