From 91adee9fa5c71a7abcbfcc05caa6db58319b7325 Mon Sep 17 00:00:00 2001 From: spla Date: Mon, 29 Aug 2022 12:34:00 +0200 Subject: [PATCH] Added setup attribute --- ejabberdapi/Ejabberdapi.py | 58 ++++++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/ejabberdapi/Ejabberdapi.py b/ejabberdapi/Ejabberdapi.py index 9f2f575..8425c96 100644 --- a/ejabberdapi/Ejabberdapi.py +++ b/ejabberdapi/Ejabberdapi.py @@ -1,6 +1,7 @@ import os import os.path import requests +import getpass from collections import OrderedDict ### @@ -23,20 +24,22 @@ class Ejabberd: name = 'Ejabberd API wrapper' - def __init__(self, secrets_config_file=None, api_base_url=None, local_vhost=None, admin_account=None, admin_pass=None): + def __init__(self, api_base_url=None, local_vhost=None, admin_account=None, admin_pass=None): - self.__secrets_config_file = secrets_config_file + self.__ejabberd_config_path = "secrets/ejabberd_secrets.txt" - try: - - self.__api_base_url = self.__get_parameter("api_base_url", self.__secrets_config_file) - self.__local_vhost = self.__get_parameter("local_vhost", self.__secrets_config_file) - self.__admin_account = self.__get_parameter("admin_account", self.__secrets_config_file) - self.__admin_pass = self.__get_parameter("admin_pass", self.__secrets_config_file) + is_setup = self.__check_setup(self) - except: - - raise EjabberdAPIConfigError("secrets config file not found! create it and pass it as argument to this class.") + if is_setup: + + self.__api_base_url = self.__get_parameter("api_base_url", self.__ejabberd_config_path) + self.__local_vhost = self.__get_parameter("local_vhost", self.__ejabberd_config_path) + self.__admin_account = self.__get_parameter("admin_account", self.__ejabberd_config_path) + self.__admin_pass = self.__get_parameter("admin_pass", self.__ejabberd_config_path) + + else: + + self.__api_base_url, self.__local_vhost, self.__admin_account, self.__admin_pass = self.setup(self) def check_account(self, username, host): @@ -253,6 +256,39 @@ class Ejabberd: return response + @staticmethod + def __check_setup(self): + + is_setup = False + + if not os.path.isfile(self.__ejabberd_config_path): + print(f"File {self.__ejabberd_config_path} not found, running setup.") + else: + is_setup = True + + return is_setup + + @staticmethod + def setup(self): + + if not os.path.exists('secrets'): + os.makedirs('secrets') + + self.__api_base_url = input("api_base_url, in ex. 'http://127.0.0.1:5280': ") + self.__local_vhost = input("local_vhost, in ex. 'ejabberd.server': ") + self.__admin_account = input("admin_account, in ex. 'admin@ejabberd.server': ") + self.__admin_pass = getpass.getpass("admin_pass, in ex. 'my_very_hard_secret_pass': ") + + if not os.path.exists(self.__ejabberd_config_path): + with open(self.__ejabberd_config_path, 'w'): pass + print(f"{self.__ejabberd_config_path} created!") + + with open(self.__ejabberd_config_path, 'a') as the_file: + print("Writing ejabberd secrets parameters to " + self.__ejabberd_config_path) + the_file.write(f'api_base_url: {self.__api_base_url}\n'+f'local_vhost: {self.__local_vhost}\n'+f'admin_account: {self.__admin_account}\n'+f'admin_pass: {self.__admin_pass}\n') + + return (self.__api_base_url, self.__local_vhost, self.__admin_account, self.__admin_pass) + @staticmethod def __get_parameter(parameter, file_path ):