当前位置: 首页>>代码示例>>Python>>正文


Python SambaConf.getContent方法代码示例

本文整理汇总了Python中mmc.plugins.samba.smb_conf.SambaConf.getContent方法的典型用法代码示例。如果您正苦于以下问题:Python SambaConf.getContent方法的具体用法?Python SambaConf.getContent怎么用?Python SambaConf.getContent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在mmc.plugins.samba.smb_conf.SambaConf的用法示例。


在下文中一共展示了SambaConf.getContent方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: backupShare

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
def backupShare(share, media, login):
    """
    Launch as a background process the backup of a share
    """
    r = AF().log(PLUGIN_NAME, AA.SAMBA_BACKUP_SHARE, [(share, AT.SHARE), (login, AT.USER)], media)
    config = BasePluginConfig("base")
    cmd = os.path.join(config.backuptools, "backup.sh")
    if share == "homes":
        #  FIXME: Maybe we should have a configuration directive to tell that
        #  all users home are stored into /home
        savedir = "/home/"
    else:
        smbObj = SambaConf(SambaConfig("samba").samba_conf_file)
        savedir = smbObj.getContent(share, "path")
    # Run backup process in background
    shlaunchBackground(
        cmd
        + " "
        + share
        + " "
        + savedir
        + " "
        + config.backupdir
        + " "
        + login
        + " "
        + media
        + " "
        + config.backuptools,
        "backup share " + share,
        progressBackup,
    )
    r.commit()
    return os.path.join(config.backupdir, "%s-%s-%s" % (login, share, strftime("%Y%m%d")))
开发者ID:pavelpromin,项目名称:mmc,代码行数:36,代码来源:__init__.py

示例2: changeUserPasswd

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
    def changeUserPasswd(self, uid, passwd, oldpasswd = None, bind = False):
        """
        change SAMBA user password

        @param uid: user name
        @type  uid: str

        @param passwd: non encrypted password
        @type  passwd: str
        """

        # Don't update the password if we are using smbk5passwd
        conf = SambaConf()
        if conf.isValueTrue(conf.getContent("global", "ldap passwd sync")) in (0, 1):
            userdn = self.searchUserDN(uid)
            r = AF().log(PLUGIN_NAME, AA.SAMBA_CHANGE_USER_PASS, [(userdn,AT.USER)])
            # If the passwd has been encoded in the XML-RPC stream, decode it
            if isinstance(passwd, xmlrpclib.Binary):
                passwd = str(passwd)
            s = self.l.search_s(userdn, ldap.SCOPE_BASE)
            c, old = s[0]
            new = old.copy()
            new['sambaLMPassword'] = [smbpasswd.lmhash(passwd)]
            new['sambaNTPassword'] = [smbpasswd.nthash(passwd)]
            new['sambaPwdLastSet'] = [str(int(time()))]
            # Update LDAP
            modlist = ldap.modlist.modifyModlist(old, new)
            self.l.modify_s(userdn, modlist)
            self.runHook("samba.changeuserpasswd", uid, passwd)
            r.commit()

        return 0
开发者ID:sebastiendu,项目名称:mmc,代码行数:34,代码来源:smb_ldap.py

示例3: updateDomainNextRID

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
 def updateDomainNextRID(self):
     """
     Increment sambaNextRID
     """
     conf = SambaConf()
     domain = conf.getContent("global", "workgroup")
     result = self.search("(&(objectClass=sambaDomain)(sambaDomainName=%s))" % domain)
     dn, old = result[0][0]
     # update the old attributes
     new = old.copy()
     new['sambaNextRid'] = [ str(int(old['sambaNextRid'][0]) + 1) ]
     modlist = ldap.modlist.modifyModlist(old, new)
     self.l.modify_s(dn, modlist)
开发者ID:sebastiendu,项目名称:mmc,代码行数:15,代码来源:smb_ldap.py

示例4: getDomain

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
    def getDomain(self):
        """
        Return the LDAP sambaDomainName entry corresponding to the domain specified in smb.conf

        @return: the sambaDomainName entry
        @rtype: dict
        """
        conf = SambaConf()
        domain = conf.getContent("global", "workgroup")
        result = self.search("(&(objectClass=sambaDomain)(sambaDomainName=%s))" % domain)
        if len(result): ret = result[0][0][1]
        else: ret = {}
        return ret
开发者ID:sebastiendu,项目名称:mmc,代码行数:15,代码来源:smb_ldap.py

示例5: activate

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
def activate():
    """
     this function define if the module "base" can be activated.
     @return: return True if this module can be activate
     @rtype: boolean
    """
    config = SambaConfig("samba")

    if config.disabled:
        logger.info("samba plugin disabled by configuration.")
        return False

    if config.defaultSharesPath:
        if config.defaultSharesPath.endswith("/"):
            logger.error("Trailing / is not allowed in defaultSharesPath")
            return False
        if not os.path.exists(config.defaultSharesPath):
            logger.error("The default shares path '%s' does not exist" % config.defaultSharesPath)
            return False

    for cpath in config.authorizedSharePaths:
        if cpath.endswith("/"):
            logger.error("Trailing / is not allowed in authorizedSharePaths")
            return False
        if not os.path.exists(cpath):
            logger.error("The authorized share path '%s' does not exist" % cpath)
            return False

    # Verify if samba conf file exist
    conf = config.samba_conf_file
    if not os.path.exists(conf):
        logger.error(conf + " does not exist")
        return False

    # validate smb.conf
    smbconf = SambaConf()
    if not smbconf.validate(conf):
        logger.error("SAMBA configuration file is not valid")
        return False

    # For each share, test if it sharePath exists
    for share in getDetailedShares():
        shareName = share[0]
        infos = shareInfo(shareName)
        if infos:
            sharePath = infos["sharePath"]
            if sharePath and not "%" in sharePath and not os.path.exists(sharePath):
                # only show error
                logger.error("The samba share path '%s' does not exist." % sharePath)
        else:
            return False

    try:
        ldapObj = ldapUserGroupControl()
    except ldap.INVALID_CREDENTIALS:
        logger.error("Can't bind to LDAP: invalid credentials.")
        return False

    # Test if the Samba LDAP schema is available in the directory
    try:
        schema = ldapObj.getSchema("sambaSamAccount")
        if len(schema) <= 0:
            logger.error("Samba schema is not included in LDAP directory")
            return False
    except:
        logger.exception("invalid schema")
        return False

    # Verify if init script exist
    init = config.samba_init_script
    if not os.path.exists(init):
        logger.error(init + " does not exist")
        return False

    # If SAMBA is defined as a PDC, make extra checks
    if smbconf.isPdc():
        samba = SambaLDAP()
        # Create SAMBA computers account OU if it doesn't exist
        head, path = samba.baseComputersDN.split(",", 1)
        ouName = head.split("=")[1]
        samba.addOu(ouName, path)
        # Check that a sambaDomainName entry is in LDAP directory
        domainInfos = samba.getDomain()
        # Set domain policy
        samba.setDomainPolicy()
        if not domainInfos:
            logger.error(
                "Can't find sambaDomainName entry in LDAP for domain %s. Please check your SAMBA LDAP configuration."
                % smbconf.getContent("global", "workgroup")
            )
            return False
        smbconfbasesuffix = smbconf.getContent("global", "ldap suffix")
        if not smbconfbasesuffix:
            logger.error("SAMBA 'ldap suffix' option is not setted.")
            return False
        if ldap.explode_dn(samba.baseDN) != ldap.explode_dn(smbconfbasesuffix):
            logger.error("SAMBA 'ldap suffix' option is not equal to MMC 'baseDN' option.")
            return False
        # Check that SAMBA and MMC given OU are in sync
        for option in [
#.........这里部分代码省略.........
开发者ID:pavelpromin,项目名称:mmc,代码行数:103,代码来源:__init__.py

示例6: setDomainPolicy

# 需要导入模块: from mmc.plugins.samba.smb_conf import SambaConf [as 别名]
# 或者: from mmc.plugins.samba.smb_conf.SambaConf import getContent [as 别名]
    def setDomainPolicy(self):
        """
        Try to sync the samba domain policy with the default OpenLDAP policy
        """
        conf = SambaConf()
        domain = conf.getContent("global", "workgroup")
        result = self.search("(&(objectClass=sambaDomain)(sambaDomainName=%s))" % domain)
        dn, old = result[0][0]
        # update the old attributes
        new = old.copy()
        # get the default ppolicy values
        try:
            from mmc.plugins.ppolicy import getDefaultPPolicy
        except ImportError:
            # don't try to change samba policies
            pass
        else:
            try:
                ppolicy = getDefaultPPolicy()[1]
            except (ldap.NO_SUCH_OBJECT, IOError):
                # no default password policy set
                pass
            else:
                # samba default values
                options = {
                    "sambaMinPwdLength": ["5"],
                    "sambaMaxPwdAge": ["-1"],
                    "sambaMinPwdAge": ["0"],
                    "sambaPwdHistoryLength": ["0"],
                    "sambaLockoutThreshold": ["0"],
                    "sambaLockoutDuration": ["30"]
                }
                if 'pwdMinLength' in ppolicy:
                    options['sambaMinPwdLength'] = ppolicy['pwdMinLength']
                if 'pwdMaxAge' in ppolicy and ppolicy['pwdMaxAge'][0] != "0":
                    options['sambaMaxPwdAge'] = ppolicy['pwdMaxAge']
                if 'pwdMinAge' in ppolicy:
                    options['sambaMinPwdAge'] = ppolicy['pwdMinAge']
                if 'pwdInHistory' in ppolicy:
                    options['sambaPwdHistoryLength'] = ppolicy['pwdInHistory']
                if 'pwdLockout' in ppolicy and ppolicy['pwdLockout'][0] == "TRUE" \
                    and 'pwdMaxFailure' in ppolicy and ppolicy['pwdMaxFailure'][0] != '0':
                        if 'pwdLockoutDuration' in ppolicy:
                            options['sambaLockoutDuration'] = ppolicy['pwdLockoutDuration']
                        options['sambaLockoutThreshold'] = ppolicy['pwdMaxFailure']
                else:
                    options['sambaLockoutThreshold'] = ["0"]

                update = False
                for attr, value in options.iteritems():
                    # Update attributes if needed
                    if new[attr] != value:
                        new[attr] = value
                        update = True

                if update:
                    modlist = ldap.modlist.modifyModlist(old, new)
                    try:
                        self.l.modify_s(dn, modlist)
                    except ldap.UNDEFINED_TYPE:
                        # don't fail if attributes don't exist
                        pass
                    logger.info("SAMBA domain policy synchronized with password policies")
开发者ID:sebastiendu,项目名称:mmc,代码行数:65,代码来源:smb_ldap.py


注:本文中的mmc.plugins.samba.smb_conf.SambaConf.getContent方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。