From: Douglas Bagnall Date: Sat, 4 Jul 2020 04:20:47 +0000 (+1200) Subject: python: wrap 'import dckeytab' in an explanatory function X-Git-Tag: talloc-2.3.2~1080 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=914226bf526093ffb795994c3434dff702ee4aca;p=thirdparty%2Fsamba.git python: wrap 'import dckeytab' in an explanatory function The samba.dckeytab module has magic effects on samba.net, but never appears to be used. That can be confusing, both to people and to linters. Here we wrap that confusion up into a well-commented function, so we never again have to wonder why the unused import is there. Signed-off-by: Douglas Bagnall Reviewed-by: Andreas Schneider Reviewed-by: David Mulder --- diff --git a/python/samba/__init__.py b/python/samba/__init__.py index d851bf3606c..6272b3fb390 100644 --- a/python/samba/__init__.py +++ b/python/samba/__init__.py @@ -386,6 +386,23 @@ def arcfour_encrypt(key, data): return arcfour_crypt_blob(data, key) +def enable_net_export_keytab(): + """This function modifies the samba.net.Net class to contain + an export_keytab() method.""" + # This looks very strange because it is. + # + # The dckeytab modules contains nothing, but the act of importing + # it pushes a method into samba.net.Net. It ended up this way + # because Net.export_keytab() only works on Heimdal builds, and + # people sometimes want to compile Samba without Heimdal while + # still having a working samba-tool. + # + # There is probably a better way to do this than a magic module + # import (yes, that's a FIXME if you can be bothered). + from samba import net + from samba import dckeytab + + version = _glue.version interface_ips = _glue.interface_ips fault_setup = _glue.fault_setup diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py index 4cb873fd634..8561188511e 100644 --- a/python/samba/netcmd/domain.py +++ b/python/samba/netcmd/domain.py @@ -40,6 +40,7 @@ from samba import NTSTATUSError from samba import werror from getpass import getpass from samba.net import Net, LIBNET_JOIN_AUTOMATIC +from samba import enable_net_export_keytab import samba.ntacls from samba.join import join_RODC, join_DC from samba.auth import system_session @@ -162,7 +163,7 @@ def get_testparm_var(testparm, smbconf, varname): try: - import samba.dckeytab + enable_net_export_keytab() except ImportError: cmd_domain_export_keytab = None else: diff --git a/python/samba/tests/dckeytab.py b/python/samba/tests/dckeytab.py index cdb8c5151e7..5d975f53500 100644 --- a/python/samba/tests/dckeytab.py +++ b/python/samba/tests/dckeytab.py @@ -20,11 +20,15 @@ import os import sys import string from samba.net import Net -import samba.dckeytab +from samba import enable_net_export_keytab + from samba import tests from samba.param import LoadParm +enable_net_export_keytab() + + def open_bytes(filename): if sys.version_info[0] == 3: return open(filename, errors='ignore')