diff --git a/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc b/gosa-plugins/opsi/admin/opsi/class_opsigeneric.inc
index 5acbc597cb5c46579b481087ffaacac437ea5dff..d3c2743bf6c21cfb49053c03ac78f014c7ad8974 100644 (file)
private $init_failed = FALSE;
private $parent_mode = TRUE;
+ private $is_installed = FALSE;
+
+ public $mac = "";
+ public $note = "";
+ public $description = "";
+
+ public $attributes = array("mac","note","description");
public function __construct($config,$hostId)
{
$err = FALSE;
$this->init_failed = FALSE;
+ if($this->hostId != "new"){
+ $list = $this->opsi->list_clients($this->hostId);
+ $err |= $this->opsi->is_error();
+ foreach($list as $entry){
+ if($entry['NAME'][0]['VALUE'] == $this->hostId){
+ foreach(array("description" => "DESCRIPTION","mac" => "MAC", "note" => "NOTES") as $des => $src){
+ $this->$des = $entry[$src][0]['VALUE'];
+ }
+ break;
+ }
+ }
+ }
+
/* Get product settings */
if(!$err){
$this->a_availableNetbootProducts = $this->opsi->get_netboot_products();
/* Get selected products */
if(!$err && !empty($this->hostId)) {
$tmp = array_keys($this->opsi->get_netboot_products($this->hostId));
- $this->s_selectedNetbootProduct = $tmp[0];
+ if(count($tmp)){
+ $this->s_selectedNetbootProduct = $tmp[0];
+ }
$err |= $this->opsi->is_error();
}
if(!$err && !empty($this->hostId)) {
- $tmp = $this->opsi->get_local_products($this->hostId);
+ $tmp = $this->opsi->get_local_products($this->hostId);
$err |= $this->opsi->is_error();
$this->a_selectedLocalProducts = $tmp;
}
if(!preg_match("/\./",$this->hostId)){
$messages[] = msgPool::invalid(_("Name"),$this->hostId,"",_("The client name must contain a domain part (e.g. '.company.de')."));
}
+ if(!tests::is_mac($this->mac) || empty($this->mac)){
+ $messages[] = msgPool::invalid(_("MAC address"),$this->mac,"","00:0C:7F:31:33:F1");
+ }
return($messages);
}
public function execute()
{
if($this->init_failed){
-
$smarty = get_smarty();
$smarty->assign("init_failed",TRUE);
$smarty->assign("message",$this->opsi->get_error());
}
$smarty = get_smarty();
+
+ foreach($this->attributes as $attr){
+ $smarty->assign($attr,$this->$attr);
+ }
+
$smarty->assign("parent_mode", $this->parent_mode);
+ $smarty->assign("is_installed", $this->is_installed);
$smarty->assign("init_failed",FALSE);
$divSLP = new divSelectBox();
$divALP = new divSelectBox();
-Do we have to create this client first?
*/
if(!$this->initially_was_account && $this->is_account){
- $res = $this->opsi->add_client($this->hostId,"0.0.0.0","00:00:00:00:00:00","Hallo","TZ");
+ $res = $this->opsi->add_client($this->hostId,$this->mac,$this->note,$this->description);
if($this->opsi->is_error()){
msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
return;
}
}
+ $this->opsi->modify_client($this->hostId,$this->mac,$this->note,$this->description);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
$add = array_diff_assoc($this->a_selectedLocalProducts,$this->a_initial_selectedLocalProducts);
$del = array_diff_assoc($this->a_initial_selectedLocalProducts,$this->a_selectedLocalProducts);
foreach($del as $name => $data){
$this->opsi->del_product_from_client($name,$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
}
foreach($add as $name => $data){
$this->opsi->add_product_to_client($name,$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
$this->opsi->set_product_properties($name,$data['CFG'],$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
}
foreach($this->a_selectedLocalProducts as $name => $data){
$diff = array_diff($data['CFG'],$this->a_initial_selectedLocalProducts[$name]['CFG']);
if(count($diff)){
$this->opsi->set_product_properties($name,$diff,$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
}
}
-
+
if($this->s_selectedNetbootProduct != $this->s_initial_selectedNetbootProduct){
if(!empty($this->s_initial_selectedNetbootProduct)){
$this->opsi->del_product_from_client($this->s_initial_selectedNetbootProduct,$this->hostId);
- $this->opsi->add_product_to_client($this->s_selectedNetbootProduct,$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
+ }
+ $this->opsi->add_product_to_client($this->s_selectedNetbootProduct,$this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
}
}
}
public function remove_from_parent()
- {}
+ {
+ $this->opsi->del_client($this->hostId);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ return;
+ }
+ }
public function save_object()
if(isset($_POST['opsigeneric_posted'])){
+ plugin::save_object();
+
if(isset($_POST['hostId']) && $this->parent_mode){
$this->hostId = get_post('hostId');
}
+ /* Send actions like 'install' or 'wake' to the si server
+ */
+ if(isset($_POST['opsi_action']) && isset($_POST['opsi_trigger_action']) && $this->parent_mode){
+ $action = $_POST['opsi_action'];
+ if(in_array($action,array("wake","install"))){
+ $this->opsi->send_action($action,$this->hostId,$this->mac);
+ if($this->opsi->is_error()){
+ msg_dialog::display(_("Error"),msgPool::siError($this->opsi->get_error()),ERROR_DIALOG);
+ }
+ }
+ }
+
if(isset($_POST['opsi_netboot_product'])){
$SNP = trim($_POST['opsi_netboot_product']);
if(isset($this->a_availableNetbootProducts[$SNP])){
}
}
+
+ function install_client()
+ {
+
+ }
+
+
/* Return plugin informations for acl handling */
static function plInfo()
{