0
  "   lY> Tm
q@p/\ţh  "   lY>C]
f!)Ft  "   lY> Tm
q@q *bѿh  
   315  
   315  "   lY> Tm
q@p ţh      unsupported
 x    #!/usr/bin/python2 -Es
# -*- coding: utf-8 -*-
#
# Copyright (C) 2010-2016 Red Hat, Inc.
# Authors:
# Thomas Woerner <twoerner@redhat.com>
#
# 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, see <http://www.gnu.org/licenses/>.
#
# python fork magic derived from setroubleshoot
# Copyright (C) 2006,2007,2008,2009 Red Hat, Inc.
# Authors:
#   John Dennis <jdennis@redhat.com>
#   Dan Walsh <dwalsh@redhat.com>

import os
import sys
import dbus
import traceback
import argparse

from firewall import config
from firewall.functions import firewalld_is_active
from firewall.core.logger import log, FileLog

def parse_cmdline():
    parser = argparse.ArgumentParser()
    parser.add_argument('--debug',
                        nargs='?', const=1, default=0, type=int,
                        choices=range(1, log.DEBUG_MAX+1),
                        help="""Enable logging of debug messages.
                                Additional argument in range 1..%s can be used
                                to specify log level.""" % log.DEBUG_MAX,
                        metavar="level")
    parser.add_argument('--debug-gc',
                        help="""Turn on garbage collector leak information.
                        The collector runs every 10 seconds and if there are
                        leaks, it prints information about the leaks.""",
                        action="store_true")
    parser.add_argument('--nofork',
                        help="""Turn off daemon forking,
                                run as a foreground process.""",
                        action="store_true")
    parser.add_argument('--nopid',
                        help="""Disable writing pid file and don't check
                                for existing server process.""",
                        action="store_true")
    parser.add_argument('--system-config',
                        help="""Path to firewalld system configuration""",
                        metavar="path")
    parser.add_argument('--default-config',
                        help="""Path to firewalld default configuration""",
                        metavar="path")
    parser.add_argument('--log-file',
                        help="""Path to firewalld log file""",
                        metavar="path")
    return parser.parse_args()

def setup_logging(args):
    # Set up logging capabilities
    log.setDateFormat("%Y-%m-%d %H:%M:%S")
    log.setFormat("%(date)s %(label)s%(message)s")
    log.setInfoLogging("*", log.syslog, [ log.FATAL, log.ERROR, log.WARNING ],
                       fmt="%(label)s%(message)s")
    log.setDebugLogLevel(log.NO_INFO)
    log.setDebugLogLevel(log.NO_DEBUG)

    if args.debug:
        log.setInfoLogLevel(log.INFO_MAX)
        log.setDebugLogLevel(args.debug)
        if args.nofork:
            log.addInfoLogging("*", log.stdout)
            log.addDebugLogging("*", log.stdout)

    log_file = FileLog(config.FIREWALLD_LOGFILE, "a")
    try:
        log_file.open()
    except IOError as e:
        log.error("Failed to open log file '%s': %s", config.FIREWALLD_LOGFILE,
                  str(e))
    else:
        log.addInfoLogging("*", log_file, [ log.FATAL, log.ERROR, log.WARNING ])
        log.addDebugLogging("*", log_file)
        if args.debug:
            log.addInfoLogging("*", log_fi