#!/opt/cloudlinux/venv/bin/python3 -sbb # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENCE.TXT # from __future__ import print_function from __future__ import absolute_import import getopt import os import sys import cldetectlib as detect import clsetuplib as clsetup import cllicenselib as license from clcommon.utils import is_ea4, is_nginx_running from clcommon.lib.cledition import skip_without_lve, get_cl_edition_readable, get_os_version # Check for root def check_root(): if os.geteuid() != 0: print('Error: root privileges required. Abort.') sys.exit(-1) # Show help def print_usage(): print('-h | --help show this message') print(' --detect-cp prints control panel and its version (CP_NAME,CP_VERSION)') print(' --detect-cp-full prints control panel, version and panel specific data (CP_NAME,CP_VERSION,...)') print(' Specific data: for ISP Manager5 - Master/Node') print(' --detect-cp-nameonly prints control panel name (CP_NAME)') print(' --get-admin-email prints control panel admin email (CP_ADMIN_EMAIL)') print(' --cxs-installed check if CXS is installed. Returns 0 if installed, 1 otherwise') print(' --cpanel-suphp-enabled check if suPHP is enabled in cPanel. Returns 0 if enabled, 1 otherwise') print(' --detect-litespeed check if LiteSpeed is installed. Returns 0 if installed, 1 otherwise') print(' --detect-postgresql check if PostGreSQL is installed. Returns 0 if installed, 1 otherwise') print(' --detect-ea4 check if EA4 is installed. Only for cPanel.') print(' --detect-nginx check if nginx is running.') print(' --print-apache-gid prints current apache gid') print(' --print-da-admin prints DirectAdmin admin user') print(' --set-securelinks-gid changes sysctl conf if apache gid != 48 (default)') print(' --set-nagios do some adjustments to make nagios work correctly if it\'s installed') print(' --setup-supergids do some adjustments to make some software work correctly if it\'s installed') print(' --cl-setup check if CloudLinux is installing. Returns 0 if installing, 1 otherwise') print(' --update-license updates license') print(' --update-new-key updates license with new key') print(' --check-license : check license. Returns OK if license is not older than 3 days, error message otherwise') print(' -q: check license. Returns 0 if license is not older than 3 days, 1 otherwise') print(' --no-valid-license-screen Returns no valid license found screen.') print(' --license-out-of-date-email Returns License out of Date Email.') print(' --check-openvz Returns environment id.') print(' --detect-edition Returns edition of CloudLinux') print(' --detect-os prints OS panel name and version (OS_NAME,OS_VERSION)') print(' --detect-os-nameonly prints OS panel name only (CP_NAME)') print('') def update_new_key(key): license.update_license_with_key(key) def check_license(quiet): is_license_valid = license.check_license() if quiet: if is_license_valid: sys.exit(0) else: sys.exit(1) else: print(license.last_license_check(is_license_valid)) sys.exit(0) def main(): try: opts, args = getopt.getopt(sys.argv[1:], 'hq', ['help', 'detect-cp', 'detect-cp-full', 'detect-cp-nameonly', 'cxs-installed', 'cpanel-suphp-enabled', 'get-admin-email', 'print-apache-gid', 'detect-litespeed', 'detect-postgresql', 'set-securelinks-gid', 'print-da-admin', 'cl-setup', 'set-nagios', 'update-license', 'update-new-key', 'check-license', 'no-valid-license-screen', 'license-out-of-date-email', 'check-openvz', 'detect-ea4', 'detect-nginx', 'setup-supergids', 'detect-edition', 'detect-os', 'detect-os-nameonly']) except getopt.GetoptError: print('error: unknown command') print_usage() sys.exit(1) executed = False quiet = False for o, a in opts: if o in ('-q',): quiet = True break skipped_without_lve_checks = ('--set-securelinks-gid', '--set-nagios', '--setup-supergids') for o, a in opts: if o in skipped_without_lve_checks: skip_without_lve() if o in ('--help', '-h' ): executed = True check_root() print_usage() elif o in ('--cxs-installed', ): executed = True check_root() if detect.CXS_check(): sys.exit(0) else: sys.exit(1) elif o in ('--detect-cp', ): executed = True check_root() detect.getCP() print(str(detect.CP_NAME)+','+str(detect.CP_VERSION)) elif o in ('--detect-cp-full', ): executed = True check_root() detect.getCP() if detect.CP_ISP_TYPE: # Panel additional info present print("%s,%s,%s" % (str(detect.CP_NAME), str(detect.CP_VERSION), detect.CP_ISP_TYPE)) else: # No panel additional info present print(str(detect.CP_NAME)+','+str(detect.CP_VERSION)) elif o in ('--detect-cp-nameonly', ): executed = True check_root() detect.getCPName() print(str(detect.CP_NAME)) elif o in ('--get-admin-email', ): executed = True check_root() print(detect.getCPAdminEmail()) elif o in ('--cpanel-suphp-enabled', ): executed = True check_root() if detect.mod_suPHP_check(): sys.exit(0) else: sys.exit(1) elif o in ('--detect-litespeed', ): executed = True check_root() if detect.detect_litespeed(): sys.exit(0) else: sys.exit(1) elif o in ('--detect-postgresql', ): executed = True check_root() if detect.detect_postgresql(): sys.exit(0) else: sys.exit(1) elif o in ('--print-apache-gid', ): executed = True check_root() if detect.get_apache_gid(): print(detect.APACHE_GID) else: print('error: unknown control panel') elif o in ('--set-securelinks-gid', ): executed = True check_root() if detect.get_apache_gid(): clsetup.set_securelinks_gid(detect.APACHE_GID) # Actually, this command could be removed because it's a sub-set of # --setup-supergids, but I left it here only for backward compatibility elif o in ('--set-nagios', ): executed = True check_root() clsetup.setup_nagios() elif o in ('--setup-supergids', ): executed = True check_root() clsetup.setup_supergids() elif o in ('--print-da-admin', ): executed = True check_root() admin = detect.detect_DA_admin() if admin: print(admin) else: print('Error: can not find admin user for DirectAdmin') elif o in ('--cl-setup', ): executed = True check_root() if detect.check_CL_installing(): sys.exit(0) else: sys.exit(1) elif o in ('--update-license', ): executed = True check_root() license.update_license_timestamp_file() elif o in ('--update-new-key', ): executed = True check_root() try: update_new_key(args[0].strip()) except: print('Error: key required.') sys.exit(1) elif o in ('--check-license', ): executed = True check_license(quiet) elif o in ('--no-valid-license-screen', ): executed = True check_root() print(license.get_novalid_template()) elif o in ('--license-out-of-date-email', ): executed = True check_root() print(license.get_email_template()) elif o in ('--check-openvz', ): executed = True result = detect.is_openvz() sys.stdout.write(str(result)) elif o in ('--detect-ea4',): executed = True if is_ea4(): print("EA4 detected") else: print("No EA4 detected") elif o in ('--detect-nginx',): executed = True if is_nginx_running(): print("Nginx is running") else: print("Nginx is not running") elif o in ('--detect-edition',): executed = True print(get_cl_edition_readable()) elif o in ('--detect-os', ): executed = True os_name, os_ver = get_os_version() print(os_name, os_ver) elif o in ('--detect-os-nameonly', ): executed = True os_name, _ = get_os_version() print(os_name) if not executed: print('error: argument required') print_usage() sys.exit(1) if __name__ == "__main__": main()