Code

plugin template + schema mods
authorzeph <zeph@594d385d-05f5-0310-b6e9-bd551577e9d8>
Sat, 22 Mar 2008 17:34:38 +0000 (17:34 +0000)
committerzeph <zeph@594d385d-05f5-0310-b6e9-bd551577e9d8>
Sat, 22 Mar 2008 17:34:38 +0000 (17:34 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5-plugins@9957 594d385d-05f5-0310-b6e9-bd551577e9d8

sudo-ldap/schema/sudo.schema
sudo-ldap/src/class_sudoLdap.inc [new file with mode: 0644]
sudo-ldap/src/main.inc [new file with mode: 0644]

index 8117ec6245c5c76c331eb2f4d0a818585db7775c..d82761b5f9337c1a3ddbabce75ff63613b6d6110 100644 (file)
@@ -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 (file)
index 0000000..bf8f1e4
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/*!
+  \brief   sudoLdap plugin
+  \author  Guido Serra <gserra@guidoserra.it>
+  \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 (file)
index 0000000..25589d4
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+/*
+   This code is part of GOsa (https://gosa.gonicus.de)
+   Copyright (C) 2008  Guido Serra <gserra@guidoserra.it>
+
+   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:
+?>