mirror of
https://github.com/samba-team/samba.git
synced 2025-02-04 17:47:26 +03:00
41493cbe68
<oliver@itc.li> This changes the RIDs to be <serverID><DBID>, to ease later debugging. The need to specify the port on the MMR URLs is now included in the help. Andrew Bartlett (This used to be commit a5cbe8c09c6f14f95ff9ba9b8782e2100fc55695)
108 lines
3.8 KiB
Python
Executable File
108 lines
3.8 KiB
Python
Executable File
#!/usr/bin/python
|
|
#
|
|
# Unix SMB/CIFS implementation.
|
|
# provision a Samba4 server
|
|
# Copyright (C) Jelmer Vernooij <jelmer@samba.org> 2007-2008
|
|
# Copyright (C) Andrew Bartlett <abartlet@samba.org> 2008
|
|
#
|
|
# Based on the original in EJS:
|
|
# Copyright (C) Andrew Tridgell 2005
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
import os, sys
|
|
|
|
sys.path.insert(0, "bin/python")
|
|
|
|
import getopt
|
|
import optparse
|
|
|
|
import samba
|
|
from samba import param
|
|
|
|
from samba.auth import system_session
|
|
import samba.getopt as options
|
|
from samba.provision import (provision_backend)
|
|
|
|
parser = optparse.OptionParser("provision [options]")
|
|
sambaopts = options.SambaOptions(parser)
|
|
parser.add_option_group(sambaopts)
|
|
parser.add_option_group(options.VersionOptions(parser))
|
|
credopts = options.CredentialsOptions(parser)
|
|
parser.add_option_group(credopts)
|
|
parser.add_option("--setupdir", type="string", metavar="DIR",
|
|
help="directory with setup files")
|
|
parser.add_option("--realm", type="string", metavar="REALM", help="set realm")
|
|
parser.add_option("--domain", type="string", metavar="DOMAIN",
|
|
help="set domain")
|
|
parser.add_option("--host-name", type="string", metavar="HOSTNAME",
|
|
help="set hostname")
|
|
parser.add_option("--ldap-admin-pass", type="string", metavar="PASSWORD",
|
|
help="choose LDAP admin password (otherwise random)")
|
|
parser.add_option("--root", type="string", metavar="USERNAME",
|
|
help="choose 'root' unix username")
|
|
parser.add_option("--quiet", help="Be quiet", action="store_true")
|
|
parser.add_option("--ldap-backend-type", type="choice", metavar="LDAP-BACKEND-TYPE",
|
|
help="LDB mapping module to use for the LDAP backend",
|
|
choices=["fedora-ds", "openldap"])
|
|
parser.add_option("--ldap-backend-port", type="int", metavar="PORT",
|
|
help="TCP Port LDAP server should listen to (default ldapi only)")
|
|
parser.add_option("--server-role", type="choice", metavar="ROLE",
|
|
choices=["domain controller", "dc", "member server", "member", "standalone"],
|
|
help="Set server role to provision for (default standalone)")
|
|
parser.add_option("--targetdir", type="string", metavar="DIR",
|
|
help="Set target directory")
|
|
parser.add_option("--ol-mmr-urls", type="string", metavar="LDAPSERVER",
|
|
help="List of LDAP-URLS [ ldap://<FQDN>:port/ (where port != 389) ] separated with whitespaces for use with OpenLDAP-MMR")
|
|
|
|
|
|
opts = parser.parse_args()[0]
|
|
|
|
def message(text):
|
|
"""print a message if quiet is not set."""
|
|
if not opts.quiet:
|
|
print text
|
|
|
|
if opts.realm is None or opts.domain is None:
|
|
if opts.realm is None:
|
|
print >>sys.stderr, "No realm set"
|
|
if opts.domain is None:
|
|
print >>sys.stderr, "No domain set"
|
|
parser.print_usage()
|
|
sys.exit(1)
|
|
|
|
smbconf = sambaopts.get_loadparm().configfile()
|
|
|
|
if opts.server_role == "dc":
|
|
server_role = "domain controller"
|
|
elif opts.server_role == "member":
|
|
server_role = "member server"
|
|
else:
|
|
server_role = opts.server_role
|
|
|
|
setup_dir = opts.setupdir
|
|
if setup_dir is None:
|
|
setup_dir = "setup"
|
|
|
|
provision_backend(setup_dir=setup_dir, message=message, smbconf=smbconf, targetdir=opts.targetdir,
|
|
realm=opts.realm, domain=opts.domain,
|
|
hostname=opts.host_name,
|
|
adminpass=opts.ldap_admin_pass,
|
|
root=opts.root, serverrole=server_role,
|
|
ldap_backend_type=opts.ldap_backend_type,
|
|
ldap_backend_port=opts.ldap_backend_port,
|
|
ol_mmr_urls=opts.ol_mmr_urls)
|
|
|