""" Module for ensuring php-fpm fpmstatus support """ from pathlib import Path def is_cwp(): return Path("/usr/local/cwpsrv").exists() def check_if_patched(file: Path): if "\npm.status_path = /status" in file.read_text(): return True else: return False def update_conf(file: Path): """ Add pm.status_path = /status to php fpm conf """ if file.name != "nobody.conf": lines = file.read_text().splitlines() # Check if the exact line is present and not commented status_line = "pm.status_path = /status" if not any( line.strip() == status_line for line in lines if not line.strip().startswith(("#", ";")) ): lines.append( status_line + "\n" ) # Append with a newline character file.write_text("\n".join(lines)) return True return False def check_full_support(): """ Check if environment is fully patched up """ for file in Path("/opt/alt/").glob("./php-fpm*/usr/etc/php-fpm.d/users/*.conf"): if file.name == "nobody.conf": continue if not check_if_patched(file): return False template_dir = Path( "/usr/local/cwpsrv/htdocs/resources/conf/web_servers/vhosts/php-fpm/" ) for template_file in template_dir.glob("*.tpl"): if not check_if_patched(template_file): return False return True def deploy_support(): # Define the directory and pattern to search for .conf files changed = False for file in Path("/opt/alt/").glob("./php-fpm*/usr/etc/php-fpm.d/users/*.conf"): # Check if the file does not end with 'nobody.conf' if update_conf(file): print(f"{file} file updated.") changed = True template_dir = Path( "/usr/local/cwpsrv/htdocs/resources/conf/web_servers/vhosts/php-fpm/" ) for template_file in template_dir.glob("*.tpl"): if update_conf(template_file): changed = True print(f"PHP-FPM template file {template_file.name} updated.") if changed: print( "PHP-FPM status page enabled. You must restart php-fpm to apply the changes." )