⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.144
Server IP:
157.245.143.252
Server:
Linux www 6.11.0-9-generic #9-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 14 13:19:59 UTC 2024 x86_64
Server Software:
nginx/1.26.0
PHP Version:
8.3.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
share
/
apport
/
View File Name :
package_hook
#!/usr/bin/python3 # # Copyright (c) 2007 - 2009 Canonical Ltd. # Author: Martin Pitt
# # 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. See http://www.gnu.org/copyleft/gpl.html for # the full text of the license. """Collect information about a package installation/upgrade failure.""" import argparse import contextlib import os import sys import apport import apport.fileutils def mkattrname(path): """Convert a file path to a problem report attribute name.""" name = "" for directory in path.split(os.sep): if not directory: continue name += "".join( [c for c in directory[0].upper() + directory[1:] if c.isalnum()] ) return name def parse_args(): """Parse command line options and return arguments.""" parser = argparse.ArgumentParser() parser.add_argument( "-p", "--package", required=True, help="Specify the package name which failed to upgrade (mandatory)", ) parser.add_argument( "-l", "--log", action="append", dest="logs", help="Append given log file, or, if it is a directory," " all files in it (can be specified multiple times)", ) parser.add_argument( "-t", "--tags", help="Add the following tags to the bug report (comma separated)", ) args = parser.parse_args() if args.tags: args.tags = args.tags.split(",") return args # pylint: disable-next=missing-function-docstring def main(): # parse command line arguments options = parse_args() # create report report = apport.Report("Package") report.add_package(options.package) # get_source can fail on distribution upgrades where the package in question has # been removed from the newer release. See https://launchpad.net/bugs/2078695 with contextlib.suppress(ValueError): report["SourcePackage"] = apport.packaging.get_source(options.package) report["ErrorMessage"] = (sys.stdin, False) if options.tags: report.add_tags(options.tags) for line in options.logs or []: if os.path.isfile(line): report[mkattrname(line)] = (line,) elif os.path.isdir(line): for log_file in os.listdir(line): path = os.path.join(line, log_file) if os.path.isfile(path): report[mkattrname(path)] = (path,) # write report try: with apport.fileutils.make_report_file(report) as report_file: report.write(report_file) except OSError as error: apport.fatal("Cannot create report: %s", str(error)) if __name__ == "__main__": main()