mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-11-03 20:05:58 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			171 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/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 pwd
 | 
						|
import json
 | 
						|
from CLScript.CLMain import CLMain
 | 
						|
 | 
						|
 | 
						|
class CloudLinuxUsers(CLMain):
 | 
						|
 | 
						|
    def __init__(self, owner, username, packageName, packageOwner, fields, uid):
 | 
						|
 | 
						|
        CLMain.__init__(self)
 | 
						|
        self.owner = owner
 | 
						|
        self.username = username
 | 
						|
        self.packageName = packageName
 | 
						|
        self.packageOwner = packageOwner
 | 
						|
        self.fields = fields
 | 
						|
        if uid!=None:
 | 
						|
            self.uid = int(uid)
 | 
						|
        else:
 | 
						|
            self.uid = uid
 | 
						|
 | 
						|
        if self.fields == None:
 | 
						|
            self.id = 1
 | 
						|
            self.un = 1
 | 
						|
            self.ow = 1
 | 
						|
            self.domain = 1
 | 
						|
            self.package = 1
 | 
						|
            self.email = 1
 | 
						|
            self.localecode = 1
 | 
						|
        else:
 | 
						|
            if self.fields.find('id') > -1:
 | 
						|
                self.id = 1
 | 
						|
            else:
 | 
						|
                self.id = 0
 | 
						|
            if self.fields.find('username') > -1:
 | 
						|
                self.un = 1
 | 
						|
            else:
 | 
						|
                self.un = 0
 | 
						|
 | 
						|
            if self.fields.find('owner') > -1:
 | 
						|
                self.ow = 1
 | 
						|
            else:
 | 
						|
                self.ow = 0
 | 
						|
 | 
						|
            if self.fields.find('domain') > -1:
 | 
						|
                self.domain = 1
 | 
						|
            else:
 | 
						|
                self.domain = 0
 | 
						|
 | 
						|
            if self.fields.find('package') > -1:
 | 
						|
                self.package = 1
 | 
						|
            else:
 | 
						|
                self.package = 0
 | 
						|
 | 
						|
            if self.fields.find('email') > -1:
 | 
						|
                self.email = 1
 | 
						|
            else:
 | 
						|
                self.email = 0
 | 
						|
 | 
						|
            if self.fields.find('locale_code') > -1:
 | 
						|
                self.localecode = 1
 | 
						|
            else:
 | 
						|
                self.localecode = 0
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    def fetchJson(self, websites):
 | 
						|
        users = []
 | 
						|
        for webs in websites:
 | 
						|
            try:
 | 
						|
                itemPackage = webs.package
 | 
						|
                package = {'name': itemPackage.packageName, 'owner': webs.admin.userName}
 | 
						|
 | 
						|
                user = {}
 | 
						|
 | 
						|
                if self.id:
 | 
						|
                    user['id'] = pwd.getpwnam(webs.externalApp).pw_uid
 | 
						|
 | 
						|
                if self.un:
 | 
						|
                    user['username'] = webs.externalApp
 | 
						|
 | 
						|
                if self.ow:
 | 
						|
                    if webs.admin.owner == 1:
 | 
						|
                        user['owner'] = webs.admin.userName
 | 
						|
                    else:
 | 
						|
                        from loginSystem.models import Administrator
 | 
						|
                        oAdmin = Administrator.objects.get(pk=webs.admin.owner)
 | 
						|
                        user['owner'] = oAdmin.userName
 | 
						|
 | 
						|
                if self.domain:
 | 
						|
                    user['domain'] = webs.domain
 | 
						|
 | 
						|
                if self.package:
 | 
						|
                    user['package'] = package
 | 
						|
 | 
						|
                if self.email:
 | 
						|
                    user['email'] = webs.adminEmail
 | 
						|
 | 
						|
                if self.localecode:
 | 
						|
                    user['locale_code'] = "EN_us"
 | 
						|
 | 
						|
 | 
						|
                if self.packageName != None:
 | 
						|
                    if self.package:
 | 
						|
                        if self.packageName == user['package']['name'] and self.packageOwner == user['package']['owner']:
 | 
						|
                            pass
 | 
						|
                        else:
 | 
						|
                            continue
 | 
						|
 | 
						|
                if self.uid !=None:
 | 
						|
                    if self.id:
 | 
						|
                        if self.uid == user['id']:
 | 
						|
                            users.append(user)
 | 
						|
                    else:
 | 
						|
                        users.append(user)
 | 
						|
                else:
 | 
						|
                    users.append(user)
 | 
						|
            except BaseException as msg:
 | 
						|
                pass
 | 
						|
 | 
						|
        final = {'data': users, 'metadata': self.initialMeta}
 | 
						|
        print(json.dumps(final))
 | 
						|
 | 
						|
    def listAll(self):
 | 
						|
 | 
						|
        if self.owner == None:
 | 
						|
            websites = Websites.objects.all()
 | 
						|
        else:
 | 
						|
            from loginSystem.models import Administrator
 | 
						|
            from plogical.acl import ACLManager
 | 
						|
            oAdmin = Administrator.objects.get(userName=self.owner)
 | 
						|
            currentACL = ACLManager.loadedACL(oAdmin.pk)
 | 
						|
            websites = ACLManager.findWebsiteObjects(currentACL, oAdmin.pk)
 | 
						|
 | 
						|
        if self.username != None:
 | 
						|
            websites = websites.filter(externalApp=self.username)
 | 
						|
 | 
						|
        self.fetchJson(websites)
 | 
						|
 | 
						|
 | 
						|
def main():
 | 
						|
    parser = argparse.ArgumentParser(description='CyberPanel CloudLinux Manager')
 | 
						|
    parser.add_argument('-o', '--owner', help='Owner')
 | 
						|
    parser.add_argument('--fields', help='Fields to output!')
 | 
						|
    parser.add_argument('--username', help='Fields to output!')
 | 
						|
    parser.add_argument('--package-name', help='Fields to output!')
 | 
						|
    parser.add_argument('--package-owner', help='Fields to output!')
 | 
						|
    parser.add_argument('--unix-id', help='Fields to output!')
 | 
						|
 | 
						|
    args = vars(parser.parse_args())
 | 
						|
 | 
						|
    pi = CloudLinuxUsers(args['owner'], args['username'], args['package_name'], args['package_owner'], args['fields'], args['unix_id'])
 | 
						|
    pi.listAll()
 | 
						|
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 |