g NdZddlZddlmZddlmZdZdZdZdZd Z d Z d Z dS) ut 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 3 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 . Copyright © 2019 Cloud Linux Software Inc. This software is also available under ImunifyAV commercial license, see chattr.py This is a module for managing file attributes via ioctl. Used IOCTL request constants: FS_IOC_GETFLAGS - get fs flags FS_IOC_SETFLAGS - set fs flags Supported attributes: FS_IMMUTABLE_FL - immutable attribute Refer to include/linux/fs.h for values of above constants: https://elixir.bootlin.com/linux/v2.6.32.71/source/include/linux/fs.h N)array)ioctlif@lfctddg}t|t|dt|t jS)zGet attributes of a file. :param fd: descriptor of a file to examine, read-only access is enough :return: flags as integer value ir) byteorder)rrFS_IOC_GETFLAGSint from_bytessysr )fd flags_ptrs Q/opt/imunify360/venv/lib/python3.11/site-packages/imav/malwarelib/utils/chattr.py get_flagsr-s? cA3I "oy!,,, >>)s}> = ==cTtd|g}t|t|dS)aHReplace existing file attributes with the ones provided. Calling _set_flags() directly is most likely NOT what you want. Consider using append_flags() and subtract_flags(). :param fd: descriptor of a file to modify, read-only access is enough :param flags: attribute flags combined by bitwise OR operator | rN)rrFS_IOC_SETFLAGS)rflagsrs r _set_flagsr7s-cE7##I "oy)))))rcJt||z}t||dS)z@Enable given attributes of a file. See _set_flags() for details.Nrrrr new_flagss r append_flagsrBs(" %Ir9rcLt||z}t||dS)zADisable given attributes of a file. See _set_flags() for details.Nrrs rsubtract_flagsrHs*" &Ir9r) __doc__r rfcntlrrr FS_IMMUTABLE_FLrrrrrrr"s@ >>>*** r