#!/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 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
from thinlinc . optionparse import OptionParser
from thinlinc . optcomplete import CompletionResult
from thinlinc . version import TL_VERSION
if 31 - 31: i1I
def i1I1 ( ) :
 I1Ii111i1I = OptionParser ( version = TL_VERSION ,
 usage = "%prog [option]" ,
 description = """Limit list of printers $USER is allowed to use and see
                                         The USER environment variable must be set to the username of the user for
                                         which the list of printers should be limited""" )
 if 52 - 52: OOooooOo00 * i1I / Iii1i / Ii . i1i1i1111I / Ii
 I1Ii111i1I . add_option ( "-v" , "--verbose" ,
 action = "store_true" ,
 dest = "verbose" ,
 default = False ,
 help = "will print extended information to stderr" )
 if 43 - 43: I11iiIi11i1I
 I1Ii111i1I . set_argument_completer ( lambda * IIi1i111IiII : CompletionResult ( completions = [ ] , nospace = False ) )
 if 25 - 25: Oo
 return I1Ii111i1I
 if 85 - 85: Ooo0Ooo + iI1iII1I1I1i - Ii * Oo
 if 8 - 8: i1iiIII111 * i1 . I1I / oOO
def ooOOooO0 ( ) :
 locale . setlocale ( locale . LC_ALL , "" )
 if 13 - 13: oOO
 I1Ii111i1I = i1I1 ( )
 iiIII , IioOOOO000 = I1Ii111i1I . parse_args ( )
 if 85 - 85: OooOoo - oOo0O00 / Ii / oOO % i1iiIII111 . Ii
 if "USER" not in os . environ :
  print ( "Can't run without the USER environment variable" , file = sys . stderr )
  sys . exit ( 1 )
  if 7 - 7: I11iiIi11i1I - I1Ii1I1 % I11iiIi11i1I . I1Ii1I1 . i1i1i1111I
 ii1i11i1 = "/var/opt/thinlinc/utils/tl-printer/tl-limit-printers.lock"
 try :
  I111IIi11IiI = open ( ii1i11i1 , 'a+' )
 except OSError as o0OOOooO00oo :
  print ( "Error opening lockfile (%s) in append mode: %s" % ( o0OOOooO00oo . filename , o0OOOooO00oo . strerror ) , file = sys . stderr )
  if 69 - 69: ooOOO % OooOoo
  print ( "Not limiting list of printers" , file = sys . stderr )
  sys . exit ( 1 )
  if 45 - 45: i1
 OO00 = 0
 if 39 - 39: I11iiIi11i1I * oOO . Oo + ooOOO / Oo
 with I111IIi11IiI :
  if iiIII . verbose : print ( "Waiting for lock on %s" % ii1i11i1 , file = sys . stderr )
  fcntl . lockf ( I111IIi11IiI , fcntl . LOCK_EX )
  if iiIII . verbose : print ( "Acquired lock" , file = sys . stderr )
  if 14 - 14: OooOoo % oOo0O00 + I1I % i1iiIII111 * ooOOO / I11iiIi11i1I
  OoOo = hiveconf . open_hive ( "/opt/thinlinc/etc/thinlinc.hconf" )
  if 43 - 43: ooOOO * I1Ii1I1
  try :
   limit_printers ( OoOo , os . environ [ 'USER' ] , verbose = iiIII . verbose )
  except NoSessionError :
   print ( "User %s has no ThinLinc session. Not limiting list of printers." % os . environ [ "USER" ] , file = sys . stderr )
   if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
   OO00 = 1
  except NoVSMServerError as o0OOOooO00oo :
   print ( "Trouble reaching VSM server. Not limiting list of printers." , o0OOOooO00oo ,
 file = sys . stderr )
   OO00 = 1
   if 70 - 70: IiIIii11Ii
  if iiIII . verbose : print ( "Unlocking %s" % ii1i11i1 , file = sys . stderr )
  fcntl . lockf ( I111IIi11IiI , fcntl . LOCK_UN )
  if 75 - 75: Ooo0Ooo / Ii / IiIIii11Ii + IiIIii11Ii . I1I
 sys . exit ( OO00 )
 if 88 - 88: Oo * IiIIii11Ii
 if 100 - 100: OOooooOo00 - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i
if "__main__" == __name__ :
 ooOOooO0 ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
