mirror of
				https://github.com/usmannasir/cyberpanel.git
				synced 2025-10-30 18:06:35 +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()
 |