관리-도구
편집 파일: __init__.cpython-39.pyc
a -�_gK? � @ sb d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm Z dd� Z G dd� d�ZdS )� N)�ProcessPoolExecutor)�file_is_binaryc C s� t �| ���}tj�|d�}tt ddd� �|_|�� D ]d}tj�||j�}tj� |�}tj� |�}tj� ||g�}||kr�td|� d|� ���|�||� q4tj�||j� d�d � d �d �W d � S 1 s�0 Y d S )NZcleanerZfully_trusted_filterc S s | S �N� )�member�pathr r �A/usr/lib/python3.9/site-packages/sos/cleaner/archives/__init__.py�<lambda>! � z!extract_archive.<locals>.<lambda>z"Attempted path traversal in tarflez != �/����.tarr )�tarfile�open�osr �join�getattrZextraction_filterZ getmembers�name�abspath�commonprefix� Exception�extract�split) �archive_path�tmpdir�archiver r Zmember_pathZ abs_directoryZ abs_target�prefixr r r �extract_archive s$ ���r c @ s. e Zd ZdZg ZdZdZdZdZdZ i Z dd� Zedd� �Z ed d � �Zedd� �Zd d� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zedd� �Zdd � Zd!d"� Zd#d$� ZdBd%d&�Zd'd(� Zd)d*� Zd+d,� Z d-d.� Z!d/d0� Z"d1d2� Z#d3d4� Z$d5d6� Z%d7d8� Z&d9d:� Z'd;d<� Z(d=d>� Z)d?d@� Z*dAS )C�SoSObfuscationArchivea A representation of an extracted archive or an sos archive build directory which is used by SoSCleaner. Each archive that needs to be obfuscated is loaded into an instance of this class. All report-level operations should be contained within this class. r ZundeterminedFc C s� || _ | j | _|| _| j �d�d �d�d | _| j| _t�d�| _t�d�| _ | � � | _d| _| � � d| _| �d | j � d | j� �� d S )Nr r r r �sosZsos_uiF� zLoaded z as type )r �final_archive_pathr r �archive_name�ui_name�loggingZ getLogger�soslog�ui_log�_load_skip_list� skip_list�is_extracted� _load_self�archive_root�log_info�description)�selfr r r r r �__init__A s �zSoSObfuscationArchive.__init__c C s t �dS )z=Check if the archive is a well-known type we directly supportN)�NotImplementedError)�clsZarc_pathr r r � check_is_typeQ s z#SoSObfuscationArchive.check_is_typec C s d| j j�� v S )Nr )� __class__�__name__�lower�r. r r r �is_sosV s zSoSObfuscationArchive.is_sosc C s d| j v S )NZinsights)� type_namer6 r r r �is_insightsZ s z!SoSObfuscationArchive.is_insightsc C s | j rt�| j�| _d S r )� is_tarfiler r r �tarobjr6 r r r r* ^ s z SoSObfuscationArchive._load_selfc C s g S )a/ Return a list of ObfuscationArchives that represent additional archives found within the target archive. For example, an archive from `sos collect` will return a list of ``SoSReportArchive`` objects. This should be overridden by individual types of ObfuscationArchive's r r6 r r r �get_nested_archivesc s z)SoSObfuscationArchive.get_nested_archivesc C s>