#!/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
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
import sys
import os
import fcntl
import getopt
import locale
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
from thinlinc import hiveconf
from thinlinc . tlprinter import limit_printers , NoSessionError , NoVSMServerError
if 98 - 98: I11iiIi11i1I % oOO
def i1ii1 ( ) :
 print ( """Limit list of printers $USER is allowed to use and see
    Usage: tl-limit-printers [-h|--help] [-v|--verbose]
       --verbose will print extended information to stderr

    The USER environment variable must be set to the username of the user for
    which the list of printers should be limited""" , file = sys . stderr )
 if 63 - 63: iI1iI11Ii111
 sys . exit ( 1 )
 if 26 - 26: O0OooooOo + oOO % iI1iI11Ii111 / Iii1i / Ii . i1
 if 9 - 9: i1iiIII111
def i1Ii1i ( argv ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 93 - 93: IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo . Ooo0Ooo
 OO0o000o = 0
 try :
  IIiiii1IiIiII , i1ii11iii = getopt . getopt ( argv , "hv" , [ "help" , "verbose" ] )
 except getopt . GetoptError :
  i1ii1 ( )
  if 22 - 22: IIiIIiIi11I1 - ooo000 / I1Ii1I1 . ooo000
 for IIII11 , oOoo0 in IIiiii1IiIiII :
  if IIII11 in ( "-h" , "--help" ) :
   i1ii1 ( )
  if IIII11 in ( "-v" , "--verbose" ) :
   OO0o000o = 1
   if 95 - 95: i1iiIII111 . Ii . IIiIIiIi11I1 % I11iiIi11i1I % I1Ii1I1
 if "USER" not in os . environ :
  print ( "Can't run without the USER environment variable" , file = sys . stderr )
  return 1
  if 8 - 8: I1Ii1I1 . O0OooooOo . i1 . Oo - iI1iI11Ii111
 iiI1111IIi1 = "/var/opt/thinlinc/utils/tl-printer/tl-limit-printers.lock"
 try :
  oOo00O = open ( iiI1111IIi1 , 'a+' )
 except OSError as OoO :
  print ( "Error opening lockfile (%s) in append mode: %s" % ( OoO . filename , OoO . strerror ) , file = sys . stderr )
  if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
  print ( "Not limiting list of printers" , file = sys . stderr )
  return 1
  if 32 - 32: I1Ii1I1 + oOO - oOo0O00
 IiiIii11iII1 = 0
 if 27 - 27: I1I + ooOOO * IIiIIiIi11I1 % Ii + Ooo0Ooo . ooOOO
 with oOo00O :
  if OO0o000o : print ( "Waiting for lock on %s" % iiI1111IIi1 , file = sys . stderr )
  fcntl . lockf ( oOo00O , fcntl . LOCK_EX )
  if OO0o000o : print ( "Acquired lock" , file = sys . stderr )
  if 6 - 6: i1iiIII111
  I1I1 = hiveconf . open_hive ( "/opt/thinlinc/etc/thinlinc.hconf" )
  if 91 - 91: Iii1i % i1i1i1111I . OooOoo * oOO
  try :
   limit_printers ( I1I1 , os . environ [ 'USER' ] , verbose = OO0o000o )
  except NoSessionError :
   print ( "User %s has no ThinLinc session. Not limiting list of printers." % os . environ [ "USER" ] , file = sys . stderr )
   if 5 - 5: oOO % Ooo0Ooo / OooOoo
   IiiIii11iII1 = 1
  except NoVSMServerError as OoO :
   print ( "Trouble reaching VSM Server. Not limiting list of printers." , OoO ,
 file = sys . stderr )
   IiiIii11iII1 = 1
   if 6 - 6: Ii + I1I + i1
  if OO0o000o : print ( "Unlocking %s" % iiI1111IIi1 , file = sys . stderr )
  fcntl . lockf ( oOo00O , fcntl . LOCK_UN )
  if 86 - 86: IiIIii11Ii
 return IiiIii11iII1
 if 100 - 100: O0OooooOo - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i
if "__main__" == __name__ :
 sys . exit ( i1Ii1i ( sys . argv [ 1 : ] ) )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
