コード例 #1
0
ファイル: tar_utils.py プロジェクト: containers/podman-py
    def add_filter(info: tarfile.TarInfo) -> Optional[tarfile.TarInfo]:
        """Filter files targeted to be added to tarfile.

        Args:
            info: Information on the file targeted to be added

        Returns:
            None: if file is not to be added
            TarInfo: when file is to be added. Modified as needed.

        Notes:
            exclude is captured from parent
        """

        if not (info.isfile() or info.isdir() or info.issym()):
            return None

        if _exclude_matcher(info.name, exclude):
            return None

        # Workaround https://bugs.python.org/issue32713. Fixed in Python 3.7
        if info.mtime < 0 or info.mtime > 8 ** 11 - 1:
            info.mtime = int(info.mtime)

        # do not leak client information to service
        info.uid = 0
        info.uname = info.gname = "root"

        if sys.platform == "win32":
            info.mode = info.mode & 0o755 | 0o111

        return info
コード例 #2
0
ファイル: s3-backup.py プロジェクト: gdrapp/s3-backup
    def filter(self, tarinfo: tarfile.TarInfo):
        if not tarinfo.isfile():
            return tarinfo

        for regex in self.regexes:
            if regex.search(tarinfo.name) is not None:
                logger.debug(f"Excluding file {tarinfo.name}")
                return None

        logger.debug(f"Adding file to tarball: {tarinfo.name}")
        return tarinfo
コード例 #3
0
ファイル: build-wheel.py プロジェクト: tmaone/Adlik
def _tar_info_to_zip_info(tar_info: TarInfo, file_name) -> ZipInfo:
    modified_time = time.gmtime(tar_info.mtime)

    zip_info = ZipInfo(filename=file_name,
                       date_time=(modified_time.tm_year,
                                  modified_time.tm_mon,
                                  modified_time.tm_mday,
                                  modified_time.tm_hour,
                                  modified_time.tm_min,
                                  modified_time.tm_sec))

    if tar_info.isfile():
        zip_info.external_attr = tar_info.mode << 16
    else:
        raise ValueError

    return zip_info
コード例 #4
0
ファイル: archive.py プロジェクト: Boccca2014/CodeGra.de
    def _member_is_safe(member: tarfile.TarInfo) -> bool:
        if member.isfile():
            return getattr(member, 'sparse', None) is None

        return member.isdir() or member.issym() or member.islnk()
コード例 #5
0
ファイル: tartools.py プロジェクト: oldpride/tpsup
 def my_filter(tarinfo: tarfile.TarInfo):
     if tarinfo.isfile() or tarinfo.isdir():
         # only handle basic file types for now
         return tarinfo
     else:
         return None
コード例 #6
0
 def _member_is_safe(member: tarfile.TarInfo) -> bool:
     return (
         member.isfile() or member.isdir() or member.issym() or
         member.islnk()
     )