OXIESEC PANEL
- Current Dir:
/
/
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
clwpos
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
09/05/2025 09:34:06 AM
rwxr-xr-x
📄
__init__.py
928 bytes
08/21/2025 03:04:58 PM
rw-r--r--
📁
__pycache__
-
09/05/2025 10:05:18 AM
rwxr-xr-x
📄
billing.py
6.24 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
bin
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
cl_wpos_exceptions.py
3.59 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
cli_versions
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
constants.py
5.56 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
create_user_uid_dirs.py
754 bytes
08/21/2025 03:04:58 PM
rw-r--r--
📄
cron.py
2.14 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
daemon.py
37.12 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
daemon_base.py
2.84 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
daemon_config.py
621 bytes
08/21/2025 03:04:58 PM
rw-r--r--
📄
daemon_redis_lib.py
11.93 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
daemon_subscription_handler.py
6.44 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
data_collector_utils.py
9.42 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
feature_suites
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📁
hooks
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
logsetup.py
4.04 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
migrations
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📁
object_cache
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📁
optimization_features
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
papi.py
9.87 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
parse.py
2.1 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
php
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
redis_configuration_pid_file_cleaner.py
1.01 KB
08/21/2025 03:04:58 PM
rwxr-xr-x
📄
report_generator.py
21.18 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
scoped_cache.py
1.34 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
socket_utils.py
4.03 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
stats.py
12.02 KB
08/21/2025 03:04:58 PM
rw-r--r--
📁
user
-
09/05/2025 09:34:13 AM
rwxr-xr-x
📄
utils.py
53.91 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
whmcs_utils.py
9.36 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
wp_config.py
725 bytes
08/21/2025 03:04:58 PM
rw-r--r--
📄
wp_utils.py
16.33 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
wpos_admin.py
67.14 KB
08/21/2025 03:04:58 PM
rw-r--r--
📄
wpos_hooks.py
4.85 KB
08/21/2025 03:04:58 PM
rwxr-xr-x
📄
wpos_req_scanner.py
4.38 KB
08/21/2025 03:04:58 PM
rw-r--r--
Editing: wpos_req_scanner.py
Close
#!/opt/cloudlinux/venv/bin/python3 -bb # -*- coding: utf-8 -*- # clwposcron Utility to scan domains for Cloudlinux WPOS requirements by cron # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2021 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT # pylint: disable=no-absolute-import import os import time import subprocess import logging import json from clwpos.logsetup import setup_logging class CloudlinuxWposReqScanner(object): """ Class for run clwposcron functionality """ TIMEOUT_24H_SECONDS = 24 * 3600 _CRON_LOG_FILE = '/var/log/clwpos/req_cron.log' def __init__(self): self._file_flag_force_check = '/var/lve/clwpos/cl_wpos_scan_req_force' self._scan_req_scan_last_ts = '/var/lve/clwpos/cl_wpos_scan_req_last_ts' self._logger = setup_logging( caller_name='clwpos_req_cron', # Uncomment this for console debug # console_level=logging.DEBUG, file_level=logging.INFO, logfile_path=self._CRON_LOG_FILE ) def _get_last_start_time(self) -> float: """ Get last time start time from file :return: Last start time as UNIX timestamp """ try: with open(self._scan_req_scan_last_ts, 'r') as f: s_last_ts = f.read() last_ts = float(s_last_ts) except (OSError, IOError, ValueError): last_ts = 0.0 return last_ts def _save_last_start_time(self, last_time: float): """ Save last time to file :param last_time: Last time (UNIX timestamp) to save """ with open(self._scan_req_scan_last_ts, 'w') as f: f.write(str(last_time)) def _is_24h_passed(self, ts_now: float) -> bool: """ Check is 24h interval passed :param ts_now: 'now' UNIX timestamp :return: True - passed, False - not passed """ last_ts = self._get_last_start_time() if last_ts != 0.0 and ts_now - last_ts < self.TIMEOUT_24H_SECONDS: # 24h not passed return False return True def run(self): """ Run command action """ self._logger.debug("CL AWP requirements cron script started") try: if not os.path.exists(self._file_flag_force_check): # force start flag file absent, check 24h timeout ts_now = time.time() is_24h_passed = self._is_24h_passed(ts_now) if not is_24h_passed: # 24h not passed from last run this script - do nothing self._logger.debug("24 hours not passed - do nothing") return 0 # timestamp file old/absent, create it self._save_last_start_time(ts_now) else: self._logger.info("Force start") # Force start try: os.remove(self._file_flag_force_check) except (OSError, IOError): self._logger.exception(f'{self._file_flag_force_check} remove error', exc_info=True) # Run file generation try: # /usr/bin/clwpos-admin generate-report --all proc = subprocess.Popen(['/usr/bin/clwpos-admin', 'generate-report', '--all'], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) stdout, stderr = proc.communicate() if proc.returncode != 0: self._logger.warning('/usr/bin/clwpos-admin generate-report start error: retcode=%d\n' 'stdout: %s\nstderr: %s', proc.returncode, stdout, stderr) result_dict = json.loads(stdout) if result_dict['result'] != 'success': self._logger.info(f'/usr/bin/clwpos-admin generate-report result: {stdout}') self._logger.warning('/usr/bin/clwpos-admin generate-report error') except (OSError, IOError, json.JSONDecodeError, KeyError): self._logger.exception('/usr/bin/clwpos-admin generate-report start exception', exc_info=True) except: self._logger.exception('CL AWP requirements cron script general error', exc_info=True) return 0