mirror of
https://github.com/SELinuxProject/selinux
synced 2025-03-03 00:37:37 +00:00
policycoreutils/scripts: improve compatibility with Python 3
- __builtin__ module has been renamed to "builtins" in Python 3 - use reserved word `as` in try-except - replace print statement with print function - migrate from commands to subprocess - fix formatting Signed-off-by: Michal Srb <msrb@redhat.com>
This commit is contained in:
parent
349239e677
commit
7574a50f18
@ -22,15 +22,19 @@
|
|||||||
# 02111-1307 USA
|
# 02111-1307 USA
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
import commands, sys, os, pwd, string, getopt, selinux
|
import subprocess, sys, os, pwd, string, getopt, selinux
|
||||||
import seobject
|
import seobject
|
||||||
import gettext
|
import gettext
|
||||||
|
|
||||||
try:
|
try:
|
||||||
gettext.install('policycoreutils')
|
gettext.install('policycoreutils')
|
||||||
except IOError:
|
except IOError:
|
||||||
import __builtin__
|
try:
|
||||||
__builtin__.__dict__['_'] = unicode
|
import builtins
|
||||||
|
builtins.__dict__['_'] = str
|
||||||
|
except ImportError:
|
||||||
|
import __builtin__
|
||||||
|
__builtin__.__dict__['_'] = unicode
|
||||||
|
|
||||||
def errorExit(error):
|
def errorExit(error):
|
||||||
sys.stderr.write("%s: " % sys.argv[0])
|
sys.stderr.write("%s: " % sys.argv[0])
|
||||||
@ -80,9 +84,9 @@ def chcat_user_add(newcat, users):
|
|||||||
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
else:
|
else:
|
||||||
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
|
|
||||||
return errors
|
return errors
|
||||||
@ -107,7 +111,7 @@ def chcat_add(orig, newcat, objects,login_ind):
|
|||||||
|
|
||||||
if len(clist) > 1:
|
if len(clist) > 1:
|
||||||
if cat in clist[1:]:
|
if cat in clist[1:]:
|
||||||
print _("%s is already in %s") % (f, orig)
|
print(_("%s is already in %s") % (f, orig))
|
||||||
continue
|
continue
|
||||||
clist.append(cat)
|
clist.append(cat)
|
||||||
cats = clist[1:]
|
cats = clist[1:]
|
||||||
@ -118,9 +122,9 @@ def chcat_add(orig, newcat, objects,login_ind):
|
|||||||
else:
|
else:
|
||||||
cat_string = cat
|
cat_string = cat
|
||||||
cmd = 'chcon -l %s:%s %s' % (sensitivity, cat_string, f)
|
cmd = 'chcon -l %s:%s %s' % (sensitivity, cat_string, f)
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
@ -158,9 +162,9 @@ def chcat_user_remove(newcat, users):
|
|||||||
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
else:
|
else:
|
||||||
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
@ -185,7 +189,7 @@ def chcat_remove(orig, newcat, objects, login_ind):
|
|||||||
|
|
||||||
if len(clist) > 1:
|
if len(clist) > 1:
|
||||||
if cat not in clist[1:]:
|
if cat not in clist[1:]:
|
||||||
print _("%s is not in %s") % (f, orig)
|
print(_("%s is not in %s") % (f, orig))
|
||||||
continue
|
continue
|
||||||
clist.remove(cat)
|
clist.remove(cat)
|
||||||
if len(clist) > 1:
|
if len(clist) > 1:
|
||||||
@ -195,16 +199,16 @@ def chcat_remove(orig, newcat, objects, login_ind):
|
|||||||
else:
|
else:
|
||||||
cat = ""
|
cat = ""
|
||||||
else:
|
else:
|
||||||
print _("%s is not in %s") % (f, orig)
|
print(_("%s is not in %s") % (f, orig))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if len(cat) == 0:
|
if len(cat) == 0:
|
||||||
cmd = 'chcon -l %s %s' % (sensitivity, f)
|
cmd = 'chcon -l %s %s' % (sensitivity, f)
|
||||||
else:
|
else:
|
||||||
cmd = 'chcon -l %s:%s %s' % (sensitivity,cat, f)
|
cmd = 'chcon -l %s:%s %s' % (sensitivity,cat, f)
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
@ -229,9 +233,9 @@ def chcat_user_replace(newcat, users):
|
|||||||
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -a -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
else:
|
else:
|
||||||
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
cmd = "semanage login -m -r %s -s %s %s" % (new_serange, user[0], u)
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
@ -251,9 +255,9 @@ def chcat_replace(newcat, objects, login_ind):
|
|||||||
for f in objects:
|
for f in objects:
|
||||||
cmd = "%s %s" % (cmd, f)
|
cmd = "%s %s" % (cmd, f)
|
||||||
|
|
||||||
rc = commands.getstatusoutput(cmd)
|
rc = subprocess.getstatusoutput(cmd)
|
||||||
if rc[0] != 0:
|
if rc[0] != 0:
|
||||||
print rc[1]
|
print(rc[1])
|
||||||
errors += 1
|
errors += 1
|
||||||
|
|
||||||
return errors
|
return errors
|
||||||
@ -322,18 +326,18 @@ def translate(cats):
|
|||||||
return newcat
|
return newcat
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
print _("Usage %s CATEGORY File ...") % sys.argv[0]
|
print(_("Usage %s CATEGORY File ...") % sys.argv[0])
|
||||||
print _("Usage %s -l CATEGORY user ...") % sys.argv[0]
|
print(_("Usage %s -l CATEGORY user ...") % sys.argv[0])
|
||||||
print _("Usage %s [[+|-]CATEGORY],...]q File ...") % sys.argv[0]
|
print(_("Usage %s [[+|-]CATEGORY],...]q File ...") % sys.argv[0])
|
||||||
print _("Usage %s -l [[+|-]CATEGORY],...]q user ...") % sys.argv[0]
|
print(_("Usage %s -l [[+|-]CATEGORY],...]q user ...") % sys.argv[0])
|
||||||
print _("Usage %s -d File ...") % sys.argv[0]
|
print(_("Usage %s -d File ...") % sys.argv[0])
|
||||||
print _("Usage %s -l -d user ...") % sys.argv[0]
|
print(_("Usage %s -l -d user ...") % sys.argv[0])
|
||||||
print _("Usage %s -L") % sys.argv[0]
|
print(_("Usage %s -L") % sys.argv[0])
|
||||||
print _("Usage %s -L -l user") % sys.argv[0]
|
print(_("Usage %s -L -l user") % sys.argv[0])
|
||||||
print _("Use -- to end option list. For example")
|
print(_("Use -- to end option list. For example"))
|
||||||
print _("chcat -- -CompanyConfidential /docs/businessplan.odt")
|
print(_("chcat -- -CompanyConfidential /docs/businessplan.odt"))
|
||||||
print _("chcat -l +CompanyConfidential juser")
|
print(_("chcat -l +CompanyConfidential juser"))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def listcats():
|
def listcats():
|
||||||
fd = open(selinux.selinux_translations_path())
|
fd = open(selinux.selinux_translations_path())
|
||||||
@ -342,7 +346,7 @@ def listcats():
|
|||||||
continue
|
continue
|
||||||
if l.find("=") != -1:
|
if l.find("=") != -1:
|
||||||
rec = l.split("=")
|
rec = l.split("=")
|
||||||
print "%-30s %s" % tuple(rec)
|
print("%-30s %s" % tuple(rec))
|
||||||
fd.close()
|
fd.close()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@ -356,12 +360,12 @@ def listusercats(users):
|
|||||||
cats = seobject.translate(selinux.getseuserbyname(u)[2])
|
cats = seobject.translate(selinux.getseuserbyname(u)[2])
|
||||||
cats = cats.split("-")
|
cats = cats.split("-")
|
||||||
if len(cats) > 1 and cats[1] != "s0":
|
if len(cats) > 1 and cats[1] != "s0":
|
||||||
print "%s: %s" % (u, cats[1])
|
print("%s: %s" % (u, cats[1]))
|
||||||
else:
|
else:
|
||||||
print "%s: %s" % (u, cats[0])
|
print("%s: %s" % (u, cats[0]))
|
||||||
|
|
||||||
def error(msg):
|
def error(msg):
|
||||||
print "%s: %s" % (sys.argv[0], msg)
|
print("%s: %s" % (sys.argv[0], msg))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
@ -395,10 +399,10 @@ if __name__ == '__main__':
|
|||||||
if list_ind == 0 and len(cmds) < 1:
|
if list_ind == 0 and len(cmds) < 1:
|
||||||
usage()
|
usage()
|
||||||
|
|
||||||
except getopt.error, error:
|
except getopt.error as error:
|
||||||
errorExit(_("Options Error %s ") % error.msg)
|
errorExit(_("Options Error %s ") % error.msg)
|
||||||
|
|
||||||
except ValueError, e:
|
except ValueError as e:
|
||||||
usage()
|
usage()
|
||||||
|
|
||||||
if delete_ind:
|
if delete_ind:
|
||||||
@ -433,9 +437,9 @@ if __name__ == '__main__':
|
|||||||
if len(c) > 0 and c[0] == "-":
|
if len(c) > 0 and c[0] == "-":
|
||||||
errors += chcat_remove(c[1:],translate(l), objects, login_ind)
|
errors += chcat_remove(c[1:],translate(l), objects, login_ind)
|
||||||
continue
|
continue
|
||||||
except ValueError, e:
|
except ValueError as e:
|
||||||
error(e)
|
error(e)
|
||||||
except OSError, e:
|
except OSError as e:
|
||||||
error(e)
|
error(e)
|
||||||
|
|
||||||
sys.exit(errors)
|
sys.exit(errors)
|
||||||
|
Loading…
Reference in New Issue
Block a user