From c8d3547c5fa8724198541cb67b60e5c8e212a1ad Mon Sep 17 00:00:00 2001 From: Douglas Bagnall Date: Thu, 19 Nov 2020 11:19:04 +1300 Subject: [PATCH] samba-tool domain: move timestamp functions to common Other tools use identical functions, and they too can use common.py Signed-off-by: Douglas Bagnall Reviewed-by: Noel Power --- python/samba/netcmd/common.py | 21 +++++++++++++++++++++ python/samba/netcmd/domain.py | 23 +++-------------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/python/samba/netcmd/common.py b/python/samba/netcmd/common.py index f53ff4555a9..c1923fcbed2 100644 --- a/python/samba/netcmd/common.py +++ b/python/samba/netcmd/common.py @@ -22,6 +22,11 @@ from samba.dcerpc import nbt from samba.net import Net import ldb + +# In MS AD, setting a timeout to '(never)' corresponds to this value +NEVER_TIMESTAMP = int(-0x8000000000000000) + + def _get_user_realm_domain(user): r""" get the realm or the domain and the base user from user like: @@ -112,3 +117,19 @@ def get_ldif_for_editor(samdb, msg): result_ldif = samdb.write_ldif(m, ldb.CHANGETYPE_NONE) return result_ldif + + +def timestamp_to_mins(timestamp_str): + """Converts a timestamp in -100 nanosecond units to minutes""" + # treat a timestamp of 'never' the same as zero (this should work OK for + # most settings, and it displays better than trying to convert + # -0x8000000000000000 to minutes) + if int(timestamp_str) == NEVER_TIMESTAMP: + return 0 + else: + return abs(int(timestamp_str)) / (1e7 * 60) + + +def timestamp_to_days(timestamp_str): + """Converts a timestamp in -100 nanosecond units to days""" + return timestamp_to_mins(timestamp_str) / (60 * 24) diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py index 71dacf67a89..6a02b2ecac0 100644 --- a/python/samba/netcmd/domain.py +++ b/python/samba/netcmd/domain.py @@ -62,6 +62,9 @@ from samba.netcmd import ( ) from samba.netcmd.fsmo import get_fsmo_roleowner from samba.netcmd.common import netcmd_get_domain_infos_via_cldap +from samba.netcmd.common import (NEVER_TIMESTAMP, + timestamp_to_mins, + timestamp_to_days) from samba.samba3 import Samba3 from samba.samba3 import param as s3param from samba.upgrade import upgrade_from_samba3 @@ -1210,26 +1213,6 @@ class cmd_domain_level(Command): raise CommandError("invalid argument: '%s' (choose from 'show', 'raise')" % subcommand) -# In MS AD, setting a timeout to '(never)' corresponds to this value -NEVER_TIMESTAMP = int(-0x8000000000000000) - - -def timestamp_to_mins(timestamp_str): - """Converts a timestamp in -100 nanosecond units to minutes""" - # treat a timestamp of 'never' the same as zero (this should work OK for - # most settings, and it displays better than trying to convert - # -0x8000000000000000 to minutes) - if int(timestamp_str) == NEVER_TIMESTAMP: - return 0 - else: - return abs(int(timestamp_str)) / (1e7 * 60) - - -def timestamp_to_days(timestamp_str): - """Converts a timestamp in -100 nanosecond units to days""" - return timestamp_to_mins(timestamp_str) / (60 * 24) - - class cmd_domain_passwordsettings_show(Command): """Display current password settings for the domain.""" -- 2.47.3