diff options
Diffstat (limited to 'source4/scripting/python')
| -rw-r--r-- | source4/scripting/python/samba/__init__.py | 10 | ||||
| -rw-r--r-- | source4/scripting/python/samba/provision/__init__.py | 14 | 
2 files changed, 10 insertions, 14 deletions
diff --git a/source4/scripting/python/samba/__init__.py b/source4/scripting/python/samba/__init__.py index 20e6e70920..f6af472f83 100644 --- a/source4/scripting/python/samba/__init__.py +++ b/source4/scripting/python/samba/__init__.py @@ -300,16 +300,16 @@ def setup_file(template, fname, subst_vars=None):      finally:          f.close() +MAX_NETBIOS_NAME_LEN = 15 +def is_valid_netbios_char(c): +    return (c.isalnum() or c in " !#$%&'()-.@^_{}~")  def valid_netbios_name(name):      """Check whether a name is valid as a NetBIOS name. """      # See crh's book (1.4.1.1) -    if len(name) > 15: +    if len(name) > MAX_NETBIOS_NAME_LEN:          return False -    for x in name: -        if not x.isalnum() and not x in " !#$%&'()-.@^_{}~": -            return False -    return True +    return all([is_valid_netbios_char(x) for x in name])  def import_bundled_package(modulename, location): diff --git a/source4/scripting/python/samba/provision/__init__.py b/source4/scripting/python/samba/provision/__init__.py index bff3ce6bf1..3a69a07177 100644 --- a/source4/scripting/python/samba/provision/__init__.py +++ b/source4/scripting/python/samba/provision/__init__.py @@ -46,7 +46,9 @@ import samba  from samba.dsdb import DS_DOMAIN_FUNCTION_2000  from samba import (      Ldb, +    MAX_NETBIOS_NAME_LEN,      check_all_substituted, +    is_valid_netbios_char,      setup_file,      substitute_var,      valid_netbios_name, @@ -93,7 +95,6 @@ from samba.samdb import SamDB  from samba.dbchecker import dbcheck -VALID_NETBIOS_CHARS = " !#$%&'()-.@^_{}~"  DEFAULT_POLICY_GUID = "31B2F340-016D-11D2-945F-00C04FB984F9"  DEFAULT_DC_POLICY_GUID = "6AC1786C-016F-11D2-945F-00C04fB984F9"  DEFAULTSITE = "Default-First-Site-Name" @@ -482,14 +483,9 @@ def provision_paths_from_lp(lp, dnsdomain):  def determine_netbios_name(hostname):      """Determine a netbios name from a hostname.""" -    netbiosname = hostname -    # remove forbidden chars -    newnbname = "" -    for x in netbiosname: -        if x.isalnum() or x in VALID_NETBIOS_CHARS: -            newnbname = "%s%c" % (newnbname, x) -    # force the length to be <16 -    return newnbname[0:15].upper() +    # remove forbidden chars and force the length to be <16 +    netbiosname = "".join([x for x in hostname if is_valid_netbios_char(x)]) +    return netbiosname[:MAX_NETBIOS_NAME_LEN].upper()  def guess_names(lp=None, hostname=None, domain=None, dnsdomain=None,  | 
