﻿£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
# -*- coding: utf-8 -*-

# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

"""
Shared constants and helpers for clos_ssa.ini file management.
"""

import pwd
import re


INI_FILE_NAME = 'clos_ssa.ini'

# Base user locations for clos_ssa.ini files
INI_USER_LOCATIONS_BASE = (
    dict(path='/var/cagefs/*/*/etc/cl.php.d/alt-php[0-9][0-9]',
         user=lambda path: pwd.getpwnam(path.split('/')[4])),
)

# Per-website locations used when website isolation is enabled
INI_USER_LOCATIONS_WEBSITE_ISOLATION = (
    dict(path='/var/cagefs/*/*/etc/cl.php.d/*/alt-php[0-9][0-9]',
         user=lambda path: pwd.getpwnam(path.split('/')[4])),
)

# Directories to exclude
EXCLUDE_DIR_PATHS = (
    'php44', 'php51', 'php52', 'php53', r'php\d+-imunify', 'php-internal'
)


def is_excluded_path(dir_path: str) -> bool:
    """Check if given path is in exclude list."""
    for pattern in EXCLUDE_DIR_PATHS:
        if re.search(pattern, dir_path):
            return True
    return False


def extract_php_version(path: str) -> str:
    """Extract PHP version number from path (e.g., 'alt-php80' -> '80')."""
    match = re.search(r'php(\d{2})', path)
    return match.group(1) if match else None
