From: opensides Date: Thu, 2 Aug 2007 08:02:49 +0000 (+0000) Subject: - Added ssh plugin X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c30fdf675865a86365275ed6fb9f8a0cc06e41af;p=gosa.git - Added ssh plugin git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5@6956 594d385d-05f5-0310-b6e9-bd551577e9d8 --- diff --git a/AUTHORS b/AUTHORS index e8c0cd9e1..2ee3e3749 100644 --- a/AUTHORS +++ b/AUTHORS @@ -49,7 +49,7 @@ documentation and additional help. Documentation for GOsa and safe-mode, fixes * Cajus Pollmeier - Virtually everyting which is GOsa related + Virtually everything which is GOsa related * Henning Schmiedehausen Various fixes, support for user defined people/group base diff --git a/plugins/admin/systems/class_servSsh.inc b/plugins/admin/systems/class_servSsh.inc new file mode 100644 index 000000000..a3c03c053 --- /dev/null +++ b/plugins/admin/systems/class_servSsh.inc @@ -0,0 +1,190 @@ +is_account= TRUE; + } + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + /* Show main page */ + $smarty= get_smarty(); + + /* Load attributes */ + foreach($this->attributes as $attr){ + $smarty->assign("$attr", $this->$attr); + $smarty->assign($attr."ACL", chkacl($this->acl, "$attr")); + } + + $smarty->assign("sstate", ""); + if ($this->is_account){ + $smarty->assign("sshState", "checked"); + $smarty->assign("sstate", ""); + } else { + $smarty->assign("sshState", ""); + if($_SESSION['js']==1){ + if($this->acl!="#none#") + $smarty->assign("sstate", "disabled"); + }else{ + $smarty->assign("sstate", ""); + } + } + + /* Allow account status toogle? */ + $smarty->assign("sshACL", "disabled"); + if(!$this->is_account && chkacl($this->acl,"create") == ""){ + $smarty->assign("sshACL", ""); + }elseif($this->is_account && $this->acl == "#all#" ){ + $smarty->assign("sshACL", ""); + } + + $changeState = ""; + foreach($this->attributes as $attr){ + $smarty->assign($attr."ACL",chkacl($this->acl,$attr)); + if(chkacl($this->acl,$attr)==""){ + $changeState .= "changeState('".$attr."');\n"; + } + } + $smarty->assign("changeState",$changeState); + + return($smarty->fetch (get_template_path('servssh.tpl', TRUE))); + + } + + function remove_from_parent() + { + /* Cancel if there's nothing to do here */ + if (!$this->initially_was_account){ + return; + } + + plugin::remove_from_parent(); + $ldap= $this->config->get_ldap_link(); + + $ldap->cd($this->dn); + @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, + $this->attributes, "Save"); + $this->cleanup(); + $ldap->modify ($this->attrs); + + show_ldap_error($ldap->get_error(), _("Removing SSH account failed")); + + /* Optionally execute a command after we're done */ + $this->handle_post_events('remove',array("uid" => $this->uid)); + } + + + /* Save data to object */ + function save_object() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['connectivityTab'])){ + + /* Change state if needed */ + if(!$this->is_account && isset($_POST["ssh"]) && chkacl($this->acl,"create") == ""){ + $this->is_account = true; + }elseif($this->is_account && !isset($_POST["ssh"]) && $this->acl == "#all#"){ + $this->is_account = false; + } + } + + plugin::save_object(); + + #FIXME seams to be unused code ! + #if (isset($_POST["sshStatus"])){ + # $this->sshStatus = "disabled"; + #} else { + # $this->sshStatus = "enabled"; + #} + } + + /* Check values */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check for positive integer values */ + /* if ($this->is_account){ + if ((!is_id($this->sshPublickey))&&(chkacl($this->acl,"sshPublickey")=="")){ + $message[]= _("Value specified as 'SSH Key' is not valid."); + } + }*/ + + return $message; + } + + /* Save to LDAP */ + function save() + { + + plugin::save(); + + foreach($this->attributes as $attr){ + if(chkacl($this->acl,$attr)!=""){ + unset($this->attrs[$attr]); + } + } + + /* Write back to ldap */ + $ldap= $this->config->get_ldap_link(); + $ldap->cd($this->dn); + $this->cleanup(); + $ldap->modify ($this->attrs); + + show_ldap_error($ldap->get_error(), _("Saving SSH account failed")); + + /* Optionally execute a command after we're done */ + if ($this->initially_was_account == $this->is_account){ + if ($this->is_modified){ + $this->handle_post_events("modify",array("uid" => $this->uid)); + } + } else { + $this->handle_post_events("add",array("uid" => $this->uid)); + } + } + +} + +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/plugins/admin/systems/servssh.tpl b/plugins/admin/systems/servssh.tpl new file mode 100644 index 000000000..a8c14a6e3 --- /dev/null +++ b/plugins/admin/systems/servssh.tpl @@ -0,0 +1,27 @@ +

+ + {t}SSH account{/t} +

+ + + + + + + +
+ + + + +
+
+
+ + +