]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
netcmd: models: add missing fields to User model
authorRob van der Linde <rob@catalyst.net.nz>
Thu, 8 Feb 2024 10:17:34 +0000 (23:17 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 16 Feb 2024 02:41:36 +0000 (02:41 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jo Sutton <josutton@catalyst.net.nz>
python/samba/netcmd/domain/models/__init__.py
python/samba/netcmd/domain/models/types.py
python/samba/netcmd/domain/models/user.py

index 85a74a26bd016a70099b22d1b645aa789ac3ffc8..f77dbc36b374726726f29a42cde3551bca4c7e96 100644 (file)
@@ -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
index 6b833bb3942504067292f2304861c016a988eb9b..562225ee9c394b7177b588454d7b2517eeccad18 100644 (file)
@@ -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
index 40795a44e40c5b1760c07c91eb4b330d953906af..719cb8eb6f4e64c10f998c65a1d5528338e439a4 100644 (file)
 
 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."""