from samba import gensec, dsdb
from ldb import SCOPE_BASE, LdbError, ERR_INVALID_CREDENTIALS
from samba.dcerpc import security, samr
+import os
import password_lockout_base
+def adjust_cmd_for_py_version(parts):
+ if os.getenv("PYTHON", None):
+ parts.insert(0, os.environ["PYTHON"])
+ return parts
def passwd_encode(pw):
return base64.b64encode(('"%s"' % pw).encode('utf-16-le')).decode('utf8')
for opt in ['DISABLE_INBOUND_REPL',
'DISABLE_OUTBOUND_REPL']:
- cmd = ['bin/samba-tool',
+ cmd = adjust_cmd_for_py_version(['bin/samba-tool',
'drs', 'options',
credstring, dc,
- "--dsa-option=%s%s" % (on_or_off, opt)]
+ "--dsa-option=%s%s" % (on_or_off, opt)])
p = subprocess.Popen(cmd,
stderr=subprocess.PIPE,
CREDS.get_password())
set_auto_replication(RWDC, True)
- cmd = ['bin/samba-tool',
+ cmd = adjust_cmd_for_py_version(['bin/samba-tool',
'rodc', 'preload',
user_dn,
credstring,
- '--server', RWDC, ]
+ '--server', RWDC, ])
print(' '.join(cmd))
subprocess.check_call(cmd)
# XXX feels like a horrendous way to do it.
credstring = '-U%s%%%s' % (CREDS.get_username(),
CREDS.get_password())
- cmd = ['bin/samba-tool',
+ cmd = adjust_cmd_for_py_version(['bin/samba-tool',
'drs', 'replicate',
RODC, RWDC, base,
credstring,
- '--sync-forced']
+ '--sync-forced'])
p = subprocess.Popen(cmd,
stderr=subprocess.PIPE,
# XXX feels like a horrendous way to do it.
credstring = '-U%s%%%s' % (CREDS.get_username(),
CREDS.get_password())
- cmd = ['bin/samba-tool',
+ cmd = adjust_cmd_for_py_version(['bin/samba-tool',
'drs', 'replicate',
RODC, RWDC, base,
credstring,
- '--sync-forced']
+ '--sync-forced'])
p = subprocess.Popen(cmd,
stderr=subprocess.PIPE,
res = self.rodc_db.search(dn,
scope=ldb.SCOPE_SUBTREE,
attrs=[attr])
- results = [x[attr][0] for x in res]
+ results = [str(x[attr][0]) for x in res]
self.assertEqual(results, [value])
except ldb.LdbError as e:
self.assertNotEqual(e.args[0], ldb.ERR_NO_SUCH_OBJECT,
res = self.rodc_db.search(dn,
scope=ldb.SCOPE_SUBTREE,
attrs=[attr])
- results = [x[attr][0] for x in res]
+ results = [str(x[attr][0]) for x in res]
self.assertEqual(results, [value])
except ldb.LdbError as e:
self.assertNotEqual(e.args[0], ldb.ERR_NO_SUCH_OBJECT,