From 1f38aa0995f7ffa82f670fe5d36046dd6b8f44ac Mon Sep 17 00:00:00 2001 From: Matthias Dieter Wallnöfer Date: Fri, 18 Sep 2009 20:22:03 +0200 Subject: s4:various scripts under "setup" - Unification - This unified the shape of those four scripts (comments, command sequence, call of SamDB) - To consider the samdb.py changes regarding the filter: there is now always the possibility either to specify the username or the search filter --- source4/setup/enableaccount | 72 +++++++++++++++++++-------------------------- 1 file changed, 30 insertions(+), 42 deletions(-) (limited to 'source4/setup/enableaccount') diff --git a/source4/setup/enableaccount b/source4/setup/enableaccount index d4e954074b..0ca5b39faa 100755 --- a/source4/setup/enableaccount +++ b/source4/setup/enableaccount @@ -1,18 +1,31 @@ #!/usr/bin/python # -# Enables a disabled user account on a Samba4 server -# Copyright Andrew Tridgell 2005 -# Copyright Jelmer Vernooij 2008 -# Released under the GNU GPL version 3 or later +# Enables an user account on a Samba4 server +# Copyright Jelmer Vernooij 2008 +# +# Based on the original in EJS: +# Copyright Andrew Tridgell 2005 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # -import os, sys -sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), "../bin/python")) +import sys + +sys.path.insert(0, "bin/python") import samba.getopt as options import optparse -import pwd -import ldb from samba.auth import system_session from samba.samdb import SamDB @@ -23,49 +36,24 @@ parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) -parser.add_option("-H", help="LDB URL for database or target server", type=str) -parser.add_option("--base", help="Base DN to search for user under", type=str) +parser.add_option("--filter", help="LDAP Filter to set password on", type=str) opts, args = parser.parse_args() -# -# print a message if quiet is not set -# -def message(text): - if not opts.quiet: - print text +filter = opts.filter -if len(args) == 0: +if (len(args) == 0) and (filter is None): + print "Either the username or '--filter' must be specified!" parser.print_usage() sys.exit(1) -username = args[0] - -if username is None: - print "username must be specified" +if filter is None: + username = args[0] + filter = "(&(objectClass=user)(sAMAccountName=%s))" % (username) lp = sambaopts.get_loadparm() - creds = credopts.get_credentials(lp) -if opts.H is not None: - url = opts.H -else: - url = lp.get("sam database") - -samdb = SamDB(url=url, session_info=system_session(), +samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), credentials=creds, lp=lp) - -domain_dn = opts.base -if domain_dn is None: - domain_dn = SamDB.domain_dn(samdb) - -filter = "(&(objectClass=user)(samAccountName=%s))" % username - -res = samdb.search(domain_dn, scope=ldb.SCOPE_SUBTREE, - expression=filter, - attrs=[]) -assert(len(res) == 1) -user_dn = res[0].dn - -samdb.enable_account(user_dn) +samdb.enable_account(filter) -- cgit