404

[ Avaa Bypassed ]




Upload:

Command:

botdev@18.222.30.84: ~ $
# Copyright (C) 2019-2020 Gonéri Le Bouder
#
# This file is part of cloud-init. See LICENSE file for license information.

import crypt
import os
import platform

import cloudinit.distros.bsd
from cloudinit import log as logging
from cloudinit import subp, util

LOG = logging.getLogger(__name__)


class NetBSD(cloudinit.distros.bsd.BSD):
    """
    Distro subclass for NetBSD.

    (N.B. OpenBSD inherits from this class.)
    """

    ci_sudoers_fn = "/usr/pkg/etc/sudoers.d/90-cloud-init-users"
    group_add_cmd_prefix = ["groupadd"]

    def __init__(self, name, cfg, paths):
        super().__init__(name, cfg, paths)
        if os.path.exists("/usr/pkg/bin/pkgin"):
            self.pkg_cmd_install_prefix = ["pkgin", "-y", "install"]
            self.pkg_cmd_remove_prefix = ["pkgin", "-y", "remove"]
            self.pkg_cmd_update_prefix = ["pkgin", "-y", "update"]
            self.pkg_cmd_upgrade_prefix = ["pkgin", "-y", "full-upgrade"]
        else:
            self.pkg_cmd_install_prefix = ["pkg_add", "-U"]
            self.pkg_cmd_remove_prefix = ["pkg_delete"]

    def _get_add_member_to_group_cmd(self, member_name, group_name):
        return ["usermod", "-G", group_name, member_name]

    def add_user(self, name, **kwargs):
        if util.is_user(name):
            LOG.info("User %s already exists, skipping.", name)
            return False

        adduser_cmd = ["useradd"]
        log_adduser_cmd = ["useradd"]

        adduser_opts = {
            "homedir": "-d",
            "gecos": "-c",
            "primary_group": "-g",
            "groups": "-G",
            "shell": "-s",
        }
        adduser_flags = {
            "no_user_group": "--no-user-group",
            "system": "--system",
            "no_log_init": "--no-log-init",
        }

        for key, val in kwargs.items():
            if key in adduser_opts and val and isinstance(val, str):
                adduser_cmd.extend([adduser_opts[key], val])

            elif key in adduser_flags and val:
                adduser_cmd.append(adduser_flags[key])
                log_adduser_cmd.append(adduser_flags[key])

        if "no_create_home" not in kwargs or "system" not in kwargs:
            adduser_cmd += ["-m"]
            log_adduser_cmd += ["-m"]

        adduser_cmd += [name]
        log_adduser_cmd += [name]

        # Run the command
        LOG.info("Adding user %s", name)
        try:
            subp.subp(adduser_cmd, logstring=log_adduser_cmd)
        except Exception:
            util.logexc(LOG, "Failed to create user %s", name)
            raise
        # Set the password if it is provided
        # For security consideration, only hashed passwd is assumed
        passwd_val = kwargs.get("passwd", None)
        if passwd_val is not None:
            self.set_passwd(name, passwd_val, hashed=True)

    def set_passwd(self, user, passwd, hashed=False):
        if hashed:
            hashed_pw = passwd
        else:
            method = crypt.METHOD_BLOWFISH  # pylint: disable=E1101
            hashed_pw = crypt.crypt(passwd, crypt.mksalt(method))

        try:
            subp.subp(["usermod", "-p", hashed_pw, user])
        except Exception:
            util.logexc(LOG, "Failed to set password for %s", user)
            raise
        self.unlock_passwd(user)

    def force_passwd_change(self, user):
        try:
            subp.subp(["usermod", "-F", user])
        except Exception:
            util.logexc(LOG, "Failed to set pw expiration for %s", user)
            raise

    def lock_passwd(self, name):
        try:
            subp.subp(["usermod", "-C", "yes", name])
        except Exception:
            util.logexc(LOG, "Failed to lock user %s", name)
            raise

    def unlock_passwd(self, name):
        try:
            subp.subp(["usermod", "-C", "no", name])
        except Exception:
            util.logexc(LOG, "Failed to unlock user %s", name)
            raise

    def apply_locale(self, locale, out_fn=None):
        LOG.debug("Cannot set the locale.")

    def _get_pkg_cmd_environ(self):
        """Return env vars used in NetBSD package_command operations"""
        os_release = platform.release()
        os_arch = platform.machine()
        e = os.environ.copy()
        e[
            "PKG_PATH"
        ] = "http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/%s/%s/All" % (
            os_arch,
            os_release,
        )
        return e

    def update_package_sources(self):
        pass


class Distro(NetBSD):
    pass


# vi: ts=4 expandtab

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
parsers Folder 0755
OpenCloudOS.py File 277 B 0644
TencentOS.py File 277 B 0644
__init__.py File 42.84 KB 0644
almalinux.py File 174 B 0644
alpine.py File 6.73 KB 0644
amazon.py File 615 B 0644
arch.py File 8.34 KB 0644
bsd.py File 4.91 KB 0644
bsd_utils.py File 1.42 KB 0644
centos.py File 174 B 0644
cloudlinux.py File 174 B 0644
cos.py File 270 B 0644
debian.py File 13.36 KB 0644
dragonflybsd.py File 253 B 0644
eurolinux.py File 174 B 0644
fedora.py File 460 B 0644
freebsd.py File 6.44 KB 0644
gentoo.py File 8.95 KB 0644
mariner.py File 1.72 KB 0644
miraclelinux.py File 174 B 0644
net_util.py File 6.42 KB 0644
netbsd.py File 4.43 KB 0644
networking.py File 11.08 KB 0644
openEuler.py File 298 B 0644
openbsd.py File 1.86 KB 0644
openmandriva.py File 260 B 0644
opensuse-leap.py File 270 B 0644
opensuse-microos.py File 270 B 0644
opensuse-tumbleweed.py File 270 B 0644
opensuse.py File 9.36 KB 0644
photon.py File 4.74 KB 0644
rhel.py File 7.11 KB 0644
rhel_util.py File 1.44 KB 0644
rocky.py File 174 B 0644
sle-micro.py File 270 B 0644
sle_hpc.py File 270 B 0644
sles.py File 270 B 0644
ubuntu.py File 1.5 KB 0644
ug_util.py File 9.8 KB 0644
virtuozzo.py File 174 B 0644