<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
# -*- coding: utf-8 -*-

# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2018 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

import os
import subprocess
import sys

# Exit code when LVE doesn't support reseller limits
TOO_OLD_LVE = 38

EXIT_NO_USER_FOUND = 1
ERR_NO_USER_FOUND = 'Unable to find username in hook cmdline'

LVECTL = '/usr/sbin/lvectl'
WHMAPI1 = '/usr/sbin/whmapi1'

LVE_DIR = '/var/lve'
TMP_DIR = os.path.join(LVE_DIR, 'tmp')


def syncmap_supported():
    test_cmd = rf"{LVECTL} --help | grep -P '^sync-map\s+' &> /dev/null"
    return not subprocess.call(test_cmd, shell=True, executable='/bin/bash')


# still used in lve-utils several times
# move it there and then remove this file completely
def call_sync_map():
    """
    Run lvectl sync-map
    :return: None
    """
    ret_code = subprocess.call(f'{LVECTL} sync-map &> /dev/null',
                               shell=True, executable='/bin/bash')
    if ret_code not in (0, TOO_OLD_LVE):    # ignore calls with unsupported LVE
        if syncmap_supported():  # ignore only no such command "sync-map" error
            print(f'Error during "lvectl sync-map", code: {ret_code}', file=sys.stderr)
