Mini Shell
Direktori : /usr/bin/ |
|
Current File : //usr/bin/getcontrolpaneluserspackages |
#!/opt/cloudlinux/venv/bin/python3 -bb
import getopt
import os
import subprocess
import sys
from clcommon import ClSec
import clcontrollib as clc
import cldetectlib as detect
SCRIPT_NAME = '' # type: clc.GeneralPanel
if not ClSec.is_root():
sys.exit(5)
def detect_custom_script():
if os.path.exists(detect.CL_CONFIG_FILE):
script_name = detect.get_param_from_file(detect.CL_CONFIG_FILE, 'CUSTOM_GETPACKAGE_SCRIPT', '=')
return script_name
# Get script for control panel
def get_panel_class():
global SCRIPT_NAME
SCRIPT_NAME = detect_custom_script()
if SCRIPT_NAME != '':
return 'custom'
detect.getCPName()
if detect.CP_NAME == 'Plesk':
SCRIPT_NAME = clc.Plesk()
return 'class'
if detect.CP_NAME == 'cPanel':
SCRIPT_NAME = clc.Cpanel()
return 'class'
if detect.CP_NAME == 'InterWorx':
SCRIPT_NAME = '/usr/bin/getiworxuserspackages'
sys.exit(0)
if detect.CP_NAME == 'ISPManager':
SCRIPT_NAME = clc.ISPManager()
return 'class'
if detect.CP_NAME == 'DirectAdmin':
SCRIPT_NAME = clc.DirectAdmin()
return 'class'
return None
def print_usage():
print('--help show this message')
print('--list-all prints <userid package> pairs')
print(' (no parameters required);')
print('--list-users prints <userid package reseller> triple')
print(' (no parameters required);')
print('--userid=id prints package for a user specified')
print('--get-user-reseller=id prints reseller for a user specified')
print('--package=package prints users for a package specified')
print(' --reseller=reseller prints users for a reseller package specified ' \
'(use with --package=package)')
print('--list-packages prints admin\'s packages list')
print('--list-reseller-packages=reseller prints packages belong to a given reseller')
print('--list-reseller-users=reseller prints users belong to a given reseller')
print('--list-resellers-packages prints packages belong to resellers')
print('--debug show debug messages')
print('')
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], 'h:',
['help', 'list-all', 'list-users',
'userid=', 'get-user-reseller=', 'package=',
'reseller=', 'list-packages', 'list-reseller-packages=',
'list-resellers-packages', 'debug', 'list-reseller-users='])
except getopt.GetoptError:
print('error: unknown command')
print_usage()
sys.exit(1)
if len(opts) == 0 and len(args) == 0:
opts = []
turple = ('--list-all', '')
opts.append(turple)
result = get_panel_class()
if result is None:
print('error: unknown control panel')
sys.exit(1)
if result == 'class':
executed = False
debug = ("--debug", "") in opts
single_command = ['--list-all', '--package', '--userid', '--get-user-reseller', '--list-packages',
'--list-resellers-packages', '--list-reseller-packages', '--help', '--list-reseller-users']
commands = [o.lstrip("-") for o, a in opts if o in single_command]
if len(commands) > 1:
print('error: comands "%s" can not be combined' % ','.join(commands))
sys.exit(1)
for o, a in opts:
if o == '--list-all':
executed = True
SCRIPT_NAME.list_all(debug=debug)
elif o == '--list-users':
executed = True
SCRIPT_NAME.list_users(debug=debug)
elif o == '--package':
executed = True
package = str(a)
reseller = None
for o, a in opts:
if o == '--reseller':
reseller = str(a)
break
if reseller is None:
SCRIPT_NAME.list_users_in_package(package=package, debug=debug)
else:
SCRIPT_NAME.list_users_in_reseller_package(
package=package, reseller=reseller, debug=debug
)
elif o == '--userid':
executed = True
SCRIPT_NAME.list_user_package(uid=str(a), debug=debug)
elif o == '--get-user-reseller':
executed = True
SCRIPT_NAME.get_reseller(uid=str(a), debug=debug)
elif o == '--list-packages':
executed = True
SCRIPT_NAME.list_packages(debug=debug)
elif o == '--list-resellers-packages':
executed = True
SCRIPT_NAME.list_resellers_packages(debug=debug)
elif o == '--list-reseller-packages':
executed = True
SCRIPT_NAME.list_reseller_packages(reseller=str(a), debug=debug)
elif o == '--list-reseller-users':
executed = True
SCRIPT_NAME.list_reseller_users(debug=debug, reseller=str(a))
elif o == '--help':
executed = True
print_usage()
else:
executed = True
arglist = sys.argv[1:]
if len(arglist) == 0:
arglist.append('--list-all')
subprocess.run(str(SCRIPT_NAME) + ' %s' % ' '.join("'%s'" % arg.replace("'", "\\'") for arg in arglist),
shell=True, executable='/bin/bash')
if not executed:
print('error: unknown command')
print_usage()
sys.exit(1)
if __name__ == "__main__":
main()
Zerion Mini Shell 1.0