From 51c1feb99e908ffed82b5b71b47a59b0f3ff4d36 Mon Sep 17 00:00:00 2001 From: "Eshan Roy (Eshanized)" Date: Wed, 24 Apr 2024 15:31:57 +0530 Subject: [PATCH] =?UTF-8?q?=E2=8F=B3=20@eshanized=20updated=20the=20reposi?= =?UTF-8?q?tory!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blackbox/Functions.py | 92 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/blackbox/Functions.py b/blackbox/Functions.py index d9155b8..689b15f 100644 --- a/blackbox/Functions.py +++ b/blackbox/Functions.py @@ -1083,3 +1083,95 @@ def get_package_files(package_name): logger.error( "Exception in LOC1161: %s" % e ) + +def get_package_information(package_name): + logger.info( + "Fetching Package Information: %s" % package_name + ) + try: + pkg_name = "Unknown" + pkg_version = "Unknown" + pkg_repository = "Unknown / Pacman Misconfig!" + pkg_description = "Unknown" + pkg_arch = "Unknown" + pkg_url = "Unknown" + pkg_depends_on = [] + pkg_conflicts_with = [] + pkg_download_size = "Unknown" + pkg_installed_size = "Unknown" + pkg_build_date = "Unknown" + pkg_packager = "Unknown" + pkg_metadata = {} + query_local_cmd = [ + "pacman", + "-Qi", + package_name, + ] + query_remote_cmd = [ + "pacman", + "-Si", + package_name, + ] + process_query_remote = subprocess.run( + query_remote_cmd, + shell=False, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + timeout=process_timeout, + ) + if process_query_remote.returncode == 0: + for line in process_query_remote.stdout.decode("UTF-8").splitlines(): + if "Name :" in line.strip(): + pkg_name = line.replace(" ", "").split("Name:")[1].strip() + if "Version :" in line.strip(): + pkg_version = line.replace(" ", "").split("Version:")[1].strip() + if "Repository :" in line.strip(): + pkg_repository = line.split("Repository:")[1].strip() + if "Decription :" in line.strip(): + pkg_description = line.split("Decription:")[1].strip() + if "Architecture :" in line.strip(): + pkg_arch = line.split("Architecture:")[1].strip() + if "URL :" in line.strip(): + pkg_url = line.split("URL:")[1].strip() + if "Depends On :" in line.strip(): + if line.split("Depends On :")[1].strip() != "None": + pkg_depend_on_str = line.split("Depends On :")[1].strip() + for pkg_dep in pkg_depend_on_str.split(" "): + pkg_depends_on.append((pkg_dep, None)) + else: + pkg_depends_on = [] + if "Conflicts With :" in line.strip(): + if line.split("Conflicts With :")[1].strip() != "None": + pkg_conflicts_with_str = line.split("Conflicts With :")[1].strip() + for pkg_con in pkg_conflicts_with_str.split(" "): + pkg_conflicts_with.append((pkg_con, None)) + else: + pkg_conflicts_with = [] + if "Download Size :" in line.strip(): + pkg_download_size = line.split("Download Size:")[1].strip() + if "Installed Size :" in line.strip(): + pkg_installed_size = line.split("Installed Size:")[1].strip() + if "Build Date :" in line.strip(): + pkg_build_date = line.split("Build Date:")[1].strip() + if "Packager :" in line.strip(): + pkg_packager = line.split("Packager:")[1].strip() + pkg_metadata["name"] = pkg_name + pkg_metadata["version"] = pkg_version + pkg_metadata["repository"] = pkg_repository + pkg_metadata["description"] = pkg_description + pkg_metadata["arch"] = pkg_arch + pkg_metadata["url"] = pkg_url + pkg_metadata["depends_on"] = pkg_depends_on + pkg_metadata["conflicts_with"] = pkg_conflicts_with + pkg_metadata["download_size"] = pkg_download_size + pkg_metadata["installed_size"] = pkg_installed_size + pkg_metadata["build_date"] = pkg_build_date + pkg_metadata["packager"] = pkg_packager + return pkg_metadata + elif ( + "error: package '%s' not found!\n" % package_name in process_query_remote.stdout.decode("UTF-8") + ): + return "error: package '%s' not found!\n" % package_name + else: + + \ No newline at end of file