From: Rob van der Linde Date: Thu, 8 Feb 2024 10:17:34 +0000 (+1300) Subject: netcmd: models: add missing fields to User model X-Git-Tag: tdb-1.4.11~1760 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5e52e211a9bd14da7d7f35f0238291509ff65f03;p=thirdparty%2Fsamba.git netcmd: models: add missing fields to User model Signed-off-by: Rob van der Linde Reviewed-by: Andrew Bartlett Reviewed-by: Jo Sutton --- diff --git a/python/samba/netcmd/domain/models/__init__.py b/python/samba/netcmd/domain/models/__init__.py index 85a74a26bd0..f77dbc36b37 100644 --- a/python/samba/netcmd/domain/models/__init__.py +++ b/python/samba/netcmd/domain/models/__init__.py @@ -30,6 +30,6 @@ from .model import MODELS from .schema import AttributeSchema, ClassSchema from .site import Site from .subnet import Subnet -from .types import AccountType, GroupType, SystemFlags +from .types import AccountType, GroupType, SystemFlags, UserAccountControl from .user import User from .value_type import ValueType diff --git a/python/samba/netcmd/domain/models/types.py b/python/samba/netcmd/domain/models/types.py index 6b833bb3942..562225ee9c3 100644 --- a/python/samba/netcmd/domain/models/types.py +++ b/python/samba/netcmd/domain/models/types.py @@ -30,6 +30,30 @@ from samba.dsdb import ( ATYPE_DISTRIBUTION_LOCAL_GROUP, ATYPE_WORKSTATION_TRUST, ATYPE_INTERDOMAIN_TRUST, + UF_SCRIPT, + UF_ACCOUNTDISABLE, + UF_HOMEDIR_REQUIRED, + UF_LOCKOUT, + UF_PASSWD_NOTREQD, + UF_PASSWD_CANT_CHANGE, + UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED, + UF_TEMP_DUPLICATE_ACCOUNT, + UF_NORMAL_ACCOUNT, + UF_INTERDOMAIN_TRUST_ACCOUNT, + UF_WORKSTATION_TRUST_ACCOUNT, + UF_SERVER_TRUST_ACCOUNT, + UF_DONT_EXPIRE_PASSWD, + UF_MNS_LOGON_ACCOUNT, + UF_SMARTCARD_REQUIRED, + UF_TRUSTED_FOR_DELEGATION, + UF_NOT_DELEGATED, + UF_USE_DES_KEY_ONLY, + UF_DONT_REQUIRE_PREAUTH, + UF_PASSWORD_EXPIRED, + UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION, + UF_NO_AUTH_DATA_REQUIRED, + UF_PARTIAL_SECRETS_ACCOUNT, + UF_USE_AES_KEYS, GTYPE_DISTRIBUTION_GLOBAL_GROUP, GTYPE_DISTRIBUTION_DOMAIN_LOCAL_GROUP, GTYPE_DISTRIBUTION_UNIVERSAL_GROUP, @@ -83,3 +107,30 @@ class SystemFlags(IntFlag): DISALLOW_MOVE_ON_DELETE = SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETE DOMAIN_DISALLOW_MOVE = SYSTEM_FLAG_DOMAIN_DISALLOW_MOVE DOMAIN_DISALLOW_RENAME = SYSTEM_FLAG_DOMAIN_DISALLOW_RENAME + + +class UserAccountControl(IntFlag): + SCRIPT = UF_SCRIPT + ACCOUNTDISABLE = UF_ACCOUNTDISABLE + HOMEDIR_REQUIRED = UF_HOMEDIR_REQUIRED + LOCKOUT = UF_LOCKOUT + PASSWD_NOTREQD = UF_PASSWD_NOTREQD + PASSWD_CANT_CHANGE = UF_PASSWD_CANT_CHANGE + ENCRYPTED_TEXT_PASSWORD_ALLOWED = UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED + TEMP_DUPLICATE_ACCOUNT = UF_TEMP_DUPLICATE_ACCOUNT + NORMAL_ACCOUNT = UF_NORMAL_ACCOUNT + INTERDOMAIN_TRUST_ACCOUNT = UF_INTERDOMAIN_TRUST_ACCOUNT + WORKSTATION_TRUST_ACCOUNT = UF_WORKSTATION_TRUST_ACCOUNT + SERVER_TRUST_ACCOUNT = UF_SERVER_TRUST_ACCOUNT + DONT_EXPIRE_PASSWD = UF_DONT_EXPIRE_PASSWD + MNS_LOGON_ACCOUNT = UF_MNS_LOGON_ACCOUNT + SMARTCARD_REQUIRED = UF_SMARTCARD_REQUIRED + TRUSTED_FOR_DELEGATION = UF_TRUSTED_FOR_DELEGATION + NOT_DELEGATED = UF_NOT_DELEGATED + USE_DES_KEY_ONLY = UF_USE_DES_KEY_ONLY + DONT_REQ_PREAUTH = UF_DONT_REQUIRE_PREAUTH + PASSWORD_EXPIRED = UF_PASSWORD_EXPIRED + TRUSTED_TO_AUTH_FOR_DELEGATION = UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION + NO_AUTH_DATA_REQUIRED = UF_NO_AUTH_DATA_REQUIRED + PARTIAL_SECRETS_ACCOUNT = UF_PARTIAL_SECRETS_ACCOUNT + USE_AES_KEYS = UF_USE_AES_KEYS diff --git a/python/samba/netcmd/domain/models/user.py b/python/samba/netcmd/domain/models/user.py index 40795a44e40..719cb8eb6f4 100644 --- a/python/samba/netcmd/domain/models/user.py +++ b/python/samba/netcmd/domain/models/user.py @@ -22,11 +22,13 @@ from ldb import Dn -from samba.dsdb import DS_GUID_USERS_CONTAINER +from samba.dsdb import (DS_GUID_MANAGED_SERVICE_ACCOUNTS_CONTAINER, + DS_GUID_USERS_CONTAINER) -from .fields import DnField, EnumField, SIDField, StringField +from .fields import (DnField, EnumField, IntegerField, SIDField, StringField, + NtTimeField) from .model import Model -from .types import AccountType +from .types import AccountType, UserAccountControl class User(Model): @@ -35,6 +37,20 @@ class User(Model): assigned_policy = DnField("msDS-AssignedAuthNPolicy") assigned_silo = DnField("msDS-AssignedAuthNPolicySilo") object_sid = SIDField("objectSid") + bad_password_time = NtTimeField("badPasswordTime", readonly=True) + bad_pwd_count = IntegerField("badPwdCount", readonly=True) + code_page = IntegerField("codePage") + country_code = IntegerField("countryCode") + display_name = StringField("displayName") + given_name = StringField("givenName") + sn = StringField("sn") + last_logoff = NtTimeField("lastLogoff", readonly=True) + last_logon = NtTimeField("lastLogon", readonly=True) + logon_count = IntegerField("logonCount", readonly=True) + primary_group_id = IntegerField("primaryGroupID") + pwd_last_set = NtTimeField("pwdLastSet", readonly=True) + user_account_control = EnumField("userAccountControl", UserAccountControl) + user_principal_name = StringField("userPrincipalName") def __str__(self): """Return username rather than cn for User model."""