svn commit: samba r5247 - in branches/SAMBA_4_0/source/scripting/swig: .

tpot at samba.org tpot at samba.org
Sun Feb 6 04:34:29 GMT 2005


Author: tpot
Date: 2005-02-06 04:34:29 +0000 (Sun, 06 Feb 2005)
New Revision: 5247

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5247

Log:
Fix rpcclient to work with new swig interface.

Modified:
   branches/SAMBA_4_0/source/scripting/swig/rpcclient


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/swig/rpcclient
===================================================================
--- branches/SAMBA_4_0/source/scripting/swig/rpcclient	2005-02-06 01:12:15 UTC (rev 5246)
+++ branches/SAMBA_4_0/source/scripting/swig/rpcclient	2005-02-06 04:34:29 UTC (rev 5247)
@@ -7,6 +7,23 @@
 
 import dcerpc, samr
 
+def swig2dict(obj):
+    """Convert a swig object to a dictionary."""
+
+    result = {}
+
+    for attr in filter(lambda x: type(x) == str, dir(obj)):
+
+        if attr[:2] == '__' and attr[-2:] == '__':
+            continue
+
+        if attr == 'this' or attr == 'thisown':
+            continue
+        
+        result[attr] = getattr(obj, attr)
+
+    return result
+
 class rpcclient(Cmd):
 
     prompt = 'rpcclient$ '
@@ -67,7 +84,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -89,7 +106,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -110,7 +127,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -121,22 +138,23 @@
 	else:
 	    result = domain_handle.QueryDomainInfo()
 
-        pprint(result['info'])
+        pprint(swig2dict(result))
 
     def do_SamrQueryDomInfo2(self, line):
-	"""Return information about a domain designated by its SID. (Windows 2000 and >)"""
+	"""Return information about a domain designated by its SID.
+        (Windows 2000 and >)"""
 
 	usage = 'SamrQueryDomInfo2 DOMAIN_SID [info_level] (Windows 2000 and >)'
 	parser = OptionParser(usage)
 	options, args = parser.parse_args(string.split(line))
 
-	if (len(args) == 0) or (len(args) > 2):
+	if len(args) == 0 or len(args) > 2:
 	    print 'usage:', usage
 	    return
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -147,7 +165,7 @@
 	else:
 	    result = domain_handle.QueryDomainInfo2()
 
-        pprint(result['info'])
+        pprint(swig2dict(result))
 
     def do_SamrEnumDomainGroups(self, line):
 	"""Return the list of groups of a domain designated by its SID."""
@@ -163,7 +181,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)	
@@ -171,11 +189,11 @@
 
 	result = domain_handle.EnumDomainGroups()
 
-        for r in result['sam']['entries']:
-            print r['name']['name']
+        pprint(result)
 
     def do_SamrEnumDomainAliases(self, line):
-        """Return the list of aliases (local groups) of a domain designated by its SID."""
+        """Return the list of aliases (local groups) of a domain designated
+        by its SID."""
 
 	usage = 'SamrEnumDomainAliases DOMAIN_SID'
 
@@ -188,7 +206,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -196,8 +214,7 @@
 
 	result = domain_handle.EnumDomainAliases()
 
-        for r in result['sam']['entries']:
-            print r['name']['name']
+        pprint(result)
 
     def do_SamrEnumDomainUsers(self, line):
 	"""Return the list of users of a domain designated by its SID."""
@@ -213,7 +230,7 @@
 
         pipe = dcerpc.pipe_connect(
             self.binding,
-            dcerpc.DCERPC_SAMR_UUID, dcerpc.DCERPC_SAMR_VERSION,
+            dcerpc.DCERPC_SAMR_UUID, int(dcerpc.DCERPC_SAMR_VERSION),
             self.domain, self.username, self.password)
 
         connect_handle = samr.Connect(pipe)
@@ -224,8 +241,7 @@
 	else:
 	    result = domain_handle.EnumDomainUsers()
 
-        for r in result['sam']['entries']:
-            print r['name']['name']
+        pprint(result)
 
 if __name__ == '__main__':
 



More information about the samba-cvs mailing list