summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRob van der Linde <rob@catalyst.net.nz>2023-11-21 12:42:03 +1300
committerDouglas Bagnall <dbagnall@samba.org>2023-11-22 23:35:33 +0000
commit91cc73352efca030a41b2f5aa2825da3aa0e52a2 (patch)
treefa1c55699de02bcce0b9aa739d112b0abed744cd /python
parent0ce9b7532553194da7560e122b68def34b445c81 (diff)
downloadsamba-91cc73352efca030a41b2f5aa2825da3aa0e52a2.tar.gz
samba-91cc73352efca030a41b2f5aa2825da3aa0e52a2.tar.bz2
samba-91cc73352efca030a41b2f5aa2825da3aa0e52a2.zip
netcmd: models: add SIDField field
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz> Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'python')
-rw-r--r--python/samba/netcmd/domain/models/fields.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/python/samba/netcmd/domain/models/fields.py b/python/samba/netcmd/domain/models/fields.py
index 52f288c6d60..a718de28348 100644
--- a/python/samba/netcmd/domain/models/fields.py
+++ b/python/samba/netcmd/domain/models/fields.py
@@ -312,6 +312,31 @@ class GUIDField(Field):
return MessageElement(ndr_pack(GUID(value)), flags, self.name)
+class SIDField(Field):
+ """A SID field encodes and decodes SID data."""
+
+ def from_db_value(self, ldb, value):
+ """Convert MessageElement with a GUID into a str or list of str."""
+ if value is None:
+ return
+ elif len(value) > 1 or self.many:
+ return [str(ndr_unpack(security.dom_sid, item)) for item in value]
+ else:
+ return str(ndr_unpack(security.dom_sid, value[0]))
+
+ def to_db_value(self, ldb, value, flags):
+ """Convert str with GUID into MessageElement."""
+ if value is None:
+ return
+ elif isinstance(value, list):
+ return MessageElement(
+ [ndr_pack(security.dom_sid(item)) for item in value],
+ flags, self.name)
+ else:
+ return MessageElement(ndr_pack(security.dom_sid(value)),
+ flags, self.name)
+
+
class SDDLField(Field):
"""A SDDL field encodes and decodes SDDL data."""