| Server IP : 103.30.41.158 / Your IP : 216.73.217.126 Web Server : nginx/1.24.0 System : Linux hlvps 5.14.0-457.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 30 22:48:58 UTC 2024 x86_64 User : www ( 1000) PHP Version : 8.0.26 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /sbin/ |
Upload File : |
#!/usr/bin/python3 -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.
#
import sys
import os
import getopt
import syslog
import gettext
import dbus
import selinux
from setroubleshoot.config import parse_config_setting, get_config
from setroubleshoot.util import log_debug
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)
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')
with open(pid_file, encoding='utf-8', mode='w') as f:
f.write(str(os.getpid()))
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)