mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-31 02:15:55 +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() |