From 172a3be36e5a2f8a855ede4ee8befe9b3c135feb Mon Sep 17 00:00:00 2001 From: zeph Date: Sat, 22 Mar 2008 17:34:38 +0000 Subject: [PATCH] plugin template + schema mods git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5-plugins@9957 594d385d-05f5-0310-b6e9-bd551577e9d8 --- sudo-ldap/schema/sudo.schema | 6 +- sudo-ldap/src/class_sudoLdap.inc | 60 +++++++++++++++++ sudo-ldap/src/main.inc | 111 +++++++++++++++++++++++++++++++ 3 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 sudo-ldap/src/class_sudoLdap.inc create mode 100644 sudo-ldap/src/main.inc diff --git a/sudo-ldap/schema/sudo.schema b/sudo-ldap/schema/sudo.schema index 8117ec624..d82761b5f 100644 --- a/sudo-ldap/schema/sudo.schema +++ b/sudo-ldap/schema/sudo.schema @@ -1,6 +1,6 @@ - # - # schema file for sudo - # +# +# schema file for sudo +# attributetype ( 1.3.6.1.4.1.15953.9.1.1 NAME 'sudoUser' diff --git a/sudo-ldap/src/class_sudoLdap.inc b/sudo-ldap/src/class_sudoLdap.inc new file mode 100644 index 000000000..bf8f1e457 --- /dev/null +++ b/sudo-ldap/src/class_sudoLdap.inc @@ -0,0 +1,60 @@ + + \version 1.00 + \date 22.03.2008 + + This class provides the functionality to read and write all attributes + relevant for sudo-ldap from/to the LDAP. + */ + +class sudoLdap extends plugin +{ + /* Definitions */ + var $plHeadline= "sudo-ldap"; + var $plDescription= "This does something"; + + /* Plugin specific values */ + + var $attributes = array("sudoUser", "sudoHost", "sudoCommand", "sudoRunAs", "sudoOption"); + var $objectclasses = array("sudoRole"); + + var $uid =""; + + /* constructor, if 'dn' is set, the node loads the given + 'dn' from LDAP */ + function sudoLdap ($config, $dn= NULL, $parent= NULL) + { + /* Configuration is fine, allways */ + $this->config= $config; + + /* Load bases attributes */ + plugin::plugin($config, $dn, $parent); + + /* set user id */ + if(isset($this->attrs['uid'])){ + $this->uid = $this->attrs['uid'][0]; + } + + $ldap= $this->config->get_ldap_link(); + + } + + + /* execute generates the html output for this node */ + function execute($isCopyPaste = false) + { + /* Call parent execute */ + plugin::execute(); + $display= ""; + + $display = "execute()"; + + return($display); + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/sudo-ldap/src/main.inc b/sudo-ldap/src/main.inc new file mode 100644 index 000000000..25589d47a --- /dev/null +++ b/sudo-ldap/src/main.inc @@ -0,0 +1,111 @@ + + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Clear display */ +$display= ""; + +if (!$remove_lock){ + + /* Reset requested? */ + if (isset($_POST['edit_cancel']) || + (isset($_GET['reset']) && $_GET['reset'] == 1)){ + + del_lock ($ui->dn); + sess_del ('edit'); + sess_del ('sudoLdap'); + } + + /* Create sudoLdap object on demand */ + if (!isset($_SESSION['sudoLdap']) || (isset($_GET['reset']) && $_GET['reset'] == 1)){ + $_SESSION['sudoLdap']= new sudoLdap ($config, $ui->dn); + } + $sudoLdap= $_SESSION['sudoLdap']; + + /* save changes back to object */ + if (isset ($_SESSION['edit'])){ + $sudoLdap->save_object (); + } + + /* Enter edit mode? */ + if ((isset($_POST['edit'])) && (!isset( $_SESSION['edit']))){ + + /* Check locking */ + if (($username= get_lock($ui->dn)) != ""){ + $_SESSION['back_plugin']= $plug; + gen_locked_message ($username, $ui->dn); + exit (); + } + + /* Lock the current entry */ + add_lock ($ui->dn, $ui->dn); + $_SESSION['dn']= $ui->dn; + $_SESSION['edit']= TRUE; + } + + /* Adjust acl's to mode */ + if (isset($_SESSION['edit'])){ + $acl= get_permissions ($ui->dn, $ui->subtreeACL); + $sudoLdap->acl= get_module_permission($acl, "sudoLdap", $ui->dn); + } else { + $acl= get_permissions ($ui->dn, $ui->subtreeACL); + $editacl= get_module_permission($acl, "sudoLdap", $ui->dn); + $sudoLdap->acl= "#none#"; + } + + /* save changes to LDAP and disable edit mode */ + $info= ""; + if (isset($_POST['edit_finish'])){ + + /* Perform checks */ + $message= $sudoLdap->check (); + + /* No errors, save object */ + if (count ($message) == 0){ + $sudoLdap->save (); + gosa_log ("SUDO/ldap object'".$ui->dn."' has been saved"); + $sudoLdap->acl= "#none#"; + $editacl= get_module_permission($acl, "sudoLdap", $ui->dn); + del_lock ($ui->dn); + sess_del ('edit'); + + /* Remove from session */ + sess_del ('sudoLdap'); + } else { + /* Errors found, show message */ + show_errors ($message); + } + } + + /* Execute formular */ + $display.= $sudoLdap->execute (); + + /* Store changes in session */ + if (isset ($_SESSION['edit'])){ + $_SESSION['sudoLdap']= $sudoLdap; + } + + /* Page header*/ + $display= print_header(get_template_path('images/posix.png'), + _("sudo-ldap"), $info).$display; + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> -- 2.30.2