PHPIndex

This page lists files in the current directory. You can view content, get download/execute commands for Wget, Curl, or PowerShell, or filter the list using wildcards (e.g., `*.sh`).

__pycache__
tlgtk
__init__.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/__init__.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2014 Cendio AB.
# For more information, see http://www.cendio.com
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
deb.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/deb.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2012-2014 Pierre Ossman for Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import os
import select
import logging
import locale
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
import subprocess
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
__all__ = [ "determine_upgrade" , "perform_upgrade" ]
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
def iI111iiIi11i ( string ) :
 return [ s . strip ( ) for s in string . split ( "," ) if s . strip ( ) ]
 if 77 - 77: iIiii1i - ooo0O0oO00 . o00o0OO00O
 if 57 - 57: iiIi1 - i1 % i1 % i1i1i1111I . Ii
 if 30 - 30: Ii
def ooO0Oo0o00 ( fn ) :
 oOooo0OOO = subprocess . Popen ( [ "dpkg-deb" ,
 "--showformat" ,
 "${Package}\n${Version}\n${Architecture}\n${Conflicts}\n${Replaces}\n" ,
 "--show" , fn ] , universal_newlines = True ,
 stdout = subprocess . PIPE , stderr = subprocess . PIPE )
 if 53 - 53: Ii * Oo * ooo000 . i1iiIII111
 ( ii1Ii , oOooO0 ) = oOooo0OOO . communicate ( )
 if 13 - 13: ooo0O0oO00
 if oOooo0OOO . returncode != 0 :
  logging . error ( "Failed to get information about package '%s':" % fn )
  if 2 - 2: i1
  IIiIiiIiI = ii1Ii + oOooO0
  if IIiIiiIiI :
   for OO0000 in ( ii1Ii + oOooO0 ) . splitlines ( ) :
    logging . error ( "    " + OO0000 )
    if 92 - 92: I1I / I1I + o00o0OO00O . ooo0O0oO00
  return None
  if 8 - 8: Ii + o00o0OO00O . iIiii1i - I1Ii1I1 % iIiii1i . i1i1i1111I
 ii1iIi1i11i , I111IIi11IiI , o0OOOooO00oo , IIii , OO00 = ii1Ii . splitlines ( )
 IIii = iI111iiIi11i ( IIii )
 OO00 = iI111iiIi11i ( OO00 )
 if 39 - 39: iIiii1i * ooo0O0oO00 . Oo + ooOOO / Oo
 return { "name" : ii1iIi1i11i , "versions" : [ { "version" : I111IIi11IiI ,
 "arch" : o0OOOooO00oo ,
 "conflicts" : IIii ,
 "replaces" : OO00 } ] }
 if 14 - 14: OooOoo % oOo0O00 + I1I % i1iiIII111 * ooOOO / iIiii1i
def OoOo ( name ) :
 oOooo0OOO = subprocess . Popen ( [ "dpkg-query" ,
 "--showformat" , "${Package}\n${Version}\n${Architecture}\n${Status}" ,
 "--show" , name ] , universal_newlines = True ,
 stdout = subprocess . PIPE , stderr = subprocess . PIPE )
 if 43 - 43: ooOOO * I1Ii1I1
 ( ii1Ii , oOooO0 ) = oOooo0OOO . communicate ( )
 if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
 if oOooo0OOO . returncode != 0 :
  if 70 - 70: IiIIii11Ii
  logging . debug ( "Failed to get information about package '%s'" % name )
  if 75 - 75: Ooo0Ooo / Ii / IiIIii11Ii + IiIIii11Ii . I1I
  IIiIiiIiI = ii1Ii + oOooO0
  if IIiIiiIiI :
   for OO0000 in ( ii1Ii + oOooO0 ) . splitlines ( ) :
    logging . debug ( "    " + OO0000 )
    if 88 - 88: Oo * IiIIii11Ii
  return { "name" : name , "versions" : [ ] }
  if 100 - 100: iiIi1 - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i
 name , I111IIi11IiI , o0OOOooO00oo , I11iIi1i = ii1Ii . splitlines ( )
 if 49 - 49: IIiIIiIi11I1
 iIIiii1iI , OOO , I11iIi1i = I11iIi1i . split ( " " )
 if 83 - 83: ooo0O0oO00 - Iii1i + ooOOO . o00o0OO00O / ooOOO
 if 5 - 5: iiIi1
 if OOO != "ok" :
  logging . error ( "Existing package '%s' is in a broken state" % name )
  return None
  if 56 - 56: i1iiIII111 * iiIi1 - iIiii1i
  if 15 - 15: I1I % Ii + Ooo0Ooo * Iii1i
  if 67 - 67: I1I * Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
  if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
  if 52 - 52: ooo0O0oO00 + I1I / ooo000 - I1Ii1I1 * o00o0OO00O % oOo0O00
  if 52 - 52: oOo0O00 . I1I + o00o0OO00O - i1iiIII111 % iI1iII1I1I1i
  if 57 - 57: I1I * IIiIIiIi11I1 % I1Ii1I1 * i1i1i1111I
  if 37 - 37: iiIi1 * i1i1i1111I + oOo0O00 / I1I / OooOoo
  if 4 - 4: i1
 if I11iIi1i == "not-installed" or I11iIi1i == "config-files" :
  return { "name" : name , "versions" : [ ] }
  if 61 - 61: iI1iII1I1I1i . o00o0OO00O - ooo000 / ooo000 - i1
  if 19 - 19: Iii1i * Ooo0Ooo . I1Ii1I1 / iIiii1i * Ii - ooo0O0oO00
 if I11iIi1i != "installed" :
  logging . error ( "Existing package '%s' is in an invalid state '%s'" % ( name , I11iIi1i ) )
  return None
  if 32 - 32: iI1iII1I1I1i
 return { "name" : name , "versions" : [ { "version" : I111IIi11IiI , "arch" : o0OOOooO00oo } ] }
 if 18 - 18: iIiii1i * iiIi1 % iI1iII1I1I1i + iiIi1
def O0OO ( pkgs ) :
 if 34 - 34: ooOOO * iIiii1i
 logging . error ( "Package removal not supported" )
 return False
 if 63 - 63: ooOOO / i1i1i1111I - oOo0O00 * ooOOO / i1iiIII111 + ooo0O0oO00
def iiI1 ( pkgs , oldpkgs , progress_cb = None ) :
 logging . info ( "Installing package(s): %s" % ", " . join ( map ( os . path . basename , pkgs ) ) )
 if 20 - 20: i1i1i1111I / Ooo0Ooo - ooo0O0oO00 + Ooo0Ooo - I1I . Ooo0Ooo
 oOOoOOOO000 , IIIIi = os . pipe ( )
 if 50 - 50: ooo000 * I1Ii1I1 * iI1iII1I1I1i
 i111ii1I = [ "dpkg" , "--install" ]
 if 18 - 18: Ii / ooo000 + I1I + iI1iII1I1I1i
 if 42 - 42: ooOOO - ooOOO - i1i1i1111I
 if 61 - 61: ooo0O0oO00
 i111ii1I += [ "--force-confmiss" , "--force-confold" ]
 if 7 - 7: i1i1i1111I / Ii * Iii1i
 if 32 - 32: iiIi1 . OooOoo
 if 31 - 31: Oo - o00o0OO00O
 i111ii1I += [ "--force-overwrite" ]
 if 28 - 28: ooOOO * I1Ii1I1 + iiIi1 % Oo
 if 100 - 100: Oo + o00o0OO00O
 if 4 - 4: ooo000 % I1I - i1i1i1111I
 if 76 - 76: i1 * oOo0O00 . iiIi1 * o00o0OO00O . IiIIii11Ii . ooo0O0oO00
 if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i
 if len ( oldpkgs ) > 0 :
  i111ii1I += [ "--ignore-depends=%s" % "," . join ( oldpkgs ) ]
  if 91 - 91: I1Ii1I1 - iIiii1i
 i111ii1I += [ "--status-fd" , str ( IIIIi ) ]
 i111ii1I += pkgs
 if 84 - 84: ooo0O0oO00 % iI1iII1I1I1i - Ooo0Ooo
 if 94 - 94: i1iiIII111 + i1i1i1111I / iI1iII1I1I1i + iI1iII1I1I1i / o00o0OO00O
 with subprocess . Popen ( i111ii1I , stdin = subprocess . DEVNULL , stdout = subprocess . PIPE ,
 stderr = subprocess . PIPE , pass_fds = [ IIIIi ] ) as oOooo0OOO :
  if 79 - 79: i1iiIII111 - IIiIIiIi11I1 . I1Ii1I1 + I1I - ooOOO + i1iiIII111
  if progress_cb is not None :
   progress_cb ( 0 )
   if 36 - 36: ooOOO * Iii1i % I1I % i1 . Ooo0Ooo
   if 63 - 63: IIiIIiIi11I1 / IIiIIiIi11I1 * Iii1i - oOo0O00 . i1
  o00OO0 = oOooo0OOO . stdout . fileno ( )
  O0OO0OOOOoo0o = oOooo0OOO . stderr . fileno ( )
  if 41 - 41: ooo0O0oO00
  if 98 - 98: I1I / IIiIIiIi11I1 / o00o0OO00O + iiIi1 % Oo + I1I
  ooOo00o = { }
  if 36 - 36: Ii
  ii1Ii = b""
  oOooO0 = b""
  oOoo0OOOOOoo = b""
  while True :
   try :
    ( OoO , o00ooo0Oooo , oOOOO0OO00 ) = select . select ( [ o00OO0 , O0OO0OOOOoo0o , oOOoOOOO000 ] , [ ] , [ ] )
   except :
    break
    if 8 - 8: Oo * I1I / i1i1i1111I + i1 / I1Ii1I1
   if oOOoOOOO000 in OoO :
    oOoo0OOOOOoo += os . read ( oOOoOOOO000 , 8192 )
    if 71 - 71: I1Ii1I1
    while b"\n" in oOoo0OOOOOoo :
     ( OO0000 , oOoo0OOOOOoo ) = oOoo0OOOOOoo . split ( b"\n" , 1 )
     OO0000 = OO0000 . decode ( locale . getpreferredencoding ( False ) )
     if 1 - 1: iiIi1 - oOo0O00 - i1 . oOo0O00
     if OO0000 . startswith ( "processing:" ) :
      ( O0o , oo0o0oOo , ii1iIi1i11i ) = OO0000 . split ( ":" , 2 )
      oo0o0oOo = oo0o0oOo . strip ( )
      ii1iIi1i11i = ii1iIi1i11i . strip ( ": " )
      if 10 - 10: I1Ii1I1
      if oo0o0oOo == "install" or oo0o0oOo == "upgrade" :
       if 40 - 40: o00o0OO00O * iI1iII1I1I1i + iI1iII1I1I1i . oOo0O00 * ooo000
       if ii1iIi1i11i in ooOo00o :
        logging . warning ( "Warning: package '%s' " "mentioned multiple times" % ii1iIi1i11i )
        if 35 - 35: IIiIIiIi11I1 % i1i1i1111I - Ii % i1iiIII111 - iiIi1
        if 33 - 33: i1i1i1111I
       ooOo00o [ ii1iIi1i11i ] = { "state" : "" , "mode" : oo0o0oOo }
     elif OO0000 . startswith ( "status:" ) :
      iI1iiI11IIi1 = OO0000 . split ( ":" , 3 )
      ii1iIi1i11i = iI1iiI11IIi1 [ 1 ] . strip ( )
      I11iIi1i = iI1iiI11IIi1 [ 2 ] . strip ( )
      if 56 - 56: i1i1i1111I - IiIIii11Ii - i1iiIII111 - Oo + i1iiIII111 / Ooo0Ooo
      if I11iIi1i == "error" :
       logging . warning ( "Warning during installation of" " '%s': %s" % ( ii1iIi1i11i , repr ( iI1iiI11IIi1 [ 3 ] ) ) )
       if 89 - 89: ooo000 + Ii % i1i1i1111I - i1iiIII111
      else :
       if ii1iIi1i11i in ooOo00o :
        ooOo00o [ ii1iIi1i11i ] [ "state" ] = I11iIi1i
        if 33 - 33: ooo000 . Iii1i % ooo0O0oO00
     OoOOooO0oOO0Oo = 0
     for I11iIi1i in ooOo00o . values ( ) :
      iiI1i1IiiiIi1 = 0
      if 20 - 20: oOo0O00 * ooOOO % IIiIIiIi11I1 - IIiIIiIi11I1
      if I11iIi1i [ "mode" ] == "install" :
       if I11iIi1i [ "state" ] == "half-installed" :
        iiI1i1IiiiIi1 = 25
       elif I11iIi1i [ "state" ] == "unpacked" :
        iiI1i1IiiiIi1 = 50
       elif I11iIi1i [ "state" ] == "half-configured" :
        iiI1i1IiiiIi1 = 75
       elif I11iIi1i [ "state" ] == "installed" :
        iiI1i1IiiiIi1 = 100
      elif I11iIi1i [ "mode" ] == "upgrade" :
       if I11iIi1i [ "state" ] == "half-configured" :
        iiI1i1IiiiIi1 = 17
       elif I11iIi1i [ "state" ] == "unpacked" :
        iiI1i1IiiiIi1 = 33
       elif I11iIi1i [ "state" ] == "half-installed" :
        iiI1i1IiiiIi1 = 50
        I11iIi1i [ "mode" ] = "replace"
      elif I11iIi1i [ "mode" ] == "replace" :
       if I11iIi1i [ "state" ] == "half-installed" :
        iiI1i1IiiiIi1 = 50
       elif I11iIi1i [ "state" ] == "unpacked" :
        iiI1i1IiiiIi1 = 67
       elif I11iIi1i [ "state" ] == "half-configured" :
        iiI1i1IiiiIi1 = 83
       elif I11iIi1i [ "state" ] == "installed" :
        iiI1i1IiiiIi1 = 100
        if 32 - 32: OooOoo % I1I - iIiii1i % OooOoo
      OoOOooO0oOO0Oo += iiI1i1IiiiIi1 / len ( pkgs )
      if 9 - 9: i1iiIII111 - ooOOO % Iii1i
     if progress_cb is not None :
      progress_cb ( OoOOooO0oOO0Oo )
      if 37 - 37: o00o0OO00O + IIiIIiIi11I1 % iI1iII1I1I1i / IIiIIiIi11I1 % i1iiIII111 + ooo0O0oO00
   if o00OO0 in OoO :
    ii1Ii += os . read ( o00OO0 , 8192 )
   if O0OO0OOOOoo0o in OoO :
    oOooO0 += os . read ( O0OO0OOOOoo0o , 8192 )
    if 98 - 98: iI1iII1I1I1i - I1I + i1 * ooo000 % i1
   oOooo0OOO . poll ( )
   if oOooo0OOO . returncode is not None :
    break
    if 100 - 100: i1iiIII111 . IIiIIiIi11I1 * ooo000 * ooo000
 if progress_cb is not None :
  progress_cb ( 100 )
  if 85 - 85: IIiIIiIi11I1 / OooOoo . o00o0OO00O % Oo + Oo - iIiii1i
  if 59 - 59: OooOoo
  if 53 - 53: i1i1i1111I / ooOOO - iiIi1 + ooo000 * i1i1i1111I * i1iiIII111
  if 87 - 87: i1iiIII111 - IIiIIiIi11I1 * Ii % i1i1i1111I % i1
  if 81 - 81: i1 + i1i1i1111I * Oo - Oo * I1Ii1I1 - oOo0O00
  if 4 - 4: i1iiIII111
  if 8 - 8: IiIIii11Ii + OooOoo - i1
 OOO = True
 if len ( ooOo00o ) != len ( pkgs ) :
  OOO = False
 else :
  for I11iIi1i in ooOo00o . values ( ) :
   if I11iIi1i [ "state" ] != "installed" :
    OOO = False
    break
    if 68 - 68: I1Ii1I1 % I1Ii1I1 / iiIi1 . ooo000
 if not OOO :
  logging . error ( "Installation of packages failed:" )
  if 80 - 80: IIiIIiIi11I1 / OooOoo % iI1iII1I1I1i / ooOOO * ooOOO - Iii1i
  IIiIiiIiI = ii1Ii + oOooO0
  if IIiIiiIiI :
   for OO0000 in ( ii1Ii + oOooO0 ) . splitlines ( ) :
    OO0000 = OO0000 . decode ( locale . getpreferredencoding ( False ) ,
 errors = 'replace' )
    logging . error ( "    " + OO0000 )
    if 60 - 60: ooo0O0oO00 * i1i1i1111I / iI1iII1I1I1i
  return False
  if 45 - 45: Ooo0Ooo + ooOOO * oOo0O00 - ooo000 / IIiIIiIi11I1
 return True
 if 14 - 14: o00o0OO00O - IiIIii11Ii
def O0 ( a , b ) :
 O0Ii1Ii1 = subprocess . call ( [ "dpkg" , "--compare-versions" , a , "lt" , b ] )
 if O0Ii1Ii1 == 0 :
  return - 1
  if 25 - 25: OooOoo + Oo * Ii * iI1iII1I1I1i + Ii
 oOO = subprocess . call ( [ "dpkg" , "--compare-versions" , a , "gt" , b ] )
 if oOO == 0 :
  return 1
  if 96 - 96: I1I / ooo0O0oO00 / iIiii1i + iIiii1i
 return 0
 if 35 - 35: IIiIIiIi11I1 + oOo0O00
def determine_upgrade ( fns ) :
 logging . info ( "Analyzing upgrade path..." )
 if 96 - 96: iI1iII1I1I1i . OooOoo . i1
 OOo = [ ]
 oO000O0O0 = [ ]
 ooOo00O0o0o0 = [ ]
 OOooooOOooo0 = [ ]
 II1111I11 = [ ]
 if 94 - 94: Oo - IIiIIiIi11I1
 for O0oOoOo0O00 in fns :
  logging . debug ( "Checking '%s'..." % os . path . basename ( O0oOoOo0O00 ) )
  if 46 - 46: ooo000
  oOo = ooO0Oo0o00 ( O0oOoOo0O00 )
  if oOo is None :
   return None
   if 85 - 85: iiIi1 * Iii1i
  Ii1ii = OoOo ( oOo [ "name" ] )
  if Ii1ii is None :
   return None
   if 98 - 98: o00o0OO00O / i1 / OooOoo + Iii1i % ooOOO
   if 19 - 19: ooOOO % I1Ii1I1
  IIii = oOo [ "versions" ] [ 0 ] [ "conflicts" ]
  IIii = set ( [ spec . split ( " " , 1 ) [ 0 ] for spec in IIii ] )
  OO00 = oOo [ "versions" ] [ 0 ] [ "replaces" ]
  OO00 = set ( [ spec . split ( " " , 1 ) [ 0 ] for spec in OO00 ] )
  if 15 - 15: OooOoo . IiIIii11Ii . o00o0OO00O / Iii1i + ooOOO / Ii
  Ii1iIII11i = IIii & OO00
  for oo000OO0ooO in Ii1iIII11i :
   OoO0OooO0ooo = OoOo ( oo000OO0ooO )
   if OoO0OooO0ooo is None :
    return None
   if len ( OoO0OooO0ooo [ "versions" ] ) > 0 :
    II1111I11 . append ( oo000OO0ooO )
    if 36 - 36: o00o0OO00O * i1iiIII111 % iiIi1 - oOo0O00 % iI1iII1I1I1i
  oo0000oOOoOOO = "%s_%s" % ( oOo [ "versions" ] [ 0 ] [ "version" ] ,
 oOo [ "versions" ] [ 0 ] [ "arch" ] )
  if len ( Ii1ii [ "versions" ] ) == 0 :
   OoOOO0OOo0Ooo = ""
  else :
   OoOOO0OOo0Ooo = "%s_%s" % ( Ii1ii [ "versions" ] [ 0 ] [ "version" ] ,
 Ii1ii [ "versions" ] [ 0 ] [ "arch" ] )
   if 11 - 11: Ooo0Ooo
  logging . debug ( "Version to install: %s" % oo0000oOOoOOO )
  logging . debug ( "Current version(s): %s" % OoOOO0OOo0Ooo )
  if 13 - 13: IiIIii11Ii * ooo0O0oO00 / o00o0OO00O . ooo0O0oO00 % Oo + Ooo0Ooo
  if len ( Ii1ii [ "versions" ] ) == 0 :
   oO000O0O0 . append ( O0oOoOo0O00 )
  else :
   OoO0OOo00oo0O = O0 ( oOo [ "versions" ] [ 0 ] [ "version" ] ,
 Ii1ii [ "versions" ] [ 0 ] [ "version" ] )
   if OoO0OOo00oo0O <= 0 :
    OOooooOOooo0 . append ( O0oOoOo0O00 )
   else :
    ooOo00O0o0o0 . append ( O0oOoOo0O00 )
    if 29 - 29: IiIIii11Ii
 return { "remove" : OOo , "install" : oO000O0O0 ,
 "upgrade" : ooOo00O0o0o0 , "ignore" : OOooooOOooo0 ,
 "obsolete" : II1111I11 }
 if 72 - 72: ooOOO . i1 % Ooo0Ooo
def perform_upgrade ( actions , progress_cb = None , output_cb = None ) :
 IiOOooo00 = 0
 IiOOooo00 += len ( actions [ "remove" ] )
 IiOOooo00 += len ( actions [ "install" ] )
 IiOOooo00 += len ( actions [ "upgrade" ] )
 if 52 - 52: OooOoo
 if progress_cb is not None :
  progress_cb ( 0 )
  if 95 - 95: i1i1i1111I . iIiii1i * ooo000 / iI1iII1I1I1i - I1Ii1I1 + IiIIii11Ii
 O0oooo0o0oO = 0
 if 57 - 57: IIiIIiIi11I1 - iI1iII1I1I1i % ooOOO - iIiii1i / IiIIii11Ii . Ooo0Ooo
 if 15 - 15: o00o0OO00O * iIiii1i - oOo0O00
 if len ( actions [ "remove" ] ) > 0 :
  if 6 - 6: iiIi1 - Ii
  logging . error ( "Package removal not supported" )
  return False
  if 1 - 1: I1I + OooOoo
  if 98 - 98: i1iiIII111 + Iii1i . IIiIIiIi11I1
 if progress_cb is not None :
  oO00 = lambda oOooo0OOO : progress_cb ( 100 * O0oooo0o0oO / IiOOooo00 + oOooo0OOO * ( IiOOooo00 - O0oooo0o0oO ) / IiOOooo00 )
 else :
  oO00 = None
  if 30 - 30: IiIIii11Ii % ooo000 . Ii * Iii1i - iI1iII1I1I1i
 OOO = iiI1 ( actions [ "install" ] + actions [ "upgrade" ] ,
 actions [ "remove" ] + actions [ "obsolete" ] ,
 progress_cb = oO00 )
 if not OOO :
  return False
  if 10 - 10: Ooo0Ooo % ooo000 % Ooo0Ooo
 if progress_cb is not None :
  progress_cb ( 100 )
  if 38 - 38: ooo000
 return True
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
prefix.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/prefix.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2014 Cendio AB.
# For more information, see http://www.cendio.com
import os
import sys
if 82 - 82: Iii1i
__all__ = [ "get_tl_prefix" , "get_tl_var_prefix" ,
 "get_tl_sessions_root" , "get_tl_user_dir" , "assert_in_session" , "get_tl_session_dir" ,
 "get_other_tl_session_dir" , "get_tl_session_dev_dir" , "get_tl_session_drives_dir" ,
 "get_tl_run_prefix" , "get_tl_socket_dir" , "get_tl_sessnum" ]
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
def get_tl_prefix ( ) :
 if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
 OOoOoo000O00 = os . path . realpath ( __file__ )
 if 55 - 55: o0Oo - ii1I1iII1I1I . i1I1IiIIiIi1 % oo0O000ooO * iIIiiIIiii1
 for iIi1ii1I1iI11 in range ( 3 ) :
  OOoOoo000O00 = os . path . dirname ( OOoOoo000O00 )
 return OOoOoo000O00
 if 55 - 55: I11II1Ii % iIi
def get_tl_var_prefix ( ) :
 return "/var/opt/thinlinc"
 if 76 - 76: i11 / i1 . Ii . i1i1i1111I + iIIiiIIiii1
def get_tl_sessions_root ( ) :
 return os . path . join ( get_tl_var_prefix ( ) , "sessions" )
 if 31 - 31: oo0O000ooO * I11II1Ii / OooOoo
 if 93 - 93: oo0O000ooO % oo0O000ooO / I1I - Oo . ii1I1iII1I1I
def get_tl_user_dir ( username ) :
 return os . path . join ( get_tl_sessions_root ( ) , username )
 if 46 - 46: i1I1IiIIiIi1 - Ii * Oo * Ii
 if 52 - 52: Oo + I1I / I11II1Ii / OooOoo - I1Ii1I1 - ooOOO
def assert_in_session ( ) :
 oO0 = get_tl_session_dir ( )
 if 13 - 13: I11II1Ii
 if 2 - 2: i1
 if oO0 is None :
  sys . exit ( "TLSESSIONDATA is not set. Are you in a proper ThinLinc session?" )
 if get_tl_sessnum ( oO0 ) is None :
  sys . exit ( "Unable to retrieve session number. Are you in a proper ThinLinc session?" )
  if 22 - 22: oo0O000ooO - o0Oo / I1Ii1I1 . o0Oo
def get_tl_session_dir ( ) :
 return os . getenv ( "TLSESSIONDATA" )
 if 1 - 1: i1I1IiIIiIi1 + ii1I1iII1I1I + I11II1Ii * oo0O000ooO
 if 20 - 20: I1I + Ii
 if 75 - 75: Ii % i1iiIII111 * Ii . oo0O000ooO % iIIiiIIiii1 % I1Ii1I1
def get_other_tl_session_dir ( username , display ) :
 if isinstance ( "" , type ( display ) ) and ":" in display :
  if 8 - 8: I1Ii1I1 . i11 . i1 . Oo - iIi
  if 32 - 32: Ii % i1i1i1111I % iIi - iIIiiIIiii1 % i1iiIII111
  display = display . split ( ":" ) [ 1 ] . split ( "." ) [ 0 ]
 elif isinstance ( 1 , type ( display ) ) :
  display = str ( display )
 return os . path . join ( get_tl_user_dir ( username ) , display )
 if 34 - 34: i1iiIII111 * i1
def get_tl_session_dev_dir ( sessiondata ) :
 return os . path . join ( sessiondata , "dev" )
 if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . i1I1IiIIiIi1
 if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
def get_tl_session_drives_dir ( sessiondata ) :
 return os . path . join ( sessiondata , "drives" )
 if 32 - 32: I1Ii1I1 + I11II1Ii - oOo0O00
 if 79 - 79: Iii1i % I11II1Ii * Oo + ooOOO / Oo . I11II1Ii
def get_tl_run_prefix ( ) :
 return "/var/run/thinlinc"
 if 20 - 20: i11 + i1iiIII111 / I1I
def get_tl_socket_dir ( ) :
 return os . path . join ( get_tl_run_prefix ( ) , "master" )
 if 88 - 88: iIIiiIIiii1 + ooOOO - i1i1i1111I . ii1I1iII1I1I * Ii + Iii1i
def get_tl_sessnum ( sessiondata ) :
 oOo0O00O0ooo = os . path . join ( sessiondata , "sessnum" )
 if 89 - 89: Ii % IiIIii11Ii
 try :
  with open ( oOo0O00O0ooo ) as IiII :
   I1i1i = IiII . read ( )
 except OSError :
  print ( "Warning: Missing session number file" , file = sys . stderr )
  return None
 try :
  I1i1i = int ( I1i1i )
 except ValueError :
  print ( "Warning: Corrupt session number file" , file = sys . stderr )
  return None
 return I1i1i
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
rpm.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/rpm.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2012-2014 Pierre Ossman for Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import os
import select
import locale
import logging
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
import subprocess
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
from thinlinc . rpmvercmp import rpmVersionCompare
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
__all__ = [ "determine_upgrade" , "perform_upgrade" ]
if 98 - 98: I11iiIi11i1I % oOO
def i1ii1 ( fn ) :
 ooo0O0oO00 = subprocess . Popen ( [ "rpm" , "--query" , "--package" , fn ,
 "--queryformat" ,
 "%{NAME}\n%{EPOCH}\n%{VERSION}\n%{RELEASE}\n%{ARCH}\n[%{OBSOLETES},]\n" ] ,
 stdout = subprocess . PIPE , stderr = subprocess . PIPE ,
 universal_newlines = True )
 if 55 - 55: I11II1Ii % iIi
 ( ii , iiI ) = ooo0O0oO00 . communicate ( )
 if 10 - 10: ooOOO / IIiIIiIi11I1 * oOO / I11II1Ii / I11II1Ii
 if ooo0O0oO00 . returncode != 0 :
  logging . error ( "Failed to get information about package '%s':" % fn )
  if 61 - 61: Ooo0Ooo - I1I
  iIIIII1i111i = ii + iiI
  if iIIIII1i111i :
   for IIiiii1IiIiII in ( ii + iiI ) . splitlines ( ) :
    logging . error ( "    " + IIiiii1IiIiII )
    if 32 - 32: iI1iII1I1I1i
  return None
  if 71 - 71: Ii
 iiIII , IioOOOO000 , oOoo0 , Iio0 , i1i , I1i = ii . splitlines ( )
 if 75 - 75: iIi . Ooo0Ooo . I11II1Ii * I11iiIi11i1I % i1iiIII111
 I1i = I1i . split ( "," )
 if len ( I1i ) > 0 :
  I1i = I1i [ : - 1 ]
  if 34 - 34: i1iiIII111 * i1
 return { "name" : iiIII , "versions" : [ { "epoch" : IioOOOO000 , "version" : oOoo0 ,
 "release" : Iio0 , "arch" : i1i ,
 "obsoletes" : I1i } ] }
 if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i
def ii1IiIiiII ( name ) :
 ooo0O0oO00 = subprocess . Popen ( [ "rpm" , "--query" , name ,
 "--queryformat" , "%{EPOCH} %{VERSION} %{RELEASE} %{ARCH}\n" ] ,
 stdout = subprocess . PIPE , stderr = subprocess . PIPE ,
 universal_newlines = True )
 if 21 - 21: oOo0O00 % I11iiIi11i1I % oOO . oOo0O00
 ( ii , iiI ) = ooo0O0oO00 . communicate ( )
 if 85 - 85: OooOoo
 if ooo0O0oO00 . returncode != 0 :
  if 34 - 34: Oo
  logging . debug ( "Failed to get information about package '%s':" % name )
  if 96 - 96: ooOOO / iIi + i1iiIII111 / ooOOO / I11iiIi11i1I
  iIIIII1i111i = ii + iiI
  if iIIIII1i111i :
   for IIiiii1IiIiII in ( ii + iiI ) . splitlines ( ) :
    logging . debug ( "    " + IIiiii1IiIiII )
    if 63 - 63: i1i1i1111I . Ooo0Ooo * ooOOO
  return { "name" : name , "versions" : [ ] }
  if 6 - 6: i1iiIII111
 I1I1 = [ ]
 if 91 - 91: Iii1i % i1i1i1111I . OooOoo * oOO
 for IIiiii1IiIiII in ii . splitlines ( ) :
  IioOOOO000 , oOoo0 , Iio0 , i1i = IIiiii1IiIiII . split ( )
  I1I1 . append ( { "epoch" : IioOOOO000 , "version" : oOoo0 ,
 "release" : Iio0 , "arch" : i1i } )
  if 5 - 5: oOO % Ooo0Ooo / OooOoo
 return { "name" : name , "versions" : I1I1 }
 if 6 - 6: Ii + I1I + i1
def II11iiiiIi ( pkgs , nodeps = False ) :
 if 23 - 23: Ooo0Ooo + i1 * I1Ii1I1 + Oo * Ii - IIiIIiIi11I1
 if 29 - 29: IiIIii11Ii - oOo0O00
 i1IIiII11 = [ "rpm" , "--erase" , "--quiet" ]
 if nodeps :
  i1IIiII11 . append ( "--nodeps" )
 i1IIiII11 += pkgs
 if 52 - 52: i1iiIII111 % Oo . I1Ii1I1 + ooOOO % Oo . iIi
 logging . info ( "Removing installed package(s): %s" % ", " . join ( pkgs ) )
 if 56 - 56: i1iiIII111 * iIi - I11iiIi11i1I
 ooo0O0oO00 = subprocess . Popen ( i1IIiII11 , stdout = subprocess . PIPE , stderr = subprocess . PIPE ,
 universal_newlines = True )
 if 15 - 15: I1I % Ii + Ooo0Ooo * Iii1i
 ( ii , iiI ) = ooo0O0oO00 . communicate ( )
 if 67 - 67: I1I * Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
 if ooo0O0oO00 . returncode != 0 :
  logging . error ( "Removal of packages failed:" )
  if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
  iIIIII1i111i = ii + iiI
  if iIIIII1i111i :
   for IIiiii1IiIiII in ( ii + iiI ) . splitlines ( ) :
    logging . error ( "    " + IIiiii1IiIiII )
    if 52 - 52: oOO + I1I / ooo000 - I1Ii1I1 * I11II1Ii % oOo0O00
  return False
  if 52 - 52: oOo0O00 . I1I + I11II1Ii - i1iiIII111 % iI1iII1I1I1i
 return True
 if 57 - 57: I1I * IIiIIiIi11I1 % I1Ii1I1 * i1i1i1111I
def Oo0 ( pkgs , progress_cb = None ) :
 if 40 - 40: OooOoo / Iii1i
 if 6 - 6: iIi - i1i1i1111I
 i1IIiII11 = [ "rpm" , "--upgrade" , "--quiet" , "--hash" ]
 i1IIiII11 += pkgs
 if 59 - 59: I11II1Ii * ooo000 / ooo000 - i1
 logging . info ( "Installing package(s): %s" % ", " . join ( map ( os . path . basename , pkgs ) ) )
 if 19 - 19: Iii1i * Ooo0Ooo . I1Ii1I1 / I11iiIi11i1I * Ii - oOO
 with subprocess . Popen (
 i1IIiII11 , stdout = subprocess . PIPE , stderr = subprocess . PIPE ,
 ) as ooo0O0oO00 :
  if progress_cb is None :
   ( ii , iiI ) = ooo0O0oO00 . communicate ( )
  else :
   if 32 - 32: iI1iII1I1I1i
   I111II111I1I = len ( pkgs ) + 2
   IIi1I1I1i = 0
   O0O = 0
   if 31 - 31: i1iiIII111 + i1i1i1111I % OooOoo
   progress_cb ( 0 )
   if 20 - 20: OooOoo - I1I
   if 9 - 9: i1iiIII111 - iI1iII1I1I1i % Ii - I1I
   O0o0OOoOOOO = ooo0O0oO00 . stdout . fileno ( )
   IIIIi = ooo0O0oO00 . stderr . fileno ( )
   if 50 - 50: ooo000 * I1Ii1I1 * iI1iII1I1I1i
   ii = b""
   iiI = b""
   while True :
    try :
     ( i111ii1I , IiII , oOOOOOOoO ) = select . select ( [ O0o0OOoOOOO , IIIIi ] , [ ] , [ ] )
    except :
     break
     if 3 - 3: Ii % i1 + i1i1i1111I * Ii * i1 . I1I
    if O0o0OOoOOOO in i111ii1I :
     iiI1i = os . read ( O0o0OOoOOOO , 8192 )
     ii += iiI1i
     if 73 - 73: ooOOO - IiIIii11Ii
     for iIi1 in iiI1i :
      if 4 - 4: ooo000 % I1I - i1i1i1111I
      if 76 - 76: i1 * oOo0O00 . iIi * I11II1Ii . IiIIii11Ii . oOO
      if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i
      iIi1 = bytes ( [ iIi1 ] )
      if 91 - 91: I1Ii1I1 - I11iiIi11i1I
      if iIi1 == b"#" :
       O0O += 1
      elif iIi1 == b"\n" :
       IIi1I1I1i += 1
       O0O = 0
       if 84 - 84: oOO % iI1iII1I1I1i - Ooo0Ooo
     progress_cb ( 100 * IIi1I1I1i // I111II111I1I + 100 * O0O // 50 // I111II111I1I )
     if 94 - 94: i1iiIII111 + i1i1i1111I / iI1iII1I1I1i + iI1iII1I1I1i / I11II1Ii
    if IIIIi in i111ii1I :
     iiI += os . read ( IIIIi , 8192 )
     if 79 - 79: i1iiIII111 - IIiIIiIi11I1 . I1Ii1I1 + I1I - ooOOO + i1iiIII111
    ooo0O0oO00 . poll ( )
    if ooo0O0oO00 . returncode is not None :
     break
     if 36 - 36: ooOOO * Iii1i % I1I % i1 . Ooo0Ooo
   if ooo0O0oO00 . returncode is None :
    ooo0O0oO00 . wait ( )
    if 63 - 63: IIiIIiIi11I1 / IIiIIiIi11I1 * Iii1i - oOo0O00 . i1
   progress_cb ( 100 )
   if 52 - 52: oOo0O00 / I11II1Ii * IIiIIiIi11I1 + I11iiIi11i1I % Ooo0Ooo + oOO
 if ooo0O0oO00 . returncode != 0 :
  logging . error ( "Installation of packages failed:" )
  if 43 - 43: iI1iII1I1I1i * oOo0O00 + ooOOO
  iIIIII1i111i = ii + iiI
  if iIIIII1i111i :
   for IIiiii1IiIiII in ( ii + iiI ) . splitlines ( ) :
    IIiiii1IiIiII = IIiiii1IiIiII . decode ( locale . getpreferredencoding ( False ) ,
 errors = 'replace' )
    logging . error ( "    " + IIiiii1IiIiII )
    if 30 - 30: I1I
  return False
  if 41 - 41: oOO
 return True
 if 98 - 98: I1I / IIiIIiIi11I1 / I11II1Ii + iIi % Oo + I1I
def determine_upgrade ( fns ) :
 logging . info ( "Analyzing upgrade path..." )
 if 38 - 38: I1Ii1I1 + oOo0O00
 iii1I1 = [ ]
 Ii1 = [ ]
 OOOooOOoo = [ ]
 O00 = [ ]
 i1Ii = [ ]
 if 32 - 32: oOO
 for oOOOO0OO00 in fns :
  logging . debug ( "Checking '%s'..." % os . path . basename ( oOOOO0OO00 ) )
  if 8 - 8: Oo * I1I / i1i1i1111I + i1 / I1Ii1I1
  iI = i1ii1 ( oOOOO0OO00 )
  if iI is None :
   return None
   if 58 - 58: IIiIIiIi11I1 % Ii + oOo0O00 / oOo0O00 * iI1iII1I1I1i * i1i1i1111I
  I11iIi1i1iIi = ii1IiIiiII ( iI [ "name" ] )
  if 10 - 10: I1Ii1I1
  OoO0O0OO0 = set ( iI [ "versions" ] [ 0 ] [ "obsoletes" ] )
  for O0o in OoO0O0OO0 :
   OOooo000o0O = ii1IiIiiII ( O0o )
   if len ( OOooo000o0O [ "versions" ] ) > 0 :
    i1Ii . append ( O0o )
    if 74 - 74: I1Ii1I1
    if 61 - 61: iI1iII1I1I1i * I1Ii1I1 + Ooo0Ooo % IIiIIiIi11I1 * i1i1i1111I
  OOO0ooOO = "%s-%s.%s" % ( iI [ "versions" ] [ 0 ] [ "version" ] ,
 iI [ "versions" ] [ 0 ] [ "release" ] ,
 iI [ "versions" ] [ 0 ] [ "arch" ] )
  OO0oOoOOOoO0 = ""
  for Iii1I1I1 in I11iIi1i1iIi [ "versions" ] :
   OO0oOoOOOoO0 += "%s-%s.%s " % ( Iii1I1I1 [ "version" ] , Iii1I1I1 [ "release" ] , Iii1I1I1 [ "arch" ] )
   if 57 - 57: I1I
  logging . debug ( "Version to install: %s" % OOO0ooOO )
  logging . debug ( "Current version(s): %s" % OO0oOoOOOoO0 )
  if 35 - 35: oOo0O00 / IIiIIiIi11I1 - Iii1i . iIi * i1
  if len ( I11iIi1i1iIi [ "versions" ] ) == 0 :
   Ii1 . append ( oOOOO0OO00 )
  else :
   if 91 - 91: oOO + Iii1i
   if 71 - 71: i1 . iI1iII1I1I1i . OooOoo . IIiIIiIi11I1
   OOOoO0oO = ( iI [ "versions" ] [ 0 ] [ "epoch" ] ,
 iI [ "versions" ] [ 0 ] [ "version" ] ,
 iI [ "versions" ] [ 0 ] [ "release" ] )
   iII = ( I11iIi1i1iIi [ "versions" ] [ 0 ] [ "epoch" ] ,
 I11iIi1i1iIi [ "versions" ] [ 0 ] [ "version" ] ,
 I11iIi1i1iIi [ "versions" ] [ 0 ] [ "release" ] )
   if 44 - 44: Iii1i + oOo0O00 + I11II1Ii % IIiIIiIi11I1 * OooOoo
   OO00OOO = rpmVersionCompare ( OOOoO0oO , iII )
   if 25 - 25: I11II1Ii / i1 - Ii - IIiIIiIi11I1 + ooo000 * ooo000
   if OO00OOO <= 0 :
    O00 . append ( oOOOO0OO00 )
   else :
    if 85 - 85: IIiIIiIi11I1 / OooOoo . I11II1Ii % Oo + Oo - I11iiIi11i1I
    if 59 - 59: OooOoo
    if iI [ "versions" ] [ 0 ] [ "arch" ] != I11iIi1i1iIi [ "versions" ] [ 0 ] [ "arch" ] :
     if 53 - 53: i1i1i1111I / ooOOO - iIi + ooo000 * i1i1i1111I * i1iiIII111
     iii1I1 . append ( I11iIi1i1iIi [ "name" ] )
     Ii1 . append ( oOOOO0OO00 )
    else :
     OOOooOOoo . append ( oOOOO0OO00 )
     if 87 - 87: i1iiIII111 - IIiIIiIi11I1 * Ii % i1i1i1111I % i1
 return { "remove" : iii1I1 , "install" : Ii1 ,
 "upgrade" : OOOooOOoo , "ignore" : O00 ,
 "obsolete" : i1Ii }
 if 81 - 81: i1 + i1i1i1111I * Oo - Oo * I1Ii1I1 - oOo0O00
def perform_upgrade ( actions , progress_cb = None , output_cb = None ) :
 iiIIIIi = 0
 iiIIIIi += len ( actions [ "remove" ] )
 iiIIIIi += len ( actions [ "install" ] )
 iiIIIIi += len ( actions [ "upgrade" ] )
 if 32 - 32: I11II1Ii - I1Ii1I1 * I1Ii1I1 / iIi . ooo000
 if progress_cb is not None :
  progress_cb ( 0 )
  if 80 - 80: IIiIIiIi11I1 / OooOoo % iI1iII1I1I1i / ooOOO * ooOOO - Iii1i
 O0ooOO0O0O0O = 0
 if 59 - 59: ooo000 / Oo - i1
 if 49 - 49: I11II1Ii + oOo0O00 + ooo000 . Iii1i + I11II1Ii
 if 88 - 88: iIi . IIiIIiIi11I1 * i1 + IiIIii11Ii % I1I / iIi
 if 33 - 33: OooOoo * Oo * Ii * iI1iII1I1I1i + I11II1Ii . IiIIii11Ii
 if 94 - 94: oOo0O00 . i1iiIII111
 if 96 - 96: I1I / oOO / I11iiIi11i1I + I11iiIi11i1I
 if 35 - 35: IIiIIiIi11I1 + oOo0O00
 if 96 - 96: iI1iII1I1I1i . OooOoo . i1
 if 87 - 87: ooo000 * IiIIii11Ii % ooo000 . ooOOO . Oo % iI1iII1I1I1i
 if 48 - 48: ooOOO * ooo000 % IiIIii11Ii * i1 . Iii1i - iIi
 if len ( actions [ "remove" ] ) > 0 :
  oo0O0O0Ooooo = II11iiiiIi ( actions [ "remove" ] , nodeps = True )
  if not oo0O0O0Ooooo :
   return False
   if 39 - 39: Oo . oOO / ooo000 / iI1iII1I1I1i
  O0ooOO0O0O0O += len ( actions [ "remove" ] )
  if progress_cb is not None :
   progress_cb ( 100 * O0ooOO0O0O0O / iiIIIIi )
   if 48 - 48: oOO * I11II1Ii - OooOoo * Oo - iIi - Ooo0Ooo
   if 36 - 36: IiIIii11Ii
 if progress_cb is not None :
  IiIi1I11I = lambda ooo0O0oO00 : progress_cb ( 100 * O0ooOO0O0O0O // iiIIIIi + ooo0O0oO00 * ( iiIIIIi - O0ooOO0O0O0O ) // iiIIIIi )
 else :
  IiIi1I11I = None
  if 8 - 8: I1I + iI1iII1I1I1i . I1I . iIi
 oo0O0O0Ooooo = Oo0 ( actions [ "install" ] + actions [ "upgrade" ] ,
 progress_cb = IiIi1I11I )
 if not oo0O0O0Ooooo :
  return False
  if 3 - 3: i1iiIII111
 if progress_cb is not None :
  progress_cb ( 100 )
  if 32 - 32: I1I % i1i1i1111I
 return True
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
rpmvercmp.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/rpmvercmp.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Based on rpmvercmp.c from librpm version 4.16.1.3.
#
# Copyright by the various authors of librm.
# Copyright 2012-2014 Pierre Ossman for Cendio AB.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

__all__ = ["rpmVersionCompare"]

# Designed to be a direct copy of the C code, to avoid differences
# in behaviour

def strcmp(a, b):
    return (a > b) - (a < b)

def _rislower(c):
    return c >= 'a' and c <= 'z'

def _risupper(c):
    return c >= 'A' and c <= 'Z'

def _risalpha(c):
    return _rislower(c) or _risupper(c)

def _risdigit(c):
    return c >= '0' and c <= '9'

def _risalnum(c):
    return _risalpha(c) or _risdigit(c)

def _rpmvercmp(a, b):
    # easy comparison to see if versions are identical
    if a == b:
        return 0

    str1 = a
    str2 = b

    one = str1
    two = str2

    # loop through each version segment of str1 and str2 and compare them
    while one or two:
        while one and not _risalnum(one[0]) and one[0] not in ['^', '~']:
            one = one[1:]
        while two and not _risalnum(two[0]) and two[0] not in ['^', '~']:
            two = two[1:]

        # handle the tilde separator, it sorts before everything else
        if (one and one[0] == '~') or (two and two[0] == '~'):
            if not one or one[0] != '~': return 1
            if not two or two[0] != '~': return -1
            one = one[1:]
            two = two[1:]
            continue

        # Handle caret separator. Concept is the same as tilde,
        # except that if one of the strings ends (base version),
        # the other is considered as higher version.
        if (one and one[0] == '^') or (two and two[0] == '^'):
            if not one: return -1
            if not two: return 1
            if one[0] != '^': return 1
            if two[0] != '^': return -1
            one = one[1:]
            two = two[1:]
            continue

        # If we ran to the end of either, we are finished with the loop
        if not (one and two): break

        str1 = one
        str2 = two

        # grab first completely alpha or completely numeric segment
        # leave one and two pointing to the start of the alpha or numeric
        # segment and walk str1 and str2 to end of segment
        if str1 and _risdigit(str1[0]):
            while str1 and _risdigit(str1[0]):
                str1 = str1[1:]
            while str2 and _risdigit(str2[0]):
                str2 = str2[1:]
            isnum = True
        else:
            while str1 and _risalpha(str1[0]):
                str1 = str1[1:]
            while str2 and _risalpha(str2[0]):
                str2 = str2[1:]
            isnum = False

        # save character at the end of the alpha or numeric segment
        # so that they can be restored after the comparison
        oldch1 = str1;
        if str1: # XXX Python conversion
            one = one[:-len(str1)]
        str1 = '';
        oldch2 = str2;
        if str2: # XXX Python conversion
            two = two[:-len(str2)]
        str2 = '';

        # take care of the case where the two version segments are
        # different types: one numeric, the other alpha (i.e. empty)
        if one == str1:    # arbitrary
            return -1
        # XXX See patch #60884 (and details) from bugzilla #50977.
        if two == str2:
            if isnum:
                return 1
            else:
                return -1

        if isnum:
            # this used to be done by converting the digit segments
            # to ints using atoi() - it's changed because long
            # digit segments can overflow an int - this should fix that.

            # throw away any leading zeros - it's a number, right?
            while one and one[0] == '0':
                one = one[1:]
            while two and two[0] == '0':
                two = two[1:]

            # whichever number has more digits wins
            if len(one) > len(two):
                return 1
            if len(two) > len(one):
                return -1

        # strcmp will return which one is greater - even if the two
        # segments are alpha or if they are numeric.  don't return
        # if they are equal because there might be more segments to
        # compare
        rc = strcmp(one, two)
        if rc:
            if rc < 1:
                return -1
            else:
                return 1

        # restore character that was replaced by null above
        str1 = oldch1
        one = str1
        str2 = oldch2
        two = str2

    # this catches the case where all numeric and alpha segments have
    # compared identically but the segment sepparating characters were
    # different
    if not one and not two:
        return 0

    # whichever version still has characters left over wins
    if not one:
        return -1
    else:
        return 1

def rpmVersionCompare(first, second):
    # Missing epoch becomes zero here, which is what we want
    try:
        epochOne = int(first[0])
    except ValueError:
        epochOne = 0
    try:
        epochTwo = int(second[0])
    except ValueError:
        epochTwo = 0

    if epochOne < epochTwo:
        return -1
    elif epochOne > epochTwo:
        return 1

    rc = _rpmvercmp(first[1], second[1])
    if rc:
        return rc

    return _rpmvercmp(first[2], second[2])
sudorelaunch.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/sudorelaunch.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2012-2014 Peter Åstrand for Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
__all__ = [ "sudo_question" , "relaunch_via_sudo" ]
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
import os
import sys
import gettext
import locale
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
from thinlinc import prefix
from thinlinc import tlgtk
from thinlinc import wizard
import subprocess
import tempfile
import shutil
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
if 98 - 98: I11iiIi11i1I % oOO
if 31 - 31: i1I
def i1I1 ( title , text , secondary_text ) :
 if tlgtk . has_gtk :
  I1Ii111i1I = tlgtk . SimpleMessageDialog (
 title = title ,
 text = text ,
 secondary_text = secondary_text ,
 message_type = tlgtk . Gtk . MessageType . ERROR )
  if 52 - 52: OOooooOo00 * i1I / Iii1i / Ii . i1i1i1111I / Ii
  I1Ii111i1I . run ( )
  I1Ii111i1I . destroy ( )
 else :
  wizard . text_print_wrapped ( text )
  wizard . text_print_wrapped ( secondary_text )
  if 43 - 43: I11iiIi11i1I
  if 31 - 31: IIiIIiIi11I1 * oOO / OooOoo
def sudo_question ( title , program ) :
 oOooo0OOO = gettext . translation ( "tl-misc" ,
 os . path . join ( prefix . get_tl_prefix ( ) ,
 "share/locale" ) ,
 fallback = True )
 Oo000ooO0Oooo = oOooo0OOO . gettext
 if 25 - 25: OooOoo - I1Ii1I1 - iI1iII1I1I1i + i1i1i1111I / iI1iII1I1I1i
 try :
  i1iiiiIIIiIi = "Authorization Required"
  II = "Do you want to relaunch %s with 'sudo'?" % ( program , )
  if 34 - 34: Ooo0Ooo + oOO * IIiIIiIi11I1 * OooOoo
  if tlgtk . has_gtk :
   I1Ii111i1I = tlgtk . SimpleMessageDialog (
 title = title ,
 text = i1iiiiIIIiIi ,
 secondary_text = II ,
 cancel_button = True ,
 ok_button_label = Oo000ooO0Oooo ( "_Proceed" ) ,
 message_type = tlgtk . Gtk . MessageType . QUESTION )
   if 25 - 25: Ii / oOO % Ii
   o0 = I1Ii111i1I . run ( )
   I1Ii111i1I . destroy ( )
   if 62 - 62: I1Ii1I1 % I11iiIi11i1I . I1Ii1I1 . OOooooOo00 . i1i1i1111I
   while tlgtk . Gtk . events_pending ( ) :
    tlgtk . Gtk . main_iteration ( )
   if o0 == tlgtk . Gtk . ResponseType . OK :
    relaunch_via_sudo ( title )
    if 87 - 87: Oo - i1I
  else :
   wizard . text_print_wrapped ( i1iiiiIIIiIi )
   iiI1111IIi1 = II
   oOo00O = wizard . text_prompt ( iiI1111IIi1 , [ "Yes" , "no" ] )
   if oOo00O == "yes" :
    relaunch_via_sudo ( title )
    if 59 - 59: Iii1i . OOooooOo00 - i1I
 except KeyboardInterrupt :
  pass
  if 13 - 13: oOO
  if 28 - 28: OooOoo + i1i1i1111I + IiIIii11Ii / I1Ii1I1 + iI1iII1I1I1i
def o0O0ooOoo00o ( ) :
 os . setsid ( )
 if 35 - 35: I1I % i1iiIII111 * I1I
 Ooo0OO = os . open ( os . ttyname ( 0 ) , os . O_RDWR )
 os . close ( Ooo0OO )
 if 6 - 6: i1iiIII111
 if 99 - 99: ooOOO * I1Ii1I1
def relaunch_via_sudo ( title ) :
 if os . getenv ( "DISPLAY" ) :
  if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
  with tempfile . NamedTemporaryFile ( delete = False ) as I1iIiiIIiIi :
   i1I11ii = os . getenv ( "XAUTHORITY" )
   if not i1I11ii :
    i1I11ii = os . path . expanduser ( "~/.Xauthority" )
   try :
    with open ( i1I11ii , 'rb' ) as iii1II11 :
     shutil . copyfileobj ( iii1II11 , I1iIiiIIiIi )
    I1iIiiIIiIi . flush ( )
    os . environ [ "XAUTHORITY" ] = I1iIiiIIiIi . name
   except OSError as I1iI :
    print ( "warning: failed to copy %s to %s:" % ( i1I11ii , I1iIiiIIiIi . name ) ,
 file = sys . stderr )
    print ( I1iI , file = sys . stderr )
    if 5 - 5: I1I / IiIIii11Ii - i1 + i1
    if 4 - 4: ooo000 / ooOOO + ooOOO . I11iiIi11i1I + oOO - i1iiIII111
 ii1Iii = [ "sudo" , "-E" ]
 if tlgtk . has_gtk :
  os . environ [ "SUDO_ASKPASS" ] = os . path . join ( prefix . get_tl_prefix ( ) , "libexec/tl-ssh-askpass" )
  if 77 - 77: i1iiIII111 + OOooooOo00 - Oo % ooo000
  if 74 - 74: Ii + Ooo0Ooo
  if 1 - 1: I1I % Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
  if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
  os . environ [ "TLSSOIGNORE" ] = "1"
  ii1Iii . append ( "-A" )
  if 52 - 52: oOO + I1I / ooo000 - I1Ii1I1 * i1I % oOo0O00
  if 52 - 52: oOo0O00 . I1I + i1I - i1iiIII111 % iI1iII1I1I1i
  if 57 - 57: I1I * IIiIIiIi11I1 % I1Ii1I1 * i1i1i1111I
  if 37 - 37: OOooooOo00 * i1i1i1111I + oOo0O00 / I1I / OooOoo
  if 4 - 4: i1
 ii1Iii . append ( sys . executable )
 ii1Iii . extend ( sys . argv )
 if 61 - 61: iI1iII1I1I1i . i1I - ooo000 / ooo000 - i1
 try :
  if 19 - 19: Iii1i * Ooo0Ooo . I1Ii1I1 / I11iiIi11i1I * Ii - oOO
  if 32 - 32: iI1iII1I1I1i
  if 18 - 18: I11iiIi11i1I * OOooooOo00 % iI1iII1I1I1i + OOooooOo00
  if tlgtk . has_gtk :
   if 93 - 93: oOO - I1Ii1I1 - IIiIIiIi11I1 * ooOOO - i1
   if 82 - 82: IIiIIiIi11I1 % i1 * ooOOO
   if 57 - 57: oOo0O00
   if 31 - 31: i1iiIII111 + i1i1i1111I % OooOoo
   if 20 - 20: OooOoo - I1I
   II1IIiiI , oOOoOOOO000 = os . openpty ( )
   IIIIi = subprocess . Popen (
 ii1Iii , preexec_fn = o0O0ooOoo00o , universal_newlines = True ,
 pass_fds = [ II1IIiiI ] , stdin = oOOoOOOO000 ,
 stdout = subprocess . PIPE , stderr = subprocess . STDOUT ,
 )
  else :
   os . execvp ( ii1Iii [ 0 ] , ii1Iii )
 except OSError as I1iI :
  i1I1 ( title , "Failed 'sudo' Execution" , str ( I1iI ) )
  sys . exit ( 1 )
  if 50 - 50: ooo000 * I1Ii1I1 * iI1iII1I1I1i
  if 17 - 17: Iii1i % i1I - Iii1i % Ooo0Ooo . OooOoo
 oO = ""
 while True :
  if 49 - 49: iI1iII1I1I1i / i1iiIII111 + ooo000
  if 36 - 36: i1i1i1111I + Iii1i - oOO * Ii
  try :
   oo0ooooo0ooo = IIIIi . stdout . readline ( )
   if oo0ooooo0ooo == "" :
    break
   sys . stdout . write ( oo0ooooo0ooo )
   oO += oo0ooooo0ooo
  except KeyboardInterrupt :
   if 61 - 61: i1I . iI1iII1I1I1i / ooOOO * I1Ii1I1 + OOooooOo00 % Oo
   if 100 - 100: Oo + i1I
   if 4 - 4: ooo000 % I1I - i1i1i1111I
   if 76 - 76: i1 * oOo0O00 . OOooooOo00 * i1I . IiIIii11Ii . oOO
   os . write ( II1IIiiI , b'\x03' )
   if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i
   if 91 - 91: I1Ii1I1 - I11iiIi11i1I
 OO00OOooO = IIIIi . wait ( )
 IIIIi . stdout . close ( )
 if OO00OOooO == 1 :
  if 58 - 58: i1I - OOooooOo00
  i1I1 ( title , "Failed 'sudo' Relaunch" , oO )
 else :
  if 86 - 86: Iii1i + i1iiIII111 - IIiIIiIi11I1 / I1I
  if 46 - 46: ooOOO + ooOOO % oOO
  if 2 - 2: i1i1i1111I / Ooo0Ooo / oOO - IIiIIiIi11I1 / IIiIIiIi11I1
  if 58 - 58: i1i1i1111I
  if 38 - 38: i1 - oOo0O00
  if 85 - 85: IIiIIiIi11I1 + I11iiIi11i1I % Ooo0Ooo + oOO * i1iiIII111
  if 46 - 46: ooOOO - ooOOO + Oo / I1I * Oo + oOO
  if 98 - 98: I1I / IIiIIiIi11I1 / i1I + OOooooOo00 % Oo + I1I
  if 38 - 38: I1Ii1I1 + oOo0O00
  if 2 - 2: OooOoo % Ii + oOO . OooOoo + IIiIIiIi11I1 * Oo
  os . _exit ( OO00OOooO )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
systemtype.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/systemtype.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2012-2019 Pierre Ossman for Cendio AB.
# Copyright 2021, Cendio AB.
# For more information, see http://www.cendio.com
if 82 - 82: Iii1i
import os
import re
import shlex
import subprocess
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
from shutil import which
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
__all__ = [ "CPU_ARCH" , "X86_64" ,
 "PACKAGE_FORMAT" , "RPM" , "DEB" ,
 "DISTRIBUTION" , "RHEL" , "FEDORA" ,
 "SLED" , "SLES" ,
 "UBUNTU" , "DEBIAN" ,
 "DISTRIBUTION_FAMILY" , "SLE" ,
 "DISTRIBUTION_VERSION" ]
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
if 98 - 98: I11iiIi11i1I % oOO
CPU_ARCH = None
X86_64 = "x86_64"
if 31 - 31: i1I
PACKAGE_FORMAT = None
RPM = "rpm"
DEB = "deb"
if 9 - 9: IiI11Ii111 / oOo0O00 / IiIIii11Ii - I11iiIi11i1I - iI1iII1I1I1i
DISTRIBUTION = None
DISTRIBUTION_FAMILY = None
RHEL = "RHEL"
FEDORA = "Fedora"
SLE = "SLE"
SLED = "SLED"
SLES = "SLES"
UBUNTU = "Ubuntu"
DEBIAN = "Debian"
if 16 - 16: i1i1i1111I / i1iiIII111
DISTRIBUTION_VERSION = None
if 3 - 3: i1 % i1 % i1i1i1111I . Ii * i1
if 9 - 9: i1iiIII111
if 10 - 10: ooOOO / IIiIIiIi11I1 * oOO / i1I / i1I
def oOooo0OOO ( fn ) :
 try :
  with open ( fn , "rt" ) as Oo000ooO0Oooo :
   IIiI = Oo000ooO0Oooo . readline ( ) . strip ( "\n" )
 except OSError :
  return None
  if 60 - 60: iI1iII1I1I1i . oOO
 return IIiI
 if 13 - 13: oOO
def iiIII ( ) :
 try :
  with open ( "/etc/os-release" , "rt" ) as Oo000ooO0Oooo :
   IioOOOO000 = Oo000ooO0Oooo . read ( ) . splitlines ( )
 except OSError :
  return None
  if 85 - 85: OooOoo - oOo0O00 / Ii / oOO % i1iiIII111 . Ii
 I1ii1iii1i = { }
 for IIiI in IioOOOO000 :
  try :
   I1i = shlex . split ( IIiI , comments = True )
  except ValueError :
   if 75 - 75: IiI11Ii111 . Ooo0Ooo . i1I * I11iiIi11i1I % i1iiIII111
   continue
   if 34 - 34: i1iiIII111 * i1
   if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i
  if len ( I1i ) != 1 :
   continue
   if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I
  try :
   ( IiI11I , IiiIii11iII1 ) = I1i [ 0 ] . split ( "=" , 1 )
  except ValueError :
   continue
   if 27 - 27: I1I + ooOOO * IIiIIiIi11I1 % Ii + Ooo0Ooo . ooOOO
  I1ii1iii1i [ IiI11I ] = IiiIii11iII1
  if 6 - 6: i1iiIII111
 return ( I1ii1iii1i . get ( "ID" , "linux" ) , I1ii1iii1i . get ( "VERSION_ID" , None ) ,
 I1ii1iii1i . get ( "ID_LIKE" , "" ) . split ( " " ) )
 if 99 - 99: ooOOO * I1Ii1I1
def Oooo0o0oO0 ( ) :
 IIiI = oOooo0OOO ( "/etc/system-release-cpe" )
 if IIiI is None :
  return None
  if 71 - 71: OooOoo - Ii
 if not IIiI . startswith ( "cpe:/" ) :
  return None
  if 40 - 40: IiIIii11Ii . i1 / Oo
 I1i = IIiI [ 5 : ] . split ( ":" )
 if 46 - 46: IiI11Ii111 - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i
 if len ( I1i ) < 7 :
  I1i += [ "" ] * ( 7 - len ( I1i ) )
  if 23 - 23: Ooo0Ooo + i1 * I1Ii1I1 + Oo * Ii - IIiIIiIi11I1
 if I1i [ 0 ] != "o" :
  return None
  if 29 - 29: IiIIii11Ii - oOo0O00
 return I1i
 if 30 - 30: I1I . ooo000
def OOO ( ) :
 try :
  with subprocess . Popen ( [ "lsb_release" , "--id" , "--release" ] ,
 stdout = subprocess . PIPE , universal_newlines = True ) as OooOoo0OO0OO0 :
   IiIi1Ii1111 = OooOoo0OO0OO0 . stdout . read ( )
 except OSError :
  return None
  if 95 - 95: I1I * Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo * oOo0O00
 id = None
 OO0O0oo = None
 if 54 - 54: I1Ii1I1 - i1I % ooo000 + Iii1i % oOo0O00 + I1I
 for IIiI in IiIi1Ii1111 . splitlines ( ) :
  if IIiI . startswith ( "Distributor ID:" ) :
   id = IIiI . split ( ":" , 1 ) [ 1 ] . strip ( )
  if IIiI . startswith ( "Release:" ) :
   OO0O0oo = IIiI . split ( ":" , 1 ) [ 1 ] . strip ( )
   if 56 - 56: i1iiIII111 % iI1iII1I1I1i - I1I - IIiIIiIi11I1 % I1Ii1I1
 if ( id is None ) or ( OO0O0oo is None ) :
  return None
  if 85 - 85: oOo0O00
 return ( id , OO0O0oo )
 if 66 - 66: IiI11Ii111 * i1i1i1111I + oOo0O00 / I1I / Iii1i / Ii
def IiII11i11II ( ) :
 global DISTRIBUTION , DISTRIBUTION_FAMILY , DISTRIBUTION_VERSION
 if 52 - 52: Iii1i / Oo
 if 100 - 100: I1Ii1I1 / I11iiIi11i1I * Ii - oOO
 iiI1111II = iiIII ( )
 if iiI1111II is not None :
  ( O0OO , oO0O0oOOo0Oo , O0ooooO ) = iiI1111II
  if 89 - 89: I1I * i1i1i1111I
  if 54 - 54: oOO + Ooo0Ooo - I1I . Ooo0Ooo
  if O0OO == 'rhel' :
   DISTRIBUTION = RHEL
  elif O0OO == 'fedora' :
   DISTRIBUTION = FEDORA
  elif O0OO == 'sles' :
   DISTRIBUTION = SLES
  elif O0OO == 'sled' :
   DISTRIBUTION = SLED
  elif O0OO == 'ubuntu' :
   DISTRIBUTION = UBUNTU
  elif O0OO == 'debian' :
   DISTRIBUTION = DEBIAN
   if 50 - 50: Iii1i * ooo000 % Iii1i - oOo0O00 + ooo000
   if 54 - 54: oOO * i1 % i1 - Ooo0Ooo + IIiIIiIi11I1
   if 4 - 4: ooo000 + I1Ii1I1 * OooOoo - IiI11Ii111
   if 69 - 69: ooo000
   if 76 - 76: Iii1i * Ooo0Ooo . iI1iII1I1I1i / Ii / ooOOO
  DISTRIBUTION_VERSION = oO0O0oOOo0Oo
  if 49 - 49: iI1iII1I1I1i / i1iiIII111 + ooo000
  if 36 - 36: i1i1i1111I + Iii1i - oOO * Ii
  for id in [ O0OO ] + O0ooooO :
   if id == 'rhel' :
    DISTRIBUTION_FAMILY = RHEL
   elif id == 'fedora' :
    DISTRIBUTION_FAMILY = FEDORA
   elif id == 'sles' :
    DISTRIBUTION_FAMILY = SLE
   elif id == 'sled' :
    DISTRIBUTION_FAMILY = SLE
   elif id == 'ubuntu' :
    DISTRIBUTION_FAMILY = UBUNTU
   elif id == 'debian' :
    DISTRIBUTION_FAMILY = DEBIAN
    if 45 - 45: i1i1i1111I * Ii
   if DISTRIBUTION_FAMILY is not None :
    break
    if 97 - 97: i1
 if DISTRIBUTION_FAMILY is not None :
  return
  if 26 - 26: IiI11Ii111
  if 20 - 20: IIiIIiIi11I1 / Oo
 IIIi1111iiIi1 = Oooo0o0oO0 ( )
 if IIIi1111iiIi1 is not None :
  if IIIi1111iiIi1 [ 1 ] == "redhat" :
   if IIIi1111iiIi1 [ 2 ] == "enterprise_linux" :
    DISTRIBUTION_FAMILY = RHEL
    DISTRIBUTION = RHEL
    DISTRIBUTION_VERSION = IIIi1111iiIi1 [ 3 ]
  elif IIIi1111iiIi1 [ 1 ] == "centos" :
   DISTRIBUTION_FAMILY = RHEL
   DISTRIBUTION_VERSION = IIIi1111iiIi1 [ 3 ]
   if 4 - 4: ooo000 % I1I - i1i1i1111I
 if DISTRIBUTION_FAMILY is not None :
  return
  if 76 - 76: i1 * oOo0O00 . IiI11Ii111 * i1I . IiIIii11Ii . oOO
  if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i
 if os . path . exists ( "/etc/fedora-release" ) :
  DISTRIBUTION_FAMILY = FEDORA
  if 91 - 91: I1Ii1I1 - I11iiIi11i1I
  IIiI = oOooo0OOO ( "/etc/fedora-release" )
  if IIiI is not None :
   OO00OOooO = re . match ( "Fedora release (?P<ver>[0-9]+) .*" , IIiI )
   if OO00OOooO :
    DISTRIBUTION = FEDORA
    DISTRIBUTION_VERSION = OO00OOooO . group ( "ver" )
    if 58 - 58: i1I - IiI11Ii111
 if DISTRIBUTION_FAMILY is not None :
  return
  if 86 - 86: Iii1i + i1iiIII111 - IIiIIiIi11I1 / I1I
  if 46 - 46: ooOOO + ooOOO % oOO
 if os . path . exists ( "/etc/redhat-release" ) :
  if 2 - 2: i1i1i1111I / Ooo0Ooo / oOO - IIiIIiIi11I1 / IIiIIiIi11I1
  DISTRIBUTION_FAMILY = RHEL
  if 58 - 58: i1i1i1111I
  IIiI = oOooo0OOO ( "/etc/redhat-release" )
  if IIiI is not None :
   OO00OOooO = re . match ( "Red Hat Enterprise Linux[ ]?(?P<type>.*) release (?P<ver>[0-9.]+) .*" ,
 IIiI )
   if OO00OOooO :
    DISTRIBUTION = RHEL
    DISTRIBUTION_VERSION = "%s%s" % ( OO00OOooO . group ( "ver" ) , OO00OOooO . group ( "type" ) )
    if 38 - 38: i1 - oOo0O00
 if DISTRIBUTION_FAMILY is not None :
  return
  if 85 - 85: IIiIIiIi11I1 + I11iiIi11i1I % Ooo0Ooo + oOO * i1iiIII111
  if 46 - 46: ooOOO - ooOOO + Oo / I1I * Oo + oOO
 if os . path . exists ( "/etc/novell-release" ) or os . path . exists ( "/etc/SuSE-release" ) :
  DISTRIBUTION_FAMILY = SLE
  if 98 - 98: I1I / IIiIIiIi11I1 / i1I + IiI11Ii111 % Oo + I1I
  if os . path . exists ( "/etc/novell-release" ) :
   IIiI = oOooo0OOO ( "/etc/novell-release" )
  else :
   IIiI = oOooo0OOO ( "/etc/SuSE-release" )
   if 38 - 38: I1Ii1I1 + oOo0O00
  if IIiI is not None :
   OO00OOooO = re . match ( "SUSE Linux Enterprise (?P<type>.+) (?P<ver>[0-9]+)" ,
 IIiI )
   if OO00OOooO :
    if OO00OOooO . group ( "type" ) == "Desktop" :
     DISTRIBUTION = SLED
     DISTRIBUTION_VERSION = OO00OOooO . group ( "ver" )
    elif OO00OOooO . group ( "type" ) == "Server" :
     DISTRIBUTION = SLES
     DISTRIBUTION_VERSION = OO00OOooO . group ( "ver" )
     if 2 - 2: OooOoo % Ii + oOO . OooOoo + IIiIIiIi11I1 * Oo
 if DISTRIBUTION_FAMILY is not None :
  return
  if 2 - 2: IIiIIiIi11I1 + iI1iII1I1I1i - I1Ii1I1 + ooOOO . IIiIIiIi11I1
 iIi111ii = OOO ( )
 if iIi111ii is not None :
  if 20 - 20: i1i1i1111I + Oo / Ooo0Ooo % IiI11Ii111 % IiI11Ii111
  if iIi111ii [ 0 ] == "Ubuntu" :
   DISTRIBUTION_FAMILY = UBUNTU
   DISTRIBUTION = UBUNTU
   DISTRIBUTION_VERSION = iIi111ii [ 1 ]
   if 29 - 29: iI1iII1I1I1i - oOo0O00 - Ooo0Ooo % i1I + IiI11Ii111
   if 8 - 8: Oo * I1I / i1i1i1111I + i1 / I1Ii1I1
   if 71 - 71: I1Ii1I1
 if DISTRIBUTION_FAMILY is not None :
  return
  if 1 - 1: IiI11Ii111 - oOo0O00 - i1 . oOo0O00
  if 91 - 91: iI1iII1I1I1i * i1 . ooOOO
  if 81 - 81: I1I * Oo - i1 % OooOoo * ooOOO
 if os . path . exists ( "/etc/debian_version" ) :
  DISTRIBUTION_FAMILY = DEBIAN
  if 19 - 19: Ii
  if 22 - 22: i1I % iI1iII1I1I1i + Oo
  if 60 - 60: ooo000 + I11iiIi11i1I + IIiIIiIi11I1 % i1i1i1111I - Ii % Ooo0Ooo
  if 95 - 95: ooOOO % i1i1i1111I . i1
 if DISTRIBUTION_FAMILY is not None :
  return
  if 87 - 87: Iii1i % ooOOO * Ii % IIiIIiIi11I1 / I11iiIi11i1I
  if 84 - 84: I1Ii1I1 + Ooo0Ooo % IIiIIiIi11I1 * i1i1i1111I
  if 61 - 61: i1iiIII111 - Oo + I1Ii1I1
def OOO0O0oOoOOOo ( ) :
 global CPU_ARCH
 global PACKAGE_FORMAT
 global DISTRIBUTION , DISTRIBUTION_FAMILY , DISTRIBUTION_VERSION
 if 99 - 99: Iii1i % oOO * Ooo0Ooo - Ii
 II1IiiI1iII = os . uname ( ) [ 4 ]
 if II1IiiI1iII == "x86_64" :
  CPU_ARCH = X86_64
  if 90 - 90: Iii1i . IiI11Ii111 * I1Ii1I1 / oOo0O00
 Iii = False
 ooO0O00OOOOo = False
 if 59 - 59: ooo000 / IiI11Ii111 / OooOoo % ooOOO . Ooo0Ooo
 if which ( "rpm" ) is not None :
  Iii = True
 if which ( "dpkg" ) is not None :
  ooO0O00OOOOo = True
  if 44 - 44: Iii1i + oOo0O00 + i1I % IIiIIiIi11I1 * OooOoo
  if 58 - 58: IiIIii11Ii - oOO + ooo000 % i1iiIII111 - I1I
  if 90 - 90: ooo000 % i1
 if Iii and ooO0O00OOOOo :
  if 100 - 100: i1iiIII111 . IIiIIiIi11I1 * ooo000 * ooo000
  if 85 - 85: IIiIIiIi11I1 / OooOoo . i1I % Oo + Oo - I11iiIi11i1I
  if 59 - 59: OooOoo
  oOOOoO00OO00O0o = "/var/lib/rpm/"
  i1Ii1iIi11iI = ""
  if 22 - 22: Iii1i + i1iiIII111 . oOo0O00 . IiIIii11Ii + OooOoo - i1
  if 68 - 68: I1Ii1I1 % I1Ii1I1 / IiI11Ii111 . ooo000
  if os . path . isfile ( oOOOoO00OO00O0o + "rpmdb.sqlite" ) :
   i1Ii1iIi11iI = oOOOoO00OO00O0o + "rpmdb.sqlite"
  elif os . path . isfile ( oOOOoO00OO00O0o + "Packages.db" ) :
   i1Ii1iIi11iI = oOOOoO00OO00O0o + "Packages.db"
  elif os . path . isfile ( oOOOoO00OO00O0o + "Packages" ) :
   i1Ii1iIi11iI = oOOOoO00OO00O0o + "Packages"
  else :
   Iii = False
   if 80 - 80: IIiIIiIi11I1 / OooOoo % iI1iII1I1I1i / ooOOO * ooOOO - Iii1i
  if i1Ii1iIi11iI != "" :
   try :
    O0ooOO0O0O0O = os . stat ( i1Ii1iIi11iI )
    if 59 - 59: ooo000 / Oo - i1
    if 49 - 49: i1I + oOo0O00 + ooo000 . Iii1i + i1I
    if 88 - 88: IiI11Ii111 . IIiIIiIi11I1 * i1 + IiIIii11Ii % I1I / IiI11Ii111
    if 33 - 33: OooOoo * Oo * Ii * iI1iII1I1I1i + i1I . IiIIii11Ii
    if 94 - 94: oOo0O00 . i1iiIII111
    if 96 - 96: I1I / oOO / I11iiIi11i1I + I11iiIi11i1I
    if 35 - 35: IIiIIiIi11I1 + oOo0O00
    if 96 - 96: iI1iII1I1I1i . OooOoo . i1
    if 87 - 87: ooo000 * IiIIii11Ii % ooo000 . ooOOO . Oo % iI1iII1I1I1i
    if 48 - 48: ooOOO * ooo000 % IiIIii11Ii * i1 . Iii1i - IiI11Ii111
    if 72 - 72: i1 % i1i1i1111I * iI1iII1I1I1i
    if 90 - 90: Ooo0Ooo * OooOoo . Ii
    if 5 - 5: Oo - i1 . oOO
    if O0ooOO0O0O0O . st_size < 1048576 :
     Iii = False
     if 18 - 18: IiIIii11Ii - oOO * i1I - OooOoo
   except FileNotFoundError :
    Iii = False
    if 54 - 54: IIiIIiIi11I1 . Ooo0Ooo % Ii + IiIIii11Ii * iI1iII1I1I1i / iI1iII1I1I1i
    if 31 - 31: IiIIii11Ii . IiIIii11Ii % Ii
    if 51 - 51: Oo / i1i1i1111I - I1I
    if 83 - 83: Iii1i % i1iiIII111 . OooOoo / I1I % oOO . I1I
    if 76 - 76: i1iiIII111 / OooOoo
  try :
   O0ooOO0O0O0O = os . stat ( '/var/lib/dpkg/status' )
   if O0ooOO0O0O0O . st_size < 1024 :
    ooO0O00OOOOo = False
  except FileNotFoundError :
   ooO0O00OOOOo = False
   if 77 - 77: ooOOO
   if 19 - 19: ooOOO % I1Ii1I1
 if Iii and ooO0O00OOOOo :
  PACKAGE_FORMAT = None
 else :
  if Iii :
   PACKAGE_FORMAT = RPM
  elif ooO0O00OOOOo :
   PACKAGE_FORMAT = DEB
   if 15 - 15: OooOoo . IiIIii11Ii . i1I / Iii1i + ooOOO / Ii
 IiII11i11II ( )
 if 17 - 17: I11iiIi11i1I - i1i1i1111I . iI1iII1I1I1i - I11iiIi11i1I + Oo % iI1iII1I1I1i
OOO0O0oOoOOOo ( )
if 65 - 65: Ii % I11iiIi11i1I
if 39 - 39: Iii1i * IIiIIiIi11I1 . Ooo0Ooo - Oo
if DISTRIBUTION_VERSION is not None :
 DISTRIBUTION_VERSION = DISTRIBUTION_VERSION . lower ( )
 if 63 - 63: i1i1i1111I - i1iiIII111 . OooOoo % OooOoo . IiI11Ii111 + i1I
if __name__ == "__main__" :
 print ( "CPU architecture: %s" % CPU_ARCH )
 print ( "Package format: %s" % PACKAGE_FORMAT )
 print ( "Distribution: %s" % DISTRIBUTION )
 print ( "Distribution family: %s" % DISTRIBUTION_FAMILY )
 print ( "Distribution version: %s" % DISTRIBUTION_VERSION )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
wizard.py
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/wizard.py'
View Content
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2012-2014 Pierre Ossman for Cendio AB.
# For more information, see http://www.cendio.com
import textwrap
if 82 - 82: Iii1i
from . import tlgtk
if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I
__all__ = [ "Wizard" ,
 "text_print_wrapped" , "text_print_title" , "text_wait_prompt" , "text_prompt" ,
 "interactive" ]
if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii
if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1
if 98 - 98: I11iiIi11i1I % oOO
if 31 - 31: i1I
if 9 - 9: IiI11Ii111 / oOo0O00 / IiIIii11Ii - I11iiIi11i1I - iI1iII1I1I1i
if 16 - 16: i1i1i1111I / i1iiIII111
interactive = True
if 3 - 3: i1 % i1 % i1i1i1111I . Ii * i1
def text_print_wrapped ( text , width = 72 ) :
 for ii1iI1I in text . splitlines ( ) :
  print ( textwrap . fill ( ii1iI1I , width ) )
  if 28 - 28: i1I / IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo
  if 13 - 13: IiIIii11Ii - Ooo0Ooo - Ii - Oo * ooo000 . i1iiIII111
def text_print_title ( title ) :
 print ( title )
 print ( len ( title ) * "=" )
 if 14 - 14: I1I / oOO
 if 58 - 58: I1Ii1I1 - ooOOO
def text_wait_prompt ( ) :
 if interactive :
  input ( "Press Enter to continue..." )
  if 60 - 60: iI1iII1I1I1i . oOO
  if 13 - 13: oOO
def text_prompt ( text , accepts ) :
 iiIII = None
 if 28 - 28: I1Ii1I1 . Iii1i - ooOOO - iI1iII1I1I1i
 if 37 - 37: oOO * IIiIIiIi11I1 * I1I / oOo0O00
 if 28 - 28: i1I
 if 95 - 95: i1iiIII111 . Ii . IIiIIiIi11I1 % I11iiIi11i1I % I1Ii1I1
 if 8 - 8: I1Ii1I1 . IiI11Ii111 . i1 . Oo - i1I
 for iiI1111IIi1 in accepts :
  if not iiI1111IIi1 . islower ( ) and iiIII is None :
   iiIII = iiI1111IIi1 . lower ( )
   if 92 - 92: ooOOO / OooOoo - oOo0O00
   if 59 - 59: Iii1i . IiI11Ii111 - i1I
 ii1IiIiiII = [ iiI1111IIi1 . lower ( ) for iiI1111IIi1 in accepts ]
 if 21 - 21: oOo0O00 % I11iiIi11i1I % oOO . oOo0O00
 while ( True ) :
  iii11i = input ( text + " [" + "/" . join ( accepts ) + "]?" )
  if len ( iii11i ) == 0 and iiIII is not None :
   return iiIII
   if 35 - 35: I1I % i1iiIII111 * I1I
  iii11i = iii11i . lower ( )
  if 88 - 88: I11iiIi11i1I + ooOOO - i1i1i1111I . Ooo0Ooo * Ii + Iii1i
  if iii11i is None :
   continue
   if 43 - 43: ooOOO * I1Ii1I1
   if 95 - 95: Ooo0Ooo % Iii1i % i1i1i1111I . OooOoo
  I1iIiiIIiIi = 0
  i1I11ii = ""
  for iiI1111IIi1 in ii1IiIiiII :
   if iiI1111IIi1 . startswith ( iii11i ) :
    I1iIiiIIiIi = I1iIiiIIiIi + 1
    if I1iIiiIIiIi == 1 :
     i1I11ii = iiI1111IIi1
     if 21 - 21: Iii1i - I1Ii1I1
  if I1iIiiIIiIi == 1 :
   return i1I11ii
   if 95 - 95: i1 - I1Ii1I1 + Oo
   if 49 - 49: IIiIIiIi11I1
class Wizard :
 def __init__ ( self ) :
  self . _title = None
  if 29 - 29: IiIIii11Ii - oOo0O00
  self . _intro = None
  self . _intro_title = None
  self . _intro_text = None
  self . _intro_button_text = None
  if 30 - 30: I1I . ooo000
  self . _banner_path = None
  self . _width = - 1
  self . _height = - 1
  if 43 - 43: ooOOO . I11iiIi11i1I + ooo000
  self . _text_handlers = [ ]
  self . _gui_handlers = [ ]
  if 87 - 87: Iii1i + ooOOO . i1I / Ii + Oo
 def set_title ( self , title ) :
  self . _title = title
  if 77 - 77: i1iiIII111 + IiI11Ii111 - Oo % ooo000
 def set_intro ( self , title , text , button_text ,
 banner_path = None , width = - 1 , height = - 1 ) :
  self . _intro_title = title
  self . _intro_text = text
  self . _intro_button_text = button_text
  if 74 - 74: Ii + Ooo0Ooo
  self . _banner_path = banner_path
  self . _width = width
  self . _height = height
  if 1 - 1: I1I % Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo
 def add_text_handler ( self , handler ) :
  self . _text_handlers . append ( handler )
  if 93 - 93: oOo0O00 % Ooo0Ooo * i1iiIII111
 def add_gui_handler ( self , handler ) :
  self . _gui_handlers . append ( handler )
  if 52 - 52: oOO + I1I / ooo000 - I1Ii1I1 * i1I % oOo0O00
 def run ( self ) :
  try :
   if not tlgtk . has_gtk :
    return self . _run_text ( )
   else :
    return self . _run_gui ( )
  except KeyboardInterrupt :
   return False
   if 52 - 52: oOo0O00 . I1I + i1I - i1iiIII111 % iI1iII1I1I1i
 def _run_text ( self ) :
  if self . _intro_title is not None :
   text_print_title ( self . _intro_title )
   print ( )
   if 57 - 57: I1I * IIiIIiIi11I1 % I1Ii1I1 * i1i1i1111I
  if self . _intro_text is not None :
   text_print_wrapped ( self . _intro_text )
   print ( )
   text_wait_prompt ( )
   print ( )
   if 37 - 37: IiI11Ii111 * i1i1i1111I + oOo0O00 / I1I / OooOoo
  for iI1iI in self . _text_handlers :
   iI1iI ( )
   if 54 - 54: I1I % ooo000 * ooo000 - OooOoo / Iii1i * Oo
  return True
  if 100 - 100: I1Ii1I1 / I11iiIi11i1I * Ii - oOO
 def _run_gui ( self ) :
  iiI1111II = tlgtk . wizard . Wizard ( )
  iiI1111II . set_default_size ( 880 , 530 )
  if 79 - 79: Ooo0Ooo % iI1iII1I1I1i % IIiIIiIi11I1 / ooOOO - ooOOO / I11iiIi11i1I
  if self . _title is not None :
   iiI1111II . set_title ( self . _title )
   if 63 - 63: ooOOO / i1i1i1111I - oOo0O00 * ooOOO / i1iiIII111 + oOO
  if self . _intro_title is not None :
   iiI1 = self . _intro_text
   iiI1111II . add_intro ( self . _intro_title , iiI1 ,
 self . _intro_button_text ,
 self . _banner_path , self . _width , self . _height )
   if 20 - 20: i1i1i1111I / Ooo0Ooo - oOO + Ooo0Ooo - I1I . Ooo0Ooo
  for iI1iI in self . _gui_handlers :
   iI1iI ( iiI1111II )
   if 50 - 50: Iii1i * ooo000 % Iii1i - oOo0O00 + ooo000
  return iiI1111II . run ( )
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3