Edit file File name : setroubleshootd Content :#! /usr/libexec/platform-python -Es # -*- mode: Python; -*- # # Authors: John Dennis <jdennis@redhat.com> # Dan Walsh <dwalsh@redhat.com> # # Copyright (C) 2006,2007,2008,2009 Red Hat, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # from __future__ import print_function from six.moves.builtins import str import sys if sys.version_info < (3,): import setroubleshoot.default_encoding_utf8 import selinux import os import getopt import syslog from setroubleshoot.config import parse_config_setting, get_config from setroubleshoot.util import log_debug import gettext gettext.install(domain=get_config('general', 'i18n_text_domain'), localedir=get_config('general', 'i18n_locale_dir')) pkg_name = get_config('general', 'pkg_name') syslog.openlog(pkg_name) def usage(): print(''' -f --nofork no fork -d --debug debug -c --config section.option=value set a configuration value -h --help display help info ''') fork = True timeout = 10 try: opts, args = getopt.getopt(sys.argv[1:], "dfc:h", ["debug", "nofork", "config=", "help"]) except getopt.GetoptError: # print help information and exit: usage() sys.exit(2) for o, a in opts: if o in ("-h", "--help"): usage() sys.exit() if o in ("-f", "--nofork"): fork = False if o in ("-d", "--debug"): timeout = 0 if o in ("-c", "--config"): config_setting = a if not parse_config_setting(config_setting): syslog.syslog(syslog.LOG_ERR, "could not parse config setting '%s'", config_setting) if not selinux.is_selinux_enabled(): syslog.syslog(syslog.LOG_ERR, _("SELinux not enabled, setroubleshootd exiting...")) sys.exit(3) import dbus.service import dbus try: if fork: # do the UNIX double-fork magic, see Stevens' "Advanced # Programming in the UNIX Environment" for details (ISBN 0201563177) pid = os.fork() if pid > 0: # exit first parent sys.exit(0) # decouple from parent environment os.chdir("/") os.setsid() os.umask(os.umask(0o077) | 0o022) # write the pid file pid_file = get_config('general', 'pid_file') f = open(pid_file, "w") f.write(str(os.getpid())) f.close() from setroubleshoot.server import RunFaultServer log_debug("RunFaultServer(%d)" % timeout) RunFaultServer(timeout) except OSError as e: print(_("fork #1 failed: %d (%s)") % (e.errno, e.strerror), file=sys.stderr) sys.exit(1) except dbus.DBusException as e: syslog.syslog(syslog.LOG_ERR, str(e)) print(e, file=sys.stderr) sys.exit(1) except IOError as e: syslog.syslog(syslog.LOG_ERR, str(e)) print(e, file=sys.stderr) sys.exit(1) Save