diff --git a/common_tools.py b/common_tools.py index 8f29f89..45466b9 100755 --- a/common_tools.py +++ b/common_tools.py @@ -99,6 +99,7 @@ class Create: if file_in_path: if process.returncode == 0: print("File successfully decrypted...") + else: print(f"Error with the following code... {process.returncode}") else: @@ -244,16 +245,26 @@ class LxTools(tk.Tk): return lists_file @staticmethod - def uos() -> None: + def get_username() -> str: """ - uos = LOGIN USERNAME + Returns the username of the logged-in user, + even if the script is running with root privileges. + """ + try: + result = subprocess.run( + ["logname"], + stdout=subprocess.PIPE, + text=True, + check=True, + ) + if result.returncode != 0: + exit(1) + else: + print(result.stdout.strip()) + return result.stdout.strip() - This method displays the username of the logged-in user, - even if you are rooted in a shell - """ - log_name: str = f"{Path.home()}"[6:] - file: Path = Path.home() / "/tmp/.log_user" - Path(file).write_text(log_name, encoding="utf-8") + except subprocess.CalledProcessError: + pass @staticmethod def clean_files(TEMP_DIR: Path = None, file: Path = None) -> None: @@ -265,8 +276,12 @@ class LxTools(tk.Tk): """ if AppConfig.TEMP_DIR is not None: shutil.rmtree(AppConfig.TEMP_DIR) - if file is not None: - Path.unlink(file) + try: + if file is not None: + Path.unlink(file) + + except FileNotFoundError: + pass @staticmethod def msg_window( @@ -389,6 +404,55 @@ class Tunnel: Class of Methods for Wire-Py """ + @staticmethod + def parse_files_to_dictionary() -> Dict[str, List[str]]: + data = {} + + if not AppConfig.TEMP_DIR.exists() or not AppConfig.TEMP_DIR.is_dir(): + pass + + # Get a list of all files in the directorys + files = [file for file in AppConfig.TEMP_DIR.iterdir() if file.is_file()] + if not files: + pass + + # Search for the string in the files + for file in files: + try: + with open(file, "r") as f: + content = f.read() + # Hier parsen wir die relevanten Zeilen aus dem Inhalt + address_line = next( + line + for line in content.splitlines() + if line.startswith("Address") + ) + dns_line = next( + line for line in content.splitlines() if line.startswith("DNS") + ) + endpoint_line = next( + line + for line in content.splitlines() + if line.startswith("Endpoint") + ) + + # Extrahiere die Werte + address = address_line.split("=")[1].strip() + dns = dns_line.split("=")[1].strip() + endpoint = endpoint_line.split("=")[1].strip() + + # Speichere im Dictionary + data[file.stem] = { + "Address": address, + "DNS": dns, + "Endpoint": endpoint, + } + except Exception: + # Ignore errors and continue to the next file + continue + + return data + @classmethod def con_to_dict(cls, file: TextIO) -> Tuple[str, str, str, Optional[str]]: """ @@ -591,36 +655,6 @@ class ConfigManager: config = cls.load() return config.get(key, default) - @property - def username(self) -> str: - """ - Returns the username of the logged-in user, - even if the script is running with root privileges. - - Returns: - str: The username of the logged-in user - """ - import os - from pathlib import Path - - # Versuche zuerst SUDO_USER zu bekommen - sudo_user = os.environ.get("SUDO_USER") - if sudo_user: - return sudo_user - - # Extrahiere aus Path.home() - home_path = str(Path.home()) - if "/home/" in home_path: - return home_path.split("/home/")[1].split("/")[0] - - # Fallbacks - try: - return os.getlogin() - except: - import getpass - - return getpass.getuser() - class ThemeManager: @staticmethod diff --git a/ssl_decrypt.py b/ssl_decrypt.py index 5c0d45c..5808145 100755 --- a/ssl_decrypt.py +++ b/ssl_decrypt.py @@ -6,13 +6,18 @@ import shutil from pathlib import Path from subprocess import check_call from wp_app_config import AppConfig -from common_tools import ConfigManager +import getpass + +log_name: str = getpass.getuser() +if log_name == "root": + + from common_tools import LxTools + + log_name: str = LxTools.get_username() + print("replacement method applied") -log_name: str = ConfigManager.username() keyfile: Path = Path(f"/home/{log_name}/.config/wire_py/pbwgk.pem") -# PKEYFILE: Path = "/usr/local/etc/ssl/pwgk.pem" - if not keyfile.is_file(): check_call( diff --git a/ssl_encrypt.py b/ssl_encrypt.py index 9110d54..69827f6 100755 --- a/ssl_encrypt.py +++ b/ssl_encrypt.py @@ -5,13 +5,10 @@ import os import shutil from pathlib import Path from subprocess import check_call -from common_tools import LxTools from wp_app_config import AppConfig -from common_tools import ConfigManager +from common_tools import LxTools -log_name = ConfigManager.username() - -keyfile: Path = Path(f"/home/{log_name}/.config/wire_py/pbwgk.pem") +keyfile: Path = AppConfig.PUBLICKEY if not keyfile.is_file(): diff --git a/wirepy.py b/wirepy.py index 0189206..b5efe06 100755 --- a/wirepy.py +++ b/wirepy.py @@ -23,7 +23,6 @@ from common_tools import ( ) from wp_app_config import AppConfig, Msg - Create.dir_and_files() Create.make_dir() Create.decrypt() diff --git a/wp_app_config.py b/wp_app_config.py index 52363cb..ea2f826 100644 --- a/wp_app_config.py +++ b/wp_app_config.py @@ -19,6 +19,7 @@ class AppConfig: CONFIG_DIR: Path = BASE_DIR / ".config/wire_py" TEMP_DIR: Path = Path("/tmp/tlecdcwg") USER_FILE: Path = Path("/tmp/.log_user") + PUBLICKEY: Path = CONFIG_DIR / "pbwgk.pem" # Configuration files SETTINGS_FILE: Path = CONFIG_DIR / "settings"