JFIF$        dd7 

Viewing File: /usr/bin/cl-syncpkgs

#!/opt/cloudlinux/venv/bin/python3 -bb
# -*- coding: utf-8 -*-
"""
This script used for apply cpanel package changes to lve config
"""
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
import os
import sys
import time
import traceback

from clcommon.cpapi import is_panel_feature_supported, Feature
from clcommon.utils import is_root_or_exit

import cldetectlib as detect
import lvectllib

LIBDIR = "/usr/share/l.v.e-manager/cpanel/lib"
SCRIPT_NAME = __file__.split("/")[-1]

sys.path.append(LIBDIR)
from packages import save_package, LVE_CONFIG, PKG_DIR, QUOTA_CONFIG, MYSQLGOV_PACKAGES_CONFIG
from clcommon.lib.cledition import lve_supported_or_exit
import logging
import logging.handlers


def setup_system_log():
    """
    Sets syslog logger and returns its handler
    """
    logger = logging.getLogger(SCRIPT_NAME)
    logger.setLevel(logging.INFO)
    syslogger = logging.handlers.SysLogHandler(address='/dev/log')
    formatter = logging.Formatter(fmt='%(levelname)s %(message)s')
    syslogger.setFormatter(formatter)
    logger.addHandler(syslogger)
    return logger


def _get_file_mtime(filename: str) -> float:
    """
    Get file mtime
    @param filename:
    @return: mtime
    """
    if os.path.exists(filename):
        file_mtime = os.path.getmtime(filename)
    else:
        file_mtime = float("inf")
    return file_mtime


def main():
    is_root_or_exit()
    if not detect.is_cpanel():
        sys.exit(0)
    logger = setup_system_log()
    try:
        if is_panel_feature_supported(Feature.LVE):
            lvectllib.init()
            lvectllib.get_XML_cfg()

        current_time = time.time()
        lve_mtime, quotas_mtime, governor_mtime = current_time, current_time, current_time

        if is_panel_feature_supported(Feature.LVE):
            lve_mtime = os.path.getmtime(LVE_CONFIG)

        quotas_mtime = _get_file_mtime(QUOTA_CONFIG)

        if is_panel_feature_supported(Feature.GOVERNOR):
            governor_mtime = _get_file_mtime(MYSQLGOV_PACKAGES_CONFIG)
    except Exception as e:
        logger.error(e)
        sys.exit(1)

    minute_before = current_time - 60.0 * 5
    exit_status = 0
    for pkg_name in os.listdir(PKG_DIR):
        file_path = os.path.join(PKG_DIR, pkg_name)
        if not os.path.isfile(file_path):
            continue
        pkg_mtime = os.path.getmtime(file_path)
        if any(pkg_mtime > ts for ts in (minute_before, lve_mtime, quotas_mtime, governor_mtime)):
            try:
                save_package(pkg_name)
            except Exception:
                exit_status = 1
                msg = traceback.format_exc()
                logger.error(f'Error while processing package data file {file_path}:\n{msg}\n')
                continue
    sys.exit(exit_status)


if "__main__" == __name__:
    main()
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg