diff --git a/.gitignore b/.gitignore index a48f66c..bc7b399 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ SOURCES/gui-po.tgz SOURCES/policycoreutils-po.tgz SOURCES/python-po.tgz SOURCES/sandbox-po.tgz -SOURCES/selinux-3.2.tar.gz +SOURCES/selinux-3.3.tar.gz SOURCES/sepolicy-icons.tgz SOURCES/system-config-selinux.png diff --git a/.policycoreutils.metadata b/.policycoreutils.metadata index 0b9d446..6638542 100644 --- a/.policycoreutils.metadata +++ b/.policycoreutils.metadata @@ -2,6 +2,6 @@ e0c82a8693936806c4289f865712ba0e8fc94f91 SOURCES/gui-po.tgz c8279f87160e2ff16eb775287d529e5c49b19ae3 SOURCES/policycoreutils-po.tgz 606f854b945f4deae897770692707013b753b277 SOURCES/python-po.tgz 413495010fcab556e8ea9f226c67557a23cc1498 SOURCES/sandbox-po.tgz -a195626d0cf709f128cf2d1247079e6a075fa399 SOURCES/selinux-3.2.tar.gz +cdde8ef04ac354b2499fd2822acbd11fc27843c8 SOURCES/selinux-3.3.tar.gz d849fa76cc3ef4a26047d8a69fef3a55d2f3097f SOURCES/sepolicy-icons.tgz 611a5d497efaddd45ec0dcc3e9b2e5b0f81ebc41 SOURCES/system-config-selinux.png diff --git a/SOURCES/0001-policycoreutils-setfiles-do-not-create-useless-setfi.patch b/SOURCES/0001-policycoreutils-setfiles-do-not-create-useless-setfi.patch deleted file mode 100644 index 0ec9b80..0000000 --- a/SOURCES/0001-policycoreutils-setfiles-do-not-create-useless-setfi.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 6cfebe787e258c4c62dbf2018d0a08bc8b70e445 Mon Sep 17 00:00:00 2001 -From: Ondrej Mosnacek -Date: Fri, 19 Mar 2021 22:30:59 +0100 -Subject: [PATCH] policycoreutils/setfiles: do not create useless - setfiles.8.man file - -Seems to have been there to allow for some sed substitution over the -text. Now that this is gone, the redundant intermediate file can be -removed, too. - -Signed-off-by: Ondrej Mosnacek ---- - policycoreutils/setfiles/.gitignore | 1 - - policycoreutils/setfiles/Makefile | 9 +++------ - 2 files changed, 3 insertions(+), 7 deletions(-) - delete mode 100644 policycoreutils/setfiles/.gitignore - -diff --git a/policycoreutils/setfiles/.gitignore b/policycoreutils/setfiles/.gitignore -deleted file mode 100644 -index 5e899c95af23..000000000000 ---- a/policycoreutils/setfiles/.gitignore -+++ /dev/null -@@ -1 +0,0 @@ --setfiles.8.man -diff --git a/policycoreutils/setfiles/Makefile b/policycoreutils/setfiles/Makefile -index a3bbbe116b7f..63d818509791 100644 ---- a/policycoreutils/setfiles/Makefile -+++ b/policycoreutils/setfiles/Makefile -@@ -13,7 +13,7 @@ ifeq ($(AUDITH), y) - override LDLIBS += -laudit - endif - --all: setfiles restorecon restorecon_xattr man -+all: setfiles restorecon restorecon_xattr - - setfiles: setfiles.o restore.o - -@@ -22,16 +22,13 @@ restorecon: setfiles - - restorecon_xattr: restorecon_xattr.o restore.o - --man: -- @cp -af setfiles.8 setfiles.8.man -- - install: all - [ -d $(DESTDIR)$(MANDIR)/man8 ] || mkdir -p $(DESTDIR)$(MANDIR)/man8 - -mkdir -p $(DESTDIR)$(SBINDIR) - install -m 755 setfiles $(DESTDIR)$(SBINDIR) - (cd $(DESTDIR)$(SBINDIR) && ln -sf setfiles restorecon) - install -m 755 restorecon_xattr $(DESTDIR)$(SBINDIR) -- install -m 644 setfiles.8.man $(DESTDIR)$(MANDIR)/man8/setfiles.8 -+ install -m 644 setfiles.8 $(DESTDIR)$(MANDIR)/man8/setfiles.8 - install -m 644 restorecon.8 $(DESTDIR)$(MANDIR)/man8/restorecon.8 - install -m 644 restorecon_xattr.8 $(DESTDIR)$(MANDIR)/man8/restorecon_xattr.8 - for lang in $(LINGUAS) ; do \ -@@ -42,7 +39,7 @@ install: all - done - - clean: -- rm -f setfiles restorecon restorecon_xattr *.o setfiles.8.man -+ rm -f setfiles restorecon restorecon_xattr *.o - - indent: - ../../scripts/Lindent $(wildcard *.[ch]) --- -2.32.0 - diff --git a/SOURCES/0001-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch b/SOURCES/0001-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch new file mode 100644 index 0000000..67d6dc3 --- /dev/null +++ b/SOURCES/0001-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch @@ -0,0 +1,26 @@ +From ec3bf6f3e5468ba7b5164cc588ef5746454808a5 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Thu, 20 Aug 2015 12:58:41 +0200 +Subject: [PATCH] sandbox: add -reset to Xephyr as it works better with it in + recent Fedoras + +--- + sandbox/sandboxX.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/sandbox/sandboxX.sh b/sandbox/sandboxX.sh +index eaa500d08143..4774528027ef 100644 +--- a/sandbox/sandboxX.sh ++++ b/sandbox/sandboxX.sh +@@ -20,7 +20,7 @@ cat > ~/.config/openbox/rc.xml << EOF + + EOF + +-(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do ++(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -reset -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do + export DISPLAY=:$D + cat > ~/seremote << __EOF + #!/bin/sh +-- +2.32.0 + diff --git a/SOURCES/0002-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch b/SOURCES/0002-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch new file mode 100644 index 0000000..73b45fd --- /dev/null +++ b/SOURCES/0002-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch @@ -0,0 +1,46 @@ +From 7a548cae4303f8429040ba6be67be182b7f9a943 Mon Sep 17 00:00:00 2001 +From: Dan Walsh +Date: Mon, 21 Apr 2014 13:54:40 -0400 +Subject: [PATCH] Fix STANDARD_FILE_CONTEXT section in man pages + +Signed-off-by: Miroslav Grepl +--- + python/sepolicy/sepolicy/manpage.py | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index 2f847abb87e2..dccd778ed4be 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -737,10 +737,13 @@ Default Defined Ports:""") + + def _file_context(self): + flist = [] ++ flist_non_exec = [] + mpaths = [] + for f in self.all_file_types: + if f.startswith(self.domainname): + flist.append(f) ++ if not file_type_is_executable(f) or not file_type_is_entrypoint(f): ++ flist_non_exec.append(f) + if f in self.fcdict: + mpaths = mpaths + self.fcdict[f]["regex"] + if len(mpaths) == 0: +@@ -799,12 +802,12 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d + SELinux defines the file context types for the %(domainname)s, if you wanted to + store files with these types in a diffent paths, you need to execute the semanage command to specify alternate labeling and then use restorecon to put the labels on disk. + +-.B semanage fcontext -a -t %(type)s '/srv/%(domainname)s/content(/.*)?' ++.B semanage fcontext -a -t %(type)s '/srv/my%(domainname)s_content(/.*)?' + .br + .B restorecon -R -v /srv/my%(domainname)s_content + + Note: SELinux often uses regular expressions to specify labels that match multiple files. +-""" % {'domainname': self.domainname, "type": flist[0]}) ++""" % {'domainname': self.domainname, "type": flist_non_exec[-1]}) + + self.fd.write(r""" + .I The following file types are defined for %(domainname)s: +-- +2.32.0 + diff --git a/SOURCES/0002-fixfiles-do-not-exclude-dev-and-run-in-C-mode.patch b/SOURCES/0002-fixfiles-do-not-exclude-dev-and-run-in-C-mode.patch deleted file mode 100644 index a69cb72..0000000 --- a/SOURCES/0002-fixfiles-do-not-exclude-dev-and-run-in-C-mode.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 26a4c19ecff545324aa21eb0afbc3d10d3356313 Mon Sep 17 00:00:00 2001 -From: Ondrej Mosnacek -Date: Mon, 1 Mar 2021 18:19:22 +0100 -Subject: [PATCH] fixfiles: do not exclude /dev and /run in -C mode - -I can't think of a good reason why they should be excluded. On the -contrary, excluding them can cause trouble very easily if some labeling -rules for these directories change. For example, we changed the label -for /dev/nvme* from nvme_device_t to fixed_disk_device_t in Fedora -(updating the allow rules accordingly) and after policy update they -ended up with an invalid context, causing denials. - -Thus, remove /dev and /run from the excludes. While there, also add -/root to the basic excludes to match the regex that excludes fc rules -(that should be effectively no functional change). - -I did a sanity check on my system by running `restorecon -nv /dev /run` -and it didn't report any label differences. - -Signed-off-by: Ondrej Mosnacek -Acked-by: Petr Lautrbach ---- - policycoreutils/scripts/fixfiles | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles -index 30dadb4f4cb6..6fb12e0451a9 100755 ---- a/policycoreutils/scripts/fixfiles -+++ b/policycoreutils/scripts/fixfiles -@@ -162,7 +162,7 @@ newer() { - # - diff_filecontext() { - EXCLUDEDIRS="`exclude_dirs_from_relabelling`" --for i in /sys /proc /dev /run /mnt /var/tmp /var/lib/BackupPC /home /tmp /dev; do -+for i in /sys /proc /mnt /var/tmp /var/lib/BackupPC /home /root /tmp; do - [ -e $i ] && EXCLUDEDIRS="${EXCLUDEDIRS} -e $i"; - done - LogExcluded -@@ -175,7 +175,7 @@ if [ -f ${PREFC} -a -x /usr/bin/diff ]; then - sed -r -e 's,:s0, ,g' $FC | sort -u | \ - /usr/bin/diff -b ${PREFCTEMPFILE} - | \ - grep '^[<>]'|cut -c3-| grep ^/ | \ -- egrep -v '(^/home|^/root|^/tmp|^/dev)' |\ -+ egrep -v '(^/home|^/root|^/tmp)' |\ - sed -r -e 's,[[:blank:]].*,,g' \ - -e 's|\(([/[:alnum:]]+)\)\?|{\1,}|g' \ - -e 's|([/[:alnum:]])\?|{\1,}|g' \ --- -2.32.0 - diff --git a/SOURCES/0003-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch b/SOURCES/0003-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch new file mode 100644 index 0000000..9ff8301 --- /dev/null +++ b/SOURCES/0003-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch @@ -0,0 +1,27 @@ +From b3cb362afe86278c600d6e97cc7abf9c0b102071 Mon Sep 17 00:00:00 2001 +From: Miroslav Grepl +Date: Mon, 12 May 2014 14:11:22 +0200 +Subject: [PATCH] If there is no executable we don't want to print a part of + STANDARD FILE CONTEXT + +--- + python/sepolicy/sepolicy/manpage.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index dccd778ed4be..81333928d552 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -795,7 +795,8 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d + .PP + """ % {'domainname': self.domainname, 'equiv': e, 'alt': e.split('/')[-1]}) + +- self.fd.write(r""" ++ if flist_non_exec: ++ self.fd.write(r""" + .PP + .B STANDARD FILE CONTEXT + +-- +2.32.0 + diff --git a/SOURCES/0003-policycoreutils-silence-Wextra-semi-stmt-warning.patch b/SOURCES/0003-policycoreutils-silence-Wextra-semi-stmt-warning.patch deleted file mode 100644 index 8c1bda3..0000000 --- a/SOURCES/0003-policycoreutils-silence-Wextra-semi-stmt-warning.patch +++ /dev/null @@ -1,49 +0,0 @@ -From e45bc870946ad3c984595a679df86b424f24d09d Mon Sep 17 00:00:00 2001 -From: Nicolas Iooss -Date: Sat, 3 Jul 2021 16:31:21 +0200 -Subject: [PATCH] policycoreutils: silence -Wextra-semi-stmt warning - -On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt -(which is not the default build configuration), the compiler reports: - - secon.c:686:3: error: empty expression statement has no effect; - remove unnecessary ';' to silence this warning - [-Werror,-Wextra-semi-stmt] - }; - ^ - -Signed-off-by: Nicolas Iooss ---- - policycoreutils/newrole/newrole.c | 2 +- - policycoreutils/secon/secon.c | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/policycoreutils/newrole/newrole.c b/policycoreutils/newrole/newrole.c -index 36e2ba9c25d9..0264531acef4 100644 ---- a/policycoreutils/newrole/newrole.c -+++ b/policycoreutils/newrole/newrole.c -@@ -96,7 +96,7 @@ - #define USAGE_STRING "USAGE: newrole [ -r role ] [ -t type ] [ -l level ] [ -p ] [ -V ] [ -- args ]" - - #ifdef USE_PAM --#define PAM_SERVICE_CONFIG "/etc/selinux/newrole_pam.conf"; -+#define PAM_SERVICE_CONFIG "/etc/selinux/newrole_pam.conf" - #endif - - #define DEFAULT_PATH "/usr/bin:/bin" -diff --git a/policycoreutils/secon/secon.c b/policycoreutils/secon/secon.c -index d257a9a1ca6c..a0957d0914e1 100644 ---- a/policycoreutils/secon/secon.c -+++ b/policycoreutils/secon/secon.c -@@ -683,7 +683,7 @@ static void disp_con(const char *scon_raw) - color.range_bg = strtok(NULL, " "); - - color.valid = 1; -- }; -+ } - - if (!(con = context_new(scon))) - errx(EXIT_FAILURE, "Couldn't create context from: %s", scon); --- -2.32.0 - diff --git a/SOURCES/0004-Simplication-of-sepolicy-manpage-web-functionality.-.patch b/SOURCES/0004-Simplication-of-sepolicy-manpage-web-functionality.-.patch new file mode 100644 index 0000000..87b58c2 --- /dev/null +++ b/SOURCES/0004-Simplication-of-sepolicy-manpage-web-functionality.-.patch @@ -0,0 +1,169 @@ +From b954ff8379e03714f707daa85111f6bf2f265772 Mon Sep 17 00:00:00 2001 +From: Miroslav Grepl +Date: Thu, 19 Feb 2015 17:45:15 +0100 +Subject: [PATCH] Simplication of sepolicy-manpage web functionality. + system_release is no longer hardcoded and it creates only index.html and html + man pages in the directory for the system release. + +--- + python/sepolicy/sepolicy/__init__.py | 25 +++-------- + python/sepolicy/sepolicy/manpage.py | 65 +++------------------------- + 2 files changed, 13 insertions(+), 77 deletions(-) + +diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py +index e8654abbceb3..a2475d22547a 100644 +--- a/python/sepolicy/sepolicy/__init__.py ++++ b/python/sepolicy/sepolicy/__init__.py +@@ -1225,27 +1225,14 @@ def boolean_desc(boolean): + + + def get_os_version(): +- os_version = "" +- pkg_name = "selinux-policy" ++ system_release = "" + try: +- try: +- from commands import getstatusoutput +- except ImportError: +- from subprocess import getstatusoutput +- rc, output = getstatusoutput("rpm -q '%s'" % pkg_name) +- if rc == 0: +- os_version = output.split(".")[-2] +- except: +- os_version = "" +- +- if os_version[0:2] == "fc": +- os_version = "Fedora" + os_version[2:] +- elif os_version[0:2] == "el": +- os_version = "RHEL" + os_version[2:] +- else: +- os_version = "" ++ with open('/etc/system-release') as f: ++ system_release = f.readline() ++ except IOError: ++ system_release = "Misc" + +- return os_version ++ return system_release + + + def reinit(): +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index 81333928d552..dc3e5207c57c 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -151,10 +151,6 @@ def prettyprint(f, trim): + manpage_domains = [] + manpage_roles = [] + +-fedora_releases = ["Fedora17", "Fedora18"] +-rhel_releases = ["RHEL6", "RHEL7"] +- +- + def get_alphabet_manpages(manpage_list): + alphabet_manpages = dict.fromkeys(string.ascii_letters, []) + for i in string.ascii_letters: +@@ -184,7 +180,7 @@ def convert_manpage_to_html(html_manpage, manpage): + class HTMLManPages: + + """ +- Generate a HHTML Manpages on an given SELinux domains ++ Generate a HTML Manpages on an given SELinux domains + """ + + def __init__(self, manpage_roles, manpage_domains, path, os_version): +@@ -192,9 +188,9 @@ class HTMLManPages: + self.manpage_domains = get_alphabet_manpages(manpage_domains) + self.os_version = os_version + self.old_path = path + "/" +- self.new_path = self.old_path + self.os_version + "/" ++ self.new_path = self.old_path + +- if self.os_version in fedora_releases or self.os_version in rhel_releases: ++ if self.os_version: + self.__gen_html_manpages() + else: + print("SELinux HTML man pages can not be generated for this %s" % os_version) +@@ -203,7 +199,6 @@ class HTMLManPages: + def __gen_html_manpages(self): + self._write_html_manpage() + self._gen_index() +- self._gen_body() + self._gen_css() + + def _write_html_manpage(self): +@@ -221,67 +216,21 @@ class HTMLManPages: + convert_manpage_to_html((self.new_path + r.rsplit("_selinux", 1)[0] + ".html"), self.old_path + r) + + def _gen_index(self): +- index = self.old_path + "index.html" +- fd = open(index, 'w') +- fd.write(""" +- +- +- +- SELinux man pages online +- +- +-

SELinux man pages

+-

+-Fedora or Red Hat Enterprise Linux Man Pages. +-

+-
+-

Fedora

+- +- +-
+-
+-
+-""")
+-        for f in fedora_releases:
+-            fd.write("""
+-%s - SELinux man pages for %s """ % (f, f, f, f))
+-
+-        fd.write("""
+-
+-
+-

RHEL

+- +- +-
+-
+-
+-""")
+-        for r in rhel_releases:
+-            fd.write("""
+-%s - SELinux man pages for %s """ % (r, r, r, r))
+-
+-        fd.write("""
+-
+- """) +- fd.close() +- print("%s has been created" % index) +- +- def _gen_body(self): + html = self.new_path + self.os_version + ".html" + fd = open(html, 'w') + fd.write(""" + + +- +- Linux man-pages online for Fedora18 ++ ++ SELinux man pages online + + +-

SELinux man pages for Fedora18

++

SELinux man pages for %s

+
+ +
+

SELinux roles

+-""") ++""" % self.os_version) + for letter in self.manpage_roles: + if len(self.manpage_roles[letter]): + fd.write(""" +-- +2.32.0 + diff --git a/SOURCES/0004-policycoreutils-free-memory-on-lstat-failure-in-sest.patch b/SOURCES/0004-policycoreutils-free-memory-on-lstat-failure-in-sest.patch deleted file mode 100644 index 4d5fd0d..0000000 --- a/SOURCES/0004-policycoreutils-free-memory-on-lstat-failure-in-sest.patch +++ /dev/null @@ -1,33 +0,0 @@ -From d8b9bd5c2a90d6855478f05c8fb38bd5df2733a2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Wed, 14 Jul 2021 20:13:41 +0200 -Subject: [PATCH] policycoreutils: free memory on lstat failure in sestatus -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -In case lstat(3) fails the memory is not free'd at the end of the for -loop, due to the control flow change by continue. - -Found by scan-build. - -Signed-off-by: Christian Göttsche ---- - policycoreutils/sestatus/sestatus.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/policycoreutils/sestatus/sestatus.c b/policycoreutils/sestatus/sestatus.c -index b37f03533afd..ceee0d523f9a 100644 ---- a/policycoreutils/sestatus/sestatus.c -+++ b/policycoreutils/sestatus/sestatus.c -@@ -461,6 +461,7 @@ int main(int argc, char **argv) - ("%s (could not check link status (%s)!)\n", - context, strerror(errno)); - freecon(context); -+ free(fc[i]); - continue; - } - if (S_ISLNK(m.st_mode)) { --- -2.32.0 - diff --git a/SOURCES/0005-We-want-to-remove-the-trailing-newline-for-etc-syste.patch b/SOURCES/0005-We-want-to-remove-the-trailing-newline-for-etc-syste.patch new file mode 100644 index 0000000..7d20801 --- /dev/null +++ b/SOURCES/0005-We-want-to-remove-the-trailing-newline-for-etc-syste.patch @@ -0,0 +1,26 @@ +From 7572bbec8b6a422e722864348a53d5e0f855e7f6 Mon Sep 17 00:00:00 2001 +From: Miroslav Grepl +Date: Fri, 20 Feb 2015 16:42:01 +0100 +Subject: [PATCH] We want to remove the trailing newline for + /etc/system_release. + +--- + python/sepolicy/sepolicy/__init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py +index a2475d22547a..8055a12f6020 100644 +--- a/python/sepolicy/sepolicy/__init__.py ++++ b/python/sepolicy/sepolicy/__init__.py +@@ -1228,7 +1228,7 @@ def get_os_version(): + system_release = "" + try: + with open('/etc/system-release') as f: +- system_release = f.readline() ++ system_release = f.readline().rstrip() + except IOError: + system_release = "Misc" + +-- +2.32.0 + diff --git a/SOURCES/0005-policycoreutils-free-memory-of-allocated-context-in-.patch b/SOURCES/0005-policycoreutils-free-memory-of-allocated-context-in-.patch deleted file mode 100644 index 4d14620..0000000 --- a/SOURCES/0005-policycoreutils-free-memory-of-allocated-context-in-.patch +++ /dev/null @@ -1,42 +0,0 @@ -From f0c354afc07419cfe4f61b72f604a648c995943e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Wed, 14 Jul 2021 20:13:42 +0200 -Subject: [PATCH] policycoreutils: free memory of allocated context in run_init -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Found by scan-build. - -Signed-off-by: Christian Göttsche ---- - policycoreutils/run_init/run_init.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/policycoreutils/run_init/run_init.c b/policycoreutils/run_init/run_init.c -index 1c5eb68e7e73..545490a25918 100644 ---- a/policycoreutils/run_init/run_init.c -+++ b/policycoreutils/run_init/run_init.c -@@ -406,14 +406,19 @@ int main(int argc, char *argv[]) - - if (chdir("/")) { - perror("chdir"); -+ free(new_context); - exit(-1); - } - - if (setexeccon(new_context) < 0) { - fprintf(stderr, _("Could not set exec context to %s.\n"), - new_context); -+ free(new_context); - exit(-1); - } -+ -+ free(new_context); -+ - if (access("/usr/sbin/open_init_pty", X_OK) != 0) { - if (execvp(argv[1], argv + 1)) { - perror("execvp"); --- -2.32.0 - diff --git a/SOURCES/0006-Fix-title-in-manpage.py-to-not-contain-online.patch b/SOURCES/0006-Fix-title-in-manpage.py-to-not-contain-online.patch new file mode 100644 index 0000000..8af8682 --- /dev/null +++ b/SOURCES/0006-Fix-title-in-manpage.py-to-not-contain-online.patch @@ -0,0 +1,25 @@ +From a4d59dcce863a02895fe40e487176149f3a4ad5b Mon Sep 17 00:00:00 2001 +From: Miroslav Grepl +Date: Fri, 20 Feb 2015 16:42:53 +0100 +Subject: [PATCH] Fix title in manpage.py to not contain 'online'. + +--- + python/sepolicy/sepolicy/manpage.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index dc3e5207c57c..6420ebe2e08e 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -222,7 +222,7 @@ class HTMLManPages: + + + +- SELinux man pages online ++ SELinux man pages + + +

SELinux man pages for %s

+-- +2.32.0 + diff --git a/SOURCES/0006-policycoreutils-free-memory-of-allocated-context-in-.patch b/SOURCES/0006-policycoreutils-free-memory-of-allocated-context-in-.patch deleted file mode 100644 index 0864436..0000000 --- a/SOURCES/0006-policycoreutils-free-memory-of-allocated-context-in-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 32611aea6543e3a8f32635857e37b4332b0b5c99 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Wed, 14 Jul 2021 20:13:43 +0200 -Subject: [PATCH] policycoreutils: free memory of allocated context in newrole -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Found by scan-build. - -Signed-off-by: Christian Göttsche ---- - policycoreutils/newrole/newrole.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/policycoreutils/newrole/newrole.c b/policycoreutils/newrole/newrole.c -index 0264531acef4..7c1f062f5a2a 100644 ---- a/policycoreutils/newrole/newrole.c -+++ b/policycoreutils/newrole/newrole.c -@@ -1239,6 +1239,7 @@ int main(int argc, char *argv[]) - free(pw.pw_dir); - free(pw.pw_shell); - free(shell_argv0); -+ free(new_context); - return exit_code; - } - --- -2.32.0 - diff --git a/SOURCES/0007-Don-t-be-verbose-if-you-are-not-on-a-tty.patch b/SOURCES/0007-Don-t-be-verbose-if-you-are-not-on-a-tty.patch new file mode 100644 index 0000000..216cdb2 --- /dev/null +++ b/SOURCES/0007-Don-t-be-verbose-if-you-are-not-on-a-tty.patch @@ -0,0 +1,24 @@ +From f183dd36c66069c95726e1dab47639e76077d86a Mon Sep 17 00:00:00 2001 +From: Dan Walsh +Date: Fri, 14 Feb 2014 12:32:12 -0500 +Subject: [PATCH] Don't be verbose if you are not on a tty + +--- + policycoreutils/scripts/fixfiles | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles +index 6fb12e0451a9..cb20002ab613 100755 +--- a/policycoreutils/scripts/fixfiles ++++ b/policycoreutils/scripts/fixfiles +@@ -108,6 +108,7 @@ exclude_dirs_from_relabelling() { + fullFlag=0 + BOOTTIME="" + VERBOSE="-p" ++[ -t 1 ] || VERBOSE="" + FORCEFLAG="" + RPMFILES="" + PREFC="" +-- +2.32.0 + diff --git a/SOURCES/0007-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch b/SOURCES/0007-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch deleted file mode 100644 index 41e18ea..0000000 --- a/SOURCES/0007-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 6f2adee92a62777aa1a7371a23b4cb08b9a8ac7e Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Thu, 20 Aug 2015 12:58:41 +0200 -Subject: [PATCH] sandbox: add -reset to Xephyr as it works better with it in - recent Fedoras - ---- - sandbox/sandboxX.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/sandbox/sandboxX.sh b/sandbox/sandboxX.sh -index eaa500d08143..4774528027ef 100644 ---- a/sandbox/sandboxX.sh -+++ b/sandbox/sandboxX.sh -@@ -20,7 +20,7 @@ cat > ~/.config/openbox/rc.xml << EOF - - EOF - --(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do -+(/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -reset -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do - export DISPLAY=:$D - cat > ~/seremote << __EOF - #!/bin/sh --- -2.32.0 - diff --git a/SOURCES/0008-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch b/SOURCES/0008-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch deleted file mode 100644 index 85697b1..0000000 --- a/SOURCES/0008-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 31e28c2217b5ac4c12d60c97d08f0c062f0fce37 Mon Sep 17 00:00:00 2001 -From: Dan Walsh -Date: Mon, 21 Apr 2014 13:54:40 -0400 -Subject: [PATCH] Fix STANDARD_FILE_CONTEXT section in man pages - -Signed-off-by: Miroslav Grepl ---- - python/sepolicy/sepolicy/manpage.py | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index 2f847abb87e2..dccd778ed4be 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -737,10 +737,13 @@ Default Defined Ports:""") - - def _file_context(self): - flist = [] -+ flist_non_exec = [] - mpaths = [] - for f in self.all_file_types: - if f.startswith(self.domainname): - flist.append(f) -+ if not file_type_is_executable(f) or not file_type_is_entrypoint(f): -+ flist_non_exec.append(f) - if f in self.fcdict: - mpaths = mpaths + self.fcdict[f]["regex"] - if len(mpaths) == 0: -@@ -799,12 +802,12 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d - SELinux defines the file context types for the %(domainname)s, if you wanted to - store files with these types in a diffent paths, you need to execute the semanage command to sepecify alternate labeling and then use restorecon to put the labels on disk. - --.B semanage fcontext -a -t %(type)s '/srv/%(domainname)s/content(/.*)?' -+.B semanage fcontext -a -t %(type)s '/srv/my%(domainname)s_content(/.*)?' - .br - .B restorecon -R -v /srv/my%(domainname)s_content - - Note: SELinux often uses regular expressions to specify labels that match multiple files. --""" % {'domainname': self.domainname, "type": flist[0]}) -+""" % {'domainname': self.domainname, "type": flist_non_exec[-1]}) - - self.fd.write(r""" - .I The following file types are defined for %(domainname)s: --- -2.32.0 - diff --git a/SOURCES/0008-sepolicy-Drop-old-interface-file_type_is_executable-.patch b/SOURCES/0008-sepolicy-Drop-old-interface-file_type_is_executable-.patch new file mode 100644 index 0000000..20bf928 --- /dev/null +++ b/SOURCES/0008-sepolicy-Drop-old-interface-file_type_is_executable-.patch @@ -0,0 +1,63 @@ +From fae31a306e7b6084710c02b658ace668766fc004 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Mon, 27 Feb 2017 17:12:39 +0100 +Subject: [PATCH] sepolicy: Drop old interface file_type_is_executable(f) and + file_type_is_entrypoint(f) + +- use direct queries +- load exec_types and entry_types only once +--- + python/sepolicy/sepolicy/manpage.py | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index 6420ebe2e08e..d15522135288 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -127,8 +127,24 @@ def gen_domains(): + domains.sort() + return domains + +-types = None + ++exec_types = None ++ ++def _gen_exec_types(): ++ global exec_types ++ if exec_types is None: ++ exec_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "exec_type"))["types"] ++ return exec_types ++ ++entry_types = None ++ ++def _gen_entry_types(): ++ global entry_types ++ if entry_types is None: ++ entry_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "entry_type"))["types"] ++ return entry_types ++ ++types = None + + def _gen_types(): + global types +@@ -374,6 +390,8 @@ class ManPage: + self.all_file_types = sepolicy.get_all_file_types() + self.role_allows = sepolicy.get_all_role_allows() + self.types = _gen_types() ++ self.exec_types = _gen_exec_types() ++ self.entry_types = _gen_entry_types() + + if self.source_files: + self.fcpath = self.root + "file_contexts" +@@ -691,7 +709,7 @@ Default Defined Ports:""") + for f in self.all_file_types: + if f.startswith(self.domainname): + flist.append(f) +- if not file_type_is_executable(f) or not file_type_is_entrypoint(f): ++ if not f in self.exec_types or not f in self.entry_types: + flist_non_exec.append(f) + if f in self.fcdict: + mpaths = mpaths + self.fcdict[f]["regex"] +-- +2.32.0 + diff --git a/SOURCES/0009-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch b/SOURCES/0009-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch deleted file mode 100644 index 8086438..0000000 --- a/SOURCES/0009-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 8fafb8215dbd7affd299f7eb31a1677d7f367ee8 Mon Sep 17 00:00:00 2001 -From: Miroslav Grepl -Date: Mon, 12 May 2014 14:11:22 +0200 -Subject: [PATCH] If there is no executable we don't want to print a part of - STANDARD FILE CONTEXT - ---- - python/sepolicy/sepolicy/manpage.py | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index dccd778ed4be..81333928d552 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -795,7 +795,8 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d - .PP - """ % {'domainname': self.domainname, 'equiv': e, 'alt': e.split('/')[-1]}) - -- self.fd.write(r""" -+ if flist_non_exec: -+ self.fd.write(r""" - .PP - .B STANDARD FILE CONTEXT - --- -2.32.0 - diff --git a/SOURCES/0009-sepolicy-Another-small-optimization-for-mcs-types.patch b/SOURCES/0009-sepolicy-Another-small-optimization-for-mcs-types.patch new file mode 100644 index 0000000..35d2276 --- /dev/null +++ b/SOURCES/0009-sepolicy-Another-small-optimization-for-mcs-types.patch @@ -0,0 +1,53 @@ +From afe686ec783ccf442c8e2bbcb9dbdb7650328253 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Tue, 28 Feb 2017 21:29:46 +0100 +Subject: [PATCH] sepolicy: Another small optimization for mcs types + +--- + python/sepolicy/sepolicy/manpage.py | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index d15522135288..ffcedb547993 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -144,6 +144,15 @@ def _gen_entry_types(): + entry_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "entry_type"))["types"] + return entry_types + ++mcs_constrained_types = None ++ ++def _gen_mcs_constrained_types(): ++ global mcs_constrained_types ++ if mcs_constrained_types is None: ++ mcs_constrained_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) ++ return mcs_constrained_types ++ ++ + types = None + + def _gen_types(): +@@ -392,6 +401,7 @@ class ManPage: + self.types = _gen_types() + self.exec_types = _gen_exec_types() + self.entry_types = _gen_entry_types() ++ self.mcs_constrained_types = _gen_mcs_constrained_types() + + if self.source_files: + self.fcpath = self.root + "file_contexts" +@@ -946,11 +956,7 @@ All executables with the default executable label, usually stored in /usr/bin an + %s""" % ", ".join(paths)) + + def _mcs_types(self): +- try: +- mcs_constrained_type = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) +- except StopIteration: +- return +- if self.type not in mcs_constrained_type['types']: ++ if self.type not in self.mcs_constrained_types['types']: + return + self.fd.write (""" + .SH "MCS Constrained" +-- +2.32.0 + diff --git a/SOURCES/0010-Move-po-translation-files-into-the-right-sub-directo.patch b/SOURCES/0010-Move-po-translation-files-into-the-right-sub-directo.patch new file mode 100644 index 0000000..49a1477 --- /dev/null +++ b/SOURCES/0010-Move-po-translation-files-into-the-right-sub-directo.patch @@ -0,0 +1,515 @@ +From 28879b771a804242d00a8a978bdbc4b85210814d Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Mon, 6 Aug 2018 13:23:00 +0200 +Subject: [PATCH] Move po/ translation files into the right sub-directories + +When policycoreutils was split into policycoreutils/ python/ gui/ and sandbox/ +sub-directories, po/ translation files stayed in policycoreutils/. + +This commit split original policycoreutils/po directory into +policycoreutils/po +python/po +gui/po +sandbox/po + +See https://github.com/fedora-selinux/selinux/issues/43 +--- + gui/Makefile | 3 ++ + gui/po/Makefile | 82 ++++++++++++++++++++++++++++++++++++ + gui/po/POTFILES | 17 ++++++++ + policycoreutils/po/Makefile | 70 ++----------------------------- + policycoreutils/po/POTFILES | 9 ++++ + python/Makefile | 2 +- + python/po/Makefile | 83 +++++++++++++++++++++++++++++++++++++ + python/po/POTFILES | 10 +++++ + sandbox/Makefile | 2 + + sandbox/po/Makefile | 82 ++++++++++++++++++++++++++++++++++++ + sandbox/po/POTFILES | 1 + + 11 files changed, 293 insertions(+), 68 deletions(-) + create mode 100644 gui/po/Makefile + create mode 100644 gui/po/POTFILES + create mode 100644 policycoreutils/po/POTFILES + create mode 100644 python/po/Makefile + create mode 100644 python/po/POTFILES + create mode 100644 sandbox/po/Makefile + create mode 100644 sandbox/po/POTFILES + +diff --git a/gui/Makefile b/gui/Makefile +index ca965c942912..5a5bf6dcae19 100644 +--- a/gui/Makefile ++++ b/gui/Makefile +@@ -22,6 +22,7 @@ system-config-selinux.ui \ + usersPage.py + + all: $(TARGETS) system-config-selinux.py polgengui.py ++ (cd po && $(MAKE) $@) + + install: all + -mkdir -p $(DESTDIR)$(MANDIR)/man8 +@@ -54,6 +55,8 @@ install: all + install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ + done + install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ ++ (cd po && $(MAKE) $@) ++ + clean: + + indent: +diff --git a/gui/po/Makefile b/gui/po/Makefile +new file mode 100644 +index 000000000000..a0f5439f2d1c +--- /dev/null ++++ b/gui/po/Makefile +@@ -0,0 +1,82 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = gui ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git a/gui/po/POTFILES b/gui/po/POTFILES +new file mode 100644 +index 000000000000..1795c5c1951b +--- /dev/null ++++ b/gui/po/POTFILES +@@ -0,0 +1,17 @@ ++../booleansPage.py ++../domainsPage.py ++../fcontextPage.py ++../loginsPage.py ++../modulesPage.py ++../org.selinux.config.policy ++../polgengui.py ++../polgen.ui ++../portsPage.py ++../selinux-polgengui.desktop ++../semanagePage.py ++../sepolicy.desktop ++../statusPage.py ++../system-config-selinux.desktop ++../system-config-selinux.py ++../system-config-selinux.ui ++../usersPage.py +diff --git a/policycoreutils/po/Makefile b/policycoreutils/po/Makefile +index 575e143122e6..18bc1dff8d1f 100644 +--- a/policycoreutils/po/Makefile ++++ b/policycoreutils/po/Makefile +@@ -3,7 +3,6 @@ + # + + PREFIX ?= /usr +-TOP = ../.. + + # What is this package? + NLSPACKAGE = policycoreutils +@@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) + + POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) + MOFILES = $(patsubst %.po,%.mo,$(POFILES)) +-POTFILES = \ +- ../run_init/open_init_pty.c \ +- ../run_init/run_init.c \ +- ../semodule_link/semodule_link.c \ +- ../audit2allow/audit2allow \ +- ../semanage/seobject.py \ +- ../setsebool/setsebool.c \ +- ../newrole/newrole.c \ +- ../load_policy/load_policy.c \ +- ../sestatus/sestatus.c \ +- ../semodule/semodule.c \ +- ../setfiles/setfiles.c \ +- ../semodule_package/semodule_package.c \ +- ../semodule_deps/semodule_deps.c \ +- ../semodule_expand/semodule_expand.c \ +- ../scripts/chcat \ +- ../scripts/fixfiles \ +- ../restorecond/stringslist.c \ +- ../restorecond/restorecond.h \ +- ../restorecond/utmpwatcher.h \ +- ../restorecond/stringslist.h \ +- ../restorecond/restorecond.c \ +- ../restorecond/utmpwatcher.c \ +- ../gui/booleansPage.py \ +- ../gui/fcontextPage.py \ +- ../gui/loginsPage.py \ +- ../gui/mappingsPage.py \ +- ../gui/modulesPage.py \ +- ../gui/polgen.glade \ +- ../gui/polgengui.py \ +- ../gui/portsPage.py \ +- ../gui/semanagePage.py \ +- ../gui/statusPage.py \ +- ../gui/system-config-selinux.glade \ +- ../gui/system-config-selinux.py \ +- ../gui/usersPage.py \ +- ../secon/secon.c \ +- booleans.py \ +- ../sepolicy/sepolicy.py \ +- ../sepolicy/sepolicy/communicate.py \ +- ../sepolicy/sepolicy/__init__.py \ +- ../sepolicy/sepolicy/network.py \ +- ../sepolicy/sepolicy/generate.py \ +- ../sepolicy/sepolicy/sepolicy.glade \ +- ../sepolicy/sepolicy/gui.py \ +- ../sepolicy/sepolicy/manpage.py \ +- ../sepolicy/sepolicy/transition.py \ +- ../sepolicy/sepolicy/templates/executable.py \ +- ../sepolicy/sepolicy/templates/__init__.py \ +- ../sepolicy/sepolicy/templates/network.py \ +- ../sepolicy/sepolicy/templates/rw.py \ +- ../sepolicy/sepolicy/templates/script.py \ +- ../sepolicy/sepolicy/templates/semodule.py \ +- ../sepolicy/sepolicy/templates/tmp.py \ +- ../sepolicy/sepolicy/templates/user.py \ +- ../sepolicy/sepolicy/templates/var_lib.py \ +- ../sepolicy/sepolicy/templates/var_log.py \ +- ../sepolicy/sepolicy/templates/var_run.py \ +- ../sepolicy/sepolicy/templates/var_spool.py ++POTFILES = $(shell cat POTFILES) + + #default:: clean + +-all:: $(MOFILES) ++all:: $(POTFILE) $(MOFILES) + +-booleans.py: +- sepolicy booleans -a > booleans.py +- +-$(POTFILE): $(POTFILES) booleans.py ++$(POTFILE): $(POTFILES) + $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) + @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ + rm -f $(NLSPACKAGE).po; \ +@@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py + mv -f $(NLSPACKAGE).po $(POTFILE); \ + fi; \ + +-update-po: Makefile $(POTFILE) refresh-po +- @rm -f booleans.py + + refresh-po: Makefile + for cat in $(POFILES); do \ +diff --git a/policycoreutils/po/POTFILES b/policycoreutils/po/POTFILES +new file mode 100644 +index 000000000000..12237dc61ee4 +--- /dev/null ++++ b/policycoreutils/po/POTFILES +@@ -0,0 +1,9 @@ ++../run_init/open_init_pty.c ++../run_init/run_init.c ++../setsebool/setsebool.c ++../newrole/newrole.c ++../load_policy/load_policy.c ++../sestatus/sestatus.c ++../semodule/semodule.c ++../setfiles/setfiles.c ++../secon/secon.c +diff --git a/python/Makefile b/python/Makefile +index 9b66d52fbd4d..00312dbdb5c6 100644 +--- a/python/Makefile ++++ b/python/Makefile +@@ -1,4 +1,4 @@ +-SUBDIRS = sepolicy audit2allow semanage sepolgen chcat ++SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po + + all install relabel clean indent test: + @for subdir in $(SUBDIRS); do \ +diff --git a/python/po/Makefile b/python/po/Makefile +new file mode 100644 +index 000000000000..4e052d5a2bd7 +--- /dev/null ++++ b/python/po/Makefile +@@ -0,0 +1,83 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = python ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) ++ $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git a/python/po/POTFILES b/python/po/POTFILES +new file mode 100644 +index 000000000000..128eb870a69e +--- /dev/null ++++ b/python/po/POTFILES +@@ -0,0 +1,10 @@ ++../audit2allow/audit2allow ++../chcat/chcat ++../semanage/semanage ++../semanage/seobject.py ++../sepolgen/src/sepolgen/interfaces.py ++../sepolicy/sepolicy/generate.py ++../sepolicy/sepolicy/gui.py ++../sepolicy/sepolicy/__init__.py ++../sepolicy/sepolicy/interface.py ++../sepolicy/sepolicy.py +diff --git a/sandbox/Makefile b/sandbox/Makefile +index 9da5e58db9e6..b817824e2102 100644 +--- a/sandbox/Makefile ++++ b/sandbox/Makefile +@@ -13,6 +13,7 @@ override LDLIBS += -lselinux -lcap-ng + SEUNSHARE_OBJS = seunshare.o + + all: sandbox seunshare sandboxX.sh start ++ (cd po && $(MAKE) $@) + + seunshare: $(SEUNSHARE_OBJS) + +@@ -39,6 +40,7 @@ install: all + install -m 755 start $(DESTDIR)$(SHAREDIR) + -mkdir -p $(DESTDIR)$(SYSCONFDIR) + install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox ++ (cd po && $(MAKE) $@) + + test: + @$(PYTHON) test_sandbox.py -v +diff --git a/sandbox/po/Makefile b/sandbox/po/Makefile +new file mode 100644 +index 000000000000..0556bbe953f0 +--- /dev/null ++++ b/sandbox/po/Makefile +@@ -0,0 +1,82 @@ ++# ++# Makefile for the PO files (translation) catalog ++# ++ ++PREFIX ?= /usr ++ ++# What is this package? ++NLSPACKAGE = sandbox ++POTFILE = $(NLSPACKAGE).pot ++INSTALL = /usr/bin/install -c -p ++INSTALL_DATA = $(INSTALL) -m 644 ++INSTALL_DIR = /usr/bin/install -d ++ ++# destination directory ++INSTALL_NLS_DIR = $(PREFIX)/share/locale ++ ++# PO catalog handling ++MSGMERGE = msgmerge ++MSGMERGE_FLAGS = -q ++XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) ++MSGFMT = msgfmt ++ ++# All possible linguas ++PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) ++ ++# Only the files matching what the user has set in LINGUAS ++USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) ++ ++# if no valid LINGUAS, build all languages ++USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) ++ ++POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) ++MOFILES = $(patsubst %.po,%.mo,$(POFILES)) ++POTFILES = $(shell cat POTFILES) ++ ++#default:: clean ++ ++all:: $(POTFILE) $(MOFILES) ++ ++$(POTFILE): $(POTFILES) ++ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) ++ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ ++ rm -f $(NLSPACKAGE).po; \ ++ else \ ++ mv -f $(NLSPACKAGE).po $(POTFILE); \ ++ fi; \ ++ ++ ++refresh-po: Makefile ++ for cat in $(POFILES); do \ ++ lang=`basename $$cat .po`; \ ++ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ ++ mv -f $$lang.pot $$lang.po ; \ ++ echo "$(MSGMERGE) of $$lang succeeded" ; \ ++ else \ ++ echo "$(MSGMERGE) of $$lang failed" ; \ ++ rm -f $$lang.pot ; \ ++ fi \ ++ done ++ ++clean: ++ @rm -fv *mo *~ .depend ++ @rm -rf tmp ++ ++install: $(MOFILES) ++ @for n in $(MOFILES); do \ ++ l=`basename $$n .mo`; \ ++ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ ++ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ ++ done ++ ++%.mo: %.po ++ $(MSGFMT) -o $@ $< ++report: ++ @for cat in $(wildcard *.po); do \ ++ echo -n "$$cat: "; \ ++ msgfmt -v --statistics -o /dev/null $$cat; \ ++ done ++ ++.PHONY: missing depend ++ ++relabel: +diff --git a/sandbox/po/POTFILES b/sandbox/po/POTFILES +new file mode 100644 +index 000000000000..deff3f2f4656 +--- /dev/null ++++ b/sandbox/po/POTFILES +@@ -0,0 +1 @@ ++../sandbox +-- +2.32.0 + diff --git a/SOURCES/0010-Simplication-of-sepolicy-manpage-web-functionality.-.patch b/SOURCES/0010-Simplication-of-sepolicy-manpage-web-functionality.-.patch deleted file mode 100644 index b07df66..0000000 --- a/SOURCES/0010-Simplication-of-sepolicy-manpage-web-functionality.-.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 4492465658c7a81237cc753351b3c7bfe095e8f6 Mon Sep 17 00:00:00 2001 -From: Miroslav Grepl -Date: Thu, 19 Feb 2015 17:45:15 +0100 -Subject: [PATCH] Simplication of sepolicy-manpage web functionality. - system_release is no longer hardcoded and it creates only index.html and html - man pages in the directory for the system release. - ---- - python/sepolicy/sepolicy/__init__.py | 25 +++-------- - python/sepolicy/sepolicy/manpage.py | 65 +++------------------------- - 2 files changed, 13 insertions(+), 77 deletions(-) - -diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py -index 7309875c7e27..37abc7b83a37 100644 ---- a/python/sepolicy/sepolicy/__init__.py -+++ b/python/sepolicy/sepolicy/__init__.py -@@ -1215,27 +1215,14 @@ def boolean_desc(boolean): - - - def get_os_version(): -- os_version = "" -- pkg_name = "selinux-policy" -+ system_release = "" - try: -- try: -- from commands import getstatusoutput -- except ImportError: -- from subprocess import getstatusoutput -- rc, output = getstatusoutput("rpm -q '%s'" % pkg_name) -- if rc == 0: -- os_version = output.split(".")[-2] -- except: -- os_version = "" -- -- if os_version[0:2] == "fc": -- os_version = "Fedora" + os_version[2:] -- elif os_version[0:2] == "el": -- os_version = "RHEL" + os_version[2:] -- else: -- os_version = "" -+ with open('/etc/system-release') as f: -+ system_release = f.readline() -+ except IOError: -+ system_release = "Misc" - -- return os_version -+ return system_release - - - def reinit(): -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index 81333928d552..dc3e5207c57c 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -151,10 +151,6 @@ def prettyprint(f, trim): - manpage_domains = [] - manpage_roles = [] - --fedora_releases = ["Fedora17", "Fedora18"] --rhel_releases = ["RHEL6", "RHEL7"] -- -- - def get_alphabet_manpages(manpage_list): - alphabet_manpages = dict.fromkeys(string.ascii_letters, []) - for i in string.ascii_letters: -@@ -184,7 +180,7 @@ def convert_manpage_to_html(html_manpage, manpage): - class HTMLManPages: - - """ -- Generate a HHTML Manpages on an given SELinux domains -+ Generate a HTML Manpages on an given SELinux domains - """ - - def __init__(self, manpage_roles, manpage_domains, path, os_version): -@@ -192,9 +188,9 @@ class HTMLManPages: - self.manpage_domains = get_alphabet_manpages(manpage_domains) - self.os_version = os_version - self.old_path = path + "/" -- self.new_path = self.old_path + self.os_version + "/" -+ self.new_path = self.old_path - -- if self.os_version in fedora_releases or self.os_version in rhel_releases: -+ if self.os_version: - self.__gen_html_manpages() - else: - print("SELinux HTML man pages can not be generated for this %s" % os_version) -@@ -203,7 +199,6 @@ class HTMLManPages: - def __gen_html_manpages(self): - self._write_html_manpage() - self._gen_index() -- self._gen_body() - self._gen_css() - - def _write_html_manpage(self): -@@ -221,67 +216,21 @@ class HTMLManPages: - convert_manpage_to_html((self.new_path + r.rsplit("_selinux", 1)[0] + ".html"), self.old_path + r) - - def _gen_index(self): -- index = self.old_path + "index.html" -- fd = open(index, 'w') -- fd.write(""" -- -- -- -- SELinux man pages online -- -- --

SELinux man pages

--

--Fedora or Red Hat Enterprise Linux Man Pages. --

--
--

Fedora

-- -- --
--
--
--""")
--        for f in fedora_releases:
--            fd.write("""
--%s - SELinux man pages for %s """ % (f, f, f, f))
--
--        fd.write("""
--
--
--

RHEL

-- -- --
--
--
--""")
--        for r in rhel_releases:
--            fd.write("""
--%s - SELinux man pages for %s """ % (r, r, r, r))
--
--        fd.write("""
--
-- """) -- fd.close() -- print("%s has been created" % index) -- -- def _gen_body(self): - html = self.new_path + self.os_version + ".html" - fd = open(html, 'w') - fd.write(""" - - -- -- Linux man-pages online for Fedora18 -+ -+ SELinux man pages online - - --

SELinux man pages for Fedora18

-+

SELinux man pages for %s

-
- -
-

SELinux roles

--""") -+""" % self.os_version) - for letter in self.manpage_roles: - if len(self.manpage_roles[letter]): - fd.write(""" --- -2.32.0 - diff --git a/SOURCES/0011-Use-correct-gettext-domains-in-python-gui-sandbox.patch b/SOURCES/0011-Use-correct-gettext-domains-in-python-gui-sandbox.patch new file mode 100644 index 0000000..fa55c2e --- /dev/null +++ b/SOURCES/0011-Use-correct-gettext-domains-in-python-gui-sandbox.patch @@ -0,0 +1,306 @@ +From a8cacf2944ddd803909d2111bdf2d43ab90e1111 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Mon, 6 Aug 2018 13:37:07 +0200 +Subject: [PATCH] Use correct gettext domains in python/ gui/ sandbox/ + +https://github.com/fedora-selinux/selinux/issues/43 +--- + gui/booleansPage.py | 2 +- + gui/domainsPage.py | 2 +- + gui/fcontextPage.py | 2 +- + gui/loginsPage.py | 2 +- + gui/modulesPage.py | 2 +- + gui/polgengui.py | 2 +- + gui/portsPage.py | 2 +- + gui/semanagePage.py | 2 +- + gui/statusPage.py | 2 +- + gui/system-config-selinux.py | 2 +- + gui/usersPage.py | 2 +- + python/chcat/chcat | 2 +- + python/semanage/semanage | 2 +- + python/semanage/seobject.py | 2 +- + python/sepolgen/src/sepolgen/sepolgeni18n.py | 2 +- + python/sepolicy/sepolicy.py | 2 +- + python/sepolicy/sepolicy/__init__.py | 2 +- + python/sepolicy/sepolicy/generate.py | 2 +- + python/sepolicy/sepolicy/gui.py | 2 +- + python/sepolicy/sepolicy/interface.py | 2 +- + sandbox/sandbox | 2 +- + 21 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/gui/booleansPage.py b/gui/booleansPage.py +index 7849bea26a06..dd12b6d6ab86 100644 +--- a/gui/booleansPage.py ++++ b/gui/booleansPage.py +@@ -38,7 +38,7 @@ DISABLED = 2 + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/domainsPage.py b/gui/domainsPage.py +index bad5140d8c59..6bbe4de5884f 100644 +--- a/gui/domainsPage.py ++++ b/gui/domainsPage.py +@@ -30,7 +30,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/fcontextPage.py b/gui/fcontextPage.py +index d26aa1b405a9..52292cae01d2 100644 +--- a/gui/fcontextPage.py ++++ b/gui/fcontextPage.py +@@ -47,7 +47,7 @@ class context: + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/loginsPage.py b/gui/loginsPage.py +index b67eb8bc42af..cbfb0cc23f65 100644 +--- a/gui/loginsPage.py ++++ b/gui/loginsPage.py +@@ -29,7 +29,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/modulesPage.py b/gui/modulesPage.py +index 0584acf9b3a4..35a0129bab9c 100644 +--- a/gui/modulesPage.py ++++ b/gui/modulesPage.py +@@ -30,7 +30,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/polgengui.py b/gui/polgengui.py +index d284ded65279..01f541bafae8 100644 +--- a/gui/polgengui.py ++++ b/gui/polgengui.py +@@ -63,7 +63,7 @@ def get_all_modules(): + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/portsPage.py b/gui/portsPage.py +index 30f58383bc1d..a537ecc8c0a1 100644 +--- a/gui/portsPage.py ++++ b/gui/portsPage.py +@@ -35,7 +35,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/semanagePage.py b/gui/semanagePage.py +index 4127804fbbee..5361d69c1313 100644 +--- a/gui/semanagePage.py ++++ b/gui/semanagePage.py +@@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/statusPage.py b/gui/statusPage.py +index 766854b19cba..a8f079b9b163 100644 +--- a/gui/statusPage.py ++++ b/gui/statusPage.py +@@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/system-config-selinux.py b/gui/system-config-selinux.py +index 3f70122b87e8..8c46c987b974 100644 +--- a/gui/system-config-selinux.py ++++ b/gui/system-config-selinux.py +@@ -45,7 +45,7 @@ import selinux + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/gui/usersPage.py b/gui/usersPage.py +index 26794ed5c3f3..d15d4c5a71dd 100644 +--- a/gui/usersPage.py ++++ b/gui/usersPage.py +@@ -29,7 +29,7 @@ from semanagePage import * + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-gui" + try: + import gettext + kwargs = {} +diff --git a/python/chcat/chcat b/python/chcat/chcat +index fdd2e46ee3f9..839ddd3b54b6 100755 +--- a/python/chcat/chcat ++++ b/python/chcat/chcat +@@ -30,7 +30,7 @@ import getopt + import selinux + import seobject + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/semanage/semanage b/python/semanage/semanage +index 18a2710531ca..0980aecb6311 100644 +--- a/python/semanage/semanage ++++ b/python/semanage/semanage +@@ -30,7 +30,7 @@ import seobject + import sys + import traceback + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py +index 21adbf6eb74f..69e60db80060 100644 +--- a/python/semanage/seobject.py ++++ b/python/semanage/seobject.py +@@ -29,7 +29,7 @@ import sys + import stat + import socket + from semanage import * +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + import sepolicy + from setools.policyrep import SELinuxPolicy + from setools.typequery import TypeQuery +diff --git a/python/sepolgen/src/sepolgen/sepolgeni18n.py b/python/sepolgen/src/sepolgen/sepolgeni18n.py +index 998c4356415c..56ebd807c69c 100644 +--- a/python/sepolgen/src/sepolgen/sepolgeni18n.py ++++ b/python/sepolgen/src/sepolgen/sepolgeni18n.py +@@ -19,7 +19,7 @@ + + try: + import gettext +- t = gettext.translation( 'yumex' ) ++ t = gettext.translation( 'selinux-python' ) + _ = t.gettext + except: + def _(str): +diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py +index 7b2230651099..32956e58f52e 100755 +--- a/python/sepolicy/sepolicy.py ++++ b/python/sepolicy/sepolicy.py +@@ -28,7 +28,7 @@ import sepolicy + from multiprocessing import Pool + from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text + import argparse +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py +index 8055a12f6020..aa8beda313c8 100644 +--- a/python/sepolicy/sepolicy/__init__.py ++++ b/python/sepolicy/sepolicy/__init__.py +@@ -23,7 +23,7 @@ from setools.typeattrquery import TypeAttributeQuery + from setools.typequery import TypeQuery + from setools.userquery import UserQuery + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py +index 4e1ed4e9dc31..43180ca6fda4 100644 +--- a/python/sepolicy/sepolicy/generate.py ++++ b/python/sepolicy/sepolicy/generate.py +@@ -48,7 +48,7 @@ import sepolgen.defaults as defaults + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py +index 1e86422b864a..c9ca158ddd09 100644 +--- a/python/sepolicy/sepolicy/gui.py ++++ b/python/sepolicy/sepolicy/gui.py +@@ -41,7 +41,7 @@ import os + import re + import unicodedata + +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py +index bdffb770f364..9d40aea1498d 100644 +--- a/python/sepolicy/sepolicy/interface.py ++++ b/python/sepolicy/sepolicy/interface.py +@@ -30,7 +30,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us + ## + ## I18N + ## +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-python" + try: + import gettext + kwargs = {} +diff --git a/sandbox/sandbox b/sandbox/sandbox +index ca5f1e030a51..16c43b51eaaa 100644 +--- a/sandbox/sandbox ++++ b/sandbox/sandbox +@@ -37,7 +37,7 @@ import sepolicy + + SEUNSHARE = "/usr/sbin/seunshare" + SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" +-PROGNAME = "policycoreutils" ++PROGNAME = "selinux-sandbox" + try: + import gettext + kwargs = {} +-- +2.32.0 + diff --git a/SOURCES/0011-We-want-to-remove-the-trailing-newline-for-etc-syste.patch b/SOURCES/0011-We-want-to-remove-the-trailing-newline-for-etc-syste.patch deleted file mode 100644 index 23abb82..0000000 --- a/SOURCES/0011-We-want-to-remove-the-trailing-newline-for-etc-syste.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 18d06e7f84adad94efe1823a2fdccf62b04bf396 Mon Sep 17 00:00:00 2001 -From: Miroslav Grepl -Date: Fri, 20 Feb 2015 16:42:01 +0100 -Subject: [PATCH] We want to remove the trailing newline for - /etc/system_release. - ---- - python/sepolicy/sepolicy/__init__.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py -index 37abc7b83a37..481c5d86232f 100644 ---- a/python/sepolicy/sepolicy/__init__.py -+++ b/python/sepolicy/sepolicy/__init__.py -@@ -1218,7 +1218,7 @@ def get_os_version(): - system_release = "" - try: - with open('/etc/system-release') as f: -- system_release = f.readline() -+ system_release = f.readline().rstrip() - except IOError: - system_release = "Misc" - --- -2.32.0 - diff --git a/SOURCES/0012-Fix-title-in-manpage.py-to-not-contain-online.patch b/SOURCES/0012-Fix-title-in-manpage.py-to-not-contain-online.patch deleted file mode 100644 index cb37d3d..0000000 --- a/SOURCES/0012-Fix-title-in-manpage.py-to-not-contain-online.patch +++ /dev/null @@ -1,25 +0,0 @@ -From ddf7238fa3579a64145ed092b3a023d60cd2847c Mon Sep 17 00:00:00 2001 -From: Miroslav Grepl -Date: Fri, 20 Feb 2015 16:42:53 +0100 -Subject: [PATCH] Fix title in manpage.py to not contain 'online'. - ---- - python/sepolicy/sepolicy/manpage.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index dc3e5207c57c..6420ebe2e08e 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -222,7 +222,7 @@ class HTMLManPages: - - - -- SELinux man pages online -+ SELinux man pages - - -

SELinux man pages for %s

--- -2.32.0 - diff --git a/SOURCES/0012-Initial-.pot-files-for-gui-python-sandbox.patch b/SOURCES/0012-Initial-.pot-files-for-gui-python-sandbox.patch new file mode 100644 index 0000000..9a6b2e8 --- /dev/null +++ b/SOURCES/0012-Initial-.pot-files-for-gui-python-sandbox.patch @@ -0,0 +1,4532 @@ +From a4183d4c2d335fca940f741bec1f1839394ea783 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Mon, 6 Aug 2018 14:23:19 +0200 +Subject: [PATCH] Initial .pot files for gui/ python/ sandbox/ + +https://github.com/fedora-selinux/selinux/issues/43 +--- + gui/po/gui.pot | 964 ++++++++++++ + python/po/python.pot | 3375 ++++++++++++++++++++++++++++++++++++++++ + sandbox/po/sandbox.pot | 157 ++ + 3 files changed, 4496 insertions(+) + create mode 100644 gui/po/gui.pot + create mode 100644 python/po/python.pot + create mode 100644 sandbox/po/sandbox.pot + +diff --git a/gui/po/gui.pot b/gui/po/gui.pot +new file mode 100644 +index 000000000000..1663b4caa7c3 +--- /dev/null ++++ b/gui/po/gui.pot +@@ -0,0 +1,964 @@ ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR , YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2018-08-06 14:22+0200\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME \n" ++"Language-Team: LANGUAGE \n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=CHARSET\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../booleansPage.py:198 ../system-config-selinux.ui:1025 ++msgid "Boolean" ++msgstr "" ++ ++#: ../booleansPage.py:248 ../semanagePage.py:166 ++msgid "all" ++msgstr "" ++ ++#: ../booleansPage.py:250 ../semanagePage.py:168 ++#: ../system-config-selinux.ui:961 ../system-config-selinux.ui:1097 ++#: ../system-config-selinux.ui:1506 ++msgid "Customized" ++msgstr "" ++ ++#: ../domainsPage.py:55 ../system-config-selinux.ui:1834 ++msgid "Process Domain" ++msgstr "" ++ ++#: ../domainsPage.py:63 ++msgid "Domain Name" ++msgstr "" ++ ++#: ../domainsPage.py:68 ++msgid "Mode" ++msgstr "" ++ ++#: ../domainsPage.py:101 ../domainsPage.py:112 ../domainsPage.py:156 ++#: ../statusPage.py:73 ../system-config-selinux.ui:622 ++#: ../system-config-selinux.ui:1755 ++msgid "Permissive" ++msgstr "" ++ ++#: ../fcontextPage.py:72 ../system-config-selinux.ui:1160 ++msgid "File Labeling" ++msgstr "" ++ ++#: ../fcontextPage.py:82 ++msgid "" ++"File\n" ++"Specification" ++msgstr "" ++ ++#: ../fcontextPage.py:89 ++msgid "" ++"Selinux\n" ++"File Type" ++msgstr "" ++ ++#: ../fcontextPage.py:96 ++msgid "" ++"File\n" ++"Type" ++msgstr "" ++ ++#: ../loginsPage.py:55 ../system-config-selinux.ui:1281 ++msgid "User Mapping" ++msgstr "" ++ ++#: ../loginsPage.py:59 ++msgid "" ++"Login\n" ++"Name" ++msgstr "" ++ ++#: ../loginsPage.py:63 ../usersPage.py:60 ++msgid "" ++"SELinux\n" ++"User" ++msgstr "" ++ ++#: ../loginsPage.py:66 ../usersPage.py:65 ++msgid "" ++"MLS/\n" ++"MCS Range" ++msgstr "" ++ ++#: ../loginsPage.py:135 ++#, python-format ++msgid "Login '%s' is required" ++msgstr "" ++ ++#: ../modulesPage.py:55 ../system-config-selinux.ui:1722 ++msgid "Policy Module" ++msgstr "" ++ ++#: ../modulesPage.py:65 ++msgid "Module Name" ++msgstr "" ++ ++#: ../modulesPage.py:70 ++msgid "Priority" ++msgstr "" ++ ++#: ../modulesPage.py:79 ++msgid "Kind" ++msgstr "" ++ ++#: ../modulesPage.py:147 ++msgid "Disable Audit" ++msgstr "" ++ ++#: ../modulesPage.py:150 ../system-config-selinux.ui:1659 ++msgid "Enable Audit" ++msgstr "" ++ ++#: ../modulesPage.py:175 ++msgid "Load Policy Module" ++msgstr "" ++ ++#: ../org.selinux.config.policy:11 ++msgid "Run System Config SELinux" ++msgstr "" ++ ++#: ../org.selinux.config.policy:12 ++msgid "Authentication is required to run system-config-selinux" ++msgstr "" ++ ++#: ../polgengui.py:288 ../polgen.ui:728 ++msgid "Name" ++msgstr "" ++ ++#: ../polgengui.py:290 ../polgen.ui:111 ++msgid "Description" ++msgstr "" ++ ++#: ../polgengui.py:298 ++msgid "Role" ++msgstr "" ++ ++#: ../polgengui.py:305 ++msgid "Existing_User" ++msgstr "" ++ ++#: ../polgengui.py:319 ../polgengui.py:327 ../polgengui.py:341 ++msgid "Application" ++msgstr "" ++ ++#: ../polgengui.py:386 ++#, python-format ++msgid "%s must be a directory" ++msgstr "" ++ ++#: ../polgengui.py:446 ../polgengui.py:727 ++msgid "You must select a user" ++msgstr "" ++ ++#: ../polgengui.py:576 ++msgid "Select executable file to be confined." ++msgstr "" ++ ++#: ../polgengui.py:587 ++msgid "Select init script file to be confined." ++msgstr "" ++ ++#: ../polgengui.py:597 ++msgid "Select file(s) that confined application creates or writes" ++msgstr "" ++ ++#: ../polgengui.py:604 ++msgid "Select directory(s) that the confined application owns and writes into" ++msgstr "" ++ ++#: ../polgengui.py:666 ++msgid "Select directory to generate policy files in" ++msgstr "" ++ ++#: ../polgengui.py:683 ++#, python-format ++msgid "" ++"Type %s_t already defined in current policy.\n" ++"Do you want to continue?" ++msgstr "" ++ ++#: ../polgengui.py:683 ../polgengui.py:687 ++msgid "Verify Name" ++msgstr "" ++ ++#: ../polgengui.py:687 ++#, python-format ++msgid "" ++"Module %s already loaded in current policy.\n" ++"Do you want to continue?" ++msgstr "" ++ ++#: ../polgengui.py:733 ++msgid "" ++"You must add a name made up of letters and numbers and containing no spaces." ++msgstr "" ++ ++#: ../polgengui.py:747 ++msgid "You must enter a executable" ++msgstr "" ++ ++#: ../polgengui.py:772 ../system-config-selinux.py:184 ++msgid "Configue SELinux" ++msgstr "" ++ ++#: ../polgen.ui:9 ++msgid "Red Hat 2007" ++msgstr "" ++ ++#: ../polgen.ui:11 ++msgid "GPL" ++msgstr "" ++ ++#. TRANSLATORS: Replace this string with your names, one name per line. ++#: ../polgen.ui:13 ../system-config-selinux.ui:15 ++msgid "translator-credits" ++msgstr "" ++ ++#: ../polgen.ui:34 ++msgid "Add Booleans Dialog" ++msgstr "" ++ ++#: ../polgen.ui:99 ++msgid "Boolean Name" ++msgstr "" ++ ++#: ../polgen.ui:234 ../selinux-polgengui.desktop:3 ++msgid "SELinux Policy Generation Tool" ++msgstr "" ++ ++#: ../polgen.ui:255 ++msgid "" ++"Select the policy type for the application or user role you want to " ++"confine:" ++msgstr "" ++ ++#: ../polgen.ui:288 ++msgid "Applications" ++msgstr "" ++ ++#: ../polgen.ui:320 ++msgid "Standard Init Daemon" ++msgstr "" ++ ++#: ../polgen.ui:324 ../polgen.ui:340 ++msgid "" ++"Standard Init Daemon are daemons started on boot via init scripts. Usually " ++"requires a script in /etc/rc.d/init.d" ++msgstr "" ++ ++#: ../polgen.ui:336 ++msgid "DBUS System Daemon" ++msgstr "" ++ ++#: ../polgen.ui:353 ++msgid "Internet Services Daemon (inetd)" ++msgstr "" ++ ++#: ../polgen.ui:357 ++msgid "Internet Services Daemon are daemons started by xinetd" ++msgstr "" ++ ++#: ../polgen.ui:370 ++msgid "Web Application/Script (CGI)" ++msgstr "" ++ ++#: ../polgen.ui:374 ++msgid "" ++"Web Applications/Script (CGI) CGI scripts started by the web server (apache)" ++msgstr "" ++ ++#: ../polgen.ui:387 ++msgid "User Application" ++msgstr "" ++ ++#: ../polgen.ui:391 ../polgen.ui:408 ++msgid "" ++"User Application are any application that you would like to confine that is " ++"started by a user" ++msgstr "" ++ ++#: ../polgen.ui:404 ++msgid "Sandbox" ++msgstr "" ++ ++#: ../polgen.ui:450 ++msgid "Login Users" ++msgstr "" ++ ++#: ../polgen.ui:482 ++msgid "Existing User Roles" ++msgstr "" ++ ++#: ../polgen.ui:486 ++msgid "Modify an existing login user record." ++msgstr "" ++ ++#: ../polgen.ui:499 ++msgid "Minimal Terminal User Role" ++msgstr "" ++ ++#: ../polgen.ui:503 ++msgid "" ++"This user will login to a machine only via a terminal or remote login. By " ++"default this user will have no setuid, no networking, no su, no sudo." ++msgstr "" ++ ++#: ../polgen.ui:516 ++msgid "Minimal X Windows User Role" ++msgstr "" ++ ++#: ../polgen.ui:520 ++msgid "" ++"This user can login to a machine via X or terminal. By default this user " ++"will have no setuid, no networking, no sudo, no su" ++msgstr "" ++ ++#: ../polgen.ui:533 ++msgid "User Role" ++msgstr "" ++ ++#: ../polgen.ui:537 ++msgid "" ++"User with full networking, no setuid applications without transition, no " ++"sudo, no su." ++msgstr "" ++ ++#: ../polgen.ui:550 ++msgid "Admin User Role" ++msgstr "" ++ ++#: ../polgen.ui:554 ++msgid "" ++"User with full networking, no setuid applications without transition, no su, " ++"can sudo to Root Administration Roles" ++msgstr "" ++ ++#: ../polgen.ui:596 ++msgid "Root Users" ++msgstr "" ++ ++#: ../polgen.ui:627 ++msgid "Root Admin User Role" ++msgstr "" ++ ++#: ../polgen.ui:631 ++msgid "" ++"Select Root Administrator User Role, if this user will be used to administer " ++"the machine while running as root. This user will not be able to login to " ++"the system directly." ++msgstr "" ++ ++#: ../polgen.ui:705 ++msgid "Enter name of application or user role:" ++msgstr "" ++ ++#: ../polgen.ui:739 ++msgid "Enter complete path for executable to be confined." ++msgstr "" ++ ++#: ../polgen.ui:756 ../polgen.ui:838 ../polgen.ui:2317 ++msgid "..." ++msgstr "" ++ ++#: ../polgen.ui:776 ++msgid "Enter unique name for the confined application or user role." ++msgstr "" ++ ++#: ../polgen.ui:794 ++msgid "Executable" ++msgstr "" ++ ++#: ../polgen.ui:808 ++msgid "Init script" ++msgstr "" ++ ++#: ../polgen.ui:821 ++msgid "" ++"Enter complete path to init script used to start the confined application." ++msgstr "" ++ ++#: ../polgen.ui:883 ++msgid "Select existing role to modify:" ++msgstr "" ++ ++#: ../polgen.ui:904 ++#, python-format ++msgid "Select the user roles that will transiton to the %s domain." ++msgstr "" ++ ++#: ../polgen.ui:921 ++msgid "role tab" ++msgstr "" ++ ++#: ../polgen.ui:937 ++#, python-format ++msgid "Select roles that %s will transition to:" ++msgstr "" ++ ++#: ../polgen.ui:955 ++#, python-format ++msgid "Select applications domains that %s will transition to." ++msgstr "" ++ ++#: ../polgen.ui:972 ++msgid "" ++"transition \n" ++"role tab" ++msgstr "" ++ ++#: ../polgen.ui:989 ++#, python-format ++msgid "Select the user_roles that will transition to %s:" ++msgstr "" ++ ++#: ../polgen.ui:1007 ++msgid "Select the user roles that will transiton to this applications domains." ++msgstr "" ++ ++#: ../polgen.ui:1040 ++#, python-format ++msgid "Select domains that %s will administer:" ++msgstr "" ++ ++#: ../polgen.ui:1058 ../polgen.ui:1109 ++msgid "Select the domains that you would like this user administer." ++msgstr "" ++ ++#: ../polgen.ui:1091 ++#, python-format ++msgid "Select additional roles for %s:" ++msgstr "" ++ ++#: ../polgen.ui:1142 ++#, python-format ++msgid "Enter network ports that %s binds on:" ++msgstr "" ++ ++#: ../polgen.ui:1162 ../polgen.ui:1529 ++msgid "TCP Ports" ++msgstr "" ++ ++#: ../polgen.ui:1199 ../polgen.ui:1366 ../polgen.ui:1561 ../polgen.ui:1670 ++msgid "All" ++msgstr "" ++ ++#: ../polgen.ui:1203 ../polgen.ui:1370 ++#, python-format ++msgid "Allows %s to bind to any udp port" ++msgstr "" ++ ++#: ../polgen.ui:1216 ../polgen.ui:1383 ++msgid "600-1024" ++msgstr "" ++ ++#: ../polgen.ui:1220 ../polgen.ui:1387 ++#, python-format ++msgid "Allow %s to call bindresvport with 0. Binding to port 600-1024" ++msgstr "" ++ ++#: ../polgen.ui:1233 ../polgen.ui:1400 ++msgid "Unreserved Ports (>1024)" ++msgstr "" ++ ++#: ../polgen.ui:1237 ../polgen.ui:1404 ++#, python-format ++msgid "" ++"Enter a comma separated list of udp ports or ranges of ports that %s binds " ++"to. Example: 612, 650-660" ++msgstr "" ++ ++#: ../polgen.ui:1265 ../polgen.ui:1432 ../polgen.ui:1581 ../polgen.ui:1690 ++msgid "Select Ports" ++msgstr "" ++ ++#: ../polgen.ui:1278 ../polgen.ui:1445 ++#, python-format ++msgid "Allows %s to bind to any udp ports > 1024" ++msgstr "" ++ ++#: ../polgen.ui:1329 ../polgen.ui:1638 ++msgid "UDP Ports" ++msgstr "" ++ ++#: ../polgen.ui:1492 ++msgid "" ++"Network\n" ++"Bind tab" ++msgstr "" ++ ++#: ../polgen.ui:1509 ++#, python-format ++msgid "Select network ports that %s connects to:" ++msgstr "" ++ ++#: ../polgen.ui:1565 ++#, python-format ++msgid "Allows %s to connect to any tcp port" ++msgstr "" ++ ++#: ../polgen.ui:1594 ++#, python-format ++msgid "" ++"Enter a comma separated list of tcp ports or ranges of ports that %s " ++"connects to. Example: 612, 650-660" ++msgstr "" ++ ++#: ../polgen.ui:1674 ++#, python-format ++msgid "Allows %s to connect to any udp port" ++msgstr "" ++ ++#: ../polgen.ui:1703 ++#, python-format ++msgid "" ++"Enter a comma separated list of udp ports or ranges of ports that %s " ++"connects to. Example: 612, 650-660" ++msgstr "" ++ ++#: ../polgen.ui:1760 ++#, python-format ++msgid "Select common application traits for %s:" ++msgstr "" ++ ++#: ../polgen.ui:1777 ++msgid "Writes syslog messages\t" ++msgstr "" ++ ++#: ../polgen.ui:1792 ++msgid "Create/Manipulate temporary files in /tmp" ++msgstr "" ++ ++#: ../polgen.ui:1807 ++msgid "Uses Pam for authentication" ++msgstr "" ++ ++#: ../polgen.ui:1822 ++msgid "Uses nsswitch or getpw* calls" ++msgstr "" ++ ++#: ../polgen.ui:1837 ++msgid "Uses dbus" ++msgstr "" ++ ++#: ../polgen.ui:1852 ++msgid "Sends audit messages" ++msgstr "" ++ ++#: ../polgen.ui:1867 ++msgid "Interacts with the terminal" ++msgstr "" ++ ++#: ../polgen.ui:1882 ++msgid "Sends email" ++msgstr "" ++ ++#: ../polgen.ui:1925 ++#, python-format ++msgid "Add files/directories that %s manages" ++msgstr "" ++ ++#: ../polgen.ui:2086 ++#, python-format ++msgid "" ++"Files/Directories which the %s \"manages\". Pid Files, Log Files, /var/lib " ++"Files ..." ++msgstr "" ++ ++#: ../polgen.ui:2126 ++#, python-format ++msgid "Add booleans from the %s policy:" ++msgstr "" ++ ++#: ../polgen.ui:2234 ++#, python-format ++msgid "Add/Remove booleans used by the %s domain" ++msgstr "" ++ ++#: ../polgen.ui:2272 ++#, python-format ++msgid "Which directory you will generate the %s policy?" ++msgstr "" ++ ++#: ../polgen.ui:2290 ++msgid "Policy Directory" ++msgstr "" ++ ++#: ../portsPage.py:60 ../system-config-selinux.ui:1570 ++msgid "Network Port" ++msgstr "" ++ ++#: ../portsPage.py:95 ++msgid "" ++"SELinux Port\n" ++"Type" ++msgstr "" ++ ++#: ../portsPage.py:101 ../system-config-selinux.ui:294 ++msgid "Protocol" ++msgstr "" ++ ++#: ../portsPage.py:106 ../system-config-selinux.ui:355 ++msgid "" ++"MLS/MCS\n" ++"Level" ++msgstr "" ++ ++#: ../portsPage.py:111 ++msgid "Port" ++msgstr "" ++ ++#: ../portsPage.py:213 ++#, python-format ++msgid "Port number \"%s\" is not valid. 0 < PORT_NUMBER < 65536 " ++msgstr "" ++ ++#: ../portsPage.py:258 ++msgid "List View" ++msgstr "" ++ ++#: ../portsPage.py:261 ../system-config-selinux.ui:1492 ++msgid "Group View" ++msgstr "" ++ ++#: ../selinux-polgengui.desktop:32 ../sepolicy.desktop:4 ++msgid "Generate SELinux policy modules" ++msgstr "" ++ ++#: ../selinux-polgengui.desktop:62 ../system-config-selinux.desktop:62 ++msgid "system-config-selinux" ++msgstr "" ++ ++#: ../semanagePage.py:130 ++#, python-format ++msgid "Are you sure you want to delete %s '%s'?" ++msgstr "" ++ ++#: ../semanagePage.py:130 ++#, python-format ++msgid "Delete %s" ++msgstr "" ++ ++#: ../semanagePage.py:138 ++#, python-format ++msgid "Add %s" ++msgstr "" ++ ++#: ../semanagePage.py:152 ++#, python-format ++msgid "Modify %s" ++msgstr "" ++ ++#: ../sepolicy.desktop:3 ++msgid "SELinux Policy Management Tool" ++msgstr "" ++ ++#: ../sepolicy.desktop:5 ++msgid "sepolicy" ++msgstr "" ++ ++#: ../sepolicy.desktop:11 ++msgid "policy;security;selinux;avc;permission;mac;" ++msgstr "" ++ ++#: ../statusPage.py:74 ../system-config-selinux.ui:625 ++#: ../system-config-selinux.ui:1770 ++msgid "Enforcing" ++msgstr "" ++ ++#: ../statusPage.py:79 ../system-config-selinux.ui:619 ++msgid "Disabled" ++msgstr "" ++ ++#: ../statusPage.py:98 ++msgid "Status" ++msgstr "" ++ ++#: ../statusPage.py:137 ++msgid "" ++"Changing the policy type will cause a relabel of the entire file system on " ++"the next boot. Relabeling takes a long time depending on the size of the " ++"file system. Do you wish to continue?" ++msgstr "" ++ ++#: ../statusPage.py:151 ++msgid "" ++"Changing to SELinux disabled requires a reboot. It is not recommended. If " ++"you later decide to turn SELinux back on, the system will be required to " ++"relabel. If you just want to see if SELinux is causing a problem on your " ++"system, you can go to permissive mode which will only log errors and not " ++"enforce SELinux policy. Permissive mode does not require a reboot Do you " ++"wish to continue?" ++msgstr "" ++ ++#: ../statusPage.py:156 ++msgid "" ++"Changing to SELinux enabled will cause a relabel of the entire file system " ++"on the next boot. Relabeling takes a long time depending on the size of the " ++"file system. Do you wish to continue?" ++msgstr "" ++ ++#: ../system-config-selinux.desktop:3 ++msgid "SELinux Management" ++msgstr "" ++ ++#: ../system-config-selinux.desktop:32 ++msgid "Configure SELinux in a graphical setting" ++msgstr "" ++ ++#: ../system-config-selinux.ui:11 ++msgid "" ++"Copyright (c)2006 Red Hat, Inc.\n" ++"Copyright (c) 2006 Dan Walsh " ++msgstr "" ++ ++#: ../system-config-selinux.ui:53 ../system-config-selinux.ui:433 ++msgid "Add SELinux Login Mapping" ++msgstr "" ++ ++#: ../system-config-selinux.ui:117 ++msgid "Login Name" ++msgstr "" ++ ++#: ../system-config-selinux.ui:128 ../system-config-selinux.ui:1402 ++#: ../system-config-selinux.ui:1937 ../usersPage.py:54 ++msgid "SELinux User" ++msgstr "" ++ ++#: ../system-config-selinux.ui:139 ../system-config-selinux.ui:1948 ++msgid "MLS/MCS Range" ++msgstr "" ++ ++#: ../system-config-selinux.ui:219 ++msgid "Add SELinux Network Ports" ++msgstr "" ++ ++#: ../system-config-selinux.ui:283 ++msgid "Port Number" ++msgstr "" ++ ++#: ../system-config-selinux.ui:305 ../system-config-selinux.ui:519 ++msgid "SELinux Type" ++msgstr "" ++ ++#: ../system-config-selinux.ui:406 ++msgid "all files" ++msgstr "" ++ ++#: ../system-config-selinux.ui:409 ++msgid "regular file" ++msgstr "" ++ ++#: ../system-config-selinux.ui:412 ++msgid "directory" ++msgstr "" ++ ++#: ../system-config-selinux.ui:415 ++msgid "character device" ++msgstr "" ++ ++#: ../system-config-selinux.ui:418 ++msgid "block device" ++msgstr "" ++ ++#: ../system-config-selinux.ui:421 ++msgid "socket file" ++msgstr "" ++ ++#: ../system-config-selinux.ui:424 ++msgid "symbolic link" ++msgstr "" ++ ++#: ../system-config-selinux.ui:427 ++msgid "named pipe" ++msgstr "" ++ ++#: ../system-config-selinux.ui:497 ++msgid "File Specification" ++msgstr "" ++ ++#: ../system-config-selinux.ui:508 ++msgid "File Type" ++msgstr "" ++ ++#: ../system-config-selinux.ui:569 ++msgid "MLS" ++msgstr "" ++ ++#: ../system-config-selinux.ui:631 ++msgid "SELinux Administration" ++msgstr "" ++ ++#: ../system-config-selinux.ui:648 ++msgid "_File" ++msgstr "" ++ ++#: ../system-config-selinux.ui:656 ++msgid "_Add" ++msgstr "" ++ ++#: ../system-config-selinux.ui:668 ++msgid "_Properties" ++msgstr "" ++ ++#: ../system-config-selinux.ui:680 ++msgid "_Delete" ++msgstr "" ++ ++#: ../system-config-selinux.ui:707 ++msgid "_Help" ++msgstr "" ++ ++#: ../system-config-selinux.ui:754 ++msgid "Select Management Object" ++msgstr "" ++ ++#: ../system-config-selinux.ui:767 ++msgid "Select:" ++msgstr "" ++ ++#: ../system-config-selinux.ui:797 ++msgid "System Default Enforcing Mode" ++msgstr "" ++ ++#: ../system-config-selinux.ui:826 ++msgid "Current Enforcing Mode" ++msgstr "" ++ ++#: ../system-config-selinux.ui:848 ++msgid "System Default Policy Type: " ++msgstr "" ++ ++#: ../system-config-selinux.ui:871 ++msgid "" ++"Select if you wish to relabel then entire file system on next reboot. " ++"Relabeling can take a very long time, depending on the size of the system. " ++"If you are changing policy types or going from disabled to enforcing, a " ++"relabel is required." ++msgstr "" ++ ++#: ../system-config-selinux.ui:903 ++msgid "Relabel on next reboot." ++msgstr "" ++ ++#: ../system-config-selinux.ui:947 ++msgid "Revert boolean setting to system default" ++msgstr "" ++ ++#: ../system-config-selinux.ui:960 ++msgid "Toggle between Customized and All Booleans" ++msgstr "" ++ ++#: ../system-config-selinux.ui:986 ../system-config-selinux.ui:1122 ++#: ../system-config-selinux.ui:1242 ../system-config-selinux.ui:1363 ++#: ../system-config-selinux.ui:1531 ../system-config-selinux.ui:1683 ++#: ../system-config-selinux.ui:1795 ++msgid "Filter" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1057 ++msgid "Add File Context" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1070 ++msgid "Modify File Context" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1083 ++msgid "Delete File Context" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1096 ++msgid "Toggle between all and customized file context" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1192 ++msgid "Add SELinux User Mapping" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1205 ++msgid "Modify SELinux User Mapping" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1218 ++msgid "Delete SELinux User Mapping" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1313 ++msgid "Add User" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1326 ++msgid "Modify User" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1339 ++msgid "Delete User" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1434 ++msgid "Add Network Port" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1447 ++msgid "Edit Network Port" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1460 ++msgid "Delete Network Port" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1491 ../system-config-selinux.ui:1505 ++msgid "Toggle between Customized and All Ports" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1602 ++msgid "Generate new policy module" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1614 ++msgid "Load policy module" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1627 ++msgid "Remove loadable policy module" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1658 ++msgid "" ++"Enable/Disable additional audit rules, that are normally not reported in the " ++"log files." ++msgstr "" ++ ++#: ../system-config-selinux.ui:1754 ++msgid "Change process mode to permissive." ++msgstr "" ++ ++#: ../system-config-selinux.ui:1769 ++msgid "Change process mode to enforcing" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1873 ++msgid "Add SELinux User" ++msgstr "" ++ ++#: ../system-config-selinux.ui:1970 ../usersPage.py:69 ++msgid "SELinux Roles" ++msgstr "" ++ ++#: ../usersPage.py:142 ++#, python-format ++msgid "SELinux user '%s' is required" ++msgstr "" +diff --git a/python/po/python.pot b/python/po/python.pot +new file mode 100644 +index 000000000000..a279b0e8d540 +--- /dev/null ++++ b/python/po/python.pot +@@ -0,0 +1,3375 @@ ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR , YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2018-08-06 14:22+0200\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME \n" ++"Language-Team: LANGUAGE \n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=CHARSET\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../audit2allow/audit2allow:237 ++msgid "******************** IMPORTANT ***********************\n" ++msgstr "" ++ ++#: ../audit2allow/audit2allow:238 ++#, python-format ++msgid "" ++"To make this policy package active, execute:\n" ++"\n" ++"semodule -i %s\n" ++"\n" ++msgstr "" ++ ++#: ../chcat/chcat:115 ../chcat/chcat:194 ++msgid "Requires at least one category" ++msgstr "" ++ ++#: ../chcat/chcat:129 ../chcat/chcat:208 ++#, python-format ++msgid "Can not modify sensitivity levels using '+' on %s" ++msgstr "" ++ ++#: ../chcat/chcat:133 ++#, python-format ++msgid "%s is already in %s" ++msgstr "" ++ ++#: ../chcat/chcat:213 ../chcat/chcat:223 ++#, python-format ++msgid "%s is not in %s" ++msgstr "" ++ ++#: ../chcat/chcat:295 ../chcat/chcat:300 ++msgid "Can not combine +/- with other types of categories" ++msgstr "" ++ ++#: ../chcat/chcat:350 ++msgid "Can not have multiple sensitivities" ++msgstr "" ++ ++#: ../chcat/chcat:357 ++#, python-format ++msgid "Usage %s CATEGORY File ..." ++msgstr "" ++ ++#: ../chcat/chcat:358 ++#, python-format ++msgid "Usage %s -l CATEGORY user ..." ++msgstr "" ++ ++#: ../chcat/chcat:359 ++#, python-format ++msgid "Usage %s [[+|-]CATEGORY],...] File ..." ++msgstr "" ++ ++#: ../chcat/chcat:360 ++#, python-format ++msgid "Usage %s -l [[+|-]CATEGORY],...] user ..." ++msgstr "" ++ ++#: ../chcat/chcat:361 ++#, python-format ++msgid "Usage %s -d File ..." ++msgstr "" ++ ++#: ../chcat/chcat:362 ++#, python-format ++msgid "Usage %s -l -d user ..." ++msgstr "" ++ ++#: ../chcat/chcat:363 ++#, python-format ++msgid "Usage %s -L" ++msgstr "" ++ ++#: ../chcat/chcat:364 ++#, python-format ++msgid "Usage %s -L -l user" ++msgstr "" ++ ++#: ../chcat/chcat:365 ++msgid "Use -- to end option list. For example" ++msgstr "" ++ ++#: ../chcat/chcat:366 ++msgid "chcat -- -CompanyConfidential /docs/businessplan.odt" ++msgstr "" ++ ++#: ../chcat/chcat:367 ++msgid "chcat -l +CompanyConfidential juser" ++msgstr "" ++ ++#: ../chcat/chcat:436 ++#, python-format ++msgid "Options Error %s " ++msgstr "" ++ ++#: ../semanage/semanage:203 ++msgid "Select an alternate SELinux Policy Store to manage" ++msgstr "" ++ ++#: ../semanage/semanage:207 ++msgid "Select a priority for module operations" ++msgstr "" ++ ++#: ../semanage/semanage:211 ++#, python-format ++msgid "Do not print heading when listing %s object types" ++msgstr "" ++ ++#: ../semanage/semanage:215 ++msgid "Do not reload policy after commit" ++msgstr "" ++ ++#: ../semanage/semanage:219 ++#, python-format ++msgid "List %s local customizations" ++msgstr "" ++ ++#: ../semanage/semanage:223 ++#, python-format ++msgid "Add a record of the %s object type" ++msgstr "" ++ ++#: ../semanage/semanage:227 ++msgid "SELinux Type for the object" ++msgstr "" ++ ++#: ../semanage/semanage:231 ++msgid "" ++"Default SELinux Level for SELinux user, s0 Default. (MLS/MCS Systems only)" ++msgstr "" ++ ++#: ../semanage/semanage:236 ++msgid "" ++"\n" ++"MLS/MCS Security Range (MLS/MCS Systems only)\n" ++"SELinux Range for SELinux login mapping\n" ++"defaults to the SELinux user record range.\n" ++"SELinux Range for SELinux user defaults to s0.\n" ++msgstr "" ++ ++#: ../semanage/semanage:245 ++msgid "" ++"\n" ++" Protocol for the specified port (tcp|udp) or internet protocol\n" ++" version for the specified node (ipv4|ipv6).\n" ++msgstr "" ++ ++#: ../semanage/semanage:251 ++msgid "" ++"\n" ++" Subnet prefix for the specified infiniband ibpkey.\n" ++msgstr "" ++ ++#: ../semanage/semanage:256 ++msgid "" ++"\n" ++" Name for the specified infiniband end port.\n" ++msgstr "" ++ ++#: ../semanage/semanage:261 ++#, python-format ++msgid "Modify a record of the %s object type" ++msgstr "" ++ ++#: ../semanage/semanage:265 ++#, python-format ++msgid "List records of the %s object type" ++msgstr "" ++ ++#: ../semanage/semanage:269 ++#, python-format ++msgid "Delete a record of the %s object type" ++msgstr "" ++ ++#: ../semanage/semanage:273 ++msgid "Extract customizable commands, for use within a transaction" ++msgstr "" ++ ++#: ../semanage/semanage:277 ++#, python-format ++msgid "Remove all %s objects local customizations" ++msgstr "" ++ ++#: ../semanage/semanage:281 ++msgid "SELinux user name" ++msgstr "" ++ ++#: ../semanage/semanage:286 ++msgid "Manage login mappings between linux users and SELinux confined users" ++msgstr "" ++ ++#: ../semanage/semanage:303 ++#, python-format ++msgid "login_name | %%groupname" ++msgstr "" ++ ++#: ../semanage/semanage:355 ++msgid "Manage file context mapping definitions" ++msgstr "" ++ ++#: ../semanage/semanage:369 ++msgid "" ++"Substitute target path with sourcepath when generating default\n" ++" label. " ++"This is used with fcontext. Requires source and target\n" ++" path " ++"arguments. The context labeling for the target subtree is\n" ++" made " ++"equivalent to that defined for the source." ++msgstr "" ++ ++#: ../semanage/semanage:377 ++msgid "file_spec" ++msgstr "" ++ ++#: ../semanage/semanage:405 ++msgid "Manage SELinux confined users (Roles and levels for an SELinux user)" ++msgstr "" ++ ++#: ../semanage/semanage:423 ++msgid "" ++"\n" ++"SELinux Roles. You must enclose multiple roles within " ++"quotes, separate by spaces. Or specify -R multiple times.\n" ++msgstr "" ++ ++#: ../semanage/semanage:427 ++msgid "selinux_name" ++msgstr "" ++ ++#: ../semanage/semanage:455 ++msgid "Manage network port type definitions" ++msgstr "" ++ ++#: ../semanage/semanage:471 ++msgid "port | port_range" ++msgstr "" ++ ++#: ../semanage/semanage:500 ++msgid "Manage infiniband ibpkey type definitions" ++msgstr "" ++ ++#: ../semanage/semanage:516 ++msgid "pkey | pkey_range" ++msgstr "" ++ ++#: ../semanage/semanage:543 ++msgid "Manage infiniband end port type definitions" ++msgstr "" ++ ++#: ../semanage/semanage:559 ++msgid "ibendport" ++msgstr "" ++ ++#: ../semanage/semanage:586 ++msgid "Manage network interface type definitions" ++msgstr "" ++ ++#: ../semanage/semanage:601 ++msgid "interface_spec" ++msgstr "" ++ ++#: ../semanage/semanage:625 ++msgid "Manage SELinux policy modules" ++msgstr "" ++ ++#: ../semanage/semanage:637 ++msgid "Remove a module" ++msgstr "" ++ ++#: ../semanage/semanage:638 ++msgid "Disable a module" ++msgstr "" ++ ++#: ../semanage/semanage:639 ++msgid "Enable a module" ++msgstr "" ++ ++#: ../semanage/semanage:640 ++msgid "Name of the module to act on" ++msgstr "" ++ ++#: ../semanage/semanage:667 ++msgid "Manage network node type definitions" ++msgstr "" ++ ++#: ../semanage/semanage:681 ++msgid "Network Mask" ++msgstr "" ++ ++#: ../semanage/semanage:685 ++msgid "node" ++msgstr "" ++ ++#: ../semanage/semanage:710 ++msgid "Manage booleans to selectively enable functionality" ++msgstr "" ++ ++#: ../semanage/semanage:715 ++msgid "boolean" ++msgstr "" ++ ++#: ../semanage/semanage:725 ++msgid "Enable the boolean" ++msgstr "" ++ ++#: ../semanage/semanage:726 ++msgid "Disable the boolean" ++msgstr "" ++ ++#: ../semanage/semanage:743 ++msgid "semanage permissive: error: the following argument is required: type\n" ++msgstr "" ++ ++#: ../semanage/semanage:748 ++msgid "Manage process type enforcement mode" ++msgstr "" ++ ++#: ../semanage/semanage:760 ../semanage/seobject.py:2611 ++msgid "type" ++msgstr "" ++ ++#: ../semanage/semanage:771 ++msgid "Disable/Enable dontaudit rules in policy" ++msgstr "" ++ ++#: ../semanage/semanage:791 ++msgid "Output local customizations" ++msgstr "" ++ ++#: ../semanage/semanage:793 ++msgid "Output file" ++msgstr "" ++ ++#: ../semanage/semanage:871 ++msgid "Import local customizations" ++msgstr "" ++ ++#: ../semanage/semanage:874 ++msgid "Input file" ++msgstr "" ++ ++#: ../semanage/seobject.py:274 ++msgid "Could not create semanage handle" ++msgstr "" ++ ++#: ../semanage/seobject.py:282 ++msgid "SELinux policy is not managed or store cannot be accessed." ++msgstr "" ++ ++#: ../semanage/seobject.py:287 ++msgid "Cannot read policy store." ++msgstr "" ++ ++#: ../semanage/seobject.py:292 ++msgid "Could not establish semanage connection" ++msgstr "" ++ ++#: ../semanage/seobject.py:297 ++msgid "Could not test MLS enabled status" ++msgstr "" ++ ++#: ../semanage/seobject.py:303 ../semanage/seobject.py:319 ++msgid "Not yet implemented" ++msgstr "" ++ ++#: ../semanage/seobject.py:307 ++msgid "Semanage transaction already in progress" ++msgstr "" ++ ++#: ../semanage/seobject.py:316 ++msgid "Could not start semanage transaction" ++msgstr "" ++ ++#: ../semanage/seobject.py:330 ++msgid "Could not commit semanage transaction" ++msgstr "" ++ ++#: ../semanage/seobject.py:335 ++msgid "Semanage transaction not in progress" ++msgstr "" ++ ++#: ../semanage/seobject.py:349 ../semanage/seobject.py:469 ++msgid "Could not list SELinux modules" ++msgstr "" ++ ++#: ../semanage/seobject.py:356 ++msgid "Could not get module name" ++msgstr "" ++ ++#: ../semanage/seobject.py:360 ++msgid "Could not get module enabled" ++msgstr "" ++ ++#: ../semanage/seobject.py:364 ++msgid "Could not get module priority" ++msgstr "" ++ ++#: ../semanage/seobject.py:368 ++msgid "Could not get module lang_ext" ++msgstr "" ++ ++#: ../semanage/seobject.py:389 ++msgid "Module Name" ++msgstr "" ++ ++#: ../semanage/seobject.py:389 ++msgid "Priority" ++msgstr "" ++ ++#: ../semanage/seobject.py:389 ++msgid "Language" ++msgstr "" ++ ++#: ../semanage/seobject.py:392 ../sepolicy/sepolicy/sepolicy.glade:3431 ++msgid "Disabled" ++msgstr "" ++ ++#: ../semanage/seobject.py:401 ++#, python-format ++msgid "Module does not exist: %s " ++msgstr "" ++ ++#: ../semanage/seobject.py:405 ../semanage/seobject.py:432 ++#, python-format ++msgid "Invalid priority %d (needs to be between 1 and 999)" ++msgstr "" ++ ++#: ../semanage/seobject.py:415 ++msgid "Could not create module key" ++msgstr "" ++ ++#: ../semanage/seobject.py:419 ++msgid "Could not set module key name" ++msgstr "" ++ ++#: ../semanage/seobject.py:424 ++#, python-format ++msgid "Could not enable module %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:426 ++#, python-format ++msgid "Could not disable module %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:437 ++#, python-format ++msgid "Could not remove module %s (remove failed)" ++msgstr "" ++ ++#: ../semanage/seobject.py:454 ++msgid "dontaudit requires either 'on' or 'off'" ++msgstr "" ++ ++#: ../semanage/seobject.py:484 ++msgid "Builtin Permissive Types" ++msgstr "" ++ ++#: ../semanage/seobject.py:494 ++msgid "Customized Permissive Types" ++msgstr "" ++ ++#: ../semanage/seobject.py:502 ++msgid "" ++"The sepolgen python module is required to setup permissive domains.\n" ++"In some distributions it is included in the policycoreutils-devel package.\n" ++"# yum install policycoreutils-devel\n" ++"Or similar for your distro." ++msgstr "" ++ ++#: ../semanage/seobject.py:512 ++#, python-format ++msgid "Could not set permissive domain %s (module installation failed)" ++msgstr "" ++ ++#: ../semanage/seobject.py:518 ++#, python-format ++msgid "Could not remove permissive domain %s (remove failed)" ++msgstr "" ++ ++#: ../semanage/seobject.py:555 ../semanage/seobject.py:627 ++#: ../semanage/seobject.py:674 ../semanage/seobject.py:794 ++#: ../semanage/seobject.py:824 ../semanage/seobject.py:889 ++#: ../semanage/seobject.py:945 ../semanage/seobject.py:1209 ++#: ../semanage/seobject.py:1468 ../semanage/seobject.py:2442 ++#: ../semanage/seobject.py:2512 ../semanage/seobject.py:2536 ++#: ../semanage/seobject.py:2664 ../semanage/seobject.py:2715 ++#, python-format ++msgid "Could not create a key for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:559 ../semanage/seobject.py:631 ++#: ../semanage/seobject.py:678 ../semanage/seobject.py:684 ++#, python-format ++msgid "Could not check if login mapping for %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:561 ++#, python-format ++msgid "Login mapping for %s is already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:566 ++#, python-format ++msgid "Linux Group %s does not exist" ++msgstr "" ++ ++#: ../semanage/seobject.py:571 ++#, python-format ++msgid "Linux User %s does not exist" ++msgstr "" ++ ++#: ../semanage/seobject.py:575 ++#, python-format ++msgid "Could not create login mapping for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:579 ../semanage/seobject.py:838 ++#, python-format ++msgid "Could not set name for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:584 ../semanage/seobject.py:848 ++#, python-format ++msgid "Could not set MLS range for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:588 ++#, python-format ++msgid "Could not set SELinux user for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:592 ++#, python-format ++msgid "Could not add login mapping for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:610 ++msgid "Requires seuser or serange" ++msgstr "" ++ ++#: ../semanage/seobject.py:633 ../semanage/seobject.py:680 ++#, python-format ++msgid "Login mapping for %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:637 ++#, python-format ++msgid "Could not query seuser for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:652 ++#, python-format ++msgid "Could not modify login mapping for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:686 ++#, python-format ++msgid "Login mapping for %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:690 ++#, python-format ++msgid "Could not delete login mapping for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:712 ../semanage/seobject.py:745 ++#: ../semanage/seobject.py:988 ++msgid "Could not list login mappings" ++msgstr "" ++ ++#: ../semanage/seobject.py:769 ../semanage/seobject.py:781 ++#: ../sepolicy/sepolicy/sepolicy.glade:1162 ++#: ../sepolicy/sepolicy/sepolicy.glade:3156 ++msgid "Login Name" ++msgstr "" ++ ++#: ../semanage/seobject.py:769 ../semanage/seobject.py:781 ++#: ../semanage/seobject.py:1035 ../semanage/seobject.py:1040 ++#: ../sepolicy/sepolicy/sepolicy.glade:1188 ++#: ../sepolicy/sepolicy/sepolicy.glade:3174 ++#: ../sepolicy/sepolicy/sepolicy.glade:3260 ++#: ../sepolicy/sepolicy/sepolicy.glade:4915 ++msgid "SELinux User" ++msgstr "" ++ ++#: ../semanage/seobject.py:769 ++msgid "MLS/MCS Range" ++msgstr "" ++ ++#: ../semanage/seobject.py:769 ++msgid "Service" ++msgstr "" ++ ++#: ../semanage/seobject.py:797 ../semanage/seobject.py:828 ++#: ../semanage/seobject.py:893 ../semanage/seobject.py:949 ++#: ../semanage/seobject.py:955 ++#, python-format ++msgid "Could not check if SELinux user %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:800 ../semanage/seobject.py:899 ++#: ../semanage/seobject.py:961 ++#, python-format ++msgid "Could not query user for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:820 ++#, python-format ++msgid "You must add at least one role for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:830 ++#, python-format ++msgid "SELinux user %s is already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:834 ++#, python-format ++msgid "Could not create SELinux user for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:843 ++#, python-format ++msgid "Could not add role %s for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:852 ++#, python-format ++msgid "Could not set MLS level for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:855 ++#, python-format ++msgid "Could not add prefix %s for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:858 ++#, python-format ++msgid "Could not extract key for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:862 ++#, python-format ++msgid "Could not add SELinux user %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:883 ++msgid "Requires prefix, roles, level or range" ++msgstr "" ++ ++#: ../semanage/seobject.py:885 ++msgid "Requires prefix or roles" ++msgstr "" ++ ++#: ../semanage/seobject.py:895 ../semanage/seobject.py:951 ++#, python-format ++msgid "SELinux user %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:924 ++#, python-format ++msgid "Could not modify SELinux user %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:957 ++#, python-format ++msgid "SELinux user %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:968 ++#, python-format ++msgid "Could not delete SELinux user %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1006 ++msgid "Could not list SELinux users" ++msgstr "" ++ ++#: ../semanage/seobject.py:1012 ++#, python-format ++msgid "Could not list roles for user %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1034 ++msgid "Labeling" ++msgstr "" ++ ++#: ../semanage/seobject.py:1034 ++msgid "MLS/" ++msgstr "" ++ ++#: ../semanage/seobject.py:1035 ++msgid "Prefix" ++msgstr "" ++ ++#: ../semanage/seobject.py:1035 ++msgid "MCS Level" ++msgstr "" ++ ++#: ../semanage/seobject.py:1035 ++msgid "MCS Range" ++msgstr "" ++ ++#: ../semanage/seobject.py:1035 ../semanage/seobject.py:1040 ++#: ../sepolicy/sepolicy/sepolicy.glade:3280 ++#: ../sepolicy/sepolicy/sepolicy.glade:5251 ++#: ../sepolicy/sepolicy/sepolicy.glade:5400 ++msgid "SELinux Roles" ++msgstr "" ++ ++#: ../semanage/seobject.py:1061 ++msgid "Protocol udp or tcp is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1063 ++msgid "Port is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1073 ++msgid "Invalid Port" ++msgstr "" ++ ++#: ../semanage/seobject.py:1077 ../semanage/seobject.py:1345 ++#, python-format ++msgid "Could not create a key for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1088 ../semanage/seobject.py:1356 ++#: ../semanage/seobject.py:1604 ++msgid "Type is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1091 ../semanage/seobject.py:1155 ++#, python-format ++msgid "Type %s is invalid, must be a port type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1097 ../semanage/seobject.py:1161 ++#: ../semanage/seobject.py:1227 ../semanage/seobject.py:1233 ++#, python-format ++msgid "Could not check if port %s/%s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1099 ++#, python-format ++msgid "Port %s/%s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1103 ++#, python-format ++msgid "Could not create port for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1109 ../semanage/seobject.py:1377 ++#: ../semanage/seobject.py:1624 ++#, python-format ++msgid "Could not create context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1113 ++#, python-format ++msgid "Could not set user in port context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1117 ++#, python-format ++msgid "Could not set role in port context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1121 ++#, python-format ++msgid "Could not set type in port context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1126 ++#, python-format ++msgid "Could not set mls fields in port context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1130 ++#, python-format ++msgid "Could not set port context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1134 ++#, python-format ++msgid "Could not add port %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1150 ../semanage/seobject.py:1416 ++#: ../semanage/seobject.py:1663 ../semanage/seobject.py:1923 ++#: ../semanage/seobject.py:2125 ++msgid "Requires setype or serange" ++msgstr "" ++ ++#: ../semanage/seobject.py:1152 ../semanage/seobject.py:1418 ++#: ../semanage/seobject.py:1665 ++msgid "Requires setype" ++msgstr "" ++ ++#: ../semanage/seobject.py:1163 ../semanage/seobject.py:1229 ++#, python-format ++msgid "Port %s/%s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1167 ++#, python-format ++msgid "Could not query port %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1181 ++#, python-format ++msgid "Could not modify port %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1196 ++msgid "Could not list the ports" ++msgstr "" ++ ++#: ../semanage/seobject.py:1213 ++#, python-format ++msgid "Could not delete the port %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1235 ++#, python-format ++msgid "Port %s/%s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:1239 ++#, python-format ++msgid "Could not delete port %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1257 ../semanage/seobject.py:1277 ++msgid "Could not list ports" ++msgstr "" ++ ++#: ../semanage/seobject.py:1311 ../sepolicy/sepolicy/sepolicy.glade:2676 ++#: ../sepolicy/sepolicy/sepolicy.glade:2774 ++#: ../sepolicy/sepolicy/sepolicy.glade:4648 ++msgid "SELinux Port Type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1311 ++msgid "Proto" ++msgstr "" ++ ++#: ../semanage/seobject.py:1311 ../semanage/seobject.py:1801 ++#: ../sepolicy/sepolicy/sepolicy.glade:1413 ++msgid "Port Number" ++msgstr "" ++ ++#: ../semanage/seobject.py:1331 ++msgid "Subnet Prefix is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1341 ++msgid "Invalid Pkey" ++msgstr "" ++ ++#: ../semanage/seobject.py:1359 ../semanage/seobject.py:1421 ++#, python-format ++msgid "Type %s is invalid, must be a ibpkey type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1365 ../semanage/seobject.py:1427 ++#: ../semanage/seobject.py:1481 ../semanage/seobject.py:1487 ++#, python-format ++msgid "Could not check if ibpkey %s/%s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1367 ++#, python-format ++msgid "ibpkey %s/%s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1371 ++#, python-format ++msgid "Could not create ibpkey for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1381 ++#, python-format ++msgid "Could not set user in ibpkey context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1385 ++#, python-format ++msgid "Could not set role in ibpkey context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1389 ++#, python-format ++msgid "Could not set type in ibpkey context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1394 ++#, python-format ++msgid "Could not set mls fields in ibpkey context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1398 ++#, python-format ++msgid "Could not set ibpkey context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1402 ++#, python-format ++msgid "Could not add ibpkey %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1429 ../semanage/seobject.py:1483 ++#, python-format ++msgid "ibpkey %s/%s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1433 ++#, python-format ++msgid "Could not query ibpkey %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1444 ++#, python-format ++msgid "Could not modify ibpkey %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1457 ++msgid "Could not list the ibpkeys" ++msgstr "" ++ ++#: ../semanage/seobject.py:1472 ++#, python-format ++msgid "Could not delete the ibpkey %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1489 ++#, python-format ++msgid "ibpkey %s/%s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:1493 ++#, python-format ++msgid "Could not delete ibpkey %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1509 ../semanage/seobject.py:1530 ++msgid "Could not list ibpkeys" ++msgstr "" ++ ++#: ../semanage/seobject.py:1564 ++msgid "SELinux IB Pkey Type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1564 ++msgid "Subnet_Prefix" ++msgstr "" ++ ++#: ../semanage/seobject.py:1564 ++msgid "Pkey Number" ++msgstr "" ++ ++#: ../semanage/seobject.py:1584 ++msgid "IB device name is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1589 ++msgid "Invalid Port Number" ++msgstr "" ++ ++#: ../semanage/seobject.py:1593 ++#, python-format ++msgid "Could not create a key for ibendport %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1607 ../semanage/seobject.py:1668 ++#, python-format ++msgid "Type %s is invalid, must be an ibendport type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1612 ../semanage/seobject.py:1674 ++#: ../semanage/seobject.py:1726 ../semanage/seobject.py:1732 ++#, python-format ++msgid "Could not check if ibendport %s/%s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1614 ++#, python-format ++msgid "ibendport %s/%s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1618 ++#, python-format ++msgid "Could not create ibendport for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1628 ++#, python-format ++msgid "Could not set user in ibendport context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1632 ++#, python-format ++msgid "Could not set role in ibendport context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1636 ++#, python-format ++msgid "Could not set type in ibendport context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1641 ++#, python-format ++msgid "Could not set mls fields in ibendport context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1645 ++#, python-format ++msgid "Could not set ibendport context for %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1649 ++#, python-format ++msgid "Could not add ibendport %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1676 ../semanage/seobject.py:1728 ++#, python-format ++msgid "ibendport %s/%s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1680 ++#, python-format ++msgid "Could not query ibendport %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1691 ++#, python-format ++msgid "Could not modify ibendport %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1704 ++msgid "Could not list the ibendports" ++msgstr "" ++ ++#: ../semanage/seobject.py:1713 ++#, python-format ++msgid "Could not create a key for %s/%d" ++msgstr "" ++ ++#: ../semanage/seobject.py:1717 ++#, python-format ++msgid "Could not delete the ibendport %s/%d" ++msgstr "" ++ ++#: ../semanage/seobject.py:1734 ++#, python-format ++msgid "ibendport %s/%s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:1738 ++#, python-format ++msgid "Could not delete ibendport %s/%s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1754 ../semanage/seobject.py:1774 ++msgid "Could not list ibendports" ++msgstr "" ++ ++#: ../semanage/seobject.py:1801 ++msgid "SELinux IB End Port Type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1801 ++msgid "IB Device Name" ++msgstr "" ++ ++#: ../semanage/seobject.py:1825 ++msgid "Node Address is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1840 ++msgid "Unknown or missing protocol" ++msgstr "" ++ ++#: ../semanage/seobject.py:1854 ++msgid "SELinux node type is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:1857 ../semanage/seobject.py:1926 ++#, python-format ++msgid "Type %s is invalid, must be a node type" ++msgstr "" ++ ++#: ../semanage/seobject.py:1861 ../semanage/seobject.py:1930 ++#: ../semanage/seobject.py:1968 ../semanage/seobject.py:2066 ++#: ../semanage/seobject.py:2129 ../semanage/seobject.py:2165 ++#: ../semanage/seobject.py:2377 ++#, python-format ++msgid "Could not create key for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1863 ../semanage/seobject.py:1934 ++#: ../semanage/seobject.py:1972 ../semanage/seobject.py:1978 ++#, python-format ++msgid "Could not check if addr %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1867 ++#, python-format ++msgid "Addr %s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1871 ++#, python-format ++msgid "Could not create addr for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1877 ../semanage/seobject.py:2081 ++#: ../semanage/seobject.py:2333 ++#, python-format ++msgid "Could not create context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1881 ++#, python-format ++msgid "Could not set mask for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1885 ++#, python-format ++msgid "Could not set user in addr context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1889 ++#, python-format ++msgid "Could not set role in addr context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1893 ++#, python-format ++msgid "Could not set type in addr context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1898 ++#, python-format ++msgid "Could not set mls fields in addr context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1902 ++#, python-format ++msgid "Could not set addr context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1906 ++#, python-format ++msgid "Could not add addr %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1936 ../semanage/seobject.py:1974 ++#, python-format ++msgid "Addr %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:1940 ++#, python-format ++msgid "Could not query addr %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1950 ++#, python-format ++msgid "Could not modify addr %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1980 ++#, python-format ++msgid "Addr %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:1984 ++#, python-format ++msgid "Could not delete addr %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:1998 ++msgid "Could not deleteall node mappings" ++msgstr "" ++ ++#: ../semanage/seobject.py:2012 ++msgid "Could not list addrs" ++msgstr "" ++ ++#: ../semanage/seobject.py:2062 ../semanage/seobject.py:2370 ++msgid "SELinux Type is required" ++msgstr "" ++ ++#: ../semanage/seobject.py:2070 ../semanage/seobject.py:2133 ++#: ../semanage/seobject.py:2169 ../semanage/seobject.py:2175 ++#, python-format ++msgid "Could not check if interface %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2072 ++#, python-format ++msgid "Interface %s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2076 ++#, python-format ++msgid "Could not create interface for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2085 ++#, python-format ++msgid "Could not set user in interface context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2089 ++#, python-format ++msgid "Could not set role in interface context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2093 ++#, python-format ++msgid "Could not set type in interface context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2098 ++#, python-format ++msgid "Could not set mls fields in interface context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2102 ++#, python-format ++msgid "Could not set interface context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2106 ++#, python-format ++msgid "Could not set message context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2110 ++#, python-format ++msgid "Could not add interface %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2135 ../semanage/seobject.py:2171 ++#, python-format ++msgid "Interface %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2139 ++#, python-format ++msgid "Could not query interface %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2150 ++#, python-format ++msgid "Could not modify interface %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2177 ++#, python-format ++msgid "Interface %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:2181 ++#, python-format ++msgid "Could not delete interface %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2195 ++msgid "Could not delete all interface mappings" ++msgstr "" ++ ++#: ../semanage/seobject.py:2209 ++msgid "Could not list interfaces" ++msgstr "" ++ ++#: ../semanage/seobject.py:2231 ++msgid "SELinux Interface" ++msgstr "" ++ ++#: ../semanage/seobject.py:2231 ../semanage/seobject.py:2611 ++msgid "Context" ++msgstr "" ++ ++#: ../semanage/seobject.py:2299 ++#, python-format ++msgid "Target %s is not valid. Target is not allowed to end with '/'" ++msgstr "" ++ ++#: ../semanage/seobject.py:2302 ++#, python-format ++msgid "Substiture %s is not valid. Substitute is not allowed to end with '/'" ++msgstr "" ++ ++#: ../semanage/seobject.py:2305 ++#, python-format ++msgid "Equivalence class for %s already exists" ++msgstr "" ++ ++#: ../semanage/seobject.py:2311 ++#, python-format ++msgid "File spec %s conflicts with equivalency rule '%s %s'" ++msgstr "" ++ ++#: ../semanage/seobject.py:2322 ++#, python-format ++msgid "Equivalence class for %s does not exist" ++msgstr "" ++ ++#: ../semanage/seobject.py:2339 ++#, python-format ++msgid "Could not set user in file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2343 ++#, python-format ++msgid "Could not set role in file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2348 ../semanage/seobject.py:2406 ++#, python-format ++msgid "Could not set mls fields in file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2354 ++msgid "Invalid file specification" ++msgstr "" ++ ++#: ../semanage/seobject.py:2356 ++msgid "File specification can not include spaces" ++msgstr "" ++ ++#: ../semanage/seobject.py:2361 ++#, python-format ++msgid "" ++"File spec %s conflicts with equivalency rule '%s %s'; Try adding '%s' instead" ++msgstr "" ++ ++#: ../semanage/seobject.py:2373 ../semanage/seobject.py:2436 ++#, python-format ++msgid "Type %s is invalid, must be a file or device type" ++msgstr "" ++ ++#: ../semanage/seobject.py:2381 ../semanage/seobject.py:2386 ++#: ../semanage/seobject.py:2446 ../semanage/seobject.py:2540 ++#: ../semanage/seobject.py:2544 ++#, python-format ++msgid "Could not check if file context for %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2389 ++#, python-format ++msgid "File context for %s already defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2393 ++#, python-format ++msgid "Could not create file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2401 ++#, python-format ++msgid "Could not set type in file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2409 ../semanage/seobject.py:2476 ++#: ../semanage/seobject.py:2480 ++#, python-format ++msgid "Could not set file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2415 ++#, python-format ++msgid "Could not add file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2434 ++msgid "Requires setype, serange or seuser" ++msgstr "" ++ ++#: ../semanage/seobject.py:2450 ../semanage/seobject.py:2548 ++#, python-format ++msgid "File context for %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2458 ++#, python-format ++msgid "Could not query file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2484 ++#, python-format ++msgid "Could not modify file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2502 ++msgid "Could not list the file contexts" ++msgstr "" ++ ++#: ../semanage/seobject.py:2516 ++#, python-format ++msgid "Could not delete the file context %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2546 ++#, python-format ++msgid "File context for %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:2552 ++#, python-format ++msgid "Could not delete file context for %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2569 ++msgid "Could not list file contexts" ++msgstr "" ++ ++#: ../semanage/seobject.py:2573 ++msgid "Could not list file contexts for home directories" ++msgstr "" ++ ++#: ../semanage/seobject.py:2577 ++msgid "Could not list local file contexts" ++msgstr "" ++ ++#: ../semanage/seobject.py:2611 ++msgid "SELinux fcontext" ++msgstr "" ++ ++#: ../semanage/seobject.py:2624 ++msgid "" ++"\n" ++"SELinux Distribution fcontext Equivalence \n" ++msgstr "" ++ ++#: ../semanage/seobject.py:2629 ++msgid "" ++"\n" ++"SELinux Local fcontext Equivalence \n" ++msgstr "" ++ ++#: ../semanage/seobject.py:2667 ../semanage/seobject.py:2718 ++#: ../semanage/seobject.py:2724 ++#, python-format ++msgid "Could not check if boolean %s is defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2669 ../semanage/seobject.py:2720 ++#, python-format ++msgid "Boolean %s is not defined" ++msgstr "" ++ ++#: ../semanage/seobject.py:2673 ++#, python-format ++msgid "Could not query file context %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2678 ++#, python-format ++msgid "You must specify one of the following values: %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2683 ++#, python-format ++msgid "Could not set active value of boolean %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2686 ++#, python-format ++msgid "Could not modify boolean %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2702 ++#, python-format ++msgid "Bad format %s: Record %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2726 ++#, python-format ++msgid "Boolean %s is defined in policy, cannot be deleted" ++msgstr "" ++ ++#: ../semanage/seobject.py:2730 ++#, python-format ++msgid "Could not delete boolean %s" ++msgstr "" ++ ++#: ../semanage/seobject.py:2742 ../semanage/seobject.py:2759 ++msgid "Could not list booleans" ++msgstr "" ++ ++#: ../semanage/seobject.py:2792 ++msgid "off" ++msgstr "" ++ ++#: ../semanage/seobject.py:2792 ++msgid "on" ++msgstr "" ++ ++#: ../semanage/seobject.py:2804 ++msgid "SELinux boolean" ++msgstr "" ++ ++#: ../semanage/seobject.py:2804 ++msgid "State" ++msgstr "" ++ ++#: ../semanage/seobject.py:2804 ++msgid "Default" ++msgstr "" ++ ++#: ../semanage/seobject.py:2804 ../sepolicy/sepolicy/sepolicy.glade:2148 ++#: ../sepolicy/sepolicy/sepolicy.glade:2518 ++#: ../sepolicy/sepolicy/sepolicy.glade:5117 ++msgid "Description" ++msgstr "" ++ ++#: ../sepolgen/src/sepolgen/interfaces.py:486 ++msgid "Found circular interface class" ++msgstr "" ++ ++#: ../sepolgen/src/sepolgen/interfaces.py:491 ++#, python-format ++msgid "Missing interface definition for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:141 ++msgid "Standard Init Daemon" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:142 ++msgid "DBUS System Daemon" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:143 ++msgid "Internet Services Daemon" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:144 ++msgid "Web Application/Script (CGI)" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:145 ++msgid "Sandbox" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:146 ++msgid "User Application" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:147 ++msgid "Existing Domain Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:148 ++msgid "Minimal Terminal Login User Role" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:149 ++msgid "Minimal X Windows Login User Role" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:150 ++msgid "Desktop Login User Role" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:151 ++msgid "Administrator Login User Role" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:152 ++msgid "Confined Root Administrator Role" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:153 ++msgid "Module information for a new type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:159 ++msgid "Valid Types:\n" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:194 ++#, python-format ++msgid "Ports must be numbers or ranges of numbers from 1 to %d " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:206 ++msgid "You must enter a valid policy type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:209 ++#, python-format ++msgid "You must enter a name for your policy module for your '%s'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:347 ++msgid "" ++"Name must be alpha numberic with no spaces. Consider using option \"-n " ++"MODULENAME\"" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:439 ++msgid "User Role types can not be assigned executables." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:445 ++msgid "Only Daemon apps can use an init script.." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:463 ++msgid "use_resolve must be a boolean value " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:469 ++msgid "use_syslog must be a boolean value " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:475 ++msgid "use_kerberos must be a boolean value " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:481 ++msgid "manage_krb5_rcache must be a boolean value " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:511 ++msgid "USER Types automatically get a tmp type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:848 ++#, python-format ++msgid "'%s' policy modules require existing domains" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:873 ++msgid "Type field required" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:886 ++#, python-format ++msgid "" ++"You need to define a new type which ends with: \n" ++" %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1114 ++msgid "You must enter the executable path for your confined process" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1381 ++msgid "Type Enforcement file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1382 ++msgid "Interface file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1383 ++msgid "File Contexts file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1386 ++msgid "Spec file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/generate.py:1387 ++msgid "Setup Script" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:68 ../sepolicy/sepolicy/sepolicy.glade:3742 ++#: ../sepolicy/sepolicy/sepolicy.glade:3844 ++#: ../sepolicy/sepolicy/sepolicy.glade:3907 ++#: ../sepolicy/sepolicy/sepolicy.glade:3970 ++msgid "No" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:68 ../sepolicy/sepolicy/sepolicy.glade:3725 ++#: ../sepolicy/sepolicy/sepolicy.glade:3826 ++#: ../sepolicy/sepolicy/sepolicy.glade:3890 ++#: ../sepolicy/sepolicy/sepolicy.glade:3953 ++msgid "Yes" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:69 ++msgid "Disable" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:69 ++msgid "Enable" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:82 ../sepolicy/sepolicy/sepolicy.glade:726 ++#: ../sepolicy/sepolicy/sepolicy.glade:1467 ++#: ../sepolicy/sepolicy/sepolicy.glade:3511 ++msgid "Advanced >>" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:82 ++msgid "Advanced <<" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:83 ../sepolicy/sepolicy/sepolicy.glade:80 ++msgid "Advanced Search >>" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:83 ++msgid "Advanced Search <<" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:108 ++msgid "" ++"\n" ++"To change from Disabled to Enforcing mode\n" ++"- Change the system mode from Disabled to Permissive\n" ++"- Reboot, so that the system can relabel\n" ++"- Once the system is working as planned\n" ++" * Change the system mode to Enforcing\n" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:503 ++#, python-format ++msgid "%s is not a valid domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:652 ++msgid "System Status: Disabled" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:750 ++msgid "Help: Start Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:754 ++msgid "Help: Booleans Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:760 ++msgid "Help: Executable Files Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:763 ++msgid "Help: Writable Files Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:766 ++msgid "Help: Application Types Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:771 ++msgid "Help: Outbound Network Connections Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:774 ++msgid "Help: Inbound Network Connections Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:780 ++msgid "Help: Transition from application Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:783 ++msgid "Help: Transition into application Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:786 ++msgid "Help: Transition application file Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:790 ++msgid "Help: Systems Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:794 ++msgid "Help: Lockdown Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:798 ++msgid "Help: Login Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:802 ++msgid "Help: SELinux User Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:806 ++msgid "Help: File Equivalence Page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:951 ../sepolicy/sepolicy/gui.py:1242 ++#: ../sepolicy/sepolicy/gui.py:1682 ../sepolicy/sepolicy/gui.py:1929 ++#: ../sepolicy/sepolicy/gui.py:2717 ++msgid "More..." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1059 ++#, python-format ++msgid "File path used to enter the '%s' domain." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1060 ++#, python-format ++msgid "Files to which the '%s' domain can write." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1061 ++#, python-format ++msgid "Network Ports to which the '%s' is allowed to connect." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1062 ++#, python-format ++msgid "Network Ports to which the '%s' is allowed to listen." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1063 ++#, python-format ++msgid "File Types defined for the '%s'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1064 ++#, python-format ++msgid "" ++"Display boolean information that can be used to modify the policy for the " ++"'%s'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1065 ++#, python-format ++msgid "Display file type information that can be used by the '%s'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1066 ++#, python-format ++msgid "Display network ports to which the '%s' can connect or listen to." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1067 ++#, python-format ++msgid "Application Transitions Into '%s'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1068 ++#, python-format ++msgid "Application Transitions From '%s'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1069 ++#, python-format ++msgid "File Transitions From '%s'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1070 ++#, python-format ++msgid "" ++"Executables which will transition to '%s', when executing selected domains " ++"entrypoint." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1071 ++#, python-format ++msgid "" ++"Executables which will transition to a different domain, when '%s' executes " ++"them." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1072 ++#, python-format ++msgid "Files by '%s' with transitions to a different label." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1073 ++#, python-format ++msgid "Display applications that can transition into or out of the '%s'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1167 ../sepolicy/sepolicy/__init__.py:74 ++msgid "all files" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1181 ++msgid "MISSING FILE PATH" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1296 ++#, python-format ++msgid "To disable this transition, go to the %sBoolean section%s." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1298 ++#, python-format ++msgid "To enable this transition, go to the %sBoolean section%s." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1355 ++msgid "executable" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1358 ++msgid "writable" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1361 ++msgid "application" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1362 ++#, python-format ++msgid "Add new %(TYPE)s file path for '%(DOMAIN)s' domains." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1363 ++#, python-format ++msgid "Delete %(TYPE)s file paths for '%(DOMAIN)s' domain." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1364 ++#, python-format ++msgid "" ++"Modify %(TYPE)s file path for '%(DOMAIN)s' domain. Only bolded items in the " ++"list can be selected, this indicates they were modified previously." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1376 ++msgid "connect" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1379 ++msgid "listen for inbound connections" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1381 ++#, python-format ++msgid "" ++"Add new port definition to which the '%(APP)s' domain is allowed to %(PERM)s." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1382 ++#, python-format ++msgid "" ++"Delete modified port definitions to which the '%(APP)s' domain is allowed to " ++"%(PERM)s." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1383 ++#, python-format ++msgid "" ++"Modify port definitions to which the '%(APP)s' domain is allowed to %(PERM)s." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1412 ++msgid "Add new SELinux User/Role definition." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1413 ++msgid "Delete modified SELinux User/Role definitions." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1414 ++msgid "Modify selected modified SELinux User/Role definitions." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1421 ++msgid "Add new Login Mapping definition." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1422 ++msgid "Delete modified Login Mapping definitions." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1423 ++msgid "Modify selected modified Login Mapping definitions." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1430 ++msgid "Add new File Equivalence definition." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1431 ++msgid "Delete modified File Equivalence definitions." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1432 ++msgid "" ++"Modify selected modified File Equivalence definitions. Only bolded items in " ++"the list can be selected, this indicates they were modified previously." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1460 ++#, python-format ++msgid "Boolean %s Allow Rules" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1473 ++#, python-format ++msgid "Add Network Port for %s. Ports will be created when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1474 ++#, python-format ++msgid "Add Network Port for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1479 ++#, python-format ++msgid "" ++"Add File Labeling for %s. File labels will be created when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1480 ../sepolicy/sepolicy/gui.py:1533 ++#, python-format ++msgid "Add File Labeling for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1490 ++msgid "Add Login Mapping. User Mapping will be created when Update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1491 ++msgid "Add Login Mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1496 ++msgid "" ++"Add SELinux User Role. SELinux user roles will be created when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1497 ++msgid "Add SELinux Users" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1504 ++msgid "" ++"Add File Equivalency Mapping. Mapping will be created when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1505 ++msgid "Add SELinux File Equivalency" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1532 ++#, python-format ++msgid "" ++"Modify File Labeling for %s. File labels will be created when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1588 ++msgid "" ++"Modify SELinux User Role. SELinux user roles will be modified when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1589 ++msgid "Modify SELinux Users" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1597 ++msgid "" ++"Modify Login Mapping. Login Mapping will be modified when Update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1598 ++msgid "Modify Login Mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1604 ++msgid "" ++"Modify File Equivalency Mapping. Mapping will be created when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1605 ++msgid "Modify SELinux File Equivalency" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1690 ++#, python-format ++msgid "" ++"Modify Network Port for %s. Ports will be created when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1691 ++#, python-format ++msgid "Modify Network Port for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1910 ++#, python-format ++msgid "The entry '%s' is not a valid path. Paths must begin with a '/'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:1923 ++msgid "Port number must be between 1 and 65536" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2203 ++#, python-format ++msgid "SELinux name: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2214 ++#, python-format ++msgid "Add file labeling for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2216 ++#, python-format ++msgid "Delete file labeling for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2218 ++#, python-format ++msgid "Modify file labeling for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2222 ++#, python-format ++msgid "File path: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2225 ++#, python-format ++msgid "File class: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2228 ../sepolicy/sepolicy/gui.py:2252 ++#, python-format ++msgid "SELinux file type: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2237 ++#, python-format ++msgid "Add ports for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2239 ++#, python-format ++msgid "Delete ports for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2241 ++#, python-format ++msgid "Modify ports for %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2244 ++#, python-format ++msgid "Network ports: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2247 ++#, python-format ++msgid "Network protocol: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2261 ++msgid "Add user" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2263 ++msgid "Delete user" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2265 ++msgid "Modify user" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2268 ++#, python-format ++msgid "SELinux User : %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2273 ++#, python-format ++msgid "Roles: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2277 ../sepolicy/sepolicy/gui.py:2302 ++#, python-format ++msgid "MLS/MCS Range: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2286 ++msgid "Add login mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2288 ++msgid "Delete login mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2290 ++msgid "Modify login mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2294 ++#, python-format ++msgid "Login Name : %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2298 ++#, python-format ++msgid "SELinux User: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2311 ++msgid "Add file equiv labeling." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2313 ++msgid "Delete file equiv labeling." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2315 ++msgid "Modify file equiv labeling." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2319 ++#, python-format ++msgid "File path : %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2323 ++#, python-format ++msgid "Equivalence: %s" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2354 ../sepolicy/sepolicy/sepolicy.glade:129 ++#: ../sepolicy/sepolicy/sepolicy.glade:1898 ++#: ../sepolicy/sepolicy/sepolicy.glade:3803 ++msgid "System" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2363 ../sepolicy/sepolicy/sepolicy.glade:95 ++msgid "File Equivalence" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2373 ../sepolicy/sepolicy/sepolicy.glade:112 ++msgid "Users" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2426 ++#, python-format ++msgid "" ++"Run restorecon on %(PATH)s to change its type from %(CUR_CONTEXT)s to the " ++"default %(DEF_CONTEXT)s?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2436 ../sepolicy/sepolicy/sepolicy.glade:4226 ++msgid "Update" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2438 ++msgid "Update Changes" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2440 ++msgid "Revert Changes" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2571 ++msgid "System Status: Enforcing" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2574 ++msgid "System Status: Permissive" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2638 ++msgid "" ++"Changing the policy type will cause a relabel of the entire file system on " ++"the next boot. Relabeling takes a long time depending on the size of the " ++"file system. Do you wish to continue?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2768 ++msgid "" ++"Changing to SELinux disabled requires a reboot. It is not recommended. If " ++"you later decide to turn SELinux back on, the system will be required to " ++"relabel. If you just want to see if SELinux is causing a problem on your " ++"system, you can go to permissive mode which will only log errors and not " ++"enforce SELinux policy. Permissive mode does not require a reboot. Do you " ++"wish to continue?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2772 ++msgid "" ++"Changing to SELinux enabled will cause a relabel of the entire file system " ++"on the next boot. Relabeling takes a long time depending on the size of the " ++"file system. Do you wish to continue?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2802 ++msgid "" ++"You are attempting to close the application without applying your changes.\n" ++" * To apply changes you have made during this session, click No and " ++"click Update.\n" ++" * To leave the application without applying your changes, click Yes. " ++"All changes that you have made during this session will be lost." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/gui.py:2802 ++msgid "Loss of data Dialog" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:75 ++msgid "regular file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:76 ++msgid "directory" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:77 ++msgid "character device" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:78 ++msgid "block device" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:79 ++msgid "socket file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:80 ++msgid "symbolic link" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:81 ++msgid "named pipe" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:130 ++msgid "No SELinux Policy installed" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:157 ++#, python-format ++msgid "Failed to read %s policy file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:418 ++#, python-format ++msgid "-- Allowed %s [ %s ]" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:831 ++msgid "You must regenerate interface info by running /usr/bin/sepolgen-ifgen" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/__init__.py:1150 ++msgid "unknown" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/interface.py:223 ++#, python-format ++msgid "Compiling %s interface" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/interface.py:231 ++#, python-format ++msgid "" ++"\n" ++"Compile test for %s failed.\n" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/interface.py:234 ++#, python-format ++msgid "" ++"\n" ++"Compile test for %s has not run. %s\n" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/interface.py:240 ++#, python-format ++msgid "" ++"\n" ++"Compiling of %s interface is not supported." ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:227 ++#, python-format ++msgid "Interface %s does not exist." ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:324 ++msgid "You need to install policycoreutils-gui package to use the gui option" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:329 ++msgid "Graphical User Interface for SELinux Policy" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:332 ../sepolicy/sepolicy.py:380 ++msgid "Domain name(s) of man pages to be created" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:345 ++msgid "Alternative root needs to be setup" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:362 ++msgid "Generate SELinux man pages" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:365 ++msgid "path in which the generated SELinux man pages will be stored" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:367 ++msgid "name of the OS for man pages" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:369 ++msgid "Generate HTML man pages structure for selected SELinux man page" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:371 ++msgid "Alternate root directory, defaults to /" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:373 ++msgid "" ++"With this flag, alternative root path needs to include file context files " ++"and policy.xml file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:377 ++msgid "All domains" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:386 ++msgid "Query SELinux policy network information" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:391 ++msgid "list all SELinux port types" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:394 ++msgid "show SELinux type related to the port" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:397 ++msgid "Show ports defined for this SELinux type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:400 ++msgid "show ports to which this domain can bind and/or connect" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:403 ++msgid "show ports to which this application can bind and/or connect" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:420 ++msgid "query SELinux policy to see if domains can communicate with each other" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:423 ++msgid "Source Domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:426 ++msgid "Target Domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:447 ++msgid "query SELinux Policy to see description of booleans" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:451 ++msgid "get all booleans descriptions" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:454 ++msgid "boolean to get description" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:466 ++msgid "" ++"query SELinux Policy to see how a source process domain can transition to " ++"the target process domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:469 ++msgid "source process domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:472 ++msgid "target process domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:517 ++#, python-format ++msgid "sepolicy generate: error: one of the arguments %s is required" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:522 ++msgid "Command required for this type of policy" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:533 ++#, python-format ++msgid "" ++"-t option can not be used with '%s' domains. Read usage for more details." ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:538 ++#, python-format ++msgid "" ++"-d option can not be used with '%s' domains. Read usage for more details." ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:542 ++#, python-format ++msgid "" ++"-a option can not be used with '%s' domains. Read usage for more details." ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:546 ++msgid "-w option can not be used with the --newtype option" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:567 ++msgid "List SELinux Policy interfaces" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:587 ++msgid "Enter interface names, you wish to query" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:597 ++msgid "Generate SELinux Policy module template" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:600 ++msgid "Enter domain type which you will be extending" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:603 ++msgid "Enter SELinux user(s) which will transition to this domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:606 ++msgid "Enter SELinux role(s) to which the administror domain will transition" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:609 ++msgid "Enter domain(s) which this confined admin will administrate" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:612 ++msgid "name of policy to generate" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:619 ++msgid "path in which the generated policy files will be stored" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:621 ++msgid "path to which the confined processes will need to write" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:622 ++msgid "Policy types which require a command" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:626 ../sepolicy/sepolicy.py:629 ++#: ../sepolicy/sepolicy.py:632 ../sepolicy/sepolicy.py:635 ++#: ../sepolicy/sepolicy.py:638 ../sepolicy/sepolicy.py:644 ++#: ../sepolicy/sepolicy.py:647 ../sepolicy/sepolicy.py:650 ++#: ../sepolicy/sepolicy.py:656 ../sepolicy/sepolicy.py:659 ++#: ../sepolicy/sepolicy.py:662 ../sepolicy/sepolicy.py:665 ++#, python-format ++msgid "Generate '%s' policy" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:653 ++#, python-format ++msgid "Generate '%s' policy " ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:667 ++msgid "executable to confine" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:672 ++msgid "commands" ++msgstr "" ++ ++#: ../sepolicy/sepolicy.py:675 ++msgid "Alternate SELinux policy, defaults to /sys/fs/selinux/policy" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:25 ++#: ../sepolicy/sepolicy/sepolicy.glade:4330 ++msgid "Applications" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:52 ++msgid "Select domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:189 ++#: ../sepolicy/sepolicy/sepolicy.glade:4367 ++#: ../sepolicy/sepolicy/sepolicy.glade:4460 ++#: ../sepolicy/sepolicy/sepolicy.glade:4606 ++#: ../sepolicy/sepolicy/sepolicy.glade:4755 ++#: ../sepolicy/sepolicy/sepolicy.glade:4889 ++#: ../sepolicy/sepolicy/sepolicy.glade:5030 ++#: ../sepolicy/sepolicy/sepolicy.glade:5103 ++#: ../sepolicy/sepolicy/sepolicy.glade:5238 ++msgid "Select" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:204 ++#: ../sepolicy/sepolicy/sepolicy.glade:539 ++#: ../sepolicy/sepolicy/sepolicy.glade:684 ++#: ../sepolicy/sepolicy/sepolicy.glade:1239 ++#: ../sepolicy/sepolicy/sepolicy.glade:1535 ++#: ../sepolicy/sepolicy/sepolicy.glade:4540 ++#: ../sepolicy/sepolicy/sepolicy.glade:4690 ++#: ../sepolicy/sepolicy/sepolicy.glade:4821 ++#: ../sepolicy/sepolicy/sepolicy.glade:4955 ++#: ../sepolicy/sepolicy/sepolicy.glade:5173 ++#: ../sepolicy/sepolicy/sepolicy.glade:5304 ++#: ../sepolicy/sepolicy/sepolicy.glade:5464 ++msgid "Cancel" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:332 ++msgid "" ++"The entry that was entered is incorrect. Please try again in the " ++"ex:/.../... format." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:358 ++msgid "Retry" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:442 ++#: ../sepolicy/sepolicy/sepolicy.glade:1120 ++#: ../sepolicy/sepolicy/sepolicy.glade:1368 ++#: ../sepolicy/sepolicy/sepolicy.glade:5332 ++msgid "Network Port Definitions" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:458 ++msgid "" ++"Add file Equivalence Mapping. Mapping will be created when Update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:483 ++#: ../sepolicy/sepolicy/sepolicy.glade:4046 ++msgid "Path" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:493 ++#: ../sepolicy/sepolicy/sepolicy.glade:5384 ++msgid "" ++"Specify a new SELinux user name. By convention SELinux User names usually " ++"end in an _u." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:497 ++msgid "Enter the path to which you want to setup an equivalence label." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:510 ++#: ../sepolicy/sepolicy/sepolicy.glade:4063 ++#: ../sepolicy/sepolicy/sepolicy.glade:4781 ++msgid "Equivalence Path" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:524 ++#: ../sepolicy/sepolicy/sepolicy.glade:669 ++#: ../sepolicy/sepolicy/sepolicy.glade:1224 ++#: ../sepolicy/sepolicy/sepolicy.glade:1520 ++#: ../sepolicy/sepolicy/sepolicy.glade:5449 ++msgid "Save to update" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:564 ++msgid "" ++"Specify the mapping between the new path and the equivalence path. " ++"Everything under this new path will be labeled as if they were under the " ++"equivalence path." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:621 ++msgid "Add a file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:638 ++msgid "" ++" File Labeling for . File labels will be created " ++"when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:711 ++#: ../sepolicy/sepolicy/sepolicy.glade:1485 ++msgid "MLS" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:747 ++#: ../sepolicy/sepolicy/sepolicy.glade:2306 ++#: ../sepolicy/sepolicy/sepolicy.glade:2418 ++#: ../sepolicy/sepolicy/sepolicy.glade:2540 ++#: ../sepolicy/sepolicy/sepolicy.glade:4500 ++msgid "Class" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:763 ++msgid "Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:777 ++msgid "" ++"Select the file class to which this label will be applied. Defaults to all " ++"classes." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:804 ++msgid "Make Path Recursive" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:808 ++msgid "" ++"Select Make Path Recursive if you want to apply this label to all children " ++"of the specified directory path. objects under the directory to have this " ++"label." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:821 ++msgid "Browse" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:825 ++msgid "Browse to select the file/directory for labeling." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:869 ++msgid "Path " ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:880 ++msgid "" ++"Specify the path using regular expressions that you would like to modify the " ++"labeling." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:902 ++msgid "Select the SELinux file type to assign to this path." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:929 ++msgid "Enter the MLS Label to assign to this file path." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:933 ++msgid "SELinux MLS Label you wish to assign to this path." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1070 ++msgid "Analyzing Policy..." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1137 ++msgid "" ++"Add Login Mapping. Login Mapping will be created when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1172 ++msgid "" ++"Enter the login user name of the user to which you wish to add SELinux User " ++"confinement." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1201 ++msgid "" ++"Select the SELinux User to assign to this login user. Login users by " ++"default get assigned by the __default__ user." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1264 ++msgid "" ++"Enter MLS/MCS Range for this login User. Defaults to the range for the " ++"Selected SELinux User." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1267 ++#: ../sepolicy/sepolicy/sepolicy.glade:3192 ++#: ../sepolicy/sepolicy/sepolicy.glade:3313 ++#: ../sepolicy/sepolicy/sepolicy.glade:5414 ++msgid "MLS Range" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1279 ++msgid "" ++"Specify the MLS Range for this user to login in with. Defaults to the " ++"selected SELinux Users MLS Range." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1385 ++msgid "" ++" Network Port for . Ports will be created when " ++"update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1423 ++msgid "Enter the port number or range to which you want to add a port type." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1439 ++#: ../sepolicy/sepolicy/sepolicy.glade:2658 ++#: ../sepolicy/sepolicy/sepolicy.glade:2756 ++#: ../sepolicy/sepolicy/sepolicy.glade:4633 ++msgid "Protocol" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1453 ++msgid "Port Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1498 ++msgid "Select the port type you want to assign to the specified port number." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1562 ++msgid "tcp" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1566 ++msgid "" ++"Select tcp if the port type should be assigned to tcp port numbers." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1579 ++msgid "udp" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1583 ++msgid "" ++"Select udp if the port type should be assigned to udp port numbers." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1605 ++msgid "Enter the MLS Label to assign to this port." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1707 ++msgid "SELinux Configuration" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1743 ++msgid "Select..." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1792 ++#: ../sepolicy/sepolicy/sepolicy.glade:2212 ++msgid "Booleans" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1796 ++msgid "" ++"Display boolean information that can be used to modify the policy for the " ++"'selected domain'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1810 ++#: ../sepolicy/sepolicy/sepolicy.glade:2597 ++msgid "Files" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1814 ++msgid "" ++"Display file type information that can be used by the 'selected domain'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1828 ++#: ../sepolicy/sepolicy/sepolicy.glade:2830 ++msgid "Network" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1832 ++msgid "" ++"Display network ports to which the 'selected domain' can connect or listen " ++"to." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1846 ++#: ../sepolicy/sepolicy/sepolicy.glade:3121 ++msgid "Transitions" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1850 ++msgid "" ++"Display applications that can transition into or out of the 'selected " ++"domain'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1864 ++#: ../sepolicy/sepolicy/sepolicy.glade:3222 ++msgid "Login Mapping" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1867 ++#: ../sepolicy/sepolicy/sepolicy.glade:1884 ++#: ../sepolicy/sepolicy/sepolicy.glade:1901 ++msgid "Manage the SELinux configuration" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1881 ++#: ../sepolicy/sepolicy/sepolicy.glade:3344 ++msgid "SELinux Users" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1915 ++#: ../sepolicy/sepolicy/sepolicy.glade:4016 ++msgid "Lockdown" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1918 ++msgid "" ++"Lockdown the SELinux System.\n" ++"This screen can be used to turn up the SELinux Protections." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1933 ++msgid "radiobutton" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:1993 ++msgid "Filter" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2021 ++msgid "Show Modified Only" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2060 ++msgid "Mislabeled files exist" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2080 ++msgid "Show mislabeled files only" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2120 ++#: ../sepolicy/sepolicy/sepolicy.glade:3244 ++msgid "" ++"If-Then-Else rules written in policy that can\n" ++"allow alternative access control." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2132 ++msgid "Enabled" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2183 ++msgid "Name" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2252 ++#: ../sepolicy/sepolicy/sepolicy.glade:2364 ++#: ../sepolicy/sepolicy/sepolicy.glade:2482 ++#: ../sepolicy/sepolicy/sepolicy.glade:4473 ++#: ../sepolicy/sepolicy/sepolicy.glade:4768 ++msgid "File Path" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2288 ++#: ../sepolicy/sepolicy/sepolicy.glade:2399 ++msgid "SELinux File Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2332 ++msgid "File path used to enter the 'selected domain'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2333 ++msgid "Executable Files" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2448 ++msgid "Files to which the 'selected domain' can write." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2449 ++msgid "Writable files" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2571 ++msgid "File Types defined for the 'selected domain'." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2572 ++msgid "Application File Types" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2639 ++#: ../sepolicy/sepolicy/sepolicy.glade:2738 ++#: ../sepolicy/sepolicy/sepolicy.glade:4619 ++msgid "Port" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2704 ++msgid "Network Ports to which the 'selected domain' is allowed to connect." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2705 ++msgid "Outbound" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2804 ++msgid "Network Ports to which the 'selected domain' is allowed to listen." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2805 ++msgid "Inbound" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2866 ++#: ../sepolicy/sepolicy/sepolicy.glade:2956 ++msgid "" ++"Boolean\n" ++"Enabled" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2892 ++msgid "Boolean name" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2909 ++msgid "SELinux Application Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2930 ++msgid "" ++"Executables which will transition to a different domain, when the 'selected " ++"domain' executes them." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2933 ++msgid "Application Transitions From 'select domain'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2972 ++msgid "Calling Process Domain" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:2988 ++msgid "Executable File" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3012 ++msgid "" ++"Executables which will transition to the 'selected domain', when executing a " ++"selected domains entrypoint." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3013 ++msgid "Application Transitions Into 'select domain'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3028 ++msgid "" ++"File Transitions define what happens when the current domain creates the " ++"content of a particular class in a directory of the destination type. " ++"Optionally a file name could be specified for the transition." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3036 ++msgid "SELinux Directory Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3049 ++msgid "Destination Class" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3063 ++msgid "SELinux Destination Type" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3076 ++msgid "File Name" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3098 ++msgid "File Transitions From 'select domain'" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3297 ++#: ../sepolicy/sepolicy/sepolicy.glade:5508 ++msgid "Default Level" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3383 ++msgid "Select the system mode when the system first boots up" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3395 ++#: ../sepolicy/sepolicy/sepolicy.glade:3469 ++msgid "Enforcing" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3414 ++#: ../sepolicy/sepolicy/sepolicy.glade:3487 ++msgid "Permissive" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3456 ++msgid "Select the system mode for the current session" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3533 ++msgid "System Policy Type:" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3594 ++msgid "System Mode" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3632 ++msgid "Import system settings from another machine" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3640 ++msgid "Import" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3659 ++msgid "Export system settings to a file" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3669 ++msgid "Export" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3688 ++msgid "Relabel all files back to system defaults on reboot" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3783 ++msgid "System Configuration" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3830 ++#: ../sepolicy/sepolicy/sepolicy.glade:3848 ++msgid "" ++"An unconfined domain is a process label that allows the process to do what " ++"it wants, without SELinux interfering. Applications started at boot by the " ++"init system that SELinux do not have defined SELinux policy will run as " ++"unconfined if this module is enabled. Disabling it means all daemons will " ++"now be confined. To disable the unconfined_t user you must first remove " ++"unconfined_t from the users/login screens." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3866 ++msgid "Disable ability to run unconfined system processes?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3894 ++#: ../sepolicy/sepolicy/sepolicy.glade:3911 ++#: ../sepolicy/sepolicy/sepolicy.glade:3957 ++#: ../sepolicy/sepolicy/sepolicy.glade:3974 ++msgid "" ++"A permissive domain is a process label that allows the process to do what it " ++"wants, with SELinux only logging the denials, but not enforcing them. " ++"Usually permissive domains indicate experimental policy, disabling the " ++"module could cause SELinux to deny access to a domain, that should be " ++"allowed." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3929 ++msgid "Disable all permissive processes?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:3995 ++msgid "Deny all processes from ptracing or debugging other processes?" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4032 ++msgid "" ++"File equivalence cause the system to label content under the new path as if " ++"it were under the equivalence path." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4088 ++msgid "Files Equivalence" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4101 ++msgid "...SELECT TO VIEW DATA..." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4132 ++msgid "Delete" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4148 ++msgid "Modify" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4163 ++msgid "Add" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4209 ++msgid "Revert" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4214 ++msgid "" ++"Revert button will launch a dialog window which allows you to revert changes " ++"within the current transaction." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4231 ++msgid "Commit all changes in your current transaction to the server." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4279 ++msgid "Applications - Advanced Search" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4344 ++msgid "Process Types" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4385 ++msgid "More Details" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4421 ++#: ../sepolicy/sepolicy/sepolicy.glade:4715 ++msgid "Delete Modified File Labeling" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4439 ++msgid "" ++"Select file labeling to delete. File labeling will be deleted when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4486 ++msgid "SELinux File Label" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4525 ++#: ../sepolicy/sepolicy/sepolicy.glade:4675 ++#: ../sepolicy/sepolicy/sepolicy.glade:4806 ++#: ../sepolicy/sepolicy/sepolicy.glade:4940 ++#: ../sepolicy/sepolicy/sepolicy.glade:5289 ++msgid "Save to Update" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4565 ++msgid "Delete Modified Ports" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4583 ++msgid "Select ports to delete. Ports will be deleted when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4733 ++msgid "" ++"Select file equivalence labeling to delete. File equivalence labeling will " ++"be deleted when update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4849 ++#: ../sepolicy/sepolicy/sepolicy.glade:5198 ++msgid "Delete Modified Users Mapping." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4867 ++msgid "" ++"Select login user mapping to delete. Login user mapping will be deleted when " ++"update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4902 ++msgid "Login name" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:4983 ++msgid "More Types" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5010 ++msgid "Types" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5069 ++msgid "" ++"Review the updates you have made before committing them to the system. To " ++"reset an item, uncheck the checkbox. All items checked will be updated in " ++"the system when you select update." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5132 ++msgid "Action" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5158 ++msgid "Apply" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5216 ++msgid "" ++"Select users mapping to delete.Users mapping will be deleted when update is " ++"applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5264 ++msgid "SELinux Username" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5349 ++msgid "" ++"Add User Roles. SELinux User Roles will be created when Update is applied." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5374 ++msgid "SELinux User Name" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5489 ++msgid "" ++"Enter MLS/MCS Range for this SELinux User.\n" ++"s0-s0:c1023" ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5520 ++msgid "" ++"Specify the default level that you would like this SELinux user to login " ++"with. Defaults to s0." ++msgstr "" ++ ++#: ../sepolicy/sepolicy/sepolicy.glade:5524 ++msgid "Enter Default Level for SELinux User to login with. Default s0" ++msgstr "" +diff --git a/sandbox/po/sandbox.pot b/sandbox/po/sandbox.pot +new file mode 100644 +index 000000000000..328b4f0159d3 +--- /dev/null ++++ b/sandbox/po/sandbox.pot +@@ -0,0 +1,157 @@ ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR , YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2018-08-06 14:22+0200\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME \n" ++"Language-Team: LANGUAGE \n" ++"Language: \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=CHARSET\n" ++"Content-Transfer-Encoding: 8bit\n" ++ ++#: ../sandbox:119 ++#, python-format ++msgid "Do you want to save changes to '%s' (Y/N): " ++msgstr "" ++ ++#: ../sandbox:120 ++msgid "Sandbox Message" ++msgstr "" ++ ++#: ../sandbox:132 ++#, python-format ++msgid "Do you want to save changes to '%s' (y/N): " ++msgstr "" ++ ++#: ../sandbox:133 ++msgid "[yY]" ++msgstr "" ++ ++#: ../sandbox:156 ++msgid "User account must be setup with an MCS Range" ++msgstr "" ++ ++#: ../sandbox:184 ++msgid "" ++"Failed to find any unused category sets. Consider a larger MCS range for " ++"this user." ++msgstr "" ++ ++#: ../sandbox:215 ++msgid "Homedir and tempdir required for level mounts" ++msgstr "" ++ ++#: ../sandbox:218 ../sandbox:229 ../sandbox:234 ++#, python-format ++msgid "" ++"\n" ++"%s is required for the action you want to perform.\n" ++msgstr "" ++ ++#: ../sandbox:305 ++#, python-format ++msgid "" ++"\n" ++"Policy defines the following types for use with the -t:\n" ++"\t%s\n" ++msgstr "" ++ ++#: ../sandbox:312 ++#, python-format ++msgid "" ++"\n" ++"sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I " ++"includefile ] [-W windowmanager ] [ -w windowsize ] [[-i file ] ...] [ -t " ++"type ] command\n" ++"\n" ++"sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I " ++"includefile ] [-W windowmanager ] [ -w windowsize ] [[-i file ] ...] [ -t " ++"type ] -S\n" ++"%s\n" ++msgstr "" ++ ++#: ../sandbox:324 ++msgid "include file in sandbox" ++msgstr "" ++ ++#: ../sandbox:327 ++msgid "read list of files to include in sandbox from INCLUDEFILE" ++msgstr "" ++ ++#: ../sandbox:329 ++msgid "run sandbox with SELinux type" ++msgstr "" ++ ++#: ../sandbox:332 ++msgid "mount new home and/or tmp directory" ++msgstr "" ++ ++#: ../sandbox:336 ++msgid "dots per inch for X display" ++msgstr "" ++ ++#: ../sandbox:339 ++msgid "run complete desktop session within sandbox" ++msgstr "" ++ ++#: ../sandbox:342 ++msgid "Shred content before tempory directories are removed" ++msgstr "" ++ ++#: ../sandbox:346 ++msgid "run X application within a sandbox" ++msgstr "" ++ ++#: ../sandbox:352 ++msgid "alternate home directory to use for mounting" ++msgstr "" ++ ++#: ../sandbox:357 ++msgid "alternate /tmp directory to use for mounting" ++msgstr "" ++ ++#: ../sandbox:366 ++msgid "alternate window manager" ++msgstr "" ++ ++#: ../sandbox:369 ++msgid "MCS/MLS level for the sandbox" ++msgstr "" ++ ++#: ../sandbox:385 ++msgid "" ++"Sandbox Policy is not currently installed.\n" ++"You need to install the selinux-policy-sandbox package in order to run this " ++"command" ++msgstr "" ++ ++#: ../sandbox:397 ++msgid "" ++"You must specify a Homedir and tempdir when setting up a session sandbox" ++msgstr "" ++ ++#: ../sandbox:399 ++msgid "Commands are not allowed in a session sandbox" ++msgstr "" ++ ++#: ../sandbox:409 ++msgid "Command required" ++msgstr "" ++ ++#: ../sandbox:412 ++#, python-format ++msgid "%s is not an executable" ++msgstr "" ++ ++#: ../sandbox:535 ++#, python-format ++msgid "Invalid value %s" ++msgstr "" +-- +2.32.0 + diff --git a/SOURCES/0013-Don-t-be-verbose-if-you-are-not-on-a-tty.patch b/SOURCES/0013-Don-t-be-verbose-if-you-are-not-on-a-tty.patch deleted file mode 100644 index a56a2c7..0000000 --- a/SOURCES/0013-Don-t-be-verbose-if-you-are-not-on-a-tty.patch +++ /dev/null @@ -1,24 +0,0 @@ -From fb7fb754e2c4d8931a5834e34ef88dfaf764bb8f Mon Sep 17 00:00:00 2001 -From: Dan Walsh -Date: Fri, 14 Feb 2014 12:32:12 -0500 -Subject: [PATCH] Don't be verbose if you are not on a tty - ---- - policycoreutils/scripts/fixfiles | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles -index 6fb12e0451a9..cb20002ab613 100755 ---- a/policycoreutils/scripts/fixfiles -+++ b/policycoreutils/scripts/fixfiles -@@ -108,6 +108,7 @@ exclude_dirs_from_relabelling() { - fullFlag=0 - BOOTTIME="" - VERBOSE="-p" -+[ -t 1 ] || VERBOSE="" - FORCEFLAG="" - RPMFILES="" - PREFC="" --- -2.32.0 - diff --git a/SOURCES/0013-policycoreutils-setfiles-Improve-description-of-d-sw.patch b/SOURCES/0013-policycoreutils-setfiles-Improve-description-of-d-sw.patch new file mode 100644 index 0000000..f4d6b78 --- /dev/null +++ b/SOURCES/0013-policycoreutils-setfiles-Improve-description-of-d-sw.patch @@ -0,0 +1,30 @@ +From f5045f645cfa10fed01b4225d26d98ea9f81f085 Mon Sep 17 00:00:00 2001 +From: Vit Mojzis +Date: Wed, 21 Mar 2018 08:51:31 +0100 +Subject: [PATCH] policycoreutils/setfiles: Improve description of -d switch + +The "-q" switch is becoming obsolete (completely unused in fedora) and +debug output ("-d" switch) makes sense in any scenario. Therefore both +options can be specified at once. + +Resolves: rhbz#1271327 +--- + policycoreutils/setfiles/setfiles.8 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/policycoreutils/setfiles/setfiles.8 b/policycoreutils/setfiles/setfiles.8 +index 4d28bc9a95c1..8e6c4ab94841 100644 +--- a/policycoreutils/setfiles/setfiles.8 ++++ b/policycoreutils/setfiles/setfiles.8 +@@ -57,7 +57,7 @@ option will force a replacement of the entire context. + check the validity of the contexts against the specified binary policy. + .TP + .B \-d +-show what specification matched each file. ++show what specification matched each file. Not affected by "\-q". + .TP + .BI \-e \ directory + directory to exclude (repeat option for more than one directory). +-- +2.32.0 + diff --git a/SOURCES/0014-sepolicy-Drop-old-interface-file_type_is_executable-.patch b/SOURCES/0014-sepolicy-Drop-old-interface-file_type_is_executable-.patch deleted file mode 100644 index f2d4e2d..0000000 --- a/SOURCES/0014-sepolicy-Drop-old-interface-file_type_is_executable-.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 7d68ca4cc7ab8bcdf65194a58b7db63914228494 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Mon, 27 Feb 2017 17:12:39 +0100 -Subject: [PATCH] sepolicy: Drop old interface file_type_is_executable(f) and - file_type_is_entrypoint(f) - -- use direct queries -- load exec_types and entry_types only once ---- - python/sepolicy/sepolicy/manpage.py | 22 ++++++++++++++++++++-- - 1 file changed, 20 insertions(+), 2 deletions(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index 6420ebe2e08e..d15522135288 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -127,8 +127,24 @@ def gen_domains(): - domains.sort() - return domains - --types = None - -+exec_types = None -+ -+def _gen_exec_types(): -+ global exec_types -+ if exec_types is None: -+ exec_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "exec_type"))["types"] -+ return exec_types -+ -+entry_types = None -+ -+def _gen_entry_types(): -+ global entry_types -+ if entry_types is None: -+ entry_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "entry_type"))["types"] -+ return entry_types -+ -+types = None - - def _gen_types(): - global types -@@ -374,6 +390,8 @@ class ManPage: - self.all_file_types = sepolicy.get_all_file_types() - self.role_allows = sepolicy.get_all_role_allows() - self.types = _gen_types() -+ self.exec_types = _gen_exec_types() -+ self.entry_types = _gen_entry_types() - - if self.source_files: - self.fcpath = self.root + "file_contexts" -@@ -691,7 +709,7 @@ Default Defined Ports:""") - for f in self.all_file_types: - if f.startswith(self.domainname): - flist.append(f) -- if not file_type_is_executable(f) or not file_type_is_entrypoint(f): -+ if not f in self.exec_types or not f in self.entry_types: - flist_non_exec.append(f) - if f in self.fcdict: - mpaths = mpaths + self.fcdict[f]["regex"] --- -2.32.0 - diff --git a/SOURCES/0014-sepolicy-generate-Handle-more-reserved-port-types.patch b/SOURCES/0014-sepolicy-generate-Handle-more-reserved-port-types.patch new file mode 100644 index 0000000..d64acff --- /dev/null +++ b/SOURCES/0014-sepolicy-generate-Handle-more-reserved-port-types.patch @@ -0,0 +1,71 @@ +From 53c27e891b9053a9bbbbca5a854deb4fc526a8a2 Mon Sep 17 00:00:00 2001 +From: Masatake YAMATO +Date: Thu, 14 Dec 2017 15:57:58 +0900 +Subject: [PATCH] sepolicy-generate: Handle more reserved port types + +Currently only reserved_port_t, port_t and hi_reserved_port_t are +handled as special when making a ports-dictionary. However, as fas as +corenetwork.te.in of serefpolicy, unreserved_port_t and +ephemeral_port_t should be handled in the same way, too. + +(Details) I found the need of this change when I was using +selinux-polgengui. Though tcp port 12345, which my application may +use, was given to the gui, selinux-polgengui generates expected te +file and sh file which didn't utilize the tcp port. + +selinux-polgengui checks whether a port given via gui is already typed +or not. + +If it is already typed, selinux-polgengui generates a te file having +rules to allow the application to use the port. (A) + +If not, it seems for me that selinux-polgengui is designed to generate +a te file having rules to allow the application to own(?) the port; +and a sh file having a command line to assign the application own type +to the port. (B) + +As we can see the output of `semanage port -l' some of ports for +specified purpose have types already. The important point is that the +rest of ports also have types already: + + hi_reserved_port_t tcp 512-1023 + hi_reserved_port_t udp 512-1023 + unreserved_port_t tcp 1024-32767, 61001-65535 + unreserved_port_t udp 1024-32767, 61001-65535 + ephemeral_port_t tcp 32768-61000 + ephemeral_port_t udp 32768-61000 + +As my patch shows, the original selinux-polgengui ignored +hi_reserved_port_t; though hi_reserved_port_t is assigned, +selinux-polgengui considered ports 512-1023 are not used. As the +result selinux-polgengui generates file sets of (B). + +For the purpose of selinux-polgengui, I think unreserved_port_t and +ephemeral_port_t are treated as the same as hi_reserved_port_t. + +Signed-off-by: Masatake YAMATO + +Fedora only patch: +https://lore.kernel.org/selinux/20150610.190635.1866127952891120915.yamato@redhat.com/ +--- + python/sepolicy/sepolicy/generate.py | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py +index 43180ca6fda4..d60a08e1d72c 100644 +--- a/python/sepolicy/sepolicy/generate.py ++++ b/python/sepolicy/sepolicy/generate.py +@@ -99,7 +99,9 @@ def get_all_ports(): + for p in sepolicy.info(sepolicy.PORT): + if p['type'] == "reserved_port_t" or \ + p['type'] == "port_t" or \ +- p['type'] == "hi_reserved_port_t": ++ p['type'] == "hi_reserved_port_t" or \ ++ p['type'] == "ephemeral_port_t" or \ ++ p['type'] == "unreserved_port_t": + continue + dict[(p['low'], p['high'], p['protocol'])] = (p['type'], p.get('range')) + return dict +-- +2.32.0 + diff --git a/SOURCES/0015-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch b/SOURCES/0015-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch new file mode 100644 index 0000000..e39c750 --- /dev/null +++ b/SOURCES/0015-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch @@ -0,0 +1,24 @@ +From f1acc9a3057e199d62c6b8ec6e77fc33ca3db1d1 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Thu, 8 Nov 2018 09:20:58 +0100 +Subject: [PATCH] semodule-utils: Fix RESOURCE_LEAK coverity scan defects + +--- + semodule-utils/semodule_package/semodule_package.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/semodule-utils/semodule_package/semodule_package.c b/semodule-utils/semodule_package/semodule_package.c +index 3515234e36de..7b75b3fd9bb4 100644 +--- a/semodule-utils/semodule_package/semodule_package.c ++++ b/semodule-utils/semodule_package/semodule_package.c +@@ -74,6 +74,7 @@ static int file_to_data(const char *path, char **data, size_t * len) + } + if (!sb.st_size) { + *len = 0; ++ close(fd); + return 0; + } + +-- +2.32.0 + diff --git a/SOURCES/0015-sepolicy-Another-small-optimization-for-mcs-types.patch b/SOURCES/0015-sepolicy-Another-small-optimization-for-mcs-types.patch deleted file mode 100644 index 0755114..0000000 --- a/SOURCES/0015-sepolicy-Another-small-optimization-for-mcs-types.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 54d85eb009defdf93b24cf0131b88179490b56a2 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Tue, 28 Feb 2017 21:29:46 +0100 -Subject: [PATCH] sepolicy: Another small optimization for mcs types - ---- - python/sepolicy/sepolicy/manpage.py | 16 +++++++++++----- - 1 file changed, 11 insertions(+), 5 deletions(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index d15522135288..ffcedb547993 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -144,6 +144,15 @@ def _gen_entry_types(): - entry_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "entry_type"))["types"] - return entry_types - -+mcs_constrained_types = None -+ -+def _gen_mcs_constrained_types(): -+ global mcs_constrained_types -+ if mcs_constrained_types is None: -+ mcs_constrained_types = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) -+ return mcs_constrained_types -+ -+ - types = None - - def _gen_types(): -@@ -392,6 +401,7 @@ class ManPage: - self.types = _gen_types() - self.exec_types = _gen_exec_types() - self.entry_types = _gen_entry_types() -+ self.mcs_constrained_types = _gen_mcs_constrained_types() - - if self.source_files: - self.fcpath = self.root + "file_contexts" -@@ -946,11 +956,7 @@ All executables with the default executable label, usually stored in /usr/bin an - %s""" % ", ".join(paths)) - - def _mcs_types(self): -- try: -- mcs_constrained_type = next(sepolicy.info(sepolicy.ATTRIBUTE, "mcs_constrained_type")) -- except StopIteration: -- return -- if self.type not in mcs_constrained_type['types']: -+ if self.type not in self.mcs_constrained_types['types']: - return - self.fd.write (""" - .SH "MCS Constrained" --- -2.32.0 - diff --git a/SOURCES/0016-Move-po-translation-files-into-the-right-sub-directo.patch b/SOURCES/0016-Move-po-translation-files-into-the-right-sub-directo.patch deleted file mode 100644 index 9b5c65e..0000000 --- a/SOURCES/0016-Move-po-translation-files-into-the-right-sub-directo.patch +++ /dev/null @@ -1,515 +0,0 @@ -From a8c4ac47f370e319c434fe1e6afcfae83d7390e9 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Mon, 6 Aug 2018 13:23:00 +0200 -Subject: [PATCH] Move po/ translation files into the right sub-directories - -When policycoreutils was split into policycoreutils/ python/ gui/ and sandbox/ -sub-directories, po/ translation files stayed in policycoreutils/. - -This commit split original policycoreutils/po directory into -policycoreutils/po -python/po -gui/po -sandbox/po - -See https://github.com/fedora-selinux/selinux/issues/43 ---- - gui/Makefile | 3 ++ - gui/po/Makefile | 82 ++++++++++++++++++++++++++++++++++++ - gui/po/POTFILES | 17 ++++++++ - policycoreutils/po/Makefile | 70 ++----------------------------- - policycoreutils/po/POTFILES | 9 ++++ - python/Makefile | 2 +- - python/po/Makefile | 83 +++++++++++++++++++++++++++++++++++++ - python/po/POTFILES | 10 +++++ - sandbox/Makefile | 2 + - sandbox/po/Makefile | 82 ++++++++++++++++++++++++++++++++++++ - sandbox/po/POTFILES | 1 + - 11 files changed, 293 insertions(+), 68 deletions(-) - create mode 100644 gui/po/Makefile - create mode 100644 gui/po/POTFILES - create mode 100644 policycoreutils/po/POTFILES - create mode 100644 python/po/Makefile - create mode 100644 python/po/POTFILES - create mode 100644 sandbox/po/Makefile - create mode 100644 sandbox/po/POTFILES - -diff --git a/gui/Makefile b/gui/Makefile -index ca965c942912..5a5bf6dcae19 100644 ---- a/gui/Makefile -+++ b/gui/Makefile -@@ -22,6 +22,7 @@ system-config-selinux.ui \ - usersPage.py - - all: $(TARGETS) system-config-selinux.py polgengui.py -+ (cd po && $(MAKE) $@) - - install: all - -mkdir -p $(DESTDIR)$(MANDIR)/man8 -@@ -54,6 +55,8 @@ install: all - install -m 644 sepolicy_$${i}.png $(DESTDIR)$(DATADIR)/icons/hicolor/$${i}x$${i}/apps/sepolicy.png; \ - done - install -m 644 org.selinux.config.policy $(DESTDIR)$(DATADIR)/polkit-1/actions/ -+ (cd po && $(MAKE) $@) -+ - clean: - - indent: -diff --git a/gui/po/Makefile b/gui/po/Makefile -new file mode 100644 -index 000000000000..a0f5439f2d1c ---- /dev/null -+++ b/gui/po/Makefile -@@ -0,0 +1,82 @@ -+# -+# Makefile for the PO files (translation) catalog -+# -+ -+PREFIX ?= /usr -+ -+# What is this package? -+NLSPACKAGE = gui -+POTFILE = $(NLSPACKAGE).pot -+INSTALL = /usr/bin/install -c -p -+INSTALL_DATA = $(INSTALL) -m 644 -+INSTALL_DIR = /usr/bin/install -d -+ -+# destination directory -+INSTALL_NLS_DIR = $(PREFIX)/share/locale -+ -+# PO catalog handling -+MSGMERGE = msgmerge -+MSGMERGE_FLAGS = -q -+XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) -+MSGFMT = msgfmt -+ -+# All possible linguas -+PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) -+ -+# Only the files matching what the user has set in LINGUAS -+USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) -+ -+# if no valid LINGUAS, build all languages -+USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) -+ -+POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) -+MOFILES = $(patsubst %.po,%.mo,$(POFILES)) -+POTFILES = $(shell cat POTFILES) -+ -+#default:: clean -+ -+all:: $(MOFILES) -+ -+$(POTFILE): $(POTFILES) -+ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) -+ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ -+ rm -f $(NLSPACKAGE).po; \ -+ else \ -+ mv -f $(NLSPACKAGE).po $(POTFILE); \ -+ fi; \ -+ -+ -+refresh-po: Makefile -+ for cat in $(POFILES); do \ -+ lang=`basename $$cat .po`; \ -+ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ -+ mv -f $$lang.pot $$lang.po ; \ -+ echo "$(MSGMERGE) of $$lang succeeded" ; \ -+ else \ -+ echo "$(MSGMERGE) of $$lang failed" ; \ -+ rm -f $$lang.pot ; \ -+ fi \ -+ done -+ -+clean: -+ @rm -fv *mo *~ .depend -+ @rm -rf tmp -+ -+install: $(MOFILES) -+ @for n in $(MOFILES); do \ -+ l=`basename $$n .mo`; \ -+ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ -+ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ -+ done -+ -+%.mo: %.po -+ $(MSGFMT) -o $@ $< -+report: -+ @for cat in $(wildcard *.po); do \ -+ echo -n "$$cat: "; \ -+ msgfmt -v --statistics -o /dev/null $$cat; \ -+ done -+ -+.PHONY: missing depend -+ -+relabel: -diff --git a/gui/po/POTFILES b/gui/po/POTFILES -new file mode 100644 -index 000000000000..1795c5c1951b ---- /dev/null -+++ b/gui/po/POTFILES -@@ -0,0 +1,17 @@ -+../booleansPage.py -+../domainsPage.py -+../fcontextPage.py -+../loginsPage.py -+../modulesPage.py -+../org.selinux.config.policy -+../polgengui.py -+../polgen.ui -+../portsPage.py -+../selinux-polgengui.desktop -+../semanagePage.py -+../sepolicy.desktop -+../statusPage.py -+../system-config-selinux.desktop -+../system-config-selinux.py -+../system-config-selinux.ui -+../usersPage.py -diff --git a/policycoreutils/po/Makefile b/policycoreutils/po/Makefile -index 575e143122e6..18bc1dff8d1f 100644 ---- a/policycoreutils/po/Makefile -+++ b/policycoreutils/po/Makefile -@@ -3,7 +3,6 @@ - # - - PREFIX ?= /usr --TOP = ../.. - - # What is this package? - NLSPACKAGE = policycoreutils -@@ -32,74 +31,13 @@ USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) - - POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) - MOFILES = $(patsubst %.po,%.mo,$(POFILES)) --POTFILES = \ -- ../run_init/open_init_pty.c \ -- ../run_init/run_init.c \ -- ../semodule_link/semodule_link.c \ -- ../audit2allow/audit2allow \ -- ../semanage/seobject.py \ -- ../setsebool/setsebool.c \ -- ../newrole/newrole.c \ -- ../load_policy/load_policy.c \ -- ../sestatus/sestatus.c \ -- ../semodule/semodule.c \ -- ../setfiles/setfiles.c \ -- ../semodule_package/semodule_package.c \ -- ../semodule_deps/semodule_deps.c \ -- ../semodule_expand/semodule_expand.c \ -- ../scripts/chcat \ -- ../scripts/fixfiles \ -- ../restorecond/stringslist.c \ -- ../restorecond/restorecond.h \ -- ../restorecond/utmpwatcher.h \ -- ../restorecond/stringslist.h \ -- ../restorecond/restorecond.c \ -- ../restorecond/utmpwatcher.c \ -- ../gui/booleansPage.py \ -- ../gui/fcontextPage.py \ -- ../gui/loginsPage.py \ -- ../gui/mappingsPage.py \ -- ../gui/modulesPage.py \ -- ../gui/polgen.glade \ -- ../gui/polgengui.py \ -- ../gui/portsPage.py \ -- ../gui/semanagePage.py \ -- ../gui/statusPage.py \ -- ../gui/system-config-selinux.glade \ -- ../gui/system-config-selinux.py \ -- ../gui/usersPage.py \ -- ../secon/secon.c \ -- booleans.py \ -- ../sepolicy/sepolicy.py \ -- ../sepolicy/sepolicy/communicate.py \ -- ../sepolicy/sepolicy/__init__.py \ -- ../sepolicy/sepolicy/network.py \ -- ../sepolicy/sepolicy/generate.py \ -- ../sepolicy/sepolicy/sepolicy.glade \ -- ../sepolicy/sepolicy/gui.py \ -- ../sepolicy/sepolicy/manpage.py \ -- ../sepolicy/sepolicy/transition.py \ -- ../sepolicy/sepolicy/templates/executable.py \ -- ../sepolicy/sepolicy/templates/__init__.py \ -- ../sepolicy/sepolicy/templates/network.py \ -- ../sepolicy/sepolicy/templates/rw.py \ -- ../sepolicy/sepolicy/templates/script.py \ -- ../sepolicy/sepolicy/templates/semodule.py \ -- ../sepolicy/sepolicy/templates/tmp.py \ -- ../sepolicy/sepolicy/templates/user.py \ -- ../sepolicy/sepolicy/templates/var_lib.py \ -- ../sepolicy/sepolicy/templates/var_log.py \ -- ../sepolicy/sepolicy/templates/var_run.py \ -- ../sepolicy/sepolicy/templates/var_spool.py -+POTFILES = $(shell cat POTFILES) - - #default:: clean - --all:: $(MOFILES) -+all:: $(POTFILE) $(MOFILES) - --booleans.py: -- sepolicy booleans -a > booleans.py -- --$(POTFILE): $(POTFILES) booleans.py -+$(POTFILE): $(POTFILES) - $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) - @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ - rm -f $(NLSPACKAGE).po; \ -@@ -107,8 +45,6 @@ $(POTFILE): $(POTFILES) booleans.py - mv -f $(NLSPACKAGE).po $(POTFILE); \ - fi; \ - --update-po: Makefile $(POTFILE) refresh-po -- @rm -f booleans.py - - refresh-po: Makefile - for cat in $(POFILES); do \ -diff --git a/policycoreutils/po/POTFILES b/policycoreutils/po/POTFILES -new file mode 100644 -index 000000000000..12237dc61ee4 ---- /dev/null -+++ b/policycoreutils/po/POTFILES -@@ -0,0 +1,9 @@ -+../run_init/open_init_pty.c -+../run_init/run_init.c -+../setsebool/setsebool.c -+../newrole/newrole.c -+../load_policy/load_policy.c -+../sestatus/sestatus.c -+../semodule/semodule.c -+../setfiles/setfiles.c -+../secon/secon.c -diff --git a/python/Makefile b/python/Makefile -index 9b66d52fbd4d..00312dbdb5c6 100644 ---- a/python/Makefile -+++ b/python/Makefile -@@ -1,4 +1,4 @@ --SUBDIRS = sepolicy audit2allow semanage sepolgen chcat -+SUBDIRS = sepolicy audit2allow semanage sepolgen chcat po - - all install relabel clean indent test: - @for subdir in $(SUBDIRS); do \ -diff --git a/python/po/Makefile b/python/po/Makefile -new file mode 100644 -index 000000000000..4e052d5a2bd7 ---- /dev/null -+++ b/python/po/Makefile -@@ -0,0 +1,83 @@ -+# -+# Makefile for the PO files (translation) catalog -+# -+ -+PREFIX ?= /usr -+ -+# What is this package? -+NLSPACKAGE = python -+POTFILE = $(NLSPACKAGE).pot -+INSTALL = /usr/bin/install -c -p -+INSTALL_DATA = $(INSTALL) -m 644 -+INSTALL_DIR = /usr/bin/install -d -+ -+# destination directory -+INSTALL_NLS_DIR = $(PREFIX)/share/locale -+ -+# PO catalog handling -+MSGMERGE = msgmerge -+MSGMERGE_FLAGS = -q -+XGETTEXT = xgettext --default-domain=$(NLSPACKAGE) -+MSGFMT = msgfmt -+ -+# All possible linguas -+PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) -+ -+# Only the files matching what the user has set in LINGUAS -+USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) -+ -+# if no valid LINGUAS, build all languages -+USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) -+ -+POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) -+MOFILES = $(patsubst %.po,%.mo,$(POFILES)) -+POTFILES = $(shell cat POTFILES) -+ -+#default:: clean -+ -+all:: $(MOFILES) -+ -+$(POTFILE): $(POTFILES) -+ $(XGETTEXT) -L Python --keyword=_ --keyword=N_ $(POTFILES) -+ $(XGETTEXT) -j --keyword=_ --keyword=N_ ../sepolicy/sepolicy/sepolicy.glade -+ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ -+ rm -f $(NLSPACKAGE).po; \ -+ else \ -+ mv -f $(NLSPACKAGE).po $(POTFILE); \ -+ fi; \ -+ -+ -+refresh-po: Makefile -+ for cat in $(POFILES); do \ -+ lang=`basename $$cat .po`; \ -+ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ -+ mv -f $$lang.pot $$lang.po ; \ -+ echo "$(MSGMERGE) of $$lang succeeded" ; \ -+ else \ -+ echo "$(MSGMERGE) of $$lang failed" ; \ -+ rm -f $$lang.pot ; \ -+ fi \ -+ done -+ -+clean: -+ @rm -fv *mo *~ .depend -+ @rm -rf tmp -+ -+install: $(MOFILES) -+ @for n in $(MOFILES); do \ -+ l=`basename $$n .mo`; \ -+ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ -+ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ -+ done -+ -+%.mo: %.po -+ $(MSGFMT) -o $@ $< -+report: -+ @for cat in $(wildcard *.po); do \ -+ echo -n "$$cat: "; \ -+ msgfmt -v --statistics -o /dev/null $$cat; \ -+ done -+ -+.PHONY: missing depend -+ -+relabel: -diff --git a/python/po/POTFILES b/python/po/POTFILES -new file mode 100644 -index 000000000000..128eb870a69e ---- /dev/null -+++ b/python/po/POTFILES -@@ -0,0 +1,10 @@ -+../audit2allow/audit2allow -+../chcat/chcat -+../semanage/semanage -+../semanage/seobject.py -+../sepolgen/src/sepolgen/interfaces.py -+../sepolicy/sepolicy/generate.py -+../sepolicy/sepolicy/gui.py -+../sepolicy/sepolicy/__init__.py -+../sepolicy/sepolicy/interface.py -+../sepolicy/sepolicy.py -diff --git a/sandbox/Makefile b/sandbox/Makefile -index 9da5e58db9e6..b817824e2102 100644 ---- a/sandbox/Makefile -+++ b/sandbox/Makefile -@@ -13,6 +13,7 @@ override LDLIBS += -lselinux -lcap-ng - SEUNSHARE_OBJS = seunshare.o - - all: sandbox seunshare sandboxX.sh start -+ (cd po && $(MAKE) $@) - - seunshare: $(SEUNSHARE_OBJS) - -@@ -39,6 +40,7 @@ install: all - install -m 755 start $(DESTDIR)$(SHAREDIR) - -mkdir -p $(DESTDIR)$(SYSCONFDIR) - install -m 644 sandbox.conf $(DESTDIR)$(SYSCONFDIR)/sandbox -+ (cd po && $(MAKE) $@) - - test: - @$(PYTHON) test_sandbox.py -v -diff --git a/sandbox/po/Makefile b/sandbox/po/Makefile -new file mode 100644 -index 000000000000..0556bbe953f0 ---- /dev/null -+++ b/sandbox/po/Makefile -@@ -0,0 +1,82 @@ -+# -+# Makefile for the PO files (translation) catalog -+# -+ -+PREFIX ?= /usr -+ -+# What is this package? -+NLSPACKAGE = sandbox -+POTFILE = $(NLSPACKAGE).pot -+INSTALL = /usr/bin/install -c -p -+INSTALL_DATA = $(INSTALL) -m 644 -+INSTALL_DIR = /usr/bin/install -d -+ -+# destination directory -+INSTALL_NLS_DIR = $(PREFIX)/share/locale -+ -+# PO catalog handling -+MSGMERGE = msgmerge -+MSGMERGE_FLAGS = -q -+XGETTEXT = xgettext -L Python --default-domain=$(NLSPACKAGE) -+MSGFMT = msgfmt -+ -+# All possible linguas -+PO_LINGUAS := $(sort $(patsubst %.po,%,$(wildcard *.po))) -+ -+# Only the files matching what the user has set in LINGUAS -+USER_LINGUAS := $(filter $(patsubst %,%%,$(LINGUAS)),$(PO_LINGUAS)) -+ -+# if no valid LINGUAS, build all languages -+USE_LINGUAS := $(if $(USER_LINGUAS),$(USER_LINGUAS),$(PO_LINGUAS)) -+ -+POFILES = $(patsubst %,%.po,$(USE_LINGUAS)) -+MOFILES = $(patsubst %.po,%.mo,$(POFILES)) -+POTFILES = $(shell cat POTFILES) -+ -+#default:: clean -+ -+all:: $(POTFILE) $(MOFILES) -+ -+$(POTFILE): $(POTFILES) -+ $(XGETTEXT) --keyword=_ --keyword=N_ $(POTFILES) -+ @if cmp -s $(NLSPACKAGE).po $(POTFILE); then \ -+ rm -f $(NLSPACKAGE).po; \ -+ else \ -+ mv -f $(NLSPACKAGE).po $(POTFILE); \ -+ fi; \ -+ -+ -+refresh-po: Makefile -+ for cat in $(POFILES); do \ -+ lang=`basename $$cat .po`; \ -+ if $(MSGMERGE) $(MSGMERGE_FLAGS) $$lang.po $(POTFILE) > $$lang.pot ; then \ -+ mv -f $$lang.pot $$lang.po ; \ -+ echo "$(MSGMERGE) of $$lang succeeded" ; \ -+ else \ -+ echo "$(MSGMERGE) of $$lang failed" ; \ -+ rm -f $$lang.pot ; \ -+ fi \ -+ done -+ -+clean: -+ @rm -fv *mo *~ .depend -+ @rm -rf tmp -+ -+install: $(MOFILES) -+ @for n in $(MOFILES); do \ -+ l=`basename $$n .mo`; \ -+ $(INSTALL_DIR) $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES; \ -+ $(INSTALL_DATA) --verbose $$n $(DESTDIR)$(INSTALL_NLS_DIR)/$$l/LC_MESSAGES/selinux-$(NLSPACKAGE).mo; \ -+ done -+ -+%.mo: %.po -+ $(MSGFMT) -o $@ $< -+report: -+ @for cat in $(wildcard *.po); do \ -+ echo -n "$$cat: "; \ -+ msgfmt -v --statistics -o /dev/null $$cat; \ -+ done -+ -+.PHONY: missing depend -+ -+relabel: -diff --git a/sandbox/po/POTFILES b/sandbox/po/POTFILES -new file mode 100644 -index 000000000000..deff3f2f4656 ---- /dev/null -+++ b/sandbox/po/POTFILES -@@ -0,0 +1 @@ -+../sandbox --- -2.32.0 - diff --git a/SOURCES/0016-sandbox-Use-matchbox-window-manager-instead-of-openb.patch b/SOURCES/0016-sandbox-Use-matchbox-window-manager-instead-of-openb.patch new file mode 100644 index 0000000..6ab6f4a --- /dev/null +++ b/SOURCES/0016-sandbox-Use-matchbox-window-manager-instead-of-openb.patch @@ -0,0 +1,74 @@ +From be804ecd456a52803067e1aa11e20ef69788221c Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Wed, 18 Jul 2018 09:09:35 +0200 +Subject: [PATCH] sandbox: Use matchbox-window-manager instead of openbox + +--- + sandbox/sandbox | 4 ++-- + sandbox/sandbox.8 | 2 +- + sandbox/sandboxX.sh | 14 -------------- + 3 files changed, 3 insertions(+), 17 deletions(-) + +diff --git a/sandbox/sandbox b/sandbox/sandbox +index 16c43b51eaaa..7709a6585665 100644 +--- a/sandbox/sandbox ++++ b/sandbox/sandbox +@@ -268,7 +268,7 @@ class Sandbox: + copyfile(f, "/tmp", self.__tmpdir) + copyfile(f, "/var/tmp", self.__tmpdir) + +- def __setup_sandboxrc(self, wm="/usr/bin/openbox"): ++ def __setup_sandboxrc(self, wm="/usr/bin/matchbox-window-manager"): + execfile = self.__homedir + "/.sandboxrc" + fd = open(execfile, "w+") + if self.__options.session: +@@ -362,7 +362,7 @@ sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I includefile ] [- + + parser.add_option("-W", "--windowmanager", dest="wm", + type="string", +- default="/usr/bin/openbox", ++ default="/usr/bin/matchbox-window-manager", + help=_("alternate window manager")) + + parser.add_option("-l", "--level", dest="level", +diff --git a/sandbox/sandbox.8 b/sandbox/sandbox.8 +index d83fee76f335..90ef4951c8c2 100644 +--- a/sandbox/sandbox.8 ++++ b/sandbox/sandbox.8 +@@ -77,7 +77,7 @@ Specifies the windowsize when creating an X based Sandbox. The default windowsiz + \fB\-W\fR \fB\-\-windowmanager\fR + Select alternative window manager to run within + .B sandbox \-X. +-Default to /usr/bin/openbox. ++Default to /usr/bin/matchbox-window-manager. + .TP + \fB\-X\fR + Create an X based Sandbox for gui apps, temporary files for +diff --git a/sandbox/sandboxX.sh b/sandbox/sandboxX.sh +index 4774528027ef..c211ebc14549 100644 +--- a/sandbox/sandboxX.sh ++++ b/sandbox/sandboxX.sh +@@ -6,20 +6,6 @@ export TITLE="Sandbox $context -- `grep ^#TITLE: ~/.sandboxrc | /usr/bin/cut -b8 + [ -z $2 ] && export DPI="96" || export DPI="$2" + trap "exit 0" HUP + +-mkdir -p ~/.config/openbox +-cat > ~/.config/openbox/rc.xml << EOF +- +- +- +- no +- all +- yes +- +- +- +-EOF +- + (/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -reset -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do + export DISPLAY=:$D + cat > ~/seremote << __EOF +-- +2.32.0 + diff --git a/SOURCES/0017-Use-correct-gettext-domains-in-python-gui-sandbox.patch b/SOURCES/0017-Use-correct-gettext-domains-in-python-gui-sandbox.patch deleted file mode 100644 index 46ee3ad..0000000 --- a/SOURCES/0017-Use-correct-gettext-domains-in-python-gui-sandbox.patch +++ /dev/null @@ -1,306 +0,0 @@ -From ea70711fce9127c7dd3146bc8161086f97745d11 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Mon, 6 Aug 2018 13:37:07 +0200 -Subject: [PATCH] Use correct gettext domains in python/ gui/ sandbox/ - -https://github.com/fedora-selinux/selinux/issues/43 ---- - gui/booleansPage.py | 2 +- - gui/domainsPage.py | 2 +- - gui/fcontextPage.py | 2 +- - gui/loginsPage.py | 2 +- - gui/modulesPage.py | 2 +- - gui/polgengui.py | 2 +- - gui/portsPage.py | 2 +- - gui/semanagePage.py | 2 +- - gui/statusPage.py | 2 +- - gui/system-config-selinux.py | 2 +- - gui/usersPage.py | 2 +- - python/chcat/chcat | 2 +- - python/semanage/semanage | 2 +- - python/semanage/seobject.py | 2 +- - python/sepolgen/src/sepolgen/sepolgeni18n.py | 2 +- - python/sepolicy/sepolicy.py | 2 +- - python/sepolicy/sepolicy/__init__.py | 2 +- - python/sepolicy/sepolicy/generate.py | 2 +- - python/sepolicy/sepolicy/gui.py | 2 +- - python/sepolicy/sepolicy/interface.py | 2 +- - sandbox/sandbox | 2 +- - 21 files changed, 21 insertions(+), 21 deletions(-) - -diff --git a/gui/booleansPage.py b/gui/booleansPage.py -index 7849bea26a06..dd12b6d6ab86 100644 ---- a/gui/booleansPage.py -+++ b/gui/booleansPage.py -@@ -38,7 +38,7 @@ DISABLED = 2 - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/domainsPage.py b/gui/domainsPage.py -index bad5140d8c59..6bbe4de5884f 100644 ---- a/gui/domainsPage.py -+++ b/gui/domainsPage.py -@@ -30,7 +30,7 @@ from semanagePage import * - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/fcontextPage.py b/gui/fcontextPage.py -index d26aa1b405a9..52292cae01d2 100644 ---- a/gui/fcontextPage.py -+++ b/gui/fcontextPage.py -@@ -47,7 +47,7 @@ class context: - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/loginsPage.py b/gui/loginsPage.py -index b67eb8bc42af..cbfb0cc23f65 100644 ---- a/gui/loginsPage.py -+++ b/gui/loginsPage.py -@@ -29,7 +29,7 @@ from semanagePage import * - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/modulesPage.py b/gui/modulesPage.py -index 0584acf9b3a4..35a0129bab9c 100644 ---- a/gui/modulesPage.py -+++ b/gui/modulesPage.py -@@ -30,7 +30,7 @@ from semanagePage import * - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/polgengui.py b/gui/polgengui.py -index d284ded65279..01f541bafae8 100644 ---- a/gui/polgengui.py -+++ b/gui/polgengui.py -@@ -63,7 +63,7 @@ def get_all_modules(): - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/portsPage.py b/gui/portsPage.py -index 30f58383bc1d..a537ecc8c0a1 100644 ---- a/gui/portsPage.py -+++ b/gui/portsPage.py -@@ -35,7 +35,7 @@ from semanagePage import * - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/semanagePage.py b/gui/semanagePage.py -index 4127804fbbee..5361d69c1313 100644 ---- a/gui/semanagePage.py -+++ b/gui/semanagePage.py -@@ -22,7 +22,7 @@ from gi.repository import Gdk, Gtk - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/statusPage.py b/gui/statusPage.py -index 766854b19cba..a8f079b9b163 100644 ---- a/gui/statusPage.py -+++ b/gui/statusPage.py -@@ -35,7 +35,7 @@ RELABELFILE = "/.autorelabel" - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/system-config-selinux.py b/gui/system-config-selinux.py -index 3f70122b87e8..8c46c987b974 100644 ---- a/gui/system-config-selinux.py -+++ b/gui/system-config-selinux.py -@@ -45,7 +45,7 @@ import selinux - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/gui/usersPage.py b/gui/usersPage.py -index 26794ed5c3f3..d15d4c5a71dd 100644 ---- a/gui/usersPage.py -+++ b/gui/usersPage.py -@@ -29,7 +29,7 @@ from semanagePage import * - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-gui" - try: - import gettext - kwargs = {} -diff --git a/python/chcat/chcat b/python/chcat/chcat -index fdd2e46ee3f9..839ddd3b54b6 100755 ---- a/python/chcat/chcat -+++ b/python/chcat/chcat -@@ -30,7 +30,7 @@ import getopt - import selinux - import seobject - --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/semanage/semanage b/python/semanage/semanage -index 18a2710531ca..0980aecb6311 100644 ---- a/python/semanage/semanage -+++ b/python/semanage/semanage -@@ -30,7 +30,7 @@ import seobject - import sys - import traceback - --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py -index 6a14f7b47dd5..b51a7e3e7ca3 100644 ---- a/python/semanage/seobject.py -+++ b/python/semanage/seobject.py -@@ -29,7 +29,7 @@ import sys - import stat - import socket - from semanage import * --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - import sepolicy - import setools - import ipaddress -diff --git a/python/sepolgen/src/sepolgen/sepolgeni18n.py b/python/sepolgen/src/sepolgen/sepolgeni18n.py -index 998c4356415c..56ebd807c69c 100644 ---- a/python/sepolgen/src/sepolgen/sepolgeni18n.py -+++ b/python/sepolgen/src/sepolgen/sepolgeni18n.py -@@ -19,7 +19,7 @@ - - try: - import gettext -- t = gettext.translation( 'yumex' ) -+ t = gettext.translation( 'selinux-python' ) - _ = t.gettext - except: - def _(str): -diff --git a/python/sepolicy/sepolicy.py b/python/sepolicy/sepolicy.py -index 7b2230651099..32956e58f52e 100755 ---- a/python/sepolicy/sepolicy.py -+++ b/python/sepolicy/sepolicy.py -@@ -28,7 +28,7 @@ import sepolicy - from multiprocessing import Pool - from sepolicy import get_os_version, get_conditionals, get_conditionals_format_text - import argparse --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py -index 481c5d86232f..df773a6b314e 100644 ---- a/python/sepolicy/sepolicy/__init__.py -+++ b/python/sepolicy/sepolicy/__init__.py -@@ -13,7 +13,7 @@ import os - import re - import gzip - --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py -index 4e1ed4e9dc31..43180ca6fda4 100644 ---- a/python/sepolicy/sepolicy/generate.py -+++ b/python/sepolicy/sepolicy/generate.py -@@ -48,7 +48,7 @@ import sepolgen.defaults as defaults - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/sepolicy/sepolicy/gui.py b/python/sepolicy/sepolicy/gui.py -index 1e86422b864a..c9ca158ddd09 100644 ---- a/python/sepolicy/sepolicy/gui.py -+++ b/python/sepolicy/sepolicy/gui.py -@@ -41,7 +41,7 @@ import os - import re - import unicodedata - --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/python/sepolicy/sepolicy/interface.py b/python/sepolicy/sepolicy/interface.py -index bdffb770f364..9d40aea1498d 100644 ---- a/python/sepolicy/sepolicy/interface.py -+++ b/python/sepolicy/sepolicy/interface.py -@@ -30,7 +30,7 @@ __all__ = ['get_all_interfaces', 'get_interfaces_from_xml', 'get_admin', 'get_us - ## - ## I18N - ## --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-python" - try: - import gettext - kwargs = {} -diff --git a/sandbox/sandbox b/sandbox/sandbox -index ca5f1e030a51..16c43b51eaaa 100644 ---- a/sandbox/sandbox -+++ b/sandbox/sandbox -@@ -37,7 +37,7 @@ import sepolicy - - SEUNSHARE = "/usr/sbin/seunshare" - SANDBOXSH = "/usr/share/sandbox/sandboxX.sh" --PROGNAME = "policycoreutils" -+PROGNAME = "selinux-sandbox" - try: - import gettext - kwargs = {} --- -2.32.0 - diff --git a/SOURCES/0017-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch b/SOURCES/0017-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch new file mode 100644 index 0000000..1a3e957 --- /dev/null +++ b/SOURCES/0017-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch @@ -0,0 +1,46 @@ +From 0e40b5541773c6daf58bba7048fae6918d74de74 Mon Sep 17 00:00:00 2001 +From: Ondrej Mosnacek +Date: Tue, 28 Jul 2020 14:37:13 +0200 +Subject: [PATCH] sepolicy: Fix flake8 warnings in Fedora-only code + +Fixes: +$ PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8 +Analyzing 187 Python scripts +./installdir/usr/lib/python3.8/site-packages/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' +./installdir/usr/lib/python3.8/site-packages/sepolicy/manpage.py:774:17: E117 over-indented +./python/sepolicy/build/lib/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' +./python/sepolicy/build/lib/sepolicy/manpage.py:774:17: E117 over-indented +./python/sepolicy/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' +./python/sepolicy/sepolicy/manpage.py:774:17: E117 over-indented +The command "PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8" exited with 1. + +Signed-off-by: Ondrej Mosnacek +--- + python/sepolicy/sepolicy/manpage.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py +index ffcedb547993..c013c0d48502 100755 +--- a/python/sepolicy/sepolicy/manpage.py ++++ b/python/sepolicy/sepolicy/manpage.py +@@ -719,7 +719,7 @@ Default Defined Ports:""") + for f in self.all_file_types: + if f.startswith(self.domainname): + flist.append(f) +- if not f in self.exec_types or not f in self.entry_types: ++ if f not in self.exec_types or f not in self.entry_types: + flist_non_exec.append(f) + if f in self.fcdict: + mpaths = mpaths + self.fcdict[f]["regex"] +@@ -773,7 +773,7 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d + """ % {'domainname': self.domainname, 'equiv': e, 'alt': e.split('/')[-1]}) + + if flist_non_exec: +- self.fd.write(r""" ++ self.fd.write(r""" + .PP + .B STANDARD FILE CONTEXT + +-- +2.32.0 + diff --git a/SOURCES/0018-Initial-.pot-files-for-gui-python-sandbox.patch b/SOURCES/0018-Initial-.pot-files-for-gui-python-sandbox.patch deleted file mode 100644 index 76768dd..0000000 --- a/SOURCES/0018-Initial-.pot-files-for-gui-python-sandbox.patch +++ /dev/null @@ -1,4532 +0,0 @@ -From b30964691f11946791c0b852c1b7eebf59a6dcf6 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Mon, 6 Aug 2018 14:23:19 +0200 -Subject: [PATCH] Initial .pot files for gui/ python/ sandbox/ - -https://github.com/fedora-selinux/selinux/issues/43 ---- - gui/po/gui.pot | 964 ++++++++++++ - python/po/python.pot | 3375 ++++++++++++++++++++++++++++++++++++++++ - sandbox/po/sandbox.pot | 157 ++ - 3 files changed, 4496 insertions(+) - create mode 100644 gui/po/gui.pot - create mode 100644 python/po/python.pot - create mode 100644 sandbox/po/sandbox.pot - -diff --git a/gui/po/gui.pot b/gui/po/gui.pot -new file mode 100644 -index 000000000000..1663b4caa7c3 ---- /dev/null -+++ b/gui/po/gui.pot -@@ -0,0 +1,964 @@ -+# SOME DESCRIPTIVE TITLE. -+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -+# This file is distributed under the same license as the PACKAGE package. -+# FIRST AUTHOR , YEAR. -+# -+#, fuzzy -+msgid "" -+msgstr "" -+"Project-Id-Version: PACKAGE VERSION\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2018-08-06 14:22+0200\n" -+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -+"Last-Translator: FULL NAME \n" -+"Language-Team: LANGUAGE \n" -+"Language: \n" -+"MIME-Version: 1.0\n" -+"Content-Type: text/plain; charset=CHARSET\n" -+"Content-Transfer-Encoding: 8bit\n" -+ -+#: ../booleansPage.py:198 ../system-config-selinux.ui:1025 -+msgid "Boolean" -+msgstr "" -+ -+#: ../booleansPage.py:248 ../semanagePage.py:166 -+msgid "all" -+msgstr "" -+ -+#: ../booleansPage.py:250 ../semanagePage.py:168 -+#: ../system-config-selinux.ui:961 ../system-config-selinux.ui:1097 -+#: ../system-config-selinux.ui:1506 -+msgid "Customized" -+msgstr "" -+ -+#: ../domainsPage.py:55 ../system-config-selinux.ui:1834 -+msgid "Process Domain" -+msgstr "" -+ -+#: ../domainsPage.py:63 -+msgid "Domain Name" -+msgstr "" -+ -+#: ../domainsPage.py:68 -+msgid "Mode" -+msgstr "" -+ -+#: ../domainsPage.py:101 ../domainsPage.py:112 ../domainsPage.py:156 -+#: ../statusPage.py:73 ../system-config-selinux.ui:622 -+#: ../system-config-selinux.ui:1755 -+msgid "Permissive" -+msgstr "" -+ -+#: ../fcontextPage.py:72 ../system-config-selinux.ui:1160 -+msgid "File Labeling" -+msgstr "" -+ -+#: ../fcontextPage.py:82 -+msgid "" -+"File\n" -+"Specification" -+msgstr "" -+ -+#: ../fcontextPage.py:89 -+msgid "" -+"Selinux\n" -+"File Type" -+msgstr "" -+ -+#: ../fcontextPage.py:96 -+msgid "" -+"File\n" -+"Type" -+msgstr "" -+ -+#: ../loginsPage.py:55 ../system-config-selinux.ui:1281 -+msgid "User Mapping" -+msgstr "" -+ -+#: ../loginsPage.py:59 -+msgid "" -+"Login\n" -+"Name" -+msgstr "" -+ -+#: ../loginsPage.py:63 ../usersPage.py:60 -+msgid "" -+"SELinux\n" -+"User" -+msgstr "" -+ -+#: ../loginsPage.py:66 ../usersPage.py:65 -+msgid "" -+"MLS/\n" -+"MCS Range" -+msgstr "" -+ -+#: ../loginsPage.py:135 -+#, python-format -+msgid "Login '%s' is required" -+msgstr "" -+ -+#: ../modulesPage.py:55 ../system-config-selinux.ui:1722 -+msgid "Policy Module" -+msgstr "" -+ -+#: ../modulesPage.py:65 -+msgid "Module Name" -+msgstr "" -+ -+#: ../modulesPage.py:70 -+msgid "Priority" -+msgstr "" -+ -+#: ../modulesPage.py:79 -+msgid "Kind" -+msgstr "" -+ -+#: ../modulesPage.py:147 -+msgid "Disable Audit" -+msgstr "" -+ -+#: ../modulesPage.py:150 ../system-config-selinux.ui:1659 -+msgid "Enable Audit" -+msgstr "" -+ -+#: ../modulesPage.py:175 -+msgid "Load Policy Module" -+msgstr "" -+ -+#: ../org.selinux.config.policy:11 -+msgid "Run System Config SELinux" -+msgstr "" -+ -+#: ../org.selinux.config.policy:12 -+msgid "Authentication is required to run system-config-selinux" -+msgstr "" -+ -+#: ../polgengui.py:288 ../polgen.ui:728 -+msgid "Name" -+msgstr "" -+ -+#: ../polgengui.py:290 ../polgen.ui:111 -+msgid "Description" -+msgstr "" -+ -+#: ../polgengui.py:298 -+msgid "Role" -+msgstr "" -+ -+#: ../polgengui.py:305 -+msgid "Existing_User" -+msgstr "" -+ -+#: ../polgengui.py:319 ../polgengui.py:327 ../polgengui.py:341 -+msgid "Application" -+msgstr "" -+ -+#: ../polgengui.py:386 -+#, python-format -+msgid "%s must be a directory" -+msgstr "" -+ -+#: ../polgengui.py:446 ../polgengui.py:727 -+msgid "You must select a user" -+msgstr "" -+ -+#: ../polgengui.py:576 -+msgid "Select executable file to be confined." -+msgstr "" -+ -+#: ../polgengui.py:587 -+msgid "Select init script file to be confined." -+msgstr "" -+ -+#: ../polgengui.py:597 -+msgid "Select file(s) that confined application creates or writes" -+msgstr "" -+ -+#: ../polgengui.py:604 -+msgid "Select directory(s) that the confined application owns and writes into" -+msgstr "" -+ -+#: ../polgengui.py:666 -+msgid "Select directory to generate policy files in" -+msgstr "" -+ -+#: ../polgengui.py:683 -+#, python-format -+msgid "" -+"Type %s_t already defined in current policy.\n" -+"Do you want to continue?" -+msgstr "" -+ -+#: ../polgengui.py:683 ../polgengui.py:687 -+msgid "Verify Name" -+msgstr "" -+ -+#: ../polgengui.py:687 -+#, python-format -+msgid "" -+"Module %s already loaded in current policy.\n" -+"Do you want to continue?" -+msgstr "" -+ -+#: ../polgengui.py:733 -+msgid "" -+"You must add a name made up of letters and numbers and containing no spaces." -+msgstr "" -+ -+#: ../polgengui.py:747 -+msgid "You must enter a executable" -+msgstr "" -+ -+#: ../polgengui.py:772 ../system-config-selinux.py:184 -+msgid "Configue SELinux" -+msgstr "" -+ -+#: ../polgen.ui:9 -+msgid "Red Hat 2007" -+msgstr "" -+ -+#: ../polgen.ui:11 -+msgid "GPL" -+msgstr "" -+ -+#. TRANSLATORS: Replace this string with your names, one name per line. -+#: ../polgen.ui:13 ../system-config-selinux.ui:15 -+msgid "translator-credits" -+msgstr "" -+ -+#: ../polgen.ui:34 -+msgid "Add Booleans Dialog" -+msgstr "" -+ -+#: ../polgen.ui:99 -+msgid "Boolean Name" -+msgstr "" -+ -+#: ../polgen.ui:234 ../selinux-polgengui.desktop:3 -+msgid "SELinux Policy Generation Tool" -+msgstr "" -+ -+#: ../polgen.ui:255 -+msgid "" -+"Select the policy type for the application or user role you want to " -+"confine:" -+msgstr "" -+ -+#: ../polgen.ui:288 -+msgid "Applications" -+msgstr "" -+ -+#: ../polgen.ui:320 -+msgid "Standard Init Daemon" -+msgstr "" -+ -+#: ../polgen.ui:324 ../polgen.ui:340 -+msgid "" -+"Standard Init Daemon are daemons started on boot via init scripts. Usually " -+"requires a script in /etc/rc.d/init.d" -+msgstr "" -+ -+#: ../polgen.ui:336 -+msgid "DBUS System Daemon" -+msgstr "" -+ -+#: ../polgen.ui:353 -+msgid "Internet Services Daemon (inetd)" -+msgstr "" -+ -+#: ../polgen.ui:357 -+msgid "Internet Services Daemon are daemons started by xinetd" -+msgstr "" -+ -+#: ../polgen.ui:370 -+msgid "Web Application/Script (CGI)" -+msgstr "" -+ -+#: ../polgen.ui:374 -+msgid "" -+"Web Applications/Script (CGI) CGI scripts started by the web server (apache)" -+msgstr "" -+ -+#: ../polgen.ui:387 -+msgid "User Application" -+msgstr "" -+ -+#: ../polgen.ui:391 ../polgen.ui:408 -+msgid "" -+"User Application are any application that you would like to confine that is " -+"started by a user" -+msgstr "" -+ -+#: ../polgen.ui:404 -+msgid "Sandbox" -+msgstr "" -+ -+#: ../polgen.ui:450 -+msgid "Login Users" -+msgstr "" -+ -+#: ../polgen.ui:482 -+msgid "Existing User Roles" -+msgstr "" -+ -+#: ../polgen.ui:486 -+msgid "Modify an existing login user record." -+msgstr "" -+ -+#: ../polgen.ui:499 -+msgid "Minimal Terminal User Role" -+msgstr "" -+ -+#: ../polgen.ui:503 -+msgid "" -+"This user will login to a machine only via a terminal or remote login. By " -+"default this user will have no setuid, no networking, no su, no sudo." -+msgstr "" -+ -+#: ../polgen.ui:516 -+msgid "Minimal X Windows User Role" -+msgstr "" -+ -+#: ../polgen.ui:520 -+msgid "" -+"This user can login to a machine via X or terminal. By default this user " -+"will have no setuid, no networking, no sudo, no su" -+msgstr "" -+ -+#: ../polgen.ui:533 -+msgid "User Role" -+msgstr "" -+ -+#: ../polgen.ui:537 -+msgid "" -+"User with full networking, no setuid applications without transition, no " -+"sudo, no su." -+msgstr "" -+ -+#: ../polgen.ui:550 -+msgid "Admin User Role" -+msgstr "" -+ -+#: ../polgen.ui:554 -+msgid "" -+"User with full networking, no setuid applications without transition, no su, " -+"can sudo to Root Administration Roles" -+msgstr "" -+ -+#: ../polgen.ui:596 -+msgid "Root Users" -+msgstr "" -+ -+#: ../polgen.ui:627 -+msgid "Root Admin User Role" -+msgstr "" -+ -+#: ../polgen.ui:631 -+msgid "" -+"Select Root Administrator User Role, if this user will be used to administer " -+"the machine while running as root. This user will not be able to login to " -+"the system directly." -+msgstr "" -+ -+#: ../polgen.ui:705 -+msgid "Enter name of application or user role:" -+msgstr "" -+ -+#: ../polgen.ui:739 -+msgid "Enter complete path for executable to be confined." -+msgstr "" -+ -+#: ../polgen.ui:756 ../polgen.ui:838 ../polgen.ui:2317 -+msgid "..." -+msgstr "" -+ -+#: ../polgen.ui:776 -+msgid "Enter unique name for the confined application or user role." -+msgstr "" -+ -+#: ../polgen.ui:794 -+msgid "Executable" -+msgstr "" -+ -+#: ../polgen.ui:808 -+msgid "Init script" -+msgstr "" -+ -+#: ../polgen.ui:821 -+msgid "" -+"Enter complete path to init script used to start the confined application." -+msgstr "" -+ -+#: ../polgen.ui:883 -+msgid "Select existing role to modify:" -+msgstr "" -+ -+#: ../polgen.ui:904 -+#, python-format -+msgid "Select the user roles that will transiton to the %s domain." -+msgstr "" -+ -+#: ../polgen.ui:921 -+msgid "role tab" -+msgstr "" -+ -+#: ../polgen.ui:937 -+#, python-format -+msgid "Select roles that %s will transition to:" -+msgstr "" -+ -+#: ../polgen.ui:955 -+#, python-format -+msgid "Select applications domains that %s will transition to." -+msgstr "" -+ -+#: ../polgen.ui:972 -+msgid "" -+"transition \n" -+"role tab" -+msgstr "" -+ -+#: ../polgen.ui:989 -+#, python-format -+msgid "Select the user_roles that will transition to %s:" -+msgstr "" -+ -+#: ../polgen.ui:1007 -+msgid "Select the user roles that will transiton to this applications domains." -+msgstr "" -+ -+#: ../polgen.ui:1040 -+#, python-format -+msgid "Select domains that %s will administer:" -+msgstr "" -+ -+#: ../polgen.ui:1058 ../polgen.ui:1109 -+msgid "Select the domains that you would like this user administer." -+msgstr "" -+ -+#: ../polgen.ui:1091 -+#, python-format -+msgid "Select additional roles for %s:" -+msgstr "" -+ -+#: ../polgen.ui:1142 -+#, python-format -+msgid "Enter network ports that %s binds on:" -+msgstr "" -+ -+#: ../polgen.ui:1162 ../polgen.ui:1529 -+msgid "TCP Ports" -+msgstr "" -+ -+#: ../polgen.ui:1199 ../polgen.ui:1366 ../polgen.ui:1561 ../polgen.ui:1670 -+msgid "All" -+msgstr "" -+ -+#: ../polgen.ui:1203 ../polgen.ui:1370 -+#, python-format -+msgid "Allows %s to bind to any udp port" -+msgstr "" -+ -+#: ../polgen.ui:1216 ../polgen.ui:1383 -+msgid "600-1024" -+msgstr "" -+ -+#: ../polgen.ui:1220 ../polgen.ui:1387 -+#, python-format -+msgid "Allow %s to call bindresvport with 0. Binding to port 600-1024" -+msgstr "" -+ -+#: ../polgen.ui:1233 ../polgen.ui:1400 -+msgid "Unreserved Ports (>1024)" -+msgstr "" -+ -+#: ../polgen.ui:1237 ../polgen.ui:1404 -+#, python-format -+msgid "" -+"Enter a comma separated list of udp ports or ranges of ports that %s binds " -+"to. Example: 612, 650-660" -+msgstr "" -+ -+#: ../polgen.ui:1265 ../polgen.ui:1432 ../polgen.ui:1581 ../polgen.ui:1690 -+msgid "Select Ports" -+msgstr "" -+ -+#: ../polgen.ui:1278 ../polgen.ui:1445 -+#, python-format -+msgid "Allows %s to bind to any udp ports > 1024" -+msgstr "" -+ -+#: ../polgen.ui:1329 ../polgen.ui:1638 -+msgid "UDP Ports" -+msgstr "" -+ -+#: ../polgen.ui:1492 -+msgid "" -+"Network\n" -+"Bind tab" -+msgstr "" -+ -+#: ../polgen.ui:1509 -+#, python-format -+msgid "Select network ports that %s connects to:" -+msgstr "" -+ -+#: ../polgen.ui:1565 -+#, python-format -+msgid "Allows %s to connect to any tcp port" -+msgstr "" -+ -+#: ../polgen.ui:1594 -+#, python-format -+msgid "" -+"Enter a comma separated list of tcp ports or ranges of ports that %s " -+"connects to. Example: 612, 650-660" -+msgstr "" -+ -+#: ../polgen.ui:1674 -+#, python-format -+msgid "Allows %s to connect to any udp port" -+msgstr "" -+ -+#: ../polgen.ui:1703 -+#, python-format -+msgid "" -+"Enter a comma separated list of udp ports or ranges of ports that %s " -+"connects to. Example: 612, 650-660" -+msgstr "" -+ -+#: ../polgen.ui:1760 -+#, python-format -+msgid "Select common application traits for %s:" -+msgstr "" -+ -+#: ../polgen.ui:1777 -+msgid "Writes syslog messages\t" -+msgstr "" -+ -+#: ../polgen.ui:1792 -+msgid "Create/Manipulate temporary files in /tmp" -+msgstr "" -+ -+#: ../polgen.ui:1807 -+msgid "Uses Pam for authentication" -+msgstr "" -+ -+#: ../polgen.ui:1822 -+msgid "Uses nsswitch or getpw* calls" -+msgstr "" -+ -+#: ../polgen.ui:1837 -+msgid "Uses dbus" -+msgstr "" -+ -+#: ../polgen.ui:1852 -+msgid "Sends audit messages" -+msgstr "" -+ -+#: ../polgen.ui:1867 -+msgid "Interacts with the terminal" -+msgstr "" -+ -+#: ../polgen.ui:1882 -+msgid "Sends email" -+msgstr "" -+ -+#: ../polgen.ui:1925 -+#, python-format -+msgid "Add files/directories that %s manages" -+msgstr "" -+ -+#: ../polgen.ui:2086 -+#, python-format -+msgid "" -+"Files/Directories which the %s \"manages\". Pid Files, Log Files, /var/lib " -+"Files ..." -+msgstr "" -+ -+#: ../polgen.ui:2126 -+#, python-format -+msgid "Add booleans from the %s policy:" -+msgstr "" -+ -+#: ../polgen.ui:2234 -+#, python-format -+msgid "Add/Remove booleans used by the %s domain" -+msgstr "" -+ -+#: ../polgen.ui:2272 -+#, python-format -+msgid "Which directory you will generate the %s policy?" -+msgstr "" -+ -+#: ../polgen.ui:2290 -+msgid "Policy Directory" -+msgstr "" -+ -+#: ../portsPage.py:60 ../system-config-selinux.ui:1570 -+msgid "Network Port" -+msgstr "" -+ -+#: ../portsPage.py:95 -+msgid "" -+"SELinux Port\n" -+"Type" -+msgstr "" -+ -+#: ../portsPage.py:101 ../system-config-selinux.ui:294 -+msgid "Protocol" -+msgstr "" -+ -+#: ../portsPage.py:106 ../system-config-selinux.ui:355 -+msgid "" -+"MLS/MCS\n" -+"Level" -+msgstr "" -+ -+#: ../portsPage.py:111 -+msgid "Port" -+msgstr "" -+ -+#: ../portsPage.py:213 -+#, python-format -+msgid "Port number \"%s\" is not valid. 0 < PORT_NUMBER < 65536 " -+msgstr "" -+ -+#: ../portsPage.py:258 -+msgid "List View" -+msgstr "" -+ -+#: ../portsPage.py:261 ../system-config-selinux.ui:1492 -+msgid "Group View" -+msgstr "" -+ -+#: ../selinux-polgengui.desktop:32 ../sepolicy.desktop:4 -+msgid "Generate SELinux policy modules" -+msgstr "" -+ -+#: ../selinux-polgengui.desktop:62 ../system-config-selinux.desktop:62 -+msgid "system-config-selinux" -+msgstr "" -+ -+#: ../semanagePage.py:130 -+#, python-format -+msgid "Are you sure you want to delete %s '%s'?" -+msgstr "" -+ -+#: ../semanagePage.py:130 -+#, python-format -+msgid "Delete %s" -+msgstr "" -+ -+#: ../semanagePage.py:138 -+#, python-format -+msgid "Add %s" -+msgstr "" -+ -+#: ../semanagePage.py:152 -+#, python-format -+msgid "Modify %s" -+msgstr "" -+ -+#: ../sepolicy.desktop:3 -+msgid "SELinux Policy Management Tool" -+msgstr "" -+ -+#: ../sepolicy.desktop:5 -+msgid "sepolicy" -+msgstr "" -+ -+#: ../sepolicy.desktop:11 -+msgid "policy;security;selinux;avc;permission;mac;" -+msgstr "" -+ -+#: ../statusPage.py:74 ../system-config-selinux.ui:625 -+#: ../system-config-selinux.ui:1770 -+msgid "Enforcing" -+msgstr "" -+ -+#: ../statusPage.py:79 ../system-config-selinux.ui:619 -+msgid "Disabled" -+msgstr "" -+ -+#: ../statusPage.py:98 -+msgid "Status" -+msgstr "" -+ -+#: ../statusPage.py:137 -+msgid "" -+"Changing the policy type will cause a relabel of the entire file system on " -+"the next boot. Relabeling takes a long time depending on the size of the " -+"file system. Do you wish to continue?" -+msgstr "" -+ -+#: ../statusPage.py:151 -+msgid "" -+"Changing to SELinux disabled requires a reboot. It is not recommended. If " -+"you later decide to turn SELinux back on, the system will be required to " -+"relabel. If you just want to see if SELinux is causing a problem on your " -+"system, you can go to permissive mode which will only log errors and not " -+"enforce SELinux policy. Permissive mode does not require a reboot Do you " -+"wish to continue?" -+msgstr "" -+ -+#: ../statusPage.py:156 -+msgid "" -+"Changing to SELinux enabled will cause a relabel of the entire file system " -+"on the next boot. Relabeling takes a long time depending on the size of the " -+"file system. Do you wish to continue?" -+msgstr "" -+ -+#: ../system-config-selinux.desktop:3 -+msgid "SELinux Management" -+msgstr "" -+ -+#: ../system-config-selinux.desktop:32 -+msgid "Configure SELinux in a graphical setting" -+msgstr "" -+ -+#: ../system-config-selinux.ui:11 -+msgid "" -+"Copyright (c)2006 Red Hat, Inc.\n" -+"Copyright (c) 2006 Dan Walsh " -+msgstr "" -+ -+#: ../system-config-selinux.ui:53 ../system-config-selinux.ui:433 -+msgid "Add SELinux Login Mapping" -+msgstr "" -+ -+#: ../system-config-selinux.ui:117 -+msgid "Login Name" -+msgstr "" -+ -+#: ../system-config-selinux.ui:128 ../system-config-selinux.ui:1402 -+#: ../system-config-selinux.ui:1937 ../usersPage.py:54 -+msgid "SELinux User" -+msgstr "" -+ -+#: ../system-config-selinux.ui:139 ../system-config-selinux.ui:1948 -+msgid "MLS/MCS Range" -+msgstr "" -+ -+#: ../system-config-selinux.ui:219 -+msgid "Add SELinux Network Ports" -+msgstr "" -+ -+#: ../system-config-selinux.ui:283 -+msgid "Port Number" -+msgstr "" -+ -+#: ../system-config-selinux.ui:305 ../system-config-selinux.ui:519 -+msgid "SELinux Type" -+msgstr "" -+ -+#: ../system-config-selinux.ui:406 -+msgid "all files" -+msgstr "" -+ -+#: ../system-config-selinux.ui:409 -+msgid "regular file" -+msgstr "" -+ -+#: ../system-config-selinux.ui:412 -+msgid "directory" -+msgstr "" -+ -+#: ../system-config-selinux.ui:415 -+msgid "character device" -+msgstr "" -+ -+#: ../system-config-selinux.ui:418 -+msgid "block device" -+msgstr "" -+ -+#: ../system-config-selinux.ui:421 -+msgid "socket file" -+msgstr "" -+ -+#: ../system-config-selinux.ui:424 -+msgid "symbolic link" -+msgstr "" -+ -+#: ../system-config-selinux.ui:427 -+msgid "named pipe" -+msgstr "" -+ -+#: ../system-config-selinux.ui:497 -+msgid "File Specification" -+msgstr "" -+ -+#: ../system-config-selinux.ui:508 -+msgid "File Type" -+msgstr "" -+ -+#: ../system-config-selinux.ui:569 -+msgid "MLS" -+msgstr "" -+ -+#: ../system-config-selinux.ui:631 -+msgid "SELinux Administration" -+msgstr "" -+ -+#: ../system-config-selinux.ui:648 -+msgid "_File" -+msgstr "" -+ -+#: ../system-config-selinux.ui:656 -+msgid "_Add" -+msgstr "" -+ -+#: ../system-config-selinux.ui:668 -+msgid "_Properties" -+msgstr "" -+ -+#: ../system-config-selinux.ui:680 -+msgid "_Delete" -+msgstr "" -+ -+#: ../system-config-selinux.ui:707 -+msgid "_Help" -+msgstr "" -+ -+#: ../system-config-selinux.ui:754 -+msgid "Select Management Object" -+msgstr "" -+ -+#: ../system-config-selinux.ui:767 -+msgid "Select:" -+msgstr "" -+ -+#: ../system-config-selinux.ui:797 -+msgid "System Default Enforcing Mode" -+msgstr "" -+ -+#: ../system-config-selinux.ui:826 -+msgid "Current Enforcing Mode" -+msgstr "" -+ -+#: ../system-config-selinux.ui:848 -+msgid "System Default Policy Type: " -+msgstr "" -+ -+#: ../system-config-selinux.ui:871 -+msgid "" -+"Select if you wish to relabel then entire file system on next reboot. " -+"Relabeling can take a very long time, depending on the size of the system. " -+"If you are changing policy types or going from disabled to enforcing, a " -+"relabel is required." -+msgstr "" -+ -+#: ../system-config-selinux.ui:903 -+msgid "Relabel on next reboot." -+msgstr "" -+ -+#: ../system-config-selinux.ui:947 -+msgid "Revert boolean setting to system default" -+msgstr "" -+ -+#: ../system-config-selinux.ui:960 -+msgid "Toggle between Customized and All Booleans" -+msgstr "" -+ -+#: ../system-config-selinux.ui:986 ../system-config-selinux.ui:1122 -+#: ../system-config-selinux.ui:1242 ../system-config-selinux.ui:1363 -+#: ../system-config-selinux.ui:1531 ../system-config-selinux.ui:1683 -+#: ../system-config-selinux.ui:1795 -+msgid "Filter" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1057 -+msgid "Add File Context" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1070 -+msgid "Modify File Context" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1083 -+msgid "Delete File Context" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1096 -+msgid "Toggle between all and customized file context" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1192 -+msgid "Add SELinux User Mapping" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1205 -+msgid "Modify SELinux User Mapping" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1218 -+msgid "Delete SELinux User Mapping" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1313 -+msgid "Add User" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1326 -+msgid "Modify User" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1339 -+msgid "Delete User" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1434 -+msgid "Add Network Port" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1447 -+msgid "Edit Network Port" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1460 -+msgid "Delete Network Port" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1491 ../system-config-selinux.ui:1505 -+msgid "Toggle between Customized and All Ports" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1602 -+msgid "Generate new policy module" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1614 -+msgid "Load policy module" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1627 -+msgid "Remove loadable policy module" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1658 -+msgid "" -+"Enable/Disable additional audit rules, that are normally not reported in the " -+"log files." -+msgstr "" -+ -+#: ../system-config-selinux.ui:1754 -+msgid "Change process mode to permissive." -+msgstr "" -+ -+#: ../system-config-selinux.ui:1769 -+msgid "Change process mode to enforcing" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1873 -+msgid "Add SELinux User" -+msgstr "" -+ -+#: ../system-config-selinux.ui:1970 ../usersPage.py:69 -+msgid "SELinux Roles" -+msgstr "" -+ -+#: ../usersPage.py:142 -+#, python-format -+msgid "SELinux user '%s' is required" -+msgstr "" -diff --git a/python/po/python.pot b/python/po/python.pot -new file mode 100644 -index 000000000000..a279b0e8d540 ---- /dev/null -+++ b/python/po/python.pot -@@ -0,0 +1,3375 @@ -+# SOME DESCRIPTIVE TITLE. -+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -+# This file is distributed under the same license as the PACKAGE package. -+# FIRST AUTHOR , YEAR. -+# -+#, fuzzy -+msgid "" -+msgstr "" -+"Project-Id-Version: PACKAGE VERSION\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2018-08-06 14:22+0200\n" -+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -+"Last-Translator: FULL NAME \n" -+"Language-Team: LANGUAGE \n" -+"Language: \n" -+"MIME-Version: 1.0\n" -+"Content-Type: text/plain; charset=CHARSET\n" -+"Content-Transfer-Encoding: 8bit\n" -+ -+#: ../audit2allow/audit2allow:237 -+msgid "******************** IMPORTANT ***********************\n" -+msgstr "" -+ -+#: ../audit2allow/audit2allow:238 -+#, python-format -+msgid "" -+"To make this policy package active, execute:\n" -+"\n" -+"semodule -i %s\n" -+"\n" -+msgstr "" -+ -+#: ../chcat/chcat:115 ../chcat/chcat:194 -+msgid "Requires at least one category" -+msgstr "" -+ -+#: ../chcat/chcat:129 ../chcat/chcat:208 -+#, python-format -+msgid "Can not modify sensitivity levels using '+' on %s" -+msgstr "" -+ -+#: ../chcat/chcat:133 -+#, python-format -+msgid "%s is already in %s" -+msgstr "" -+ -+#: ../chcat/chcat:213 ../chcat/chcat:223 -+#, python-format -+msgid "%s is not in %s" -+msgstr "" -+ -+#: ../chcat/chcat:295 ../chcat/chcat:300 -+msgid "Can not combine +/- with other types of categories" -+msgstr "" -+ -+#: ../chcat/chcat:350 -+msgid "Can not have multiple sensitivities" -+msgstr "" -+ -+#: ../chcat/chcat:357 -+#, python-format -+msgid "Usage %s CATEGORY File ..." -+msgstr "" -+ -+#: ../chcat/chcat:358 -+#, python-format -+msgid "Usage %s -l CATEGORY user ..." -+msgstr "" -+ -+#: ../chcat/chcat:359 -+#, python-format -+msgid "Usage %s [[+|-]CATEGORY],...] File ..." -+msgstr "" -+ -+#: ../chcat/chcat:360 -+#, python-format -+msgid "Usage %s -l [[+|-]CATEGORY],...] user ..." -+msgstr "" -+ -+#: ../chcat/chcat:361 -+#, python-format -+msgid "Usage %s -d File ..." -+msgstr "" -+ -+#: ../chcat/chcat:362 -+#, python-format -+msgid "Usage %s -l -d user ..." -+msgstr "" -+ -+#: ../chcat/chcat:363 -+#, python-format -+msgid "Usage %s -L" -+msgstr "" -+ -+#: ../chcat/chcat:364 -+#, python-format -+msgid "Usage %s -L -l user" -+msgstr "" -+ -+#: ../chcat/chcat:365 -+msgid "Use -- to end option list. For example" -+msgstr "" -+ -+#: ../chcat/chcat:366 -+msgid "chcat -- -CompanyConfidential /docs/businessplan.odt" -+msgstr "" -+ -+#: ../chcat/chcat:367 -+msgid "chcat -l +CompanyConfidential juser" -+msgstr "" -+ -+#: ../chcat/chcat:436 -+#, python-format -+msgid "Options Error %s " -+msgstr "" -+ -+#: ../semanage/semanage:203 -+msgid "Select an alternate SELinux Policy Store to manage" -+msgstr "" -+ -+#: ../semanage/semanage:207 -+msgid "Select a priority for module operations" -+msgstr "" -+ -+#: ../semanage/semanage:211 -+#, python-format -+msgid "Do not print heading when listing %s object types" -+msgstr "" -+ -+#: ../semanage/semanage:215 -+msgid "Do not reload policy after commit" -+msgstr "" -+ -+#: ../semanage/semanage:219 -+#, python-format -+msgid "List %s local customizations" -+msgstr "" -+ -+#: ../semanage/semanage:223 -+#, python-format -+msgid "Add a record of the %s object type" -+msgstr "" -+ -+#: ../semanage/semanage:227 -+msgid "SELinux Type for the object" -+msgstr "" -+ -+#: ../semanage/semanage:231 -+msgid "" -+"Default SELinux Level for SELinux user, s0 Default. (MLS/MCS Systems only)" -+msgstr "" -+ -+#: ../semanage/semanage:236 -+msgid "" -+"\n" -+"MLS/MCS Security Range (MLS/MCS Systems only)\n" -+"SELinux Range for SELinux login mapping\n" -+"defaults to the SELinux user record range.\n" -+"SELinux Range for SELinux user defaults to s0.\n" -+msgstr "" -+ -+#: ../semanage/semanage:245 -+msgid "" -+"\n" -+" Protocol for the specified port (tcp|udp) or internet protocol\n" -+" version for the specified node (ipv4|ipv6).\n" -+msgstr "" -+ -+#: ../semanage/semanage:251 -+msgid "" -+"\n" -+" Subnet prefix for the specified infiniband ibpkey.\n" -+msgstr "" -+ -+#: ../semanage/semanage:256 -+msgid "" -+"\n" -+" Name for the specified infiniband end port.\n" -+msgstr "" -+ -+#: ../semanage/semanage:261 -+#, python-format -+msgid "Modify a record of the %s object type" -+msgstr "" -+ -+#: ../semanage/semanage:265 -+#, python-format -+msgid "List records of the %s object type" -+msgstr "" -+ -+#: ../semanage/semanage:269 -+#, python-format -+msgid "Delete a record of the %s object type" -+msgstr "" -+ -+#: ../semanage/semanage:273 -+msgid "Extract customizable commands, for use within a transaction" -+msgstr "" -+ -+#: ../semanage/semanage:277 -+#, python-format -+msgid "Remove all %s objects local customizations" -+msgstr "" -+ -+#: ../semanage/semanage:281 -+msgid "SELinux user name" -+msgstr "" -+ -+#: ../semanage/semanage:286 -+msgid "Manage login mappings between linux users and SELinux confined users" -+msgstr "" -+ -+#: ../semanage/semanage:303 -+#, python-format -+msgid "login_name | %%groupname" -+msgstr "" -+ -+#: ../semanage/semanage:355 -+msgid "Manage file context mapping definitions" -+msgstr "" -+ -+#: ../semanage/semanage:369 -+msgid "" -+"Substitute target path with sourcepath when generating default\n" -+" label. " -+"This is used with fcontext. Requires source and target\n" -+" path " -+"arguments. The context labeling for the target subtree is\n" -+" made " -+"equivalent to that defined for the source." -+msgstr "" -+ -+#: ../semanage/semanage:377 -+msgid "file_spec" -+msgstr "" -+ -+#: ../semanage/semanage:405 -+msgid "Manage SELinux confined users (Roles and levels for an SELinux user)" -+msgstr "" -+ -+#: ../semanage/semanage:423 -+msgid "" -+"\n" -+"SELinux Roles. You must enclose multiple roles within " -+"quotes, separate by spaces. Or specify -R multiple times.\n" -+msgstr "" -+ -+#: ../semanage/semanage:427 -+msgid "selinux_name" -+msgstr "" -+ -+#: ../semanage/semanage:455 -+msgid "Manage network port type definitions" -+msgstr "" -+ -+#: ../semanage/semanage:471 -+msgid "port | port_range" -+msgstr "" -+ -+#: ../semanage/semanage:500 -+msgid "Manage infiniband ibpkey type definitions" -+msgstr "" -+ -+#: ../semanage/semanage:516 -+msgid "pkey | pkey_range" -+msgstr "" -+ -+#: ../semanage/semanage:543 -+msgid "Manage infiniband end port type definitions" -+msgstr "" -+ -+#: ../semanage/semanage:559 -+msgid "ibendport" -+msgstr "" -+ -+#: ../semanage/semanage:586 -+msgid "Manage network interface type definitions" -+msgstr "" -+ -+#: ../semanage/semanage:601 -+msgid "interface_spec" -+msgstr "" -+ -+#: ../semanage/semanage:625 -+msgid "Manage SELinux policy modules" -+msgstr "" -+ -+#: ../semanage/semanage:637 -+msgid "Remove a module" -+msgstr "" -+ -+#: ../semanage/semanage:638 -+msgid "Disable a module" -+msgstr "" -+ -+#: ../semanage/semanage:639 -+msgid "Enable a module" -+msgstr "" -+ -+#: ../semanage/semanage:640 -+msgid "Name of the module to act on" -+msgstr "" -+ -+#: ../semanage/semanage:667 -+msgid "Manage network node type definitions" -+msgstr "" -+ -+#: ../semanage/semanage:681 -+msgid "Network Mask" -+msgstr "" -+ -+#: ../semanage/semanage:685 -+msgid "node" -+msgstr "" -+ -+#: ../semanage/semanage:710 -+msgid "Manage booleans to selectively enable functionality" -+msgstr "" -+ -+#: ../semanage/semanage:715 -+msgid "boolean" -+msgstr "" -+ -+#: ../semanage/semanage:725 -+msgid "Enable the boolean" -+msgstr "" -+ -+#: ../semanage/semanage:726 -+msgid "Disable the boolean" -+msgstr "" -+ -+#: ../semanage/semanage:743 -+msgid "semanage permissive: error: the following argument is required: type\n" -+msgstr "" -+ -+#: ../semanage/semanage:748 -+msgid "Manage process type enforcement mode" -+msgstr "" -+ -+#: ../semanage/semanage:760 ../semanage/seobject.py:2611 -+msgid "type" -+msgstr "" -+ -+#: ../semanage/semanage:771 -+msgid "Disable/Enable dontaudit rules in policy" -+msgstr "" -+ -+#: ../semanage/semanage:791 -+msgid "Output local customizations" -+msgstr "" -+ -+#: ../semanage/semanage:793 -+msgid "Output file" -+msgstr "" -+ -+#: ../semanage/semanage:871 -+msgid "Import local customizations" -+msgstr "" -+ -+#: ../semanage/semanage:874 -+msgid "Input file" -+msgstr "" -+ -+#: ../semanage/seobject.py:274 -+msgid "Could not create semanage handle" -+msgstr "" -+ -+#: ../semanage/seobject.py:282 -+msgid "SELinux policy is not managed or store cannot be accessed." -+msgstr "" -+ -+#: ../semanage/seobject.py:287 -+msgid "Cannot read policy store." -+msgstr "" -+ -+#: ../semanage/seobject.py:292 -+msgid "Could not establish semanage connection" -+msgstr "" -+ -+#: ../semanage/seobject.py:297 -+msgid "Could not test MLS enabled status" -+msgstr "" -+ -+#: ../semanage/seobject.py:303 ../semanage/seobject.py:319 -+msgid "Not yet implemented" -+msgstr "" -+ -+#: ../semanage/seobject.py:307 -+msgid "Semanage transaction already in progress" -+msgstr "" -+ -+#: ../semanage/seobject.py:316 -+msgid "Could not start semanage transaction" -+msgstr "" -+ -+#: ../semanage/seobject.py:330 -+msgid "Could not commit semanage transaction" -+msgstr "" -+ -+#: ../semanage/seobject.py:335 -+msgid "Semanage transaction not in progress" -+msgstr "" -+ -+#: ../semanage/seobject.py:349 ../semanage/seobject.py:469 -+msgid "Could not list SELinux modules" -+msgstr "" -+ -+#: ../semanage/seobject.py:356 -+msgid "Could not get module name" -+msgstr "" -+ -+#: ../semanage/seobject.py:360 -+msgid "Could not get module enabled" -+msgstr "" -+ -+#: ../semanage/seobject.py:364 -+msgid "Could not get module priority" -+msgstr "" -+ -+#: ../semanage/seobject.py:368 -+msgid "Could not get module lang_ext" -+msgstr "" -+ -+#: ../semanage/seobject.py:389 -+msgid "Module Name" -+msgstr "" -+ -+#: ../semanage/seobject.py:389 -+msgid "Priority" -+msgstr "" -+ -+#: ../semanage/seobject.py:389 -+msgid "Language" -+msgstr "" -+ -+#: ../semanage/seobject.py:392 ../sepolicy/sepolicy/sepolicy.glade:3431 -+msgid "Disabled" -+msgstr "" -+ -+#: ../semanage/seobject.py:401 -+#, python-format -+msgid "Module does not exist: %s " -+msgstr "" -+ -+#: ../semanage/seobject.py:405 ../semanage/seobject.py:432 -+#, python-format -+msgid "Invalid priority %d (needs to be between 1 and 999)" -+msgstr "" -+ -+#: ../semanage/seobject.py:415 -+msgid "Could not create module key" -+msgstr "" -+ -+#: ../semanage/seobject.py:419 -+msgid "Could not set module key name" -+msgstr "" -+ -+#: ../semanage/seobject.py:424 -+#, python-format -+msgid "Could not enable module %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:426 -+#, python-format -+msgid "Could not disable module %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:437 -+#, python-format -+msgid "Could not remove module %s (remove failed)" -+msgstr "" -+ -+#: ../semanage/seobject.py:454 -+msgid "dontaudit requires either 'on' or 'off'" -+msgstr "" -+ -+#: ../semanage/seobject.py:484 -+msgid "Builtin Permissive Types" -+msgstr "" -+ -+#: ../semanage/seobject.py:494 -+msgid "Customized Permissive Types" -+msgstr "" -+ -+#: ../semanage/seobject.py:502 -+msgid "" -+"The sepolgen python module is required to setup permissive domains.\n" -+"In some distributions it is included in the policycoreutils-devel package.\n" -+"# yum install policycoreutils-devel\n" -+"Or similar for your distro." -+msgstr "" -+ -+#: ../semanage/seobject.py:512 -+#, python-format -+msgid "Could not set permissive domain %s (module installation failed)" -+msgstr "" -+ -+#: ../semanage/seobject.py:518 -+#, python-format -+msgid "Could not remove permissive domain %s (remove failed)" -+msgstr "" -+ -+#: ../semanage/seobject.py:555 ../semanage/seobject.py:627 -+#: ../semanage/seobject.py:674 ../semanage/seobject.py:794 -+#: ../semanage/seobject.py:824 ../semanage/seobject.py:889 -+#: ../semanage/seobject.py:945 ../semanage/seobject.py:1209 -+#: ../semanage/seobject.py:1468 ../semanage/seobject.py:2442 -+#: ../semanage/seobject.py:2512 ../semanage/seobject.py:2536 -+#: ../semanage/seobject.py:2664 ../semanage/seobject.py:2715 -+#, python-format -+msgid "Could not create a key for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:559 ../semanage/seobject.py:631 -+#: ../semanage/seobject.py:678 ../semanage/seobject.py:684 -+#, python-format -+msgid "Could not check if login mapping for %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:561 -+#, python-format -+msgid "Login mapping for %s is already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:566 -+#, python-format -+msgid "Linux Group %s does not exist" -+msgstr "" -+ -+#: ../semanage/seobject.py:571 -+#, python-format -+msgid "Linux User %s does not exist" -+msgstr "" -+ -+#: ../semanage/seobject.py:575 -+#, python-format -+msgid "Could not create login mapping for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:579 ../semanage/seobject.py:838 -+#, python-format -+msgid "Could not set name for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:584 ../semanage/seobject.py:848 -+#, python-format -+msgid "Could not set MLS range for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:588 -+#, python-format -+msgid "Could not set SELinux user for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:592 -+#, python-format -+msgid "Could not add login mapping for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:610 -+msgid "Requires seuser or serange" -+msgstr "" -+ -+#: ../semanage/seobject.py:633 ../semanage/seobject.py:680 -+#, python-format -+msgid "Login mapping for %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:637 -+#, python-format -+msgid "Could not query seuser for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:652 -+#, python-format -+msgid "Could not modify login mapping for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:686 -+#, python-format -+msgid "Login mapping for %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:690 -+#, python-format -+msgid "Could not delete login mapping for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:712 ../semanage/seobject.py:745 -+#: ../semanage/seobject.py:988 -+msgid "Could not list login mappings" -+msgstr "" -+ -+#: ../semanage/seobject.py:769 ../semanage/seobject.py:781 -+#: ../sepolicy/sepolicy/sepolicy.glade:1162 -+#: ../sepolicy/sepolicy/sepolicy.glade:3156 -+msgid "Login Name" -+msgstr "" -+ -+#: ../semanage/seobject.py:769 ../semanage/seobject.py:781 -+#: ../semanage/seobject.py:1035 ../semanage/seobject.py:1040 -+#: ../sepolicy/sepolicy/sepolicy.glade:1188 -+#: ../sepolicy/sepolicy/sepolicy.glade:3174 -+#: ../sepolicy/sepolicy/sepolicy.glade:3260 -+#: ../sepolicy/sepolicy/sepolicy.glade:4915 -+msgid "SELinux User" -+msgstr "" -+ -+#: ../semanage/seobject.py:769 -+msgid "MLS/MCS Range" -+msgstr "" -+ -+#: ../semanage/seobject.py:769 -+msgid "Service" -+msgstr "" -+ -+#: ../semanage/seobject.py:797 ../semanage/seobject.py:828 -+#: ../semanage/seobject.py:893 ../semanage/seobject.py:949 -+#: ../semanage/seobject.py:955 -+#, python-format -+msgid "Could not check if SELinux user %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:800 ../semanage/seobject.py:899 -+#: ../semanage/seobject.py:961 -+#, python-format -+msgid "Could not query user for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:820 -+#, python-format -+msgid "You must add at least one role for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:830 -+#, python-format -+msgid "SELinux user %s is already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:834 -+#, python-format -+msgid "Could not create SELinux user for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:843 -+#, python-format -+msgid "Could not add role %s for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:852 -+#, python-format -+msgid "Could not set MLS level for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:855 -+#, python-format -+msgid "Could not add prefix %s for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:858 -+#, python-format -+msgid "Could not extract key for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:862 -+#, python-format -+msgid "Could not add SELinux user %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:883 -+msgid "Requires prefix, roles, level or range" -+msgstr "" -+ -+#: ../semanage/seobject.py:885 -+msgid "Requires prefix or roles" -+msgstr "" -+ -+#: ../semanage/seobject.py:895 ../semanage/seobject.py:951 -+#, python-format -+msgid "SELinux user %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:924 -+#, python-format -+msgid "Could not modify SELinux user %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:957 -+#, python-format -+msgid "SELinux user %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:968 -+#, python-format -+msgid "Could not delete SELinux user %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1006 -+msgid "Could not list SELinux users" -+msgstr "" -+ -+#: ../semanage/seobject.py:1012 -+#, python-format -+msgid "Could not list roles for user %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1034 -+msgid "Labeling" -+msgstr "" -+ -+#: ../semanage/seobject.py:1034 -+msgid "MLS/" -+msgstr "" -+ -+#: ../semanage/seobject.py:1035 -+msgid "Prefix" -+msgstr "" -+ -+#: ../semanage/seobject.py:1035 -+msgid "MCS Level" -+msgstr "" -+ -+#: ../semanage/seobject.py:1035 -+msgid "MCS Range" -+msgstr "" -+ -+#: ../semanage/seobject.py:1035 ../semanage/seobject.py:1040 -+#: ../sepolicy/sepolicy/sepolicy.glade:3280 -+#: ../sepolicy/sepolicy/sepolicy.glade:5251 -+#: ../sepolicy/sepolicy/sepolicy.glade:5400 -+msgid "SELinux Roles" -+msgstr "" -+ -+#: ../semanage/seobject.py:1061 -+msgid "Protocol udp or tcp is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1063 -+msgid "Port is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1073 -+msgid "Invalid Port" -+msgstr "" -+ -+#: ../semanage/seobject.py:1077 ../semanage/seobject.py:1345 -+#, python-format -+msgid "Could not create a key for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1088 ../semanage/seobject.py:1356 -+#: ../semanage/seobject.py:1604 -+msgid "Type is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1091 ../semanage/seobject.py:1155 -+#, python-format -+msgid "Type %s is invalid, must be a port type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1097 ../semanage/seobject.py:1161 -+#: ../semanage/seobject.py:1227 ../semanage/seobject.py:1233 -+#, python-format -+msgid "Could not check if port %s/%s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1099 -+#, python-format -+msgid "Port %s/%s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1103 -+#, python-format -+msgid "Could not create port for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1109 ../semanage/seobject.py:1377 -+#: ../semanage/seobject.py:1624 -+#, python-format -+msgid "Could not create context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1113 -+#, python-format -+msgid "Could not set user in port context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1117 -+#, python-format -+msgid "Could not set role in port context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1121 -+#, python-format -+msgid "Could not set type in port context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1126 -+#, python-format -+msgid "Could not set mls fields in port context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1130 -+#, python-format -+msgid "Could not set port context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1134 -+#, python-format -+msgid "Could not add port %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1150 ../semanage/seobject.py:1416 -+#: ../semanage/seobject.py:1663 ../semanage/seobject.py:1923 -+#: ../semanage/seobject.py:2125 -+msgid "Requires setype or serange" -+msgstr "" -+ -+#: ../semanage/seobject.py:1152 ../semanage/seobject.py:1418 -+#: ../semanage/seobject.py:1665 -+msgid "Requires setype" -+msgstr "" -+ -+#: ../semanage/seobject.py:1163 ../semanage/seobject.py:1229 -+#, python-format -+msgid "Port %s/%s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1167 -+#, python-format -+msgid "Could not query port %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1181 -+#, python-format -+msgid "Could not modify port %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1196 -+msgid "Could not list the ports" -+msgstr "" -+ -+#: ../semanage/seobject.py:1213 -+#, python-format -+msgid "Could not delete the port %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1235 -+#, python-format -+msgid "Port %s/%s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:1239 -+#, python-format -+msgid "Could not delete port %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1257 ../semanage/seobject.py:1277 -+msgid "Could not list ports" -+msgstr "" -+ -+#: ../semanage/seobject.py:1311 ../sepolicy/sepolicy/sepolicy.glade:2676 -+#: ../sepolicy/sepolicy/sepolicy.glade:2774 -+#: ../sepolicy/sepolicy/sepolicy.glade:4648 -+msgid "SELinux Port Type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1311 -+msgid "Proto" -+msgstr "" -+ -+#: ../semanage/seobject.py:1311 ../semanage/seobject.py:1801 -+#: ../sepolicy/sepolicy/sepolicy.glade:1413 -+msgid "Port Number" -+msgstr "" -+ -+#: ../semanage/seobject.py:1331 -+msgid "Subnet Prefix is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1341 -+msgid "Invalid Pkey" -+msgstr "" -+ -+#: ../semanage/seobject.py:1359 ../semanage/seobject.py:1421 -+#, python-format -+msgid "Type %s is invalid, must be a ibpkey type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1365 ../semanage/seobject.py:1427 -+#: ../semanage/seobject.py:1481 ../semanage/seobject.py:1487 -+#, python-format -+msgid "Could not check if ibpkey %s/%s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1367 -+#, python-format -+msgid "ibpkey %s/%s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1371 -+#, python-format -+msgid "Could not create ibpkey for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1381 -+#, python-format -+msgid "Could not set user in ibpkey context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1385 -+#, python-format -+msgid "Could not set role in ibpkey context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1389 -+#, python-format -+msgid "Could not set type in ibpkey context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1394 -+#, python-format -+msgid "Could not set mls fields in ibpkey context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1398 -+#, python-format -+msgid "Could not set ibpkey context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1402 -+#, python-format -+msgid "Could not add ibpkey %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1429 ../semanage/seobject.py:1483 -+#, python-format -+msgid "ibpkey %s/%s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1433 -+#, python-format -+msgid "Could not query ibpkey %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1444 -+#, python-format -+msgid "Could not modify ibpkey %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1457 -+msgid "Could not list the ibpkeys" -+msgstr "" -+ -+#: ../semanage/seobject.py:1472 -+#, python-format -+msgid "Could not delete the ibpkey %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1489 -+#, python-format -+msgid "ibpkey %s/%s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:1493 -+#, python-format -+msgid "Could not delete ibpkey %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1509 ../semanage/seobject.py:1530 -+msgid "Could not list ibpkeys" -+msgstr "" -+ -+#: ../semanage/seobject.py:1564 -+msgid "SELinux IB Pkey Type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1564 -+msgid "Subnet_Prefix" -+msgstr "" -+ -+#: ../semanage/seobject.py:1564 -+msgid "Pkey Number" -+msgstr "" -+ -+#: ../semanage/seobject.py:1584 -+msgid "IB device name is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1589 -+msgid "Invalid Port Number" -+msgstr "" -+ -+#: ../semanage/seobject.py:1593 -+#, python-format -+msgid "Could not create a key for ibendport %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1607 ../semanage/seobject.py:1668 -+#, python-format -+msgid "Type %s is invalid, must be an ibendport type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1612 ../semanage/seobject.py:1674 -+#: ../semanage/seobject.py:1726 ../semanage/seobject.py:1732 -+#, python-format -+msgid "Could not check if ibendport %s/%s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1614 -+#, python-format -+msgid "ibendport %s/%s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1618 -+#, python-format -+msgid "Could not create ibendport for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1628 -+#, python-format -+msgid "Could not set user in ibendport context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1632 -+#, python-format -+msgid "Could not set role in ibendport context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1636 -+#, python-format -+msgid "Could not set type in ibendport context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1641 -+#, python-format -+msgid "Could not set mls fields in ibendport context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1645 -+#, python-format -+msgid "Could not set ibendport context for %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1649 -+#, python-format -+msgid "Could not add ibendport %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1676 ../semanage/seobject.py:1728 -+#, python-format -+msgid "ibendport %s/%s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1680 -+#, python-format -+msgid "Could not query ibendport %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1691 -+#, python-format -+msgid "Could not modify ibendport %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1704 -+msgid "Could not list the ibendports" -+msgstr "" -+ -+#: ../semanage/seobject.py:1713 -+#, python-format -+msgid "Could not create a key for %s/%d" -+msgstr "" -+ -+#: ../semanage/seobject.py:1717 -+#, python-format -+msgid "Could not delete the ibendport %s/%d" -+msgstr "" -+ -+#: ../semanage/seobject.py:1734 -+#, python-format -+msgid "ibendport %s/%s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:1738 -+#, python-format -+msgid "Could not delete ibendport %s/%s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1754 ../semanage/seobject.py:1774 -+msgid "Could not list ibendports" -+msgstr "" -+ -+#: ../semanage/seobject.py:1801 -+msgid "SELinux IB End Port Type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1801 -+msgid "IB Device Name" -+msgstr "" -+ -+#: ../semanage/seobject.py:1825 -+msgid "Node Address is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1840 -+msgid "Unknown or missing protocol" -+msgstr "" -+ -+#: ../semanage/seobject.py:1854 -+msgid "SELinux node type is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:1857 ../semanage/seobject.py:1926 -+#, python-format -+msgid "Type %s is invalid, must be a node type" -+msgstr "" -+ -+#: ../semanage/seobject.py:1861 ../semanage/seobject.py:1930 -+#: ../semanage/seobject.py:1968 ../semanage/seobject.py:2066 -+#: ../semanage/seobject.py:2129 ../semanage/seobject.py:2165 -+#: ../semanage/seobject.py:2377 -+#, python-format -+msgid "Could not create key for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1863 ../semanage/seobject.py:1934 -+#: ../semanage/seobject.py:1972 ../semanage/seobject.py:1978 -+#, python-format -+msgid "Could not check if addr %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1867 -+#, python-format -+msgid "Addr %s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1871 -+#, python-format -+msgid "Could not create addr for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1877 ../semanage/seobject.py:2081 -+#: ../semanage/seobject.py:2333 -+#, python-format -+msgid "Could not create context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1881 -+#, python-format -+msgid "Could not set mask for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1885 -+#, python-format -+msgid "Could not set user in addr context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1889 -+#, python-format -+msgid "Could not set role in addr context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1893 -+#, python-format -+msgid "Could not set type in addr context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1898 -+#, python-format -+msgid "Could not set mls fields in addr context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1902 -+#, python-format -+msgid "Could not set addr context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1906 -+#, python-format -+msgid "Could not add addr %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1936 ../semanage/seobject.py:1974 -+#, python-format -+msgid "Addr %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:1940 -+#, python-format -+msgid "Could not query addr %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1950 -+#, python-format -+msgid "Could not modify addr %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1980 -+#, python-format -+msgid "Addr %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:1984 -+#, python-format -+msgid "Could not delete addr %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:1998 -+msgid "Could not deleteall node mappings" -+msgstr "" -+ -+#: ../semanage/seobject.py:2012 -+msgid "Could not list addrs" -+msgstr "" -+ -+#: ../semanage/seobject.py:2062 ../semanage/seobject.py:2370 -+msgid "SELinux Type is required" -+msgstr "" -+ -+#: ../semanage/seobject.py:2070 ../semanage/seobject.py:2133 -+#: ../semanage/seobject.py:2169 ../semanage/seobject.py:2175 -+#, python-format -+msgid "Could not check if interface %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2072 -+#, python-format -+msgid "Interface %s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2076 -+#, python-format -+msgid "Could not create interface for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2085 -+#, python-format -+msgid "Could not set user in interface context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2089 -+#, python-format -+msgid "Could not set role in interface context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2093 -+#, python-format -+msgid "Could not set type in interface context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2098 -+#, python-format -+msgid "Could not set mls fields in interface context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2102 -+#, python-format -+msgid "Could not set interface context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2106 -+#, python-format -+msgid "Could not set message context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2110 -+#, python-format -+msgid "Could not add interface %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2135 ../semanage/seobject.py:2171 -+#, python-format -+msgid "Interface %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2139 -+#, python-format -+msgid "Could not query interface %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2150 -+#, python-format -+msgid "Could not modify interface %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2177 -+#, python-format -+msgid "Interface %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:2181 -+#, python-format -+msgid "Could not delete interface %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2195 -+msgid "Could not delete all interface mappings" -+msgstr "" -+ -+#: ../semanage/seobject.py:2209 -+msgid "Could not list interfaces" -+msgstr "" -+ -+#: ../semanage/seobject.py:2231 -+msgid "SELinux Interface" -+msgstr "" -+ -+#: ../semanage/seobject.py:2231 ../semanage/seobject.py:2611 -+msgid "Context" -+msgstr "" -+ -+#: ../semanage/seobject.py:2299 -+#, python-format -+msgid "Target %s is not valid. Target is not allowed to end with '/'" -+msgstr "" -+ -+#: ../semanage/seobject.py:2302 -+#, python-format -+msgid "Substiture %s is not valid. Substitute is not allowed to end with '/'" -+msgstr "" -+ -+#: ../semanage/seobject.py:2305 -+#, python-format -+msgid "Equivalence class for %s already exists" -+msgstr "" -+ -+#: ../semanage/seobject.py:2311 -+#, python-format -+msgid "File spec %s conflicts with equivalency rule '%s %s'" -+msgstr "" -+ -+#: ../semanage/seobject.py:2322 -+#, python-format -+msgid "Equivalence class for %s does not exist" -+msgstr "" -+ -+#: ../semanage/seobject.py:2339 -+#, python-format -+msgid "Could not set user in file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2343 -+#, python-format -+msgid "Could not set role in file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2348 ../semanage/seobject.py:2406 -+#, python-format -+msgid "Could not set mls fields in file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2354 -+msgid "Invalid file specification" -+msgstr "" -+ -+#: ../semanage/seobject.py:2356 -+msgid "File specification can not include spaces" -+msgstr "" -+ -+#: ../semanage/seobject.py:2361 -+#, python-format -+msgid "" -+"File spec %s conflicts with equivalency rule '%s %s'; Try adding '%s' instead" -+msgstr "" -+ -+#: ../semanage/seobject.py:2373 ../semanage/seobject.py:2436 -+#, python-format -+msgid "Type %s is invalid, must be a file or device type" -+msgstr "" -+ -+#: ../semanage/seobject.py:2381 ../semanage/seobject.py:2386 -+#: ../semanage/seobject.py:2446 ../semanage/seobject.py:2540 -+#: ../semanage/seobject.py:2544 -+#, python-format -+msgid "Could not check if file context for %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2389 -+#, python-format -+msgid "File context for %s already defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2393 -+#, python-format -+msgid "Could not create file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2401 -+#, python-format -+msgid "Could not set type in file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2409 ../semanage/seobject.py:2476 -+#: ../semanage/seobject.py:2480 -+#, python-format -+msgid "Could not set file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2415 -+#, python-format -+msgid "Could not add file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2434 -+msgid "Requires setype, serange or seuser" -+msgstr "" -+ -+#: ../semanage/seobject.py:2450 ../semanage/seobject.py:2548 -+#, python-format -+msgid "File context for %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2458 -+#, python-format -+msgid "Could not query file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2484 -+#, python-format -+msgid "Could not modify file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2502 -+msgid "Could not list the file contexts" -+msgstr "" -+ -+#: ../semanage/seobject.py:2516 -+#, python-format -+msgid "Could not delete the file context %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2546 -+#, python-format -+msgid "File context for %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:2552 -+#, python-format -+msgid "Could not delete file context for %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2569 -+msgid "Could not list file contexts" -+msgstr "" -+ -+#: ../semanage/seobject.py:2573 -+msgid "Could not list file contexts for home directories" -+msgstr "" -+ -+#: ../semanage/seobject.py:2577 -+msgid "Could not list local file contexts" -+msgstr "" -+ -+#: ../semanage/seobject.py:2611 -+msgid "SELinux fcontext" -+msgstr "" -+ -+#: ../semanage/seobject.py:2624 -+msgid "" -+"\n" -+"SELinux Distribution fcontext Equivalence \n" -+msgstr "" -+ -+#: ../semanage/seobject.py:2629 -+msgid "" -+"\n" -+"SELinux Local fcontext Equivalence \n" -+msgstr "" -+ -+#: ../semanage/seobject.py:2667 ../semanage/seobject.py:2718 -+#: ../semanage/seobject.py:2724 -+#, python-format -+msgid "Could not check if boolean %s is defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2669 ../semanage/seobject.py:2720 -+#, python-format -+msgid "Boolean %s is not defined" -+msgstr "" -+ -+#: ../semanage/seobject.py:2673 -+#, python-format -+msgid "Could not query file context %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2678 -+#, python-format -+msgid "You must specify one of the following values: %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2683 -+#, python-format -+msgid "Could not set active value of boolean %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2686 -+#, python-format -+msgid "Could not modify boolean %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2702 -+#, python-format -+msgid "Bad format %s: Record %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2726 -+#, python-format -+msgid "Boolean %s is defined in policy, cannot be deleted" -+msgstr "" -+ -+#: ../semanage/seobject.py:2730 -+#, python-format -+msgid "Could not delete boolean %s" -+msgstr "" -+ -+#: ../semanage/seobject.py:2742 ../semanage/seobject.py:2759 -+msgid "Could not list booleans" -+msgstr "" -+ -+#: ../semanage/seobject.py:2792 -+msgid "off" -+msgstr "" -+ -+#: ../semanage/seobject.py:2792 -+msgid "on" -+msgstr "" -+ -+#: ../semanage/seobject.py:2804 -+msgid "SELinux boolean" -+msgstr "" -+ -+#: ../semanage/seobject.py:2804 -+msgid "State" -+msgstr "" -+ -+#: ../semanage/seobject.py:2804 -+msgid "Default" -+msgstr "" -+ -+#: ../semanage/seobject.py:2804 ../sepolicy/sepolicy/sepolicy.glade:2148 -+#: ../sepolicy/sepolicy/sepolicy.glade:2518 -+#: ../sepolicy/sepolicy/sepolicy.glade:5117 -+msgid "Description" -+msgstr "" -+ -+#: ../sepolgen/src/sepolgen/interfaces.py:486 -+msgid "Found circular interface class" -+msgstr "" -+ -+#: ../sepolgen/src/sepolgen/interfaces.py:491 -+#, python-format -+msgid "Missing interface definition for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:141 -+msgid "Standard Init Daemon" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:142 -+msgid "DBUS System Daemon" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:143 -+msgid "Internet Services Daemon" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:144 -+msgid "Web Application/Script (CGI)" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:145 -+msgid "Sandbox" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:146 -+msgid "User Application" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:147 -+msgid "Existing Domain Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:148 -+msgid "Minimal Terminal Login User Role" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:149 -+msgid "Minimal X Windows Login User Role" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:150 -+msgid "Desktop Login User Role" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:151 -+msgid "Administrator Login User Role" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:152 -+msgid "Confined Root Administrator Role" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:153 -+msgid "Module information for a new type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:159 -+msgid "Valid Types:\n" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:194 -+#, python-format -+msgid "Ports must be numbers or ranges of numbers from 1 to %d " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:206 -+msgid "You must enter a valid policy type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:209 -+#, python-format -+msgid "You must enter a name for your policy module for your '%s'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:347 -+msgid "" -+"Name must be alpha numberic with no spaces. Consider using option \"-n " -+"MODULENAME\"" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:439 -+msgid "User Role types can not be assigned executables." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:445 -+msgid "Only Daemon apps can use an init script.." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:463 -+msgid "use_resolve must be a boolean value " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:469 -+msgid "use_syslog must be a boolean value " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:475 -+msgid "use_kerberos must be a boolean value " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:481 -+msgid "manage_krb5_rcache must be a boolean value " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:511 -+msgid "USER Types automatically get a tmp type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:848 -+#, python-format -+msgid "'%s' policy modules require existing domains" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:873 -+msgid "Type field required" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:886 -+#, python-format -+msgid "" -+"You need to define a new type which ends with: \n" -+" %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1114 -+msgid "You must enter the executable path for your confined process" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1381 -+msgid "Type Enforcement file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1382 -+msgid "Interface file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1383 -+msgid "File Contexts file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1386 -+msgid "Spec file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/generate.py:1387 -+msgid "Setup Script" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:68 ../sepolicy/sepolicy/sepolicy.glade:3742 -+#: ../sepolicy/sepolicy/sepolicy.glade:3844 -+#: ../sepolicy/sepolicy/sepolicy.glade:3907 -+#: ../sepolicy/sepolicy/sepolicy.glade:3970 -+msgid "No" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:68 ../sepolicy/sepolicy/sepolicy.glade:3725 -+#: ../sepolicy/sepolicy/sepolicy.glade:3826 -+#: ../sepolicy/sepolicy/sepolicy.glade:3890 -+#: ../sepolicy/sepolicy/sepolicy.glade:3953 -+msgid "Yes" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:69 -+msgid "Disable" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:69 -+msgid "Enable" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:82 ../sepolicy/sepolicy/sepolicy.glade:726 -+#: ../sepolicy/sepolicy/sepolicy.glade:1467 -+#: ../sepolicy/sepolicy/sepolicy.glade:3511 -+msgid "Advanced >>" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:82 -+msgid "Advanced <<" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:83 ../sepolicy/sepolicy/sepolicy.glade:80 -+msgid "Advanced Search >>" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:83 -+msgid "Advanced Search <<" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:108 -+msgid "" -+"\n" -+"To change from Disabled to Enforcing mode\n" -+"- Change the system mode from Disabled to Permissive\n" -+"- Reboot, so that the system can relabel\n" -+"- Once the system is working as planned\n" -+" * Change the system mode to Enforcing\n" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:503 -+#, python-format -+msgid "%s is not a valid domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:652 -+msgid "System Status: Disabled" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:750 -+msgid "Help: Start Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:754 -+msgid "Help: Booleans Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:760 -+msgid "Help: Executable Files Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:763 -+msgid "Help: Writable Files Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:766 -+msgid "Help: Application Types Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:771 -+msgid "Help: Outbound Network Connections Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:774 -+msgid "Help: Inbound Network Connections Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:780 -+msgid "Help: Transition from application Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:783 -+msgid "Help: Transition into application Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:786 -+msgid "Help: Transition application file Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:790 -+msgid "Help: Systems Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:794 -+msgid "Help: Lockdown Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:798 -+msgid "Help: Login Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:802 -+msgid "Help: SELinux User Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:806 -+msgid "Help: File Equivalence Page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:951 ../sepolicy/sepolicy/gui.py:1242 -+#: ../sepolicy/sepolicy/gui.py:1682 ../sepolicy/sepolicy/gui.py:1929 -+#: ../sepolicy/sepolicy/gui.py:2717 -+msgid "More..." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1059 -+#, python-format -+msgid "File path used to enter the '%s' domain." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1060 -+#, python-format -+msgid "Files to which the '%s' domain can write." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1061 -+#, python-format -+msgid "Network Ports to which the '%s' is allowed to connect." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1062 -+#, python-format -+msgid "Network Ports to which the '%s' is allowed to listen." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1063 -+#, python-format -+msgid "File Types defined for the '%s'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1064 -+#, python-format -+msgid "" -+"Display boolean information that can be used to modify the policy for the " -+"'%s'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1065 -+#, python-format -+msgid "Display file type information that can be used by the '%s'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1066 -+#, python-format -+msgid "Display network ports to which the '%s' can connect or listen to." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1067 -+#, python-format -+msgid "Application Transitions Into '%s'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1068 -+#, python-format -+msgid "Application Transitions From '%s'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1069 -+#, python-format -+msgid "File Transitions From '%s'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1070 -+#, python-format -+msgid "" -+"Executables which will transition to '%s', when executing selected domains " -+"entrypoint." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1071 -+#, python-format -+msgid "" -+"Executables which will transition to a different domain, when '%s' executes " -+"them." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1072 -+#, python-format -+msgid "Files by '%s' with transitions to a different label." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1073 -+#, python-format -+msgid "Display applications that can transition into or out of the '%s'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1167 ../sepolicy/sepolicy/__init__.py:74 -+msgid "all files" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1181 -+msgid "MISSING FILE PATH" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1296 -+#, python-format -+msgid "To disable this transition, go to the %sBoolean section%s." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1298 -+#, python-format -+msgid "To enable this transition, go to the %sBoolean section%s." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1355 -+msgid "executable" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1358 -+msgid "writable" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1361 -+msgid "application" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1362 -+#, python-format -+msgid "Add new %(TYPE)s file path for '%(DOMAIN)s' domains." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1363 -+#, python-format -+msgid "Delete %(TYPE)s file paths for '%(DOMAIN)s' domain." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1364 -+#, python-format -+msgid "" -+"Modify %(TYPE)s file path for '%(DOMAIN)s' domain. Only bolded items in the " -+"list can be selected, this indicates they were modified previously." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1376 -+msgid "connect" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1379 -+msgid "listen for inbound connections" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1381 -+#, python-format -+msgid "" -+"Add new port definition to which the '%(APP)s' domain is allowed to %(PERM)s." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1382 -+#, python-format -+msgid "" -+"Delete modified port definitions to which the '%(APP)s' domain is allowed to " -+"%(PERM)s." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1383 -+#, python-format -+msgid "" -+"Modify port definitions to which the '%(APP)s' domain is allowed to %(PERM)s." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1412 -+msgid "Add new SELinux User/Role definition." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1413 -+msgid "Delete modified SELinux User/Role definitions." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1414 -+msgid "Modify selected modified SELinux User/Role definitions." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1421 -+msgid "Add new Login Mapping definition." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1422 -+msgid "Delete modified Login Mapping definitions." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1423 -+msgid "Modify selected modified Login Mapping definitions." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1430 -+msgid "Add new File Equivalence definition." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1431 -+msgid "Delete modified File Equivalence definitions." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1432 -+msgid "" -+"Modify selected modified File Equivalence definitions. Only bolded items in " -+"the list can be selected, this indicates they were modified previously." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1460 -+#, python-format -+msgid "Boolean %s Allow Rules" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1473 -+#, python-format -+msgid "Add Network Port for %s. Ports will be created when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1474 -+#, python-format -+msgid "Add Network Port for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1479 -+#, python-format -+msgid "" -+"Add File Labeling for %s. File labels will be created when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1480 ../sepolicy/sepolicy/gui.py:1533 -+#, python-format -+msgid "Add File Labeling for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1490 -+msgid "Add Login Mapping. User Mapping will be created when Update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1491 -+msgid "Add Login Mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1496 -+msgid "" -+"Add SELinux User Role. SELinux user roles will be created when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1497 -+msgid "Add SELinux Users" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1504 -+msgid "" -+"Add File Equivalency Mapping. Mapping will be created when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1505 -+msgid "Add SELinux File Equivalency" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1532 -+#, python-format -+msgid "" -+"Modify File Labeling for %s. File labels will be created when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1588 -+msgid "" -+"Modify SELinux User Role. SELinux user roles will be modified when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1589 -+msgid "Modify SELinux Users" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1597 -+msgid "" -+"Modify Login Mapping. Login Mapping will be modified when Update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1598 -+msgid "Modify Login Mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1604 -+msgid "" -+"Modify File Equivalency Mapping. Mapping will be created when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1605 -+msgid "Modify SELinux File Equivalency" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1690 -+#, python-format -+msgid "" -+"Modify Network Port for %s. Ports will be created when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1691 -+#, python-format -+msgid "Modify Network Port for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1910 -+#, python-format -+msgid "The entry '%s' is not a valid path. Paths must begin with a '/'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:1923 -+msgid "Port number must be between 1 and 65536" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2203 -+#, python-format -+msgid "SELinux name: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2214 -+#, python-format -+msgid "Add file labeling for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2216 -+#, python-format -+msgid "Delete file labeling for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2218 -+#, python-format -+msgid "Modify file labeling for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2222 -+#, python-format -+msgid "File path: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2225 -+#, python-format -+msgid "File class: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2228 ../sepolicy/sepolicy/gui.py:2252 -+#, python-format -+msgid "SELinux file type: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2237 -+#, python-format -+msgid "Add ports for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2239 -+#, python-format -+msgid "Delete ports for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2241 -+#, python-format -+msgid "Modify ports for %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2244 -+#, python-format -+msgid "Network ports: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2247 -+#, python-format -+msgid "Network protocol: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2261 -+msgid "Add user" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2263 -+msgid "Delete user" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2265 -+msgid "Modify user" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2268 -+#, python-format -+msgid "SELinux User : %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2273 -+#, python-format -+msgid "Roles: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2277 ../sepolicy/sepolicy/gui.py:2302 -+#, python-format -+msgid "MLS/MCS Range: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2286 -+msgid "Add login mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2288 -+msgid "Delete login mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2290 -+msgid "Modify login mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2294 -+#, python-format -+msgid "Login Name : %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2298 -+#, python-format -+msgid "SELinux User: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2311 -+msgid "Add file equiv labeling." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2313 -+msgid "Delete file equiv labeling." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2315 -+msgid "Modify file equiv labeling." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2319 -+#, python-format -+msgid "File path : %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2323 -+#, python-format -+msgid "Equivalence: %s" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2354 ../sepolicy/sepolicy/sepolicy.glade:129 -+#: ../sepolicy/sepolicy/sepolicy.glade:1898 -+#: ../sepolicy/sepolicy/sepolicy.glade:3803 -+msgid "System" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2363 ../sepolicy/sepolicy/sepolicy.glade:95 -+msgid "File Equivalence" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2373 ../sepolicy/sepolicy/sepolicy.glade:112 -+msgid "Users" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2426 -+#, python-format -+msgid "" -+"Run restorecon on %(PATH)s to change its type from %(CUR_CONTEXT)s to the " -+"default %(DEF_CONTEXT)s?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2436 ../sepolicy/sepolicy/sepolicy.glade:4226 -+msgid "Update" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2438 -+msgid "Update Changes" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2440 -+msgid "Revert Changes" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2571 -+msgid "System Status: Enforcing" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2574 -+msgid "System Status: Permissive" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2638 -+msgid "" -+"Changing the policy type will cause a relabel of the entire file system on " -+"the next boot. Relabeling takes a long time depending on the size of the " -+"file system. Do you wish to continue?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2768 -+msgid "" -+"Changing to SELinux disabled requires a reboot. It is not recommended. If " -+"you later decide to turn SELinux back on, the system will be required to " -+"relabel. If you just want to see if SELinux is causing a problem on your " -+"system, you can go to permissive mode which will only log errors and not " -+"enforce SELinux policy. Permissive mode does not require a reboot. Do you " -+"wish to continue?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2772 -+msgid "" -+"Changing to SELinux enabled will cause a relabel of the entire file system " -+"on the next boot. Relabeling takes a long time depending on the size of the " -+"file system. Do you wish to continue?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2802 -+msgid "" -+"You are attempting to close the application without applying your changes.\n" -+" * To apply changes you have made during this session, click No and " -+"click Update.\n" -+" * To leave the application without applying your changes, click Yes. " -+"All changes that you have made during this session will be lost." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/gui.py:2802 -+msgid "Loss of data Dialog" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:75 -+msgid "regular file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:76 -+msgid "directory" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:77 -+msgid "character device" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:78 -+msgid "block device" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:79 -+msgid "socket file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:80 -+msgid "symbolic link" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:81 -+msgid "named pipe" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:130 -+msgid "No SELinux Policy installed" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:157 -+#, python-format -+msgid "Failed to read %s policy file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:418 -+#, python-format -+msgid "-- Allowed %s [ %s ]" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:831 -+msgid "You must regenerate interface info by running /usr/bin/sepolgen-ifgen" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/__init__.py:1150 -+msgid "unknown" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/interface.py:223 -+#, python-format -+msgid "Compiling %s interface" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/interface.py:231 -+#, python-format -+msgid "" -+"\n" -+"Compile test for %s failed.\n" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/interface.py:234 -+#, python-format -+msgid "" -+"\n" -+"Compile test for %s has not run. %s\n" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/interface.py:240 -+#, python-format -+msgid "" -+"\n" -+"Compiling of %s interface is not supported." -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:227 -+#, python-format -+msgid "Interface %s does not exist." -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:324 -+msgid "You need to install policycoreutils-gui package to use the gui option" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:329 -+msgid "Graphical User Interface for SELinux Policy" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:332 ../sepolicy/sepolicy.py:380 -+msgid "Domain name(s) of man pages to be created" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:345 -+msgid "Alternative root needs to be setup" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:362 -+msgid "Generate SELinux man pages" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:365 -+msgid "path in which the generated SELinux man pages will be stored" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:367 -+msgid "name of the OS for man pages" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:369 -+msgid "Generate HTML man pages structure for selected SELinux man page" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:371 -+msgid "Alternate root directory, defaults to /" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:373 -+msgid "" -+"With this flag, alternative root path needs to include file context files " -+"and policy.xml file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:377 -+msgid "All domains" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:386 -+msgid "Query SELinux policy network information" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:391 -+msgid "list all SELinux port types" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:394 -+msgid "show SELinux type related to the port" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:397 -+msgid "Show ports defined for this SELinux type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:400 -+msgid "show ports to which this domain can bind and/or connect" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:403 -+msgid "show ports to which this application can bind and/or connect" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:420 -+msgid "query SELinux policy to see if domains can communicate with each other" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:423 -+msgid "Source Domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:426 -+msgid "Target Domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:447 -+msgid "query SELinux Policy to see description of booleans" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:451 -+msgid "get all booleans descriptions" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:454 -+msgid "boolean to get description" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:466 -+msgid "" -+"query SELinux Policy to see how a source process domain can transition to " -+"the target process domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:469 -+msgid "source process domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:472 -+msgid "target process domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:517 -+#, python-format -+msgid "sepolicy generate: error: one of the arguments %s is required" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:522 -+msgid "Command required for this type of policy" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:533 -+#, python-format -+msgid "" -+"-t option can not be used with '%s' domains. Read usage for more details." -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:538 -+#, python-format -+msgid "" -+"-d option can not be used with '%s' domains. Read usage for more details." -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:542 -+#, python-format -+msgid "" -+"-a option can not be used with '%s' domains. Read usage for more details." -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:546 -+msgid "-w option can not be used with the --newtype option" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:567 -+msgid "List SELinux Policy interfaces" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:587 -+msgid "Enter interface names, you wish to query" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:597 -+msgid "Generate SELinux Policy module template" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:600 -+msgid "Enter domain type which you will be extending" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:603 -+msgid "Enter SELinux user(s) which will transition to this domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:606 -+msgid "Enter SELinux role(s) to which the administror domain will transition" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:609 -+msgid "Enter domain(s) which this confined admin will administrate" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:612 -+msgid "name of policy to generate" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:619 -+msgid "path in which the generated policy files will be stored" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:621 -+msgid "path to which the confined processes will need to write" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:622 -+msgid "Policy types which require a command" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:626 ../sepolicy/sepolicy.py:629 -+#: ../sepolicy/sepolicy.py:632 ../sepolicy/sepolicy.py:635 -+#: ../sepolicy/sepolicy.py:638 ../sepolicy/sepolicy.py:644 -+#: ../sepolicy/sepolicy.py:647 ../sepolicy/sepolicy.py:650 -+#: ../sepolicy/sepolicy.py:656 ../sepolicy/sepolicy.py:659 -+#: ../sepolicy/sepolicy.py:662 ../sepolicy/sepolicy.py:665 -+#, python-format -+msgid "Generate '%s' policy" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:653 -+#, python-format -+msgid "Generate '%s' policy " -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:667 -+msgid "executable to confine" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:672 -+msgid "commands" -+msgstr "" -+ -+#: ../sepolicy/sepolicy.py:675 -+msgid "Alternate SELinux policy, defaults to /sys/fs/selinux/policy" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:25 -+#: ../sepolicy/sepolicy/sepolicy.glade:4330 -+msgid "Applications" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:52 -+msgid "Select domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:189 -+#: ../sepolicy/sepolicy/sepolicy.glade:4367 -+#: ../sepolicy/sepolicy/sepolicy.glade:4460 -+#: ../sepolicy/sepolicy/sepolicy.glade:4606 -+#: ../sepolicy/sepolicy/sepolicy.glade:4755 -+#: ../sepolicy/sepolicy/sepolicy.glade:4889 -+#: ../sepolicy/sepolicy/sepolicy.glade:5030 -+#: ../sepolicy/sepolicy/sepolicy.glade:5103 -+#: ../sepolicy/sepolicy/sepolicy.glade:5238 -+msgid "Select" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:204 -+#: ../sepolicy/sepolicy/sepolicy.glade:539 -+#: ../sepolicy/sepolicy/sepolicy.glade:684 -+#: ../sepolicy/sepolicy/sepolicy.glade:1239 -+#: ../sepolicy/sepolicy/sepolicy.glade:1535 -+#: ../sepolicy/sepolicy/sepolicy.glade:4540 -+#: ../sepolicy/sepolicy/sepolicy.glade:4690 -+#: ../sepolicy/sepolicy/sepolicy.glade:4821 -+#: ../sepolicy/sepolicy/sepolicy.glade:4955 -+#: ../sepolicy/sepolicy/sepolicy.glade:5173 -+#: ../sepolicy/sepolicy/sepolicy.glade:5304 -+#: ../sepolicy/sepolicy/sepolicy.glade:5464 -+msgid "Cancel" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:332 -+msgid "" -+"The entry that was entered is incorrect. Please try again in the " -+"ex:/.../... format." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:358 -+msgid "Retry" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:442 -+#: ../sepolicy/sepolicy/sepolicy.glade:1120 -+#: ../sepolicy/sepolicy/sepolicy.glade:1368 -+#: ../sepolicy/sepolicy/sepolicy.glade:5332 -+msgid "Network Port Definitions" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:458 -+msgid "" -+"Add file Equivalence Mapping. Mapping will be created when Update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:483 -+#: ../sepolicy/sepolicy/sepolicy.glade:4046 -+msgid "Path" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:493 -+#: ../sepolicy/sepolicy/sepolicy.glade:5384 -+msgid "" -+"Specify a new SELinux user name. By convention SELinux User names usually " -+"end in an _u." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:497 -+msgid "Enter the path to which you want to setup an equivalence label." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:510 -+#: ../sepolicy/sepolicy/sepolicy.glade:4063 -+#: ../sepolicy/sepolicy/sepolicy.glade:4781 -+msgid "Equivalence Path" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:524 -+#: ../sepolicy/sepolicy/sepolicy.glade:669 -+#: ../sepolicy/sepolicy/sepolicy.glade:1224 -+#: ../sepolicy/sepolicy/sepolicy.glade:1520 -+#: ../sepolicy/sepolicy/sepolicy.glade:5449 -+msgid "Save to update" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:564 -+msgid "" -+"Specify the mapping between the new path and the equivalence path. " -+"Everything under this new path will be labeled as if they were under the " -+"equivalence path." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:621 -+msgid "Add a file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:638 -+msgid "" -+" File Labeling for . File labels will be created " -+"when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:711 -+#: ../sepolicy/sepolicy/sepolicy.glade:1485 -+msgid "MLS" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:747 -+#: ../sepolicy/sepolicy/sepolicy.glade:2306 -+#: ../sepolicy/sepolicy/sepolicy.glade:2418 -+#: ../sepolicy/sepolicy/sepolicy.glade:2540 -+#: ../sepolicy/sepolicy/sepolicy.glade:4500 -+msgid "Class" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:763 -+msgid "Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:777 -+msgid "" -+"Select the file class to which this label will be applied. Defaults to all " -+"classes." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:804 -+msgid "Make Path Recursive" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:808 -+msgid "" -+"Select Make Path Recursive if you want to apply this label to all children " -+"of the specified directory path. objects under the directory to have this " -+"label." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:821 -+msgid "Browse" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:825 -+msgid "Browse to select the file/directory for labeling." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:869 -+msgid "Path " -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:880 -+msgid "" -+"Specify the path using regular expressions that you would like to modify the " -+"labeling." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:902 -+msgid "Select the SELinux file type to assign to this path." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:929 -+msgid "Enter the MLS Label to assign to this file path." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:933 -+msgid "SELinux MLS Label you wish to assign to this path." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1070 -+msgid "Analyzing Policy..." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1137 -+msgid "" -+"Add Login Mapping. Login Mapping will be created when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1172 -+msgid "" -+"Enter the login user name of the user to which you wish to add SELinux User " -+"confinement." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1201 -+msgid "" -+"Select the SELinux User to assign to this login user. Login users by " -+"default get assigned by the __default__ user." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1264 -+msgid "" -+"Enter MLS/MCS Range for this login User. Defaults to the range for the " -+"Selected SELinux User." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1267 -+#: ../sepolicy/sepolicy/sepolicy.glade:3192 -+#: ../sepolicy/sepolicy/sepolicy.glade:3313 -+#: ../sepolicy/sepolicy/sepolicy.glade:5414 -+msgid "MLS Range" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1279 -+msgid "" -+"Specify the MLS Range for this user to login in with. Defaults to the " -+"selected SELinux Users MLS Range." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1385 -+msgid "" -+" Network Port for . Ports will be created when " -+"update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1423 -+msgid "Enter the port number or range to which you want to add a port type." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1439 -+#: ../sepolicy/sepolicy/sepolicy.glade:2658 -+#: ../sepolicy/sepolicy/sepolicy.glade:2756 -+#: ../sepolicy/sepolicy/sepolicy.glade:4633 -+msgid "Protocol" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1453 -+msgid "Port Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1498 -+msgid "Select the port type you want to assign to the specified port number." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1562 -+msgid "tcp" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1566 -+msgid "" -+"Select tcp if the port type should be assigned to tcp port numbers." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1579 -+msgid "udp" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1583 -+msgid "" -+"Select udp if the port type should be assigned to udp port numbers." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1605 -+msgid "Enter the MLS Label to assign to this port." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1707 -+msgid "SELinux Configuration" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1743 -+msgid "Select..." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1792 -+#: ../sepolicy/sepolicy/sepolicy.glade:2212 -+msgid "Booleans" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1796 -+msgid "" -+"Display boolean information that can be used to modify the policy for the " -+"'selected domain'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1810 -+#: ../sepolicy/sepolicy/sepolicy.glade:2597 -+msgid "Files" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1814 -+msgid "" -+"Display file type information that can be used by the 'selected domain'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1828 -+#: ../sepolicy/sepolicy/sepolicy.glade:2830 -+msgid "Network" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1832 -+msgid "" -+"Display network ports to which the 'selected domain' can connect or listen " -+"to." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1846 -+#: ../sepolicy/sepolicy/sepolicy.glade:3121 -+msgid "Transitions" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1850 -+msgid "" -+"Display applications that can transition into or out of the 'selected " -+"domain'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1864 -+#: ../sepolicy/sepolicy/sepolicy.glade:3222 -+msgid "Login Mapping" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1867 -+#: ../sepolicy/sepolicy/sepolicy.glade:1884 -+#: ../sepolicy/sepolicy/sepolicy.glade:1901 -+msgid "Manage the SELinux configuration" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1881 -+#: ../sepolicy/sepolicy/sepolicy.glade:3344 -+msgid "SELinux Users" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1915 -+#: ../sepolicy/sepolicy/sepolicy.glade:4016 -+msgid "Lockdown" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1918 -+msgid "" -+"Lockdown the SELinux System.\n" -+"This screen can be used to turn up the SELinux Protections." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1933 -+msgid "radiobutton" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:1993 -+msgid "Filter" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2021 -+msgid "Show Modified Only" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2060 -+msgid "Mislabeled files exist" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2080 -+msgid "Show mislabeled files only" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2120 -+#: ../sepolicy/sepolicy/sepolicy.glade:3244 -+msgid "" -+"If-Then-Else rules written in policy that can\n" -+"allow alternative access control." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2132 -+msgid "Enabled" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2183 -+msgid "Name" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2252 -+#: ../sepolicy/sepolicy/sepolicy.glade:2364 -+#: ../sepolicy/sepolicy/sepolicy.glade:2482 -+#: ../sepolicy/sepolicy/sepolicy.glade:4473 -+#: ../sepolicy/sepolicy/sepolicy.glade:4768 -+msgid "File Path" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2288 -+#: ../sepolicy/sepolicy/sepolicy.glade:2399 -+msgid "SELinux File Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2332 -+msgid "File path used to enter the 'selected domain'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2333 -+msgid "Executable Files" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2448 -+msgid "Files to which the 'selected domain' can write." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2449 -+msgid "Writable files" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2571 -+msgid "File Types defined for the 'selected domain'." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2572 -+msgid "Application File Types" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2639 -+#: ../sepolicy/sepolicy/sepolicy.glade:2738 -+#: ../sepolicy/sepolicy/sepolicy.glade:4619 -+msgid "Port" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2704 -+msgid "Network Ports to which the 'selected domain' is allowed to connect." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2705 -+msgid "Outbound" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2804 -+msgid "Network Ports to which the 'selected domain' is allowed to listen." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2805 -+msgid "Inbound" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2866 -+#: ../sepolicy/sepolicy/sepolicy.glade:2956 -+msgid "" -+"Boolean\n" -+"Enabled" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2892 -+msgid "Boolean name" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2909 -+msgid "SELinux Application Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2930 -+msgid "" -+"Executables which will transition to a different domain, when the 'selected " -+"domain' executes them." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2933 -+msgid "Application Transitions From 'select domain'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2972 -+msgid "Calling Process Domain" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:2988 -+msgid "Executable File" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3012 -+msgid "" -+"Executables which will transition to the 'selected domain', when executing a " -+"selected domains entrypoint." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3013 -+msgid "Application Transitions Into 'select domain'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3028 -+msgid "" -+"File Transitions define what happens when the current domain creates the " -+"content of a particular class in a directory of the destination type. " -+"Optionally a file name could be specified for the transition." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3036 -+msgid "SELinux Directory Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3049 -+msgid "Destination Class" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3063 -+msgid "SELinux Destination Type" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3076 -+msgid "File Name" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3098 -+msgid "File Transitions From 'select domain'" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3297 -+#: ../sepolicy/sepolicy/sepolicy.glade:5508 -+msgid "Default Level" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3383 -+msgid "Select the system mode when the system first boots up" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3395 -+#: ../sepolicy/sepolicy/sepolicy.glade:3469 -+msgid "Enforcing" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3414 -+#: ../sepolicy/sepolicy/sepolicy.glade:3487 -+msgid "Permissive" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3456 -+msgid "Select the system mode for the current session" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3533 -+msgid "System Policy Type:" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3594 -+msgid "System Mode" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3632 -+msgid "Import system settings from another machine" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3640 -+msgid "Import" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3659 -+msgid "Export system settings to a file" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3669 -+msgid "Export" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3688 -+msgid "Relabel all files back to system defaults on reboot" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3783 -+msgid "System Configuration" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3830 -+#: ../sepolicy/sepolicy/sepolicy.glade:3848 -+msgid "" -+"An unconfined domain is a process label that allows the process to do what " -+"it wants, without SELinux interfering. Applications started at boot by the " -+"init system that SELinux do not have defined SELinux policy will run as " -+"unconfined if this module is enabled. Disabling it means all daemons will " -+"now be confined. To disable the unconfined_t user you must first remove " -+"unconfined_t from the users/login screens." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3866 -+msgid "Disable ability to run unconfined system processes?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3894 -+#: ../sepolicy/sepolicy/sepolicy.glade:3911 -+#: ../sepolicy/sepolicy/sepolicy.glade:3957 -+#: ../sepolicy/sepolicy/sepolicy.glade:3974 -+msgid "" -+"A permissive domain is a process label that allows the process to do what it " -+"wants, with SELinux only logging the denials, but not enforcing them. " -+"Usually permissive domains indicate experimental policy, disabling the " -+"module could cause SELinux to deny access to a domain, that should be " -+"allowed." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3929 -+msgid "Disable all permissive processes?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:3995 -+msgid "Deny all processes from ptracing or debugging other processes?" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4032 -+msgid "" -+"File equivalence cause the system to label content under the new path as if " -+"it were under the equivalence path." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4088 -+msgid "Files Equivalence" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4101 -+msgid "...SELECT TO VIEW DATA..." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4132 -+msgid "Delete" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4148 -+msgid "Modify" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4163 -+msgid "Add" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4209 -+msgid "Revert" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4214 -+msgid "" -+"Revert button will launch a dialog window which allows you to revert changes " -+"within the current transaction." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4231 -+msgid "Commit all changes in your current transaction to the server." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4279 -+msgid "Applications - Advanced Search" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4344 -+msgid "Process Types" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4385 -+msgid "More Details" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4421 -+#: ../sepolicy/sepolicy/sepolicy.glade:4715 -+msgid "Delete Modified File Labeling" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4439 -+msgid "" -+"Select file labeling to delete. File labeling will be deleted when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4486 -+msgid "SELinux File Label" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4525 -+#: ../sepolicy/sepolicy/sepolicy.glade:4675 -+#: ../sepolicy/sepolicy/sepolicy.glade:4806 -+#: ../sepolicy/sepolicy/sepolicy.glade:4940 -+#: ../sepolicy/sepolicy/sepolicy.glade:5289 -+msgid "Save to Update" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4565 -+msgid "Delete Modified Ports" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4583 -+msgid "Select ports to delete. Ports will be deleted when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4733 -+msgid "" -+"Select file equivalence labeling to delete. File equivalence labeling will " -+"be deleted when update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4849 -+#: ../sepolicy/sepolicy/sepolicy.glade:5198 -+msgid "Delete Modified Users Mapping." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4867 -+msgid "" -+"Select login user mapping to delete. Login user mapping will be deleted when " -+"update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4902 -+msgid "Login name" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:4983 -+msgid "More Types" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5010 -+msgid "Types" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5069 -+msgid "" -+"Review the updates you have made before committing them to the system. To " -+"reset an item, uncheck the checkbox. All items checked will be updated in " -+"the system when you select update." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5132 -+msgid "Action" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5158 -+msgid "Apply" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5216 -+msgid "" -+"Select users mapping to delete.Users mapping will be deleted when update is " -+"applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5264 -+msgid "SELinux Username" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5349 -+msgid "" -+"Add User Roles. SELinux User Roles will be created when Update is applied." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5374 -+msgid "SELinux User Name" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5489 -+msgid "" -+"Enter MLS/MCS Range for this SELinux User.\n" -+"s0-s0:c1023" -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5520 -+msgid "" -+"Specify the default level that you would like this SELinux user to login " -+"with. Defaults to s0." -+msgstr "" -+ -+#: ../sepolicy/sepolicy/sepolicy.glade:5524 -+msgid "Enter Default Level for SELinux User to login with. Default s0" -+msgstr "" -diff --git a/sandbox/po/sandbox.pot b/sandbox/po/sandbox.pot -new file mode 100644 -index 000000000000..328b4f0159d3 ---- /dev/null -+++ b/sandbox/po/sandbox.pot -@@ -0,0 +1,157 @@ -+# SOME DESCRIPTIVE TITLE. -+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -+# This file is distributed under the same license as the PACKAGE package. -+# FIRST AUTHOR , YEAR. -+# -+#, fuzzy -+msgid "" -+msgstr "" -+"Project-Id-Version: PACKAGE VERSION\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2018-08-06 14:22+0200\n" -+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -+"Last-Translator: FULL NAME \n" -+"Language-Team: LANGUAGE \n" -+"Language: \n" -+"MIME-Version: 1.0\n" -+"Content-Type: text/plain; charset=CHARSET\n" -+"Content-Transfer-Encoding: 8bit\n" -+ -+#: ../sandbox:119 -+#, python-format -+msgid "Do you want to save changes to '%s' (Y/N): " -+msgstr "" -+ -+#: ../sandbox:120 -+msgid "Sandbox Message" -+msgstr "" -+ -+#: ../sandbox:132 -+#, python-format -+msgid "Do you want to save changes to '%s' (y/N): " -+msgstr "" -+ -+#: ../sandbox:133 -+msgid "[yY]" -+msgstr "" -+ -+#: ../sandbox:156 -+msgid "User account must be setup with an MCS Range" -+msgstr "" -+ -+#: ../sandbox:184 -+msgid "" -+"Failed to find any unused category sets. Consider a larger MCS range for " -+"this user." -+msgstr "" -+ -+#: ../sandbox:215 -+msgid "Homedir and tempdir required for level mounts" -+msgstr "" -+ -+#: ../sandbox:218 ../sandbox:229 ../sandbox:234 -+#, python-format -+msgid "" -+"\n" -+"%s is required for the action you want to perform.\n" -+msgstr "" -+ -+#: ../sandbox:305 -+#, python-format -+msgid "" -+"\n" -+"Policy defines the following types for use with the -t:\n" -+"\t%s\n" -+msgstr "" -+ -+#: ../sandbox:312 -+#, python-format -+msgid "" -+"\n" -+"sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I " -+"includefile ] [-W windowmanager ] [ -w windowsize ] [[-i file ] ...] [ -t " -+"type ] command\n" -+"\n" -+"sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I " -+"includefile ] [-W windowmanager ] [ -w windowsize ] [[-i file ] ...] [ -t " -+"type ] -S\n" -+"%s\n" -+msgstr "" -+ -+#: ../sandbox:324 -+msgid "include file in sandbox" -+msgstr "" -+ -+#: ../sandbox:327 -+msgid "read list of files to include in sandbox from INCLUDEFILE" -+msgstr "" -+ -+#: ../sandbox:329 -+msgid "run sandbox with SELinux type" -+msgstr "" -+ -+#: ../sandbox:332 -+msgid "mount new home and/or tmp directory" -+msgstr "" -+ -+#: ../sandbox:336 -+msgid "dots per inch for X display" -+msgstr "" -+ -+#: ../sandbox:339 -+msgid "run complete desktop session within sandbox" -+msgstr "" -+ -+#: ../sandbox:342 -+msgid "Shred content before tempory directories are removed" -+msgstr "" -+ -+#: ../sandbox:346 -+msgid "run X application within a sandbox" -+msgstr "" -+ -+#: ../sandbox:352 -+msgid "alternate home directory to use for mounting" -+msgstr "" -+ -+#: ../sandbox:357 -+msgid "alternate /tmp directory to use for mounting" -+msgstr "" -+ -+#: ../sandbox:366 -+msgid "alternate window manager" -+msgstr "" -+ -+#: ../sandbox:369 -+msgid "MCS/MLS level for the sandbox" -+msgstr "" -+ -+#: ../sandbox:385 -+msgid "" -+"Sandbox Policy is not currently installed.\n" -+"You need to install the selinux-policy-sandbox package in order to run this " -+"command" -+msgstr "" -+ -+#: ../sandbox:397 -+msgid "" -+"You must specify a Homedir and tempdir when setting up a session sandbox" -+msgstr "" -+ -+#: ../sandbox:399 -+msgid "Commands are not allowed in a session sandbox" -+msgstr "" -+ -+#: ../sandbox:409 -+msgid "Command required" -+msgstr "" -+ -+#: ../sandbox:412 -+#, python-format -+msgid "%s is not an executable" -+msgstr "" -+ -+#: ../sandbox:535 -+#, python-format -+msgid "Invalid value %s" -+msgstr "" --- -2.32.0 - diff --git a/SOURCES/0018-Use-SHA-2-instead-of-SHA-1.patch b/SOURCES/0018-Use-SHA-2-instead-of-SHA-1.patch new file mode 100644 index 0000000..143f805 --- /dev/null +++ b/SOURCES/0018-Use-SHA-2-instead-of-SHA-1.patch @@ -0,0 +1,297 @@ +From ec1b147076345478636de763ce5d4e8daa69afd6 Mon Sep 17 00:00:00 2001 +From: Petr Lautrbach +Date: Fri, 30 Jul 2021 14:14:37 +0200 +Subject: [PATCH] Use SHA-2 instead of SHA-1 + +The use of SHA-1 in RHEL9 is deprecated +--- + policycoreutils/setfiles/restorecon.8 | 10 +++++----- + policycoreutils/setfiles/restorecon_xattr.8 | 8 ++++---- + policycoreutils/setfiles/restorecon_xattr.c | 12 ++++++------ + policycoreutils/setfiles/ru/restorecon.8 | 8 ++++---- + policycoreutils/setfiles/ru/restorecon_xattr.8 | 10 +++++----- + policycoreutils/setfiles/ru/setfiles.8 | 8 ++++---- + policycoreutils/setfiles/setfiles.8 | 10 +++++----- + 7 files changed, 33 insertions(+), 33 deletions(-) + +diff --git a/policycoreutils/setfiles/restorecon.8 b/policycoreutils/setfiles/restorecon.8 +index 668486f66113..a8900f02b3f3 100644 +--- a/policycoreutils/setfiles/restorecon.8 ++++ b/policycoreutils/setfiles/restorecon.8 +@@ -93,14 +93,14 @@ display usage information and exit. + ignore files that do not exist. + .TP + .B \-I +-ignore digest to force checking of labels even if the stored SHA1 digest +-matches the specfiles SHA1 digest. The digest will then be updated provided ++ignore digest to force checking of labels even if the stored SHA256 digest ++matches the specfiles SHA256 digest. The digest will then be updated provided + there are no errors. See the + .B NOTES + section for further details. + .TP + .B \-D +-Set or update any directory SHA1 digests. Use this option to ++Set or update any directory SHA256 digests. Use this option to + enable usage of the + .IR security.sehash + extended attribute. +@@ -191,7 +191,7 @@ the + .B \-D + option to + .B restorecon +-will cause it to store a SHA1 digest of the default specfiles set in an extended ++will cause it to store a SHA256 digest of the default specfiles set in an extended + attribute named + .IR security.sehash + on each directory specified in +@@ -208,7 +208,7 @@ for further details. + .sp + The + .B \-I +-option will ignore the SHA1 digest from each directory specified in ++option will ignore the SHA256 digest from each directory specified in + .IR pathname \ ... + and provided the + .B \-n +diff --git a/policycoreutils/setfiles/restorecon_xattr.8 b/policycoreutils/setfiles/restorecon_xattr.8 +index e04528e60824..4b1ce304d995 100644 +--- a/policycoreutils/setfiles/restorecon_xattr.8 ++++ b/policycoreutils/setfiles/restorecon_xattr.8 +@@ -23,7 +23,7 @@ or + + .SH "DESCRIPTION" + .B restorecon_xattr +-will display the SHA1 digests added to extended attributes ++will display the SHA256 digests added to extended attributes + .I security.sehash + or delete the attribute completely. These attributes are set by + .BR restorecon (8) +@@ -48,12 +48,12 @@ extended attribute and are automatically excluded from searches. + .sp + By default + .B restorecon_xattr +-will display the SHA1 digests with "Match" appended if they match the default ++will display the SHA256 digests with "Match" appended if they match the default + specfile set or the + .I specfile + set used with the + .B \-f +-option. Non-matching SHA1 digests will be displayed with "No Match" appended. ++option. Non-matching SHA256 digests will be displayed with "No Match" appended. + This feature can be disabled by the + .B \-n + option. +@@ -87,7 +87,7 @@ Do not append "Match" or "No Match" to displayed digests. + recursively descend directories. + .TP + .B \-v +-display SHA1 digest generated by specfile set (Note that this digest is not ++display SHA256 digest generated by specfile set (Note that this digest is not + used to match the + .I security.sehash + directory digest entries, and is shown for reference only). +diff --git a/policycoreutils/setfiles/restorecon_xattr.c b/policycoreutils/setfiles/restorecon_xattr.c +index 31fb82fd2099..bc22d3fd4560 100644 +--- a/policycoreutils/setfiles/restorecon_xattr.c ++++ b/policycoreutils/setfiles/restorecon_xattr.c +@@ -38,7 +38,7 @@ int main(int argc, char **argv) + unsigned int xattr_flags = 0, delete_digest = 0, recurse = 0; + unsigned int delete_all_digests = 0, ignore_mounts = 0; + bool display_digest = false; +- char *sha1_buf, **specfiles, *fc_file = NULL, *pathname = NULL; ++ char *sha256_buf, **specfiles, *fc_file = NULL, *pathname = NULL; + unsigned char *fc_digest = NULL; + size_t i, fc_digest_len = 0, num_specfiles; + +@@ -133,8 +133,8 @@ int main(int argc, char **argv) + exit(-1); + } + +- sha1_buf = malloc(fc_digest_len * 2 + 1); +- if (!sha1_buf) { ++ sha256_buf = malloc(fc_digest_len * 2 + 1); ++ if (!sha256_buf) { + fprintf(stderr, + "Error allocating digest buffer: %s\n", + strerror(errno)); +@@ -143,16 +143,16 @@ int main(int argc, char **argv) + } + + for (i = 0; i < fc_digest_len; i++) +- sprintf((&sha1_buf[i * 2]), "%02x", fc_digest[i]); ++ sprintf((&sha256_buf[i * 2]), "%02x", fc_digest[i]); + +- printf("specfiles SHA1 digest: %s\n", sha1_buf); ++ printf("specfiles SHA256 digest: %s\n", sha256_buf); + + printf("calculated using the following specfile(s):\n"); + if (specfiles) { + for (i = 0; i < num_specfiles; i++) + printf("%s\n", specfiles[i]); + } +- free(sha1_buf); ++ free(sha256_buf); + printf("\n"); + } + +diff --git a/policycoreutils/setfiles/ru/restorecon.8 b/policycoreutils/setfiles/ru/restorecon.8 +index 9be3a63db356..745135020f4b 100644 +--- a/policycoreutils/setfiles/ru/restorecon.8 ++++ b/policycoreutils/setfiles/ru/restorecon.8 +@@ -82,11 +82,11 @@ restorecon \- восстановить SELinux-контексты безопас + игнорировать файлы, которые не существуют. + .TP + .B \-I +-игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе ++игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA256 соответствует дайджесту SHA256 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе + .B ПРИМЕЧАНИЯ. + .TP + .B \-D +-установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута ++установить или обновить дайджесты SHA256 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута + .IR security.restorecon_last. + .TP + .B \-m +@@ -159,7 +159,7 @@ GNU + .B \-D + команды + .B restorecon +-обеспечит сохранение дайджеста SHA1 файлов спецификации по умолчанию в расширенном атрибуте с именем ++обеспечит сохранение дайджеста SHA256 файлов спецификации по умолчанию в расширенном атрибуте с именем + .IR security.restorecon_last + для каталогов, указанных в соответствующих путях + .IR pathname \ ... +@@ -173,7 +173,7 @@ GNU + .sp + Параметр + .B \-I +-позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в ++позволяет игнорировать дайджест SHA256 из каждого каталога, указанного в + .IR pathname \ ... + , и, при условии, что НЕ установлен параметр + .B \-n +diff --git a/policycoreutils/setfiles/ru/restorecon_xattr.8 b/policycoreutils/setfiles/ru/restorecon_xattr.8 +index 41c441b8c5c2..25c4c3033334 100644 +--- a/policycoreutils/setfiles/ru/restorecon_xattr.8 ++++ b/policycoreutils/setfiles/ru/restorecon_xattr.8 +@@ -23,7 +23,7 @@ restorecon_xattr \- управление записями расширенных + + .SH "ОПИСАНИЕ" + .B restorecon_xattr +-покажет дайджесты SHA1, добавленные в расширенные атрибуты ++покажет дайджесты SHA256, добавленные в расширенные атрибуты + .I security.restorecon_last, + или полностью удалит эти атрибуты. Эти атрибуты устанавливаются командой + .BR restorecon (8) +@@ -47,11 +47,11 @@ restorecon_xattr \- управление записями расширенных + .sp + По умолчанию + .B restorecon_xattr +-показывает дайджесты SHA1, добавляя в конце "Match", если они соответствуют установленному по умолчанию файлу спецификации или файлу спецификации ++показывает дайджесты SHA256, добавляя в конце "Match", если они соответствуют установленному по умолчанию файлу спецификации или файлу спецификации + .I specfile, + который установлен с помощью параметра + .B \-f. +-Несоответствующие дайджесты SHA1 будут показаны с добавлением "No Match" в конце. ++Несоответствующие дайджесты SHA256 будут показаны с добавлением "No Match" в конце. + Эту возможность можно отключить с помощью параметра + .B \-n. + +@@ -81,7 +81,7 @@ restorecon_xattr \- управление записями расширенных + рекурсивно спускаться по каталогам. + .TP + .B \-v +-показать дайджест SHA1, созданный установленным файлом спецификации. ++показать дайджест SHA256, созданный установленным файлом спецификации. + .TP + .B \-e + .I directory +@@ -97,7 +97,7 @@ restorecon_xattr \- управление записями расширенных + .BR file_contexts (5). + Он будет использоваться + .BR selabel_open (3) +-для получения набора записей меток; получение дайджеста SHA1 выполняется с помощью ++для получения набора записей меток; получение дайджеста SHA256 выполняется с помощью + .BR selabel_digest (3). + Если этот параметр не указан, будет использоваться файл file_contexts по умолчанию. + +diff --git a/policycoreutils/setfiles/ru/setfiles.8 b/policycoreutils/setfiles/ru/setfiles.8 +index 910101452625..7f2daa09191b 100644 +--- a/policycoreutils/setfiles/ru/setfiles.8 ++++ b/policycoreutils/setfiles/ru/setfiles.8 +@@ -69,11 +69,11 @@ setfiles \- установить SELinux-контексты безопаснос + игнорировать файлы, которые не существуют. + .TP + .B \-I +-игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе ++игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA256 соответствует дайджесту SHA256 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе + .B ПРИМЕЧАНИЯ. + .TP + .B \-D +-установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута ++установить или обновить дайджесты SHA256 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута + .IR security.restorecon_last. + .TP + .B \-l +@@ -186,7 +186,7 @@ GNU + .B \-D + команды + .B setfiles . +-Он обеспечивает сохранение дайджеста SHA1 файла спецификации ++Он обеспечивает сохранение дайджеста SHA256 файла спецификации + .B spec_file + в расширенном атрибуте с именем + .IR security.restorecon_last +@@ -204,7 +204,7 @@ GNU + .sp + Параметр + .B \-I +-позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в ++позволяет игнорировать дайджест SHA256 из каждого каталога, указанного в + .IR pathname \ ... + , и, при условии, что НЕ установлен параметр + .B \-n +diff --git a/policycoreutils/setfiles/setfiles.8 b/policycoreutils/setfiles/setfiles.8 +index 8e6c4ab94841..0692121f2f4d 100644 +--- a/policycoreutils/setfiles/setfiles.8 ++++ b/policycoreutils/setfiles/setfiles.8 +@@ -85,14 +85,14 @@ display usage information and exit. + ignore files that do not exist. + .TP + .B \-I +-ignore digest to force checking of labels even if the stored SHA1 digest +-matches the specfiles SHA1 digest. The digest will then be updated provided ++ignore digest to force checking of labels even if the stored SHA256 digest ++matches the specfiles SHA256 digest. The digest will then be updated provided + there are no errors. See the + .B NOTES + section for further details. + .TP + .B \-D +-Set or update any directory SHA1 digests. Use this option to ++Set or update any directory SHA256 digests. Use this option to + enable usage of the + .IR security.sehash + extended attribute. +@@ -230,7 +230,7 @@ the + .B \-D + option to + .B setfiles +-will cause it to store a SHA1 digest of the ++will cause it to store a SHA256 digest of the + .B spec_file + set in an extended attribute named + .IR security.sehash +@@ -251,7 +251,7 @@ for further details. + .sp + The + .B \-I +-option will ignore the SHA1 digest from each directory specified in ++option will ignore the SHA256 digest from each directory specified in + .IR pathname \ ... + and provided the + .B \-n +-- +2.32.0 + diff --git a/SOURCES/0019-policycoreutils-setfiles-Improve-description-of-d-sw.patch b/SOURCES/0019-policycoreutils-setfiles-Improve-description-of-d-sw.patch deleted file mode 100644 index 0f634a6..0000000 --- a/SOURCES/0019-policycoreutils-setfiles-Improve-description-of-d-sw.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 4ee71fa678b4a9ce85d2ec2f9ebf561c8c183124 Mon Sep 17 00:00:00 2001 -From: Vit Mojzis -Date: Wed, 21 Mar 2018 08:51:31 +0100 -Subject: [PATCH] policycoreutils/setfiles: Improve description of -d switch - -The "-q" switch is becoming obsolete (completely unused in fedora) and -debug output ("-d" switch) makes sense in any scenario. Therefore both -options can be specified at once. - -Resolves: rhbz#1271327 ---- - policycoreutils/setfiles/setfiles.8 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/policycoreutils/setfiles/setfiles.8 b/policycoreutils/setfiles/setfiles.8 -index 4d28bc9a95c1..8e6c4ab94841 100644 ---- a/policycoreutils/setfiles/setfiles.8 -+++ b/policycoreutils/setfiles/setfiles.8 -@@ -57,7 +57,7 @@ option will force a replacement of the entire context. - check the validity of the contexts against the specified binary policy. - .TP - .B \-d --show what specification matched each file. -+show what specification matched each file. Not affected by "\-q". - .TP - .BI \-e \ directory - directory to exclude (repeat option for more than one directory). --- -2.32.0 - diff --git a/SOURCES/0020-sepolicy-generate-Handle-more-reserved-port-types.patch b/SOURCES/0020-sepolicy-generate-Handle-more-reserved-port-types.patch deleted file mode 100644 index 42e3c02..0000000 --- a/SOURCES/0020-sepolicy-generate-Handle-more-reserved-port-types.patch +++ /dev/null @@ -1,71 +0,0 @@ -From c0137252dd3ce52f006162d7b1cb4677c45bea21 Mon Sep 17 00:00:00 2001 -From: Masatake YAMATO -Date: Thu, 14 Dec 2017 15:57:58 +0900 -Subject: [PATCH] sepolicy-generate: Handle more reserved port types - -Currently only reserved_port_t, port_t and hi_reserved_port_t are -handled as special when making a ports-dictionary. However, as fas as -corenetwork.te.in of serefpolicy, unreserved_port_t and -ephemeral_port_t should be handled in the same way, too. - -(Details) I found the need of this change when I was using -selinux-polgengui. Though tcp port 12345, which my application may -use, was given to the gui, selinux-polgengui generates expected te -file and sh file which didn't utilize the tcp port. - -selinux-polgengui checks whether a port given via gui is already typed -or not. - -If it is already typed, selinux-polgengui generates a te file having -rules to allow the application to use the port. (A) - -If not, it seems for me that selinux-polgengui is designed to generate -a te file having rules to allow the application to own(?) the port; -and a sh file having a command line to assign the application own type -to the port. (B) - -As we can see the output of `semanage port -l' some of ports for -specified purpose have types already. The important point is that the -rest of ports also have types already: - - hi_reserved_port_t tcp 512-1023 - hi_reserved_port_t udp 512-1023 - unreserved_port_t tcp 1024-32767, 61001-65535 - unreserved_port_t udp 1024-32767, 61001-65535 - ephemeral_port_t tcp 32768-61000 - ephemeral_port_t udp 32768-61000 - -As my patch shows, the original selinux-polgengui ignored -hi_reserved_port_t; though hi_reserved_port_t is assigned, -selinux-polgengui considered ports 512-1023 are not used. As the -result selinux-polgengui generates file sets of (B). - -For the purpose of selinux-polgengui, I think unreserved_port_t and -ephemeral_port_t are treated as the same as hi_reserved_port_t. - -Signed-off-by: Masatake YAMATO - -Fedora only patch: -https://lore.kernel.org/selinux/20150610.190635.1866127952891120915.yamato@redhat.com/ ---- - python/sepolicy/sepolicy/generate.py | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/python/sepolicy/sepolicy/generate.py b/python/sepolicy/sepolicy/generate.py -index 43180ca6fda4..d60a08e1d72c 100644 ---- a/python/sepolicy/sepolicy/generate.py -+++ b/python/sepolicy/sepolicy/generate.py -@@ -99,7 +99,9 @@ def get_all_ports(): - for p in sepolicy.info(sepolicy.PORT): - if p['type'] == "reserved_port_t" or \ - p['type'] == "port_t" or \ -- p['type'] == "hi_reserved_port_t": -+ p['type'] == "hi_reserved_port_t" or \ -+ p['type'] == "ephemeral_port_t" or \ -+ p['type'] == "unreserved_port_t": - continue - dict[(p['low'], p['high'], p['protocol'])] = (p['type'], p.get('range')) - return dict --- -2.32.0 - diff --git a/SOURCES/0021-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch b/SOURCES/0021-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch deleted file mode 100644 index d2ae420..0000000 --- a/SOURCES/0021-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch +++ /dev/null @@ -1,24 +0,0 @@ -From d6476f30ddaf384ed7f563ca4ad31cbfc7ad6bbd Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Thu, 8 Nov 2018 09:20:58 +0100 -Subject: [PATCH] semodule-utils: Fix RESOURCE_LEAK coverity scan defects - ---- - semodule-utils/semodule_package/semodule_package.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/semodule-utils/semodule_package/semodule_package.c b/semodule-utils/semodule_package/semodule_package.c -index 3515234e36de..7b75b3fd9bb4 100644 ---- a/semodule-utils/semodule_package/semodule_package.c -+++ b/semodule-utils/semodule_package/semodule_package.c -@@ -74,6 +74,7 @@ static int file_to_data(const char *path, char **data, size_t * len) - } - if (!sb.st_size) { - *len = 0; -+ close(fd); - return 0; - } - --- -2.32.0 - diff --git a/SOURCES/0022-sandbox-Use-matchbox-window-manager-instead-of-openb.patch b/SOURCES/0022-sandbox-Use-matchbox-window-manager-instead-of-openb.patch deleted file mode 100644 index 12c297a..0000000 --- a/SOURCES/0022-sandbox-Use-matchbox-window-manager-instead-of-openb.patch +++ /dev/null @@ -1,74 +0,0 @@ -From d61a3517017921d6b6f4618e1de0c4f4a33fe951 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Wed, 18 Jul 2018 09:09:35 +0200 -Subject: [PATCH] sandbox: Use matchbox-window-manager instead of openbox - ---- - sandbox/sandbox | 4 ++-- - sandbox/sandbox.8 | 2 +- - sandbox/sandboxX.sh | 14 -------------- - 3 files changed, 3 insertions(+), 17 deletions(-) - -diff --git a/sandbox/sandbox b/sandbox/sandbox -index 16c43b51eaaa..7709a6585665 100644 ---- a/sandbox/sandbox -+++ b/sandbox/sandbox -@@ -268,7 +268,7 @@ class Sandbox: - copyfile(f, "/tmp", self.__tmpdir) - copyfile(f, "/var/tmp", self.__tmpdir) - -- def __setup_sandboxrc(self, wm="/usr/bin/openbox"): -+ def __setup_sandboxrc(self, wm="/usr/bin/matchbox-window-manager"): - execfile = self.__homedir + "/.sandboxrc" - fd = open(execfile, "w+") - if self.__options.session: -@@ -362,7 +362,7 @@ sandbox [-h] [-l level ] [-[X|M] [-H homedir] [-T tempdir]] [-I includefile ] [- - - parser.add_option("-W", "--windowmanager", dest="wm", - type="string", -- default="/usr/bin/openbox", -+ default="/usr/bin/matchbox-window-manager", - help=_("alternate window manager")) - - parser.add_option("-l", "--level", dest="level", -diff --git a/sandbox/sandbox.8 b/sandbox/sandbox.8 -index d83fee76f335..90ef4951c8c2 100644 ---- a/sandbox/sandbox.8 -+++ b/sandbox/sandbox.8 -@@ -77,7 +77,7 @@ Specifies the windowsize when creating an X based Sandbox. The default windowsiz - \fB\-W\fR \fB\-\-windowmanager\fR - Select alternative window manager to run within - .B sandbox \-X. --Default to /usr/bin/openbox. -+Default to /usr/bin/matchbox-window-manager. - .TP - \fB\-X\fR - Create an X based Sandbox for gui apps, temporary files for -diff --git a/sandbox/sandboxX.sh b/sandbox/sandboxX.sh -index 4774528027ef..c211ebc14549 100644 ---- a/sandbox/sandboxX.sh -+++ b/sandbox/sandboxX.sh -@@ -6,20 +6,6 @@ export TITLE="Sandbox $context -- `grep ^#TITLE: ~/.sandboxrc | /usr/bin/cut -b8 - [ -z $2 ] && export DPI="96" || export DPI="$2" - trap "exit 0" HUP - --mkdir -p ~/.config/openbox --cat > ~/.config/openbox/rc.xml << EOF -- -- -- -- no -- all -- yes -- -- -- --EOF -- - (/usr/bin/Xephyr -resizeable -title "$TITLE" -terminate -reset -screen $SCREENSIZE -dpi $DPI -nolisten tcp -displayfd 5 5>&1 2>/dev/null) | while read D; do - export DISPLAY=:$D - cat > ~/seremote << __EOF --- -2.32.0 - diff --git a/SOURCES/0023-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch b/SOURCES/0023-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch deleted file mode 100644 index c8e7e43..0000000 --- a/SOURCES/0023-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 257d7d95f541bd4b85c518562278cdc4f928f8af Mon Sep 17 00:00:00 2001 -From: Ondrej Mosnacek -Date: Tue, 28 Jul 2020 14:37:13 +0200 -Subject: [PATCH] sepolicy: Fix flake8 warnings in Fedora-only code - -Fixes: -$ PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8 -Analyzing 187 Python scripts -./installdir/usr/lib/python3.8/site-packages/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' -./installdir/usr/lib/python3.8/site-packages/sepolicy/manpage.py:774:17: E117 over-indented -./python/sepolicy/build/lib/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' -./python/sepolicy/build/lib/sepolicy/manpage.py:774:17: E117 over-indented -./python/sepolicy/sepolicy/manpage.py:720:20: E713 test for membership should be 'not in' -./python/sepolicy/sepolicy/manpage.py:774:17: E117 over-indented -The command "PATH="$VIRTUAL_ENV/bin:$PATH" ./scripts/run-flake8" exited with 1. - -Signed-off-by: Ondrej Mosnacek ---- - python/sepolicy/sepolicy/manpage.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/python/sepolicy/sepolicy/manpage.py b/python/sepolicy/sepolicy/manpage.py -index ffcedb547993..c013c0d48502 100755 ---- a/python/sepolicy/sepolicy/manpage.py -+++ b/python/sepolicy/sepolicy/manpage.py -@@ -719,7 +719,7 @@ Default Defined Ports:""") - for f in self.all_file_types: - if f.startswith(self.domainname): - flist.append(f) -- if not f in self.exec_types or not f in self.entry_types: -+ if f not in self.exec_types or f not in self.entry_types: - flist_non_exec.append(f) - if f in self.fcdict: - mpaths = mpaths + self.fcdict[f]["regex"] -@@ -773,7 +773,7 @@ SELinux %(domainname)s policy is very flexible allowing users to setup their %(d - """ % {'domainname': self.domainname, 'equiv': e, 'alt': e.split('/')[-1]}) - - if flist_non_exec: -- self.fd.write(r""" -+ self.fd.write(r""" - .PP - .B STANDARD FILE CONTEXT - --- -2.32.0 - diff --git a/SOURCES/0024-Do-not-use-Python-slip.patch b/SOURCES/0024-Do-not-use-Python-slip.patch deleted file mode 100644 index eafcf56..0000000 --- a/SOURCES/0024-Do-not-use-Python-slip.patch +++ /dev/null @@ -1,217 +0,0 @@ -From 10a970733c5b31c237abd7357421384597fe0510 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Thu, 15 Apr 2021 17:39:39 +0200 -Subject: [PATCH] Do not use Python slip - -Python slip is not actively maintained anymore and it was use just as -polkit proxy. It looks like polkit dbus interface is quite simple to use -it directly via python dbus module. - -Signed-off-by: Petr Lautrbach ---- - dbus/selinux_server.py | 69 ++++++++++++++++++------------ - python/sepolicy/sepolicy/sedbus.py | 9 ---- - 2 files changed, 41 insertions(+), 37 deletions(-) - -diff --git a/dbus/selinux_server.py b/dbus/selinux_server.py -index be4f4557a9fa..b7c9378bcb5d 100644 ---- a/dbus/selinux_server.py -+++ b/dbus/selinux_server.py -@@ -4,26 +4,33 @@ import dbus - import dbus.service - import dbus.mainloop.glib - from gi.repository import GObject --import slip.dbus.service --from slip.dbus import polkit - import os - import selinux - from subprocess import Popen, PIPE, STDOUT - - --class selinux_server(slip.dbus.service.Object): -+class selinux_server(dbus.service.Object): - default_polkit_auth_required = "org.selinux.semanage" - - def __init__(self, *p, **k): - super(selinux_server, self).__init__(*p, **k) - -+ def is_authorized(self, sender, action_id): -+ bus = dbus.SystemBus() -+ proxy = bus.get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority') -+ authority = dbus.Interface(proxy, dbus_interface='org.freedesktop.PolicyKit1.Authority') -+ subject = ('system-bus-name', {'name': sender}) -+ result = authority.CheckAuthorization(subject, action_id, {}, 1, '') -+ return result[0] -+ - # - # The semanage method runs a transaction on a series of semanage commands, - # these commands can take the output of customized - # -- @slip.dbus.polkit.require_auth("org.selinux.semanage") -- @dbus.service.method("org.selinux", in_signature='s') -- def semanage(self, buf): -+ @dbus.service.method("org.selinux", in_signature='s', sender_keyword="sender") -+ def semanage(self, buf, sender): -+ if not self.is_authorized(sender, "org.selinux.semanage"): -+ raise dbus.exceptions.DBusException("Not authorized") - p = Popen(["/usr/sbin/semanage", "import"], stdout=PIPE, stderr=PIPE, stdin=PIPE, universal_newlines=True) - p.stdin.write(buf) - output = p.communicate() -@@ -35,9 +42,10 @@ class selinux_server(slip.dbus.service.Object): - # on the server. This output can be used with the semanage method on - # another server to make the two systems have duplicate policy. - # -- @slip.dbus.polkit.require_auth("org.selinux.customized") -- @dbus.service.method("org.selinux", in_signature='', out_signature='s') -- def customized(self): -+ @dbus.service.method("org.selinux", in_signature='', out_signature='s', sender_keyword="sender") -+ def customized(self, sender): -+ if not self.is_authorized(sender, "org.selinux.customized"): -+ raise dbus.exceptions.DBusException("Not authorized") - p = Popen(["/usr/sbin/semanage", "export"], stdout=PIPE, stderr=PIPE, universal_newlines=True) - buf = p.stdout.read() - output = p.communicate() -@@ -49,9 +57,10 @@ class selinux_server(slip.dbus.service.Object): - # The semodule_list method will return the output of semodule --list=full, using the customized polkit, - # since this is a readonly behaviour - # -- @slip.dbus.polkit.require_auth("org.selinux.semodule_list") -- @dbus.service.method("org.selinux", in_signature='', out_signature='s') -- def semodule_list(self): -+ @dbus.service.method("org.selinux", in_signature='', out_signature='s', sender_keyword="sender") -+ def semodule_list(self, sender): -+ if not self.is_authorized(sender, "org.selinux.semodule_list"): -+ raise dbus.exceptions.DBusException("Not authorized") - p = Popen(["/usr/sbin/semodule", "--list=full"], stdout=PIPE, stderr=PIPE, universal_newlines=True) - buf = p.stdout.read() - output = p.communicate() -@@ -62,25 +71,28 @@ class selinux_server(slip.dbus.service.Object): - # - # The restorecon method modifies any file path to the default system label - # -- @slip.dbus.polkit.require_auth("org.selinux.restorecon") -- @dbus.service.method("org.selinux", in_signature='s') -- def restorecon(self, path): -+ @dbus.service.method("org.selinux", in_signature='s', sender_keyword="sender") -+ def restorecon(self, path, sender): -+ if not self.is_authorized(sender, "org.selinux.restorecon"): -+ raise dbus.exceptions.DBusException("Not authorized") - selinux.restorecon(str(path), recursive=1) - - # - # The setenforce method turns off the current enforcement of SELinux - # -- @slip.dbus.polkit.require_auth("org.selinux.setenforce") -- @dbus.service.method("org.selinux", in_signature='i') -- def setenforce(self, value): -+ @dbus.service.method("org.selinux", in_signature='i', sender_keyword="sender") -+ def setenforce(self, value, sender): -+ if not self.is_authorized(sender, "org.selinux.setenforce"): -+ raise dbus.exceptions.DBusException("Not authorized") - selinux.security_setenforce(value) - - # - # The setenforce method turns off the current enforcement of SELinux - # -- @slip.dbus.polkit.require_auth("org.selinux.relabel_on_boot") -- @dbus.service.method("org.selinux", in_signature='i') -- def relabel_on_boot(self, value): -+ @dbus.service.method("org.selinux", in_signature='i', sender_keyword="sender") -+ def relabel_on_boot(self, value, sender): -+ if not self.is_authorized(sender, "org.selinux.relabel_on_boot"): -+ raise dbus.exceptions.DBusException("Not authorized") - if value == 1: - fd = open("/.autorelabel", "w") - fd.close() -@@ -111,9 +123,10 @@ class selinux_server(slip.dbus.service.Object): - # - # The change_default_enforcement modifies the current enforcement mode - # -- @slip.dbus.polkit.require_auth("org.selinux.change_default_mode") -- @dbus.service.method("org.selinux", in_signature='s') -- def change_default_mode(self, value): -+ @dbus.service.method("org.selinux", in_signature='s', sender_keyword="sender") -+ def change_default_mode(self, value, sender): -+ if not self.is_authorized(sender, "org.selinux.change_default_mode"): -+ raise dbus.exceptions.DBusException("Not authorized") - values = ["enforcing", "permissive", "disabled"] - if value not in values: - raise ValueError("Enforcement mode must be %s" % ", ".join(values)) -@@ -122,9 +135,10 @@ class selinux_server(slip.dbus.service.Object): - # - # The change_default_policy method modifies the policy type - # -- @slip.dbus.polkit.require_auth("org.selinux.change_default_policy") -- @dbus.service.method("org.selinux", in_signature='s') -- def change_default_policy(self, value): -+ @dbus.service.method("org.selinux", in_signature='s', sender_keyword="sender") -+ def change_default_policy(self, value, sender): -+ if not self.is_authorized(sender, "org.selinux.change_default_policy"): -+ raise dbus.exceptions.DBusException("Not authorized") - path = selinux.selinux_path() + value - if os.path.isdir(path): - return self.write_selinux_config(policy=value) -@@ -136,5 +150,4 @@ if __name__ == "__main__": - system_bus = dbus.SystemBus() - name = dbus.service.BusName("org.selinux", system_bus) - object = selinux_server(system_bus, "/org/selinux/object") -- slip.dbus.service.set_mainloop(mainloop) - mainloop.run() -diff --git a/python/sepolicy/sepolicy/sedbus.py b/python/sepolicy/sepolicy/sedbus.py -index 76b259ae27e8..39b53d47753a 100644 ---- a/python/sepolicy/sepolicy/sedbus.py -+++ b/python/sepolicy/sepolicy/sedbus.py -@@ -2,7 +2,6 @@ import sys - import dbus - import dbus.service - import dbus.mainloop.glib --from slip.dbus import polkit - - - class SELinuxDBus (object): -@@ -11,42 +10,34 @@ class SELinuxDBus (object): - self.bus = dbus.SystemBus() - self.dbus_object = self.bus.get_object("org.selinux", "/org/selinux/object") - -- @polkit.enable_proxy - def semanage(self, buf): - ret = self.dbus_object.semanage(buf, dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def restorecon(self, path): - ret = self.dbus_object.restorecon(path, dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def setenforce(self, value): - ret = self.dbus_object.setenforce(value, dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def customized(self): - ret = self.dbus_object.customized(dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def semodule_list(self): - ret = self.dbus_object.semodule_list(dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def relabel_on_boot(self, value): - ret = self.dbus_object.relabel_on_boot(value, dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def change_default_mode(self, value): - ret = self.dbus_object.change_default_mode(value, dbus_interface="org.selinux") - return ret - -- @polkit.enable_proxy - def change_default_policy(self, value): - ret = self.dbus_object.change_default_policy(value, dbus_interface="org.selinux") - return ret --- -2.32.0 - diff --git a/SOURCES/0025-dbus-Use-GLib.MainLoop.patch b/SOURCES/0025-dbus-Use-GLib.MainLoop.patch deleted file mode 100644 index 10fb63d..0000000 --- a/SOURCES/0025-dbus-Use-GLib.MainLoop.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 86be303a7c5ed5057d0357a85e27cdb6885122fe Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Wed, 12 May 2021 19:19:29 +0200 -Subject: [PATCH] dbus: Use GLib.MainLoop() - -Fixes: - PyGIDeprecationWarning: GObject.MainLoop is deprecated; use GLib.MainLoop instead - -Signed-off-by: Petr Lautrbach ---- - dbus/selinux_server.py | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/dbus/selinux_server.py b/dbus/selinux_server.py -index b7c9378bcb5d..a969f2268ceb 100644 ---- a/dbus/selinux_server.py -+++ b/dbus/selinux_server.py -@@ -2,8 +2,9 @@ - - import dbus - import dbus.service --import dbus.mainloop.glib -+from dbus.mainloop.glib import DBusGMainLoop - from gi.repository import GObject -+from gi.repository import GLib - import os - import selinux - from subprocess import Popen, PIPE, STDOUT -@@ -145,9 +146,10 @@ class selinux_server(dbus.service.Object): - raise ValueError("%s does not exist" % path) - - if __name__ == "__main__": -- mainloop = GObject.MainLoop() -- dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) -+ DBusGMainLoop(set_as_default=True) -+ mainloop = GLib.MainLoop() -+ - system_bus = dbus.SystemBus() - name = dbus.service.BusName("org.selinux", system_bus) -- object = selinux_server(system_bus, "/org/selinux/object") -+ server = selinux_server(system_bus, "/org/selinux/object") - mainloop.run() --- -2.32.0 - diff --git a/SOURCES/0026-Use-SHA-2-instead-of-SHA-1.patch b/SOURCES/0026-Use-SHA-2-instead-of-SHA-1.patch deleted file mode 100644 index c34d2d2..0000000 --- a/SOURCES/0026-Use-SHA-2-instead-of-SHA-1.patch +++ /dev/null @@ -1,297 +0,0 @@ -From 23337de69ad667d909964ba82f47f5166903ff50 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Fri, 30 Jul 2021 14:14:37 +0200 -Subject: [PATCH] Use SHA-2 instead of SHA-1 - -The use of SHA-1 in RHEL9 is deprecated ---- - policycoreutils/setfiles/restorecon.8 | 10 +++++----- - policycoreutils/setfiles/restorecon_xattr.8 | 8 ++++---- - policycoreutils/setfiles/restorecon_xattr.c | 12 ++++++------ - policycoreutils/setfiles/ru/restorecon.8 | 8 ++++---- - policycoreutils/setfiles/ru/restorecon_xattr.8 | 10 +++++----- - policycoreutils/setfiles/ru/setfiles.8 | 8 ++++---- - policycoreutils/setfiles/setfiles.8 | 10 +++++----- - 7 files changed, 33 insertions(+), 33 deletions(-) - -diff --git a/policycoreutils/setfiles/restorecon.8 b/policycoreutils/setfiles/restorecon.8 -index 668486f66113..a8900f02b3f3 100644 ---- a/policycoreutils/setfiles/restorecon.8 -+++ b/policycoreutils/setfiles/restorecon.8 -@@ -93,14 +93,14 @@ display usage information and exit. - ignore files that do not exist. - .TP - .B \-I --ignore digest to force checking of labels even if the stored SHA1 digest --matches the specfiles SHA1 digest. The digest will then be updated provided -+ignore digest to force checking of labels even if the stored SHA256 digest -+matches the specfiles SHA256 digest. The digest will then be updated provided - there are no errors. See the - .B NOTES - section for further details. - .TP - .B \-D --Set or update any directory SHA1 digests. Use this option to -+Set or update any directory SHA256 digests. Use this option to - enable usage of the - .IR security.sehash - extended attribute. -@@ -191,7 +191,7 @@ the - .B \-D - option to - .B restorecon --will cause it to store a SHA1 digest of the default specfiles set in an extended -+will cause it to store a SHA256 digest of the default specfiles set in an extended - attribute named - .IR security.sehash - on each directory specified in -@@ -208,7 +208,7 @@ for further details. - .sp - The - .B \-I --option will ignore the SHA1 digest from each directory specified in -+option will ignore the SHA256 digest from each directory specified in - .IR pathname \ ... - and provided the - .B \-n -diff --git a/policycoreutils/setfiles/restorecon_xattr.8 b/policycoreutils/setfiles/restorecon_xattr.8 -index e04528e60824..4b1ce304d995 100644 ---- a/policycoreutils/setfiles/restorecon_xattr.8 -+++ b/policycoreutils/setfiles/restorecon_xattr.8 -@@ -23,7 +23,7 @@ or - - .SH "DESCRIPTION" - .B restorecon_xattr --will display the SHA1 digests added to extended attributes -+will display the SHA256 digests added to extended attributes - .I security.sehash - or delete the attribute completely. These attributes are set by - .BR restorecon (8) -@@ -48,12 +48,12 @@ extended attribute and are automatically excluded from searches. - .sp - By default - .B restorecon_xattr --will display the SHA1 digests with "Match" appended if they match the default -+will display the SHA256 digests with "Match" appended if they match the default - specfile set or the - .I specfile - set used with the - .B \-f --option. Non-matching SHA1 digests will be displayed with "No Match" appended. -+option. Non-matching SHA256 digests will be displayed with "No Match" appended. - This feature can be disabled by the - .B \-n - option. -@@ -87,7 +87,7 @@ Do not append "Match" or "No Match" to displayed digests. - recursively descend directories. - .TP - .B \-v --display SHA1 digest generated by specfile set (Note that this digest is not -+display SHA256 digest generated by specfile set (Note that this digest is not - used to match the - .I security.sehash - directory digest entries, and is shown for reference only). -diff --git a/policycoreutils/setfiles/restorecon_xattr.c b/policycoreutils/setfiles/restorecon_xattr.c -index 31fb82fd2099..bc22d3fd4560 100644 ---- a/policycoreutils/setfiles/restorecon_xattr.c -+++ b/policycoreutils/setfiles/restorecon_xattr.c -@@ -38,7 +38,7 @@ int main(int argc, char **argv) - unsigned int xattr_flags = 0, delete_digest = 0, recurse = 0; - unsigned int delete_all_digests = 0, ignore_mounts = 0; - bool display_digest = false; -- char *sha1_buf, **specfiles, *fc_file = NULL, *pathname = NULL; -+ char *sha256_buf, **specfiles, *fc_file = NULL, *pathname = NULL; - unsigned char *fc_digest = NULL; - size_t i, fc_digest_len = 0, num_specfiles; - -@@ -133,8 +133,8 @@ int main(int argc, char **argv) - exit(-1); - } - -- sha1_buf = malloc(fc_digest_len * 2 + 1); -- if (!sha1_buf) { -+ sha256_buf = malloc(fc_digest_len * 2 + 1); -+ if (!sha256_buf) { - fprintf(stderr, - "Error allocating digest buffer: %s\n", - strerror(errno)); -@@ -143,16 +143,16 @@ int main(int argc, char **argv) - } - - for (i = 0; i < fc_digest_len; i++) -- sprintf((&sha1_buf[i * 2]), "%02x", fc_digest[i]); -+ sprintf((&sha256_buf[i * 2]), "%02x", fc_digest[i]); - -- printf("specfiles SHA1 digest: %s\n", sha1_buf); -+ printf("specfiles SHA256 digest: %s\n", sha256_buf); - - printf("calculated using the following specfile(s):\n"); - if (specfiles) { - for (i = 0; i < num_specfiles; i++) - printf("%s\n", specfiles[i]); - } -- free(sha1_buf); -+ free(sha256_buf); - printf("\n"); - } - -diff --git a/policycoreutils/setfiles/ru/restorecon.8 b/policycoreutils/setfiles/ru/restorecon.8 -index 9be3a63db356..745135020f4b 100644 ---- a/policycoreutils/setfiles/ru/restorecon.8 -+++ b/policycoreutils/setfiles/ru/restorecon.8 -@@ -82,11 +82,11 @@ restorecon \- восстановить SELinux-контексты безопас - игнорировать файлы, которые не существуют. - .TP - .B \-I --игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе -+игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA256 соответствует дайджесту SHA256 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе - .B ПРИМЕЧАНИЯ. - .TP - .B \-D --установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута -+установить или обновить дайджесты SHA256 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута - .IR security.restorecon_last. - .TP - .B \-m -@@ -159,7 +159,7 @@ GNU - .B \-D - команды - .B restorecon --обеспечит сохранение дайджеста SHA1 файлов спецификации по умолчанию в расширенном атрибуте с именем -+обеспечит сохранение дайджеста SHA256 файлов спецификации по умолчанию в расширенном атрибуте с именем - .IR security.restorecon_last - для каталогов, указанных в соответствующих путях - .IR pathname \ ... -@@ -173,7 +173,7 @@ GNU - .sp - Параметр - .B \-I --позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в -+позволяет игнорировать дайджест SHA256 из каждого каталога, указанного в - .IR pathname \ ... - , и, при условии, что НЕ установлен параметр - .B \-n -diff --git a/policycoreutils/setfiles/ru/restorecon_xattr.8 b/policycoreutils/setfiles/ru/restorecon_xattr.8 -index 41c441b8c5c2..25c4c3033334 100644 ---- a/policycoreutils/setfiles/ru/restorecon_xattr.8 -+++ b/policycoreutils/setfiles/ru/restorecon_xattr.8 -@@ -23,7 +23,7 @@ restorecon_xattr \- управление записями расширенных - - .SH "ОПИСАНИЕ" - .B restorecon_xattr --покажет дайджесты SHA1, добавленные в расширенные атрибуты -+покажет дайджесты SHA256, добавленные в расширенные атрибуты - .I security.restorecon_last, - или полностью удалит эти атрибуты. Эти атрибуты устанавливаются командой - .BR restorecon (8) -@@ -47,11 +47,11 @@ restorecon_xattr \- управление записями расширенных - .sp - По умолчанию - .B restorecon_xattr --показывает дайджесты SHA1, добавляя в конце "Match", если они соответствуют установленному по умолчанию файлу спецификации или файлу спецификации -+показывает дайджесты SHA256, добавляя в конце "Match", если они соответствуют установленному по умолчанию файлу спецификации или файлу спецификации - .I specfile, - который установлен с помощью параметра - .B \-f. --Несоответствующие дайджесты SHA1 будут показаны с добавлением "No Match" в конце. -+Несоответствующие дайджесты SHA256 будут показаны с добавлением "No Match" в конце. - Эту возможность можно отключить с помощью параметра - .B \-n. - -@@ -81,7 +81,7 @@ restorecon_xattr \- управление записями расширенных - рекурсивно спускаться по каталогам. - .TP - .B \-v --показать дайджест SHA1, созданный установленным файлом спецификации. -+показать дайджест SHA256, созданный установленным файлом спецификации. - .TP - .B \-e - .I directory -@@ -97,7 +97,7 @@ restorecon_xattr \- управление записями расширенных - .BR file_contexts (5). - Он будет использоваться - .BR selabel_open (3) --для получения набора записей меток; получение дайджеста SHA1 выполняется с помощью -+для получения набора записей меток; получение дайджеста SHA256 выполняется с помощью - .BR selabel_digest (3). - Если этот параметр не указан, будет использоваться файл file_contexts по умолчанию. - -diff --git a/policycoreutils/setfiles/ru/setfiles.8 b/policycoreutils/setfiles/ru/setfiles.8 -index 910101452625..7f2daa09191b 100644 ---- a/policycoreutils/setfiles/ru/setfiles.8 -+++ b/policycoreutils/setfiles/ru/setfiles.8 -@@ -69,11 +69,11 @@ setfiles \- установить SELinux-контексты безопаснос - игнорировать файлы, которые не существуют. - .TP - .B \-I --игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA1 соответствует дайджесту SHA1 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе -+игнорировать дайджест, чтобы принудительно проверить метки, даже если хранимый дайджест SHA256 соответствует дайджесту SHA256 файлов спецификации. Затем (при условии отсутствия ошибок) дайджест будет обновлён. Более подробные сведения доступны в разделе - .B ПРИМЕЧАНИЯ. - .TP - .B \-D --установить или обновить дайджесты SHA1 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута -+установить или обновить дайджесты SHA256 для любых каталогов. Используйте этот параметр, чтобы включить использование расширенного атрибута - .IR security.restorecon_last. - .TP - .B \-l -@@ -186,7 +186,7 @@ GNU - .B \-D - команды - .B setfiles . --Он обеспечивает сохранение дайджеста SHA1 файла спецификации -+Он обеспечивает сохранение дайджеста SHA256 файла спецификации - .B spec_file - в расширенном атрибуте с именем - .IR security.restorecon_last -@@ -204,7 +204,7 @@ GNU - .sp - Параметр - .B \-I --позволяет игнорировать дайджест SHA1 из каждого каталога, указанного в -+позволяет игнорировать дайджест SHA256 из каждого каталога, указанного в - .IR pathname \ ... - , и, при условии, что НЕ установлен параметр - .B \-n -diff --git a/policycoreutils/setfiles/setfiles.8 b/policycoreutils/setfiles/setfiles.8 -index 8e6c4ab94841..0692121f2f4d 100644 ---- a/policycoreutils/setfiles/setfiles.8 -+++ b/policycoreutils/setfiles/setfiles.8 -@@ -85,14 +85,14 @@ display usage information and exit. - ignore files that do not exist. - .TP - .B \-I --ignore digest to force checking of labels even if the stored SHA1 digest --matches the specfiles SHA1 digest. The digest will then be updated provided -+ignore digest to force checking of labels even if the stored SHA256 digest -+matches the specfiles SHA256 digest. The digest will then be updated provided - there are no errors. See the - .B NOTES - section for further details. - .TP - .B \-D --Set or update any directory SHA1 digests. Use this option to -+Set or update any directory SHA256 digests. Use this option to - enable usage of the - .IR security.sehash - extended attribute. -@@ -230,7 +230,7 @@ the - .B \-D - option to - .B setfiles --will cause it to store a SHA1 digest of the -+will cause it to store a SHA256 digest of the - .B spec_file - set in an extended attribute named - .IR security.sehash -@@ -251,7 +251,7 @@ for further details. - .sp - The - .B \-I --option will ignore the SHA1 digest from each directory specified in -+option will ignore the SHA256 digest from each directory specified in - .IR pathname \ ... - and provided the - .B \-n --- -2.32.0 - diff --git a/SOURCES/0027-python-sepolicy-Fix-COPY_PASTE_ERROR-CWE-398.patch b/SOURCES/0027-python-sepolicy-Fix-COPY_PASTE_ERROR-CWE-398.patch deleted file mode 100644 index 2801ff6..0000000 --- a/SOURCES/0027-python-sepolicy-Fix-COPY_PASTE_ERROR-CWE-398.patch +++ /dev/null @@ -1,56 +0,0 @@ -From d39dacc352feb35c89b41225e142dd08e932c0c0 Mon Sep 17 00:00:00 2001 -From: Petr Lautrbach -Date: Fri, 30 Jul 2021 13:48:18 +0200 -Subject: [PATCH] python/sepolicy: Fix COPY_PASTE_ERROR (CWE-398) - -Fixes: - Error: COPY_PASTE_ERROR (CWE-398): [#def3] - selinux/python/sepolicy/sepolicy/__init__.py:1032: original: ""_key_t"" looks like the original copy. - selinux/python/sepolicy/sepolicy/__init__.py:1035: copy_paste_error: ""_key_t"" looks like a copy-paste error. - selinux/python/sepolicy/sepolicy/__init__.py:1035: remediation: Should it say ""_secret_t"" instead? - # 1033| - # 1034| if f.endswith("_secret_t"): - # 1035|-> return txt + "treat the files as %s secret data." % prettyprint(f, "_key_t") - # 1036| - # 1037| if f.endswith("_ra_t"): - - Error: COPY_PASTE_ERROR (CWE-398): [#def4] - selinux/python/sepolicy/sepolicy/__init__.py:1065: original: ""_tmp_t"" looks like the original copy. - selinux/python/sepolicy/sepolicy/__init__.py:1067: copy_paste_error: ""_tmp_t"" looks like a copy-paste error. - selinux/python/sepolicy/sepolicy/__init__.py:1067: remediation: Should it say ""_etc_t"" instead? - # 1065| return txt + "store %s temporary files in the /tmp directories." % prettyprint(f, "_tmp_t") - # 1066| if f.endswith("_etc_t"): - # 1067|-> return txt + "store %s files in the /etc directories." % prettyprint(f, "_tmp_t") - # 1068| if f.endswith("_home_t"): - # 1069| return txt + "store %s files in the users home directory." % prettyprint(f, "_home_t") - -Signed-off-by: Petr Lautrbach ---- - python/sepolicy/sepolicy/__init__.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/python/sepolicy/sepolicy/__init__.py b/python/sepolicy/sepolicy/__init__.py -index df773a6b314e..6b6160a449df 100644 ---- a/python/sepolicy/sepolicy/__init__.py -+++ b/python/sepolicy/sepolicy/__init__.py -@@ -1039,7 +1039,7 @@ def get_description(f, markup=markup): - return txt + "treat the files as %s key data." % prettyprint(f, "_key_t") - - if f.endswith("_secret_t"): -- return txt + "treat the files as %s secret data." % prettyprint(f, "_key_t") -+ return txt + "treat the files as %s secret data." % prettyprint(f, "_secret_t") - - if f.endswith("_ra_t"): - return txt + "treat the files as %s read/append content." % prettyprint(f, "_ra_t") -@@ -1071,7 +1071,7 @@ def get_description(f, markup=markup): - if f.endswith("_tmp_t"): - return txt + "store %s temporary files in the /tmp directories." % prettyprint(f, "_tmp_t") - if f.endswith("_etc_t"): -- return txt + "store %s files in the /etc directories." % prettyprint(f, "_tmp_t") -+ return txt + "store %s files in the /etc directories." % prettyprint(f, "_etc_t") - if f.endswith("_home_t"): - return txt + "store %s files in the users home directory." % prettyprint(f, "_home_t") - if f.endswith("_tmpfs_t"): --- -2.32.0 - diff --git a/SPECS/policycoreutils.spec b/SPECS/policycoreutils.spec index f831a25..f0ba239 100644 --- a/SPECS/policycoreutils.spec +++ b/SPECS/policycoreutils.spec @@ -1,7 +1,7 @@ %global libauditver 3.0 -%global libsepolver 3.2-3 -%global libsemanagever 3.2-3 -%global libselinuxver 3.2-5 +%global libsepolver 3.3-1 +%global libsemanagever 3.3-1 +%global libselinuxver 3.3-1 %global generatorsdir %{_prefix}/lib/systemd/system-generators @@ -10,11 +10,11 @@ Summary: SELinux policy core utilities Name: policycoreutils -Version: 3.2 -Release: 8%{?dist} +Version: 3.3 +Release: 1%{?dist} License: GPLv2 # https://github.com/SELinuxProject/selinux/wiki/Releases -Source0: https://github.com/SELinuxProject/selinux/releases/download/3.2/selinux-3.2.tar.gz +Source0: https://github.com/SELinuxProject/selinux/releases/download/3.3/selinux-3.3.tar.gz URL: https://github.com/SELinuxProject/selinux Source13: system-config-selinux.png Source14: sepolicy-icons.tgz @@ -28,36 +28,27 @@ Source21: python-po.tgz Source22: gui-po.tgz Source23: sandbox-po.tgz # https://github.com/fedora-selinux/selinux -# $ git format-patch -N 3.2 -- policycoreutils python gui sandbox dbus semodule-utils restorecond +# $ git format-patch -N 3.3 -- policycoreutils python gui sandbox dbus semodule-utils restorecond # $ for j in [0-9]*.patch; do printf "Patch%s: %s\n" ${j/-*/} $j; done # Patch list start -Patch0001: 0001-policycoreutils-setfiles-do-not-create-useless-setfi.patch -Patch0002: 0002-fixfiles-do-not-exclude-dev-and-run-in-C-mode.patch -Patch0003: 0003-policycoreutils-silence-Wextra-semi-stmt-warning.patch -Patch0004: 0004-policycoreutils-free-memory-on-lstat-failure-in-sest.patch -Patch0005: 0005-policycoreutils-free-memory-of-allocated-context-in-.patch -Patch0006: 0006-policycoreutils-free-memory-of-allocated-context-in-.patch -Patch0007: 0007-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch -Patch0008: 0008-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch -Patch0009: 0009-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch -Patch0010: 0010-Simplication-of-sepolicy-manpage-web-functionality.-.patch -Patch0011: 0011-We-want-to-remove-the-trailing-newline-for-etc-syste.patch -Patch0012: 0012-Fix-title-in-manpage.py-to-not-contain-online.patch -Patch0013: 0013-Don-t-be-verbose-if-you-are-not-on-a-tty.patch -Patch0014: 0014-sepolicy-Drop-old-interface-file_type_is_executable-.patch -Patch0015: 0015-sepolicy-Another-small-optimization-for-mcs-types.patch -Patch0016: 0016-Move-po-translation-files-into-the-right-sub-directo.patch -Patch0017: 0017-Use-correct-gettext-domains-in-python-gui-sandbox.patch -Patch0018: 0018-Initial-.pot-files-for-gui-python-sandbox.patch -Patch0019: 0019-policycoreutils-setfiles-Improve-description-of-d-sw.patch -Patch0020: 0020-sepolicy-generate-Handle-more-reserved-port-types.patch -Patch0021: 0021-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch -Patch0022: 0022-sandbox-Use-matchbox-window-manager-instead-of-openb.patch -Patch0023: 0023-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch -Patch0024: 0024-Do-not-use-Python-slip.patch -Patch0025: 0025-dbus-Use-GLib.MainLoop.patch -Patch0026: 0026-Use-SHA-2-instead-of-SHA-1.patch -Patch0027: 0027-python-sepolicy-Fix-COPY_PASTE_ERROR-CWE-398.patch +Patch0001: 0001-sandbox-add-reset-to-Xephyr-as-it-works-better-with-.patch +Patch0002: 0002-Fix-STANDARD_FILE_CONTEXT-section-in-man-pages.patch +Patch0003: 0003-If-there-is-no-executable-we-don-t-want-to-print-a-p.patch +Patch0004: 0004-Simplication-of-sepolicy-manpage-web-functionality.-.patch +Patch0005: 0005-We-want-to-remove-the-trailing-newline-for-etc-syste.patch +Patch0006: 0006-Fix-title-in-manpage.py-to-not-contain-online.patch +Patch0007: 0007-Don-t-be-verbose-if-you-are-not-on-a-tty.patch +Patch0008: 0008-sepolicy-Drop-old-interface-file_type_is_executable-.patch +Patch0009: 0009-sepolicy-Another-small-optimization-for-mcs-types.patch +Patch0010: 0010-Move-po-translation-files-into-the-right-sub-directo.patch +Patch0011: 0011-Use-correct-gettext-domains-in-python-gui-sandbox.patch +Patch0012: 0012-Initial-.pot-files-for-gui-python-sandbox.patch +Patch0013: 0013-policycoreutils-setfiles-Improve-description-of-d-sw.patch +Patch0014: 0014-sepolicy-generate-Handle-more-reserved-port-types.patch +Patch0015: 0015-semodule-utils-Fix-RESOURCE_LEAK-coverity-scan-defec.patch +Patch0016: 0016-sandbox-Use-matchbox-window-manager-instead-of-openb.patch +Patch0017: 0017-sepolicy-Fix-flake8-warnings-in-Fedora-only-code.patch +Patch0018: 0018-Use-SHA-2-instead-of-SHA-1.patch # Patch list end Obsoletes: policycoreutils < 2.0.61-2 @@ -283,7 +274,7 @@ by python 3 in an SELinux environment. Summary: SELinux policy core policy devel utilities Requires: policycoreutils-python-utils = %{version}-%{release} Requires: /usr/bin/make dnf -Requires: selinux-policy-devel +Requires: (selinux-policy-devel if selinux-policy) %description devel The policycoreutils-devel package contains the management tools use to develop policy in an SELinux environment. @@ -484,8 +475,17 @@ The policycoreutils-restorecond package contains the restorecond service. %systemd_postun_with_restart restorecond.service %changelog -* Wed Sep 29 2021 Vit Mojzis - 3.2-8 -- Update translations (#1962114) +* Fri Oct 22 2021 Petr Lautrbach - 3.3-1 +- SELinux userspace 3.3 release + +* Mon Oct 11 2021 Petr Lautrbach - 3.3-0.rc3.1 +- SELinux userspace 3.3-rc3 release + +* Wed Sep 29 2021 Vit Mojzis - 3.3-0.rc2.2 +- Update translations (#2003127) + +* Wed Sep 29 2021 Petr Lautrbach - 3.3-0.rc2.1 +- SELinux userspace 3.3-rc2 release * Tue Aug 10 2021 Mohan Boddu - 3.2-7 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags