2 # Unix SMB/CIFS implementation.
3 # utility functions for provisioning a Samba4 server
5 # Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2010
6 # Copyright (C) Andrew Bartlett <abartlet@samba.org> 2008-2009
7 # Copyright (C) Oliver Liebel <oliver@itc.li> 2008-2009
9 # Based on the original in EJS:
10 # Copyright (C) Andrew Tridgell <tridge@samba.org> 2005
12 # This program is free software; you can redistribute it and/or modify
13 # it under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 3 of the License, or
15 # (at your option) any later version.
17 # This program is distributed in the hope that it will be useful,
18 # but WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
22 # You should have received a copy of the GNU General Public License
23 # along with this program. If not, see <http://www.gnu.org/licenses/>.
26 """Functions for setting up a Samba configuration."""
28 __docformat__
= "restructuredText"
31 from samba
import read_and_sub_file
32 from samba
.param
import setup_dir
35 FILL_SUBDOMAIN
= "SUBDOMAIN"
36 FILL_NT4SYNC
= "NT4SYNC"
41 """Return an absolute path to the provision tempate file specified by file"""
42 return os
.path
.join(setup_dir(), file)
45 def setup_add_ldif(ldb
, ldif_path
, subst_vars
=None,controls
=["relax:0"]):
46 """Setup a ldb in the private dir.
48 :param ldb: LDB file to import data into
49 :param ldif_path: Path of the LDIF file to load
50 :param subst_vars: Optional variables to subsitute in LDIF.
51 :param nocontrols: Optional list of controls, can be None for no controls
53 assert isinstance(ldif_path
, str)
54 data
= read_and_sub_file(ldif_path
, subst_vars
)
55 ldb
.add_ldif(data
, controls
)
58 def setup_modify_ldif(ldb
, ldif_path
, subst_vars
=None,controls
=["relax:0"]):
59 """Modify a ldb in the private dir.
61 :param ldb: LDB object.
62 :param ldif_path: LDIF file path.
63 :param subst_vars: Optional dictionary with substitution variables.
65 data
= read_and_sub_file(ldif_path
, subst_vars
)
66 ldb
.modify_ldif(data
, controls
)
69 def setup_ldb(ldb
, ldif_path
, subst_vars
):
70 """Import a LDIF a file into a LDB handle, optionally substituting
73 :note: Either all LDIF data will be added or none (using transactions).
75 :param ldb: LDB file to import into.
76 :param ldif_path: Path to the LDIF file.
77 :param subst_vars: Dictionary with substitution variables.
79 assert ldb
is not None
80 ldb
.transaction_start()
82 setup_add_ldif(ldb
, ldif_path
, subst_vars
)
84 ldb
.transaction_cancel()
87 ldb
.transaction_commit()