Source code for cobbler.modules.authorization.configfile

"""
Authorization module that allow users listed in
/etc/cobbler/users.conf to be permitted to access resources.
For instance, when using authz_ldap, you want to use authn_configfile,
not authz_allowall, which will most likely NOT do what you want.

This software may be freely redistributed under the terms of the GNU
general public license.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301  USA.
"""


from configparser import SafeConfigParser

import os
from typing import Dict

CONFIG_FILE = '/etc/cobbler/users.conf'


[docs]def register() -> str: """ The mandatory Cobbler module registration hook. :return: Always "authz". """ return "authz"
def __parse_config() -> Dict[str, dict]: """ Parse the the users.conf file. :return: The data of the config file. """ if not os.path.exists(CONFIG_FILE): return {} config = SafeConfigParser() config.read(CONFIG_FILE) alldata = {} groups = config.sections() for g in groups: alldata[str(g)] = {} opts = config.options(g) for o in opts: alldata[g][o] = 1 return alldata
[docs]def authorize(api_handle, user, resource, arg1=None, arg2=None) -> int: """ Validate a user against a resource. All users in the file are permitted by this module. :param api_handle: This parameter is not used currently. :param user: The user to authorize. :param resource: This parameter is not used currently. :param arg1: This parameter is not used currently. :param arg2: This parameter is not used currently. :return: "0" if no authorized, "1" if authorized. """ # FIXME: this must be modified to use the new ACL engine data = __parse_config() for g in data: if user.lower() in data[g]: return 1 return 0