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`).
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/__init__.py'
# -*-mode: python; coding: utf-8 -*-
#
# Copyright 2002-2014 Cendio AB.
# For more information, see http://www.cendio.com
# dd678faae9ac167bc83abf78e5cb2f3f0688d3a3
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/deb.py'
# -*-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
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/prefix.py'
# -*-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
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/rpm.py'
# -*-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
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/rpmvercmp.py'
# -*-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])
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/sudorelaunch.py'
# -*-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
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/systemtype.py'
# -*-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
wget 'https://sme10.lists2.roe3.org/temp/ThinLinc/tl-4.17.0-server/libs/modules/thinlinc/wizard.py'
# -*-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