diff --git a/python/samba/netcmd/user/__init__.py b/python/samba/netcmd/user/__init__.py index c525e8d3414..9ce1502368c 100644 --- a/python/samba/netcmd/user/__init__.py +++ b/python/samba/netcmd/user/__init__.py @@ -58,6 +58,7 @@ from samba.common import get_string from .add import cmd_user_add from .delete import cmd_user_delete +from .disable import cmd_user_disable from .enable import cmd_user_enable # python[3]-gpgme is abandoned since ubuntu 1804 and debian 9 @@ -280,44 +281,6 @@ class cmd_user_list(Command): self.outf.write("%s\n" % msg.get("samaccountname", idx=0)) -class cmd_user_disable(Command): - """Disable a user.""" - - synopsis = "%prog (|--filter ) [options]" - - takes_options = [ - Option("-H", "--URL", help="LDB URL for database or target server", type=str, - metavar="URL", dest="H"), - Option("--filter", help="LDAP Filter to set password on", type=str), - ] - - takes_args = ["username?"] - - takes_optiongroups = { - "sambaopts": options.SambaOptions, - "credopts": options.CredentialsOptions, - "versionopts": options.VersionOptions, - } - - def run(self, username=None, sambaopts=None, credopts=None, - versionopts=None, filter=None, H=None): - if username is None and filter is None: - raise CommandError("Either the username or '--filter' must be specified!") - - if filter is None: - filter = "(&(objectClass=user)(sAMAccountName=%s))" % (ldb.binary_encode(username)) - - lp = sambaopts.get_loadparm() - creds = credopts.get_credentials(lp, fallback_machine=True) - - samdb = SamDB(url=H, session_info=system_session(), - credentials=creds, lp=lp) - try: - samdb.disable_account(filter) - except Exception as msg: - raise CommandError("Failed to disable user '%s': %s" % (username or filter, msg)) - - class cmd_user_setexpiry(Command): """Set the expiration of a user account. diff --git a/python/samba/netcmd/user/disable.py b/python/samba/netcmd/user/disable.py new file mode 100644 index 00000000000..5042eead3a5 --- /dev/null +++ b/python/samba/netcmd/user/disable.py @@ -0,0 +1,64 @@ +# user management +# +# disable user +# +# Copyright Jelmer Vernooij 2010 +# Copyright Theresa Halloran 2011 +# +# 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 samba.getopt as options +from samba import ldb +from samba.auth import system_session +from samba.netcmd import Command, CommandError, Option +from samba.samdb import SamDB + + +class cmd_user_disable(Command): + """Disable a user.""" + + synopsis = "%prog (|--filter ) [options]" + + takes_options = [ + Option("-H", "--URL", help="LDB URL for database or target server", type=str, + metavar="URL", dest="H"), + Option("--filter", help="LDAP Filter to set password on", type=str), + ] + + takes_args = ["username?"] + + takes_optiongroups = { + "sambaopts": options.SambaOptions, + "credopts": options.CredentialsOptions, + "versionopts": options.VersionOptions, + } + + def run(self, username=None, sambaopts=None, credopts=None, + versionopts=None, filter=None, H=None): + if username is None and filter is None: + raise CommandError("Either the username or '--filter' must be specified!") + + if filter is None: + filter = "(&(objectClass=user)(sAMAccountName=%s))" % (ldb.binary_encode(username)) + + lp = sambaopts.get_loadparm() + creds = credopts.get_credentials(lp, fallback_machine=True) + + samdb = SamDB(url=H, session_info=system_session(), + credentials=creds, lp=lp) + try: + samdb.disable_account(filter) + except Exception as msg: + raise CommandError("Failed to disable user '%s': %s" % (username or filter, msg))