/usr/share/cagefs
#!/opt/cloudlinux/venv/bin/python3 -bb from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals from future import standard_library standard_library.install_aliases() from builtins import * import os import sys import glob import secureio from clcommon import login_defs from future.utils import iteritems, itervalues sys.path.append('/usr/share/cagefs') from cagefslib import ( clean_dir_from_old_session_files, get_opts_from_php_ini, get_alt_dirs, is_clean_user_php_sessions_enabled ) VERSIONS = {} EA_PATH = "/opt/cpanel/%s/root/etc/" ALT_PATH = "/opt/alt/%s/etc/php.ini" # default period 1440 sec = 24 min _DEFAULT_TIMEOUT = 1440 def init_versions(): global VERSIONS versions = lambda l: [os.path.basename(p) for p in l] if len(VERSIONS) == 0: VERSIONS["EA"] = versions(glob.glob("/etc/scl/prefixes/ea-php[0-9]*")) VERSIONS["ALT"] = get_alt_dirs() return VERSIONS def get_ea_versions(): versions = init_versions() return versions["EA"] def get_alt_versions(): versions = init_versions() return versions["ALT"] def clean_user(pwnam, paths): """ Drop permissions to given user and clean all session files given with paths dict :param object pwnam: pwnam object for some system user :param dict paths: looks like {"path": maxlifetime} where path is str and maxlifetime is int """ # Drop permissions res = secureio.set_user_perm(pwnam.pw_uid, pwnam.pw_gid, exit=False) if res == -1: return for path, mlt in paths.items(): dir_path = os.path.join(pwnam.pw_dir, ".cagefs", path.lstrip("/")) clean_dir_from_old_session_files(dir_path, mlt) # get back root permissions secureio.set_root_perm() def main(): if not is_clean_user_php_sessions_enabled(): sys.exit(0) paths = {} def patch_paths(ini_path, default_path="/tmp"): (path, mlt) = get_opts_from_php_ini(ini_path, _DEFAULT_TIMEOUT, default_path) if path is None or mlt is None: return if path in paths and paths[path] > mlt: paths[path] = mlt elif paths.get(path) is None: paths[path] = mlt if os.path.exists('/etc/cpanel/ea4/is_ea4'): for ea_php in get_ea_versions(): _path = EA_PATH % ea_php # Since cPanel 65.9999, etc/php.d/local.ini is located now in etc/php.ini old_cpanel_path = os.path.join(_path, "php.d/local.ini") new_cpanel_path = os.path.join(_path, "php.ini") if os.path.exists(old_cpanel_path): ea_path = old_cpanel_path else: ea_path = new_cpanel_path patch_paths(ea_path) else: # get sessions dir for EA3 patch_paths('/usr/local/lib/php.ini') for alt_php in get_alt_versions(): patch_paths(ALT_PATH % alt_php) min_uid = int(login_defs('UID_MIN', 500)) for pwnam in secureio.clpwd.get_user_dict().values(): if pwnam.pw_uid >= min_uid: clean_user(pwnam, paths) if __name__ == "__main__": main()
.
Edit
..
Edit
.cagefs.empty
Edit
.cpanel.multiphp
Edit
.lock
Edit
065-passenger-cagefs
Edit
__pycache__
Edit
cagefs.mp.prev
Edit
cagefs_da_lib.py
Edit
cagefs_ispmanager_lib.py
Edit
cagefs_universal_hook_lib.py
Edit
cagefs_without_lve_lib.py
Edit
cagefsctl.py
Edit
cagefshooks.py
Edit
cagefslib.py
Edit
cagefsreconfigure.py
Edit
check_params.py
Edit
clean_user_alt_php_sessions_plesk
Edit
clean_user_php_sessions
Edit
conf.d
Edit
configs
Edit
cpanel
Edit
custom.etc
Edit
etc
Edit
etc.new
Edit
exclude
Edit
exclude.d
Edit
exclude_users_cleaner.py
Edit
feature_manager.py
Edit
fix_fpm_services_in_container
Edit
generic_hook_lib.py
Edit
last_update_time.txt
Edit
logs.py
Edit
migrate.sh
Edit
passwd.cache
Edit
phpinivalidator.py
Edit
repair_homes.log
Edit
repair_homes.py
Edit
safeprograms
Edit
sanity_check.py
Edit
scriptlets
Edit
service
Edit
setup_multiphp_integration
Edit
signals_handlers.py
Edit
skeleton.files.list
Edit
skeleton.libs.list
Edit
virtmp_mount.py
Edit