from samba.dcerpc import drsuapi, misc
import common
+
+
def drsuapi_connect(ctx):
'''make a DRSUAPI connection to the server'''
binding_options = "seal"
raise CommandError("DRS connection to %s failed" % ctx.server, e)
+
def samdb_connect(ctx):
'''make a ldap connection to the server'''
try:
raise CommandError("LDAP connection to %s failed" % ctx.server, e)
+
def drs_errmsg(werr):
'''return "was successful" or an error string'''
(ecode, estring) = werr
return "failed, result %u (%s)" % (ecode, estring)
+
def attr_default(msg, attrname, default):
'''get an attribute from a ldap msg with a default'''
if attrname in msg:
return default
+
def drs_parse_ntds_dn(ntds_dn):
'''parse a NTDS DN returning a site and server'''
a = ntds_dn.split(',')
return (site, server)
+
def get_dsServiceName(samdb):
'''get the NTDS DN from the rootDSE'''
res = samdb.search(base="", scope=ldb.SCOPE_BASE, attrs=["dsServiceName"])
return res[0]["dsServiceName"][0]
+
class cmd_drs_showrepl(Command):
"""show replication status"""
- synopsis = "%prog drs showrepl <DC> [options]"
+ synopsis = "%prog drs showrepl [<DC>] [options]"
takes_args = ["DC?"]
raise CommandError("DsReplicaGetInfo of type %u failed" % info_type, e)
return (info_type, info)
-
def run(self, DC=None, sambaopts=None,
credopts=None, versionopts=None, server=None):
self.message("\t\t\t%s" % s)
+
class cmd_drs_kcc(Command):
"""trigger knowledge consistency center run"""
- synopsis = "%prog drs kcc <DC> [options]"
+ synopsis = "%prog drs kcc [<DC>] [options]"
takes_args = ["DC?"]
self.message("Consistency check on %s successful." % DC)
+
def drs_local_replicate(self, SOURCE_DC, NC):
'''replicate from a source DC to the local SAM'''
+
self.server = SOURCE_DC
drsuapi_connect(self)
class cmd_drs_bind(Command):
"""show DRS capabilities of a server"""
- synopsis = "%prog drs bind <DC> [options]"
+ synopsis = "%prog drs bind [<DC>] [options]"
takes_args = ["DC?"]
class cmd_drs_options(Command):
"""query or change 'options' for NTDS Settings object of a domain controller"""
- synopsis = ("%prog drs options <DC>"
- " [--dsa-option={+|-}IS_GC | {+|-}DISABLE_INBOUND_REPL"
- " |{+|-}DISABLE_OUTBOUND_REPL | {+|-}DISABLE_NTDSCONN_XLATE] [options]")
+ synopsis = ("%prog drs options [<DC>] [options]")
takes_args = ["DC?"]
takes_options = [
- Option("--dsa-option", help="DSA option to enable/disable", type="str"),
+ Option("--dsa-option", help="DSA option to enable/disable", type="str",
+ metavar="{+|-}IS_GC | {+|-}DISABLE_INBOUND_REPL | {+|-}DISABLE_OUTBOUND_REPL | {+|-}DISABLE_NTDSCONN_XLATE" ),
]
option_map = {"IS_GC": 0x00000001,