HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/CLScript/CloudLinuxDomains.py
#!/usr/local/CyberCP/bin/python
import sys
import os.path
import django

sys.path.append('/usr/local/CyberCP')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
try:
    django.setup()
except:
    pass
from websiteFunctions.models import Websites
import argparse
import json
from CLScript.CLMain import CLMain


class CloudLinuxDomains(CLMain):

    def __init__(self, name, owner, with_php):
        CLMain.__init__(self)
        self.owner = owner
        self.name = name
        self.with_php = with_php

    def listAll(self):
        data = {}

        if self.owner != None:
            websites = Websites.objects.filter(externalApp=self.owner)
        else:
            websites = Websites.objects.all()

        for webs in websites:
            if self.name != None:
                if self.name != webs.domain:
                    continue

            if self.with_php:
                completePathToConfigFile = f'/usr/local/lsws/conf/vhosts/{webs.domain}/vhost.conf'
                from plogical.phpUtilities import phpUtilities
                from managePHP.phpManager import PHPManager
                phpVersion = phpUtilities.WrapGetPHPVersionFromFileToGetVersionWithPHP(completePathToConfigFile)
                php = PHPManager.getPHPString(phpVersion)

                data[webs.domain] = {
                    "owner": webs.externalApp,
                    "document_root": "/home/%s/public_html/" % (webs.domain),
                    "is_main": True,
                    "php": {
                        "version": php[:2],
                        "ini_path": f"/usr/local/lsws/lsphp{php[:2]}/etc/php.d",
                        "is_native": False
                    }

                }

                for webs in webs.childdomains_set.all():
                    completePathToConfigFile = f'/usr/local/lsws/conf/vhosts/{webs.domain}/vhost.conf'
                    from plogical.phpUtilities import phpUtilities
                    from managePHP.phpManager import PHPManager
                    phpVersion = phpUtilities.WrapGetPHPVersionFromFileToGetVersionWithPHP(completePathToConfigFile)
                    php = PHPManager.getPHPString(phpVersion)

                    data[webs.domain] = {"owner": webs.master.externalApp,
                                         "document_root": webs.path,
                                         "is_main": False,
                                         "php": {
                                             "version": php[:2],
                                             "ini_path": f"/usr/local/lsws/lsphp{php[:2]}/etc/php.d",
                                             "is_native": False
                                         }

                                         }

            else:
                data[webs.domain] = {"owner": webs.externalApp,
                                     "document_root": "/home/%s/public_html/" % (webs.domain),
                                     "is_main": True}
                for webs in webs.childdomains_set.all():
                    data[webs.domain] = {"owner": webs.master.externalApp,
                                         "document_root": webs.path,
                                         "is_main": False}

        final = {'data': data, 'metadata': self.initialMeta}
        print(json.dumps(final))


import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='CyberPanel CloudLinux Manager')
    parser.add_argument('-o', '--owner', help='Owner')
    parser.add_argument('-n', '--name', help='Owner')
    parser.add_argument('-p', '--with-php', action='store_true', help='False (X-Ray support only)')

    args = parser.parse_args()

    # Assuming CloudLinuxDomains class exists
    pi = CloudLinuxDomains(args.name, args.owner, args.with_php)
    try:
        pi.listAll()
    except:
        pi.listAll()