From 726ee12bb450821f929e05ca1c708f3e33f909cf Mon Sep 17 00:00:00 2001 From: Theresa Halloran Date: Thu, 19 May 2011 16:17:07 -0400 Subject: s4/samba-tool: Move samba-tool enableaccount to samba-tool user enable command. Signed-off-by: Andrew Tridgell --- source4/scripting/python/samba/netcmd/user.py | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'source4/scripting/python/samba/netcmd/user.py') diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index a5750b50107..5f53263523c 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -3,6 +3,7 @@ # user management # # 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 @@ -19,6 +20,10 @@ # import samba.getopt as options +import sys +from samba.auth import system_session +from samba.samdb import SamDB + from samba.net import Net @@ -26,6 +31,7 @@ from samba.netcmd import ( Command, CommandError, SuperCommand, + Option, ) class cmd_user_add(Command): @@ -70,6 +76,41 @@ class cmd_user_delete(Command): except RuntimeError, msg: raise CommandError("Failed to delete user %s: %s" % (name, msg)) +class cmd_user_enable(Command): + """Enables a user""" + + synopsis = "%prog user enable [options]" + + + takes_optiongroups = { + "sambaopts": options.SambaOptions, + "versionopts": options.VersionOptions, + "credopts": options.CredentialsOptions, + } + + takes_options = [ + Option("-H", help="LDB URL for database or target server", type=str), + Option("--filter", help="LDAP Filter to set password on", type=str), + ] + + takes_args = ["username?"] + + 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))" % (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) + samdb.enable_account(filter) + + class cmd_user(SuperCommand): """User management [server connection needed]""" @@ -77,4 +118,5 @@ class cmd_user(SuperCommand): subcommands = {} subcommands["add"] = cmd_user_add() subcommands["delete"] = cmd_user_delete() + subcommands["enable"] = cmd_user_enable() -- cgit From 23177b5f44815bc5b46943c70d37dc626ed60288 Mon Sep 17 00:00:00 2001 From: Theresa Halloran Date: Thu, 19 May 2011 16:24:00 -0400 Subject: s4:samba-tool: Move samba-tool setexpiry to samba-tool user setexpiry Signed-off-by: Andrew Tridgell --- source4/scripting/python/samba/netcmd/user.py | 38 ++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'source4/scripting/python/samba/netcmd/user.py') diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index 5f53263523c..696c8892cfe 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -110,7 +110,43 @@ class cmd_user_enable(Command): credentials=creds, lp=lp) samdb.enable_account(filter) +class cmd_user_setexpiry(Command): + """Sets the expiration of a user account""" + synopsis = "%prog user setexpiry [options]" + + takes_optiongroups = { + "sambaopts": options.SambaOptions, + "versionopts": options.VersionOptions, + "credopts": options.CredentialsOptions, + } + + takes_options = [ + Option("-H", help="LDB URL for database or target server", type=str), + Option("--filter", help="LDAP Filter to set password on", type=str), + Option("--days", help="Days to expiry", type=int), + Option("--noexpiry", help="Password does never expire", action="store_true"), + ] + + takes_args = ["username?"] + def run(self, username=None, sambaopts=None, credopts=None, + versionopts=None, H=None, filter=None, days=None, noexpiry=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))" % (username) + + lp = sambaopts.get_loadparm() + creds = credopts.get_credentials(lp) + + if days is None: + days = 0 + + samdb = SamDB(url=H, session_info=system_session(), + credentials=creds, lp=lp) + + samdb.setexpiry(filter, days*24*3600, no_expiry_req=noexpiry) class cmd_user(SuperCommand): """User management [server connection needed]""" @@ -119,4 +155,4 @@ class cmd_user(SuperCommand): subcommands["add"] = cmd_user_add() subcommands["delete"] = cmd_user_delete() subcommands["enable"] = cmd_user_enable() - + subcommands["setexpiry"] = cmd_user_setexpiry() -- cgit From 7b3d8b6c908a37bb06e413dee406cebd29b99b3e Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 1 Jun 2011 14:41:51 +1000 Subject: samba-tool: improved user enable error handling --- source4/scripting/python/samba/netcmd/user.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'source4/scripting/python/samba/netcmd/user.py') diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index 696c8892cfe..15be4bb87fa 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -108,7 +108,12 @@ class cmd_user_enable(Command): samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp) - samdb.enable_account(filter) + try: + samdb.enable_account(filter) + except Exception, msg: + raise CommandError("Failed to enable user %s: %s" % (username or filter, msg)) + print("Enabled user %s" % (username or filter)) + class cmd_user_setexpiry(Command): """Sets the expiration of a user account""" -- cgit From 1bc1ac0d084976fccf187526f7bd8d9ad818da10 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 1 Jun 2011 14:46:04 +1000 Subject: samba-tool: improved error handling in user setexpiry --- source4/scripting/python/samba/netcmd/user.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source4/scripting/python/samba/netcmd/user.py') diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index 15be4bb87fa..6acf52d790f 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -151,7 +151,11 @@ class cmd_user_setexpiry(Command): samdb = SamDB(url=H, session_info=system_session(), credentials=creds, lp=lp) - samdb.setexpiry(filter, days*24*3600, no_expiry_req=noexpiry) + try: + samdb.setexpiry(filter, days*24*3600, no_expiry_req=noexpiry) + except Exception, msg: + raise CommandError("Failed to set expiry for user %s: %s" % (username or filter, msg)) + print("Set expiry for user %s to %u days" % (username or filter, days)) class cmd_user(SuperCommand): """User management [server connection needed]""" -- cgit