diff options
Diffstat (limited to 'source4/scripting/python')
| -rw-r--r-- | source4/scripting/python/samba/netcmd/main.py | 2 | ||||
| -rw-r--r-- | source4/scripting/python/samba/netcmd/sites.py | 96 | 
2 files changed, 98 insertions, 0 deletions
| diff --git a/source4/scripting/python/samba/netcmd/main.py b/source4/scripting/python/samba/netcmd/main.py index 61bbcf16e2..3bdbced75b 100644 --- a/source4/scripting/python/samba/netcmd/main.py +++ b/source4/scripting/python/samba/netcmd/main.py @@ -32,6 +32,7 @@ from samba.netcmd.group import cmd_group  from samba.netcmd.ldapcmp import cmd_ldapcmp  from samba.netcmd.ntacl import cmd_ntacl  from samba.netcmd.rodc import cmd_rodc +from samba.netcmd.sites import cmd_sites  from samba.netcmd.spn import cmd_spn  from samba.netcmd.testparm import cmd_testparm  from samba.netcmd.time import cmd_time @@ -55,6 +56,7 @@ class cmd_sambatool(SuperCommand):      subcommands["ldapcmp"] = cmd_ldapcmp()      subcommands["ntacl"] = cmd_ntacl()      subcommands["rodc"] = cmd_rodc() +    subcommands["sites"] = cmd_sites()      subcommands["spn"] = cmd_spn()      subcommands["testparm"] =  cmd_testparm()      subcommands["time"] = cmd_time() diff --git a/source4/scripting/python/samba/netcmd/sites.py b/source4/scripting/python/samba/netcmd/sites.py new file mode 100644 index 0000000000..a63b52442e --- /dev/null +++ b/source4/scripting/python/samba/netcmd/sites.py @@ -0,0 +1,96 @@ + +#!/usr/bin/env python +# +# sites management +# +# Copyright Matthieu Patou <mat@matws.net> 2011 +# +# 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 +from samba import sites +from samba import Ldb +from samba.auth import system_session +from samba.netcmd import ( +    Command, +    CommandError, +    SuperCommand +    ) + + +class cmd_sites_create(Command): +    """Create a new site""" + +    synopsis = "%prog <site> [options]" + +    takes_args = ["sitename"] + +    def run(self, sitename, sambaopts=None, credopts=None, versionopts=None): +        lp = sambaopts.get_loadparm() +        creds = credopts.get_credentials(lp, fallback_machine=True) +        name = "sam.ldb" +        path = lp.get("private dir") +        url = os.path.join(path, name) +        if not os.path.exists(url): +            raise CommandError("secret database not found at %s " % url) +        samdb = Ldb(url=url, session_info=system_session(), +            credentials=creds, lp=lp) + +        samdb.transaction_start() +        ok = sites.create_site(samdb, samdb.get_config_basedn(), sitename) +        samdb.transaction_commit() + +        if not ok: +            raise CommandError("Error while creating site %s" % sitename) + +        self.outf.write("Site %s created !\n" % sitename) + +class cmd_sites_delete(Command): +    """Delete a new site""" + +    synopsis = "%prog <site> [options]" + +    takes_args = ["sitename"] + +    def run(self, sitename, sambaopts=None, credopts=None, versionopts=None): +        lp = sambaopts.get_loadparm() +        creds = credopts.get_credentials(lp, fallback_machine=True) +        name = "sam.ldb" +        path = lp.get("private dir") +        url = os.path.join(path, name) +        if not os.path.exists(url): +            raise CommandError("secret database not found at %s " % url) +        samdb = Ldb(url=url, session_info=system_session(), +            credentials=creds, lp=lp) + +        samdb.transaction_start() +        ok = sites.delete_site(samdb, samdb.get_config_basedn(), sitename) +        samdb.transaction_commit() + +        if not ok: +            raise CommandError("Error while creating site %s" % sitename) + +        self.outf.write("Site %s removed!\n" % sitename) + + + +class cmd_sites(SuperCommand): +    """Sites management""" + +    subcommands = {} +    subcommands["create"] = cmd_sites_create() +    subcommands["remove"] = cmd_sites_delete() | 
