Skip to content

Commit

Permalink
pam_exec_add_bareos_user.py: reformated by black
Browse files Browse the repository at this point in the history
  • Loading branch information
joergsteffens committed Jan 15, 2020
1 parent f2c03e6 commit 72b4dd2
Showing 1 changed file with 54 additions and 37 deletions.
91 changes: 54 additions & 37 deletions misc/bareos_pam_integration/pam_exec_add_bareos_user.py
Expand Up @@ -13,7 +13,7 @@
import bareos.exceptions
import logging
import os
from pprint import pformat
from pprint import pformat
import random
import string
import sys
Expand All @@ -24,25 +24,33 @@ def check_requirements(director):
logger = logging.getLogger()
logger.debug("checking requirements: start")
try:
result = director.call('.users')
result = director.call(".users")
except (bareos.exceptions.Error) as e:
logger.error('The .users command is required, but not available: {}'.format(str(e)))
logger.error(
"The .users command is required, but not available: {}".format(str(e))
)
sys.exit(1)
try:
result = director.call('version')
result = director.call("version")
except (bareos.exceptions.Error) as e:
logger.error('The version command is required, but not available: {}'.format(str(e)))
logger.error(
"The version command is required, but not available: {}".format(str(e))
)
sys.exit(1)
version = result['version']['version']
version = result["version"]["version"]
if version < min_version:
logger.error('Bareos has version {}. However Bareos >= {} is required.'.format(version, min_version))
logger.error(
"Bareos has version {}. However Bareos >= {} is required.".format(
version, min_version
)
)
sys.exit(1)
logger.debug("checking requirements: finish")


def get_user_names(director):
result = director.call('.users')['users']
users = [i['name'] for i in result]
result = director.call(".users")["users"]
users = [i["name"] for i in result]
return users


Expand All @@ -54,52 +62,61 @@ def add_user(director, username, profile):

result = director.call(
'configure add user="{username}" profile="{profile}"'.format(
username = username,
profile = profile
username=username, profile=profile
)
)

try:
if result['configure']['add']['name'] != username:
logger.error('Failed to create user {}.'.format(username))
#logger.debug(str(result))
if result["configure"]["add"]["name"] != username:
logger.error("Failed to create user {}.".format(username))
# logger.debug(str(result))
return False
except KeyError:
logger.debug('result: {}'.format(pformat(result)))
logger.debug("result: {}".format(pformat(result)))
errormessage = pformat(result)
try:
errormessage = ''.join(result['error']['data']['messages']['error'])
errormessage = "".join(result["error"]["data"]["messages"]["error"])
except KeyError:
pass
print('Failed to add user {}:\n'.format(username))
print('{}'.format(errormessage))
print("Failed to add user {}:\n".format(username))
print("{}".format(errormessage))
return False

return True


def getArguments():
argparser = argparse.ArgumentParser(description='Add a PAM user to Bareos Director.')
argparser.add_argument('-d', '--debug', action='store_true', help="enable debugging output")
argparser = argparse.ArgumentParser(
description="Add a PAM user to Bareos Director."
)
argparser.add_argument(
"-d", "--debug", action="store_true", help="enable debugging output"
)
bareos.bsock.DirectorConsole.argparser_add_default_command_line_arguments(argparser)
argparser.add_argument('--username', help="Name of the user to add. Default: content of ENV(PAM_USER)")
argparser.add_argument('--profile', default='webui-admin',
help="Bareos Profile for the newly generated user")
argparser.add_argument(
"--username", help="Name of the user to add. Default: content of ENV(PAM_USER)"
)
argparser.add_argument(
"--profile",
default="webui-admin",
help="Bareos Profile for the newly generated user",
)
args = argparser.parse_args()
return args


if __name__ == '__main__':
if __name__ == "__main__":
logging.basicConfig(
format='%(levelname)s %(module)s.%(funcName)s: %(message)s', level=logging.INFO)
format="%(levelname)s %(module)s.%(funcName)s: %(message)s", level=logging.INFO
)
logger = logging.getLogger()

args = getArguments()
if args.debug:
logger.setLevel(logging.DEBUG)

bareos_args = bareos.bsock.DirectorConsole.argparser_get_bareos_parameter(args)
logger.debug('options: %s' % (bareos_args))
logger.debug("options: %s" % (bareos_args))

try:
director = bareos.bsock.DirectorConsoleJson(**bareos_args)
Expand All @@ -110,19 +127,19 @@ def getArguments():

check_requirements(director)

username = os.getenv('PAM_USER', args.username)
profile = getattr(args, 'profile', 'webui-admin')
username = os.getenv("PAM_USER", args.username)
profile = getattr(args, "profile", "webui-admin")

if username is None:
logger.error('Failed: username not given.')
logger.error("Failed: username not given.")
sys.exit(1)

if does_user_exists(director, username):
print('Skipped. User {} already exists.'.format(username))
print("Skipped. User {} already exists.".format(username))
sys.exit(0)

if not add_user(director, username, profile):
logger.error('Failed to add user {}.'.format(username))
logger.error("Failed to add user {}.".format(username))
sys.exit(1)
print('Added user {} (with profile {}) to Bareos.'.format(username, profile))

print("Added user {} (with profile {}) to Bareos.".format(username, profile))

0 comments on commit 72b4dd2

Please sign in to comment.