????
Current Path : /scripts/ |
Current File : //scripts/cl_pkg_verify_hook.py |
#!/opt/cloudlinux/venv/bin/python3 -bb # -*- coding: utf-8 -*- # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT """ Module provides cpanel hook for validation lve package extension """ from __future__ import print_function from __future__ import division from __future__ import absolute_import import os import simplejson as json import sys from clcommon import validate_cpu, validate_int, memory_to_page SCRIPT_NAME = os.path.basename(__file__) def print_error_msg_and_exit(limit, value): limit_name = limit.split('_')[1].upper() if limit_name == 'CPU': limit_name = 'SPEED' elif limit_name == 'MEM': limit_name = 'VMEM' print(0, 'Invalid value for ' + str(limit_name) + ' : ' + str(value)) sys.exit(1) def need_validation(json_decode): """ Return true if we need validate input data """ if os.path.basename(json_decode['hook']['hook']) == SCRIPT_NAME \ and json_decode["context"]['stage'] == 'pre': return True return False if "__main__" == __name__: lines = sys.stdin.read() json_decode = json.loads(lines) if need_validation(json_decode): hook_data = json_decode['data'] for key, value in hook_data.items(): if not key.startswith('lve_'): continue if value in ('DEFAULT', '', None): continue elif key in ("lve_ncpu", "lve_iops", "lve_nproc", "lve_io", "lve_ep"): if value is not None: if value != validate_int(value): print_error_msg_and_exit(key, value) elif key in ("lve_inodes_soft", "lve_inodes_hard", "lve_mysql_cpu", "lve_mysql_io"): if key == "lve_mysql_cpu": value = value.replace('%', '') if value is not None: if value != validate_int(value, min_val=-1): print_error_msg_and_exit(key, value) elif key in ("lve_pmem", "lve_mem"): temp = memory_to_page(value) if temp is None: print_error_msg_and_exit(key, value) elif key in ("lve_cpu", ): temp = validate_cpu(value) if temp is None: print_error_msg_and_exit(key, value) else: # UNKNOWN LVE LIMIT print_error_msg_and_exit(key, value) print(1, 'Ok')