".S_NO_PERMISSIONS.""); show_page_footer(); exit; } $_REQUEST["config"] = get_request("config",get_profile("web.hosts.config",0)); update_profile("web.hosts.config",$_REQUEST["config"]); update_profile("web.menu.config.last",$page["file"]); ?> array(T_ZBX_INT, O_OPT, P_SYS, IN("0,1,2,3"), NULL), "hosts"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL), "groups"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL), /* host */ "hostid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, '{config}==0&&{form}=="update"'), "host"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, '{config}==0&&isset({save})'), "useip"=> array(T_ZBX_STR, O_OPT, NULL, NULL, NULL), "ip"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useip})'), "port"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,65535),'{config}==0&&isset({save})'), "status"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1,3"), '{config}==0&&isset({save})'), "newgroup"=> array(T_ZBX_STR, O_OPT, NULL, NULL, NULL), "templateid"=> array(T_ZBX_INT, O_OPT, NULL, DB_ID, NULL), "useprofile"=> array(T_ZBX_STR, O_OPT, NULL, NULL, NULL), "devicetype"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "name"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "os"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "serialno"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "tag"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "macaddress"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "hardware"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "software"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "contact"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "location"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), "notes"=> array(T_ZBX_STR, O_OPT, NULL, NULL, 'isset({useprofile})'), /* group */ "groupid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, '{config}==1&&{form}=="update"'), "gname"=> array(T_ZBX_STR, O_NO, NULL, NOT_EMPTY, '{config}==1&&isset({save})'), /* actions */ "activate"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), "disable"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), /* other */ "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), "form_refresh"=>array(T_ZBX_STR, O_OPT, NULL, NULL, NULL) ); check_fields($fields); ?> ".HOST_STATUS_DELETED); while($db_host=DBfetch($db_hosts)) { if(!in_array($db_host["groupid"],$groups)) continue; $host=get_host_by_hostid($db_host["hostid"]); if(!update_host_status($db_host["hostid"],$status)) continue; $result = 1; add_audit(AUDIT_ACTION_UPDATE,AUDIT_RESOURCE_HOST, "Old status [".$host["status"]."] "."New status [".$status."]"); } show_messages($result, S_HOST_STATUS_UPDATED, NULL); unset($_REQUEST["activate"]); } ?> AddItem(0,S_HOSTS); $cmbConf->AddItem(3,S_TEMPLATES); $cmbConf->AddItem(1,S_HOST_GROUPS); $cmbConf->AddItem(2,S_TEMPLATE_LINKAGE); switch($_REQUEST["config"]){ case 0: $btn = new CButton("form",S_CREATE_HOST); $frmForm->AddVar("groupid",get_request("groupid",0)); break; case 3: $btn = new CButton("form",S_CREATE_TEMPLATE); $frmForm->AddVar("groupid",get_request("groupid",0)); break; case 1: $btn = new CButton("form",S_CREATE_GROUP); break; case 2: break; } $frmForm->AddItem($cmbConf); if(isset($btn)){ $frmForm->AddItem(SPACE."|".SPACE); $frmForm->AddItem($btn); } show_header2(S_CONFIGURATION_OF_HOSTS_GROUPS_AND_TEMPLATES, $frmForm); echo BR; ?> AddItem(0,S_ALL_SMALL); $result=DBselect("select groupid,name from groups order by name"); while($row=DBfetch($result)) { // Check if at least one host with read permission exists for this group $result2=DBselect("select h.hostid,h.host from hosts h,hosts_groups hg". " where hg.groupid=".$row["groupid"]. " and hg.hostid=h.hostid". " and $status_filter". " group by h.hostid,h.host order by h.host"); while($row2=DBfetch($result2)) { if(!check_right("Host","R",$row2["hostid"])) continue; $cmbGroups->AddItem($row["groupid"],$row["name"]); break; } } $frmForm = new CForm("hosts.php"); $frmForm->AddVar("config",$_REQUEST["config"]); $frmForm->AddItem(S_GROUP.SPACE); $frmForm->AddItem($cmbGroups); show_header2($show_only_tmp ? S_TEMPLATES_BIG : S_HOSTS_BIG, $frmForm); /* table HOSTS */ if(isset($_REQUEST["groupid"]) && $_REQUEST["groupid"]==0) unset($_REQUEST["groupid"]); $form = new CForm('hosts.php'); $form->SetName('hosts'); $form->AddVar("config",get_request("config",0)); $table = new CTableInfo(S_NO_HOSTS_DEFINED); $table->setHeader(array( array(new CCheckBox("all_hosts",NULL,NULL, "CheckAll('".$form->GetName()."','all_hosts');"), SPACE.S_NAME), $show_only_tmp ? NULL : S_IP, $show_only_tmp ? NULL : S_PORT, $show_only_tmp ? NULL : S_STATUS, $show_only_tmp ? NULL : S_AVAILABILITY, $show_only_tmp ? NULL : S_ERROR, S_SHOW )); $sql="select h.* from"; if(isset($_REQUEST["groupid"])) { $sql .= " hosts h,hosts_groups hg where"; $sql .= " hg.groupid=".$_REQUEST["groupid"]." and hg.hostid=h.hostid and"; } else $sql .= " hosts h where"; $sql .= " $status_filter order by h.host"; $result=DBselect($sql); while($row=DBfetch($result)) { if(!check_right("Host","R",$row["hostid"])) { continue; } $template = get_template_path($row["hostid"]); if($template == "/") $template = NULL; $host=new CCol(array( new CCheckBox("hosts[]",NULL,NULL,NULL,$row["hostid"]), SPACE, new CSpan($template,"unknown"), new CLink($row["host"],"hosts.php?form=update&hostid=". $row["hostid"].url_param("groupid").url_param("config"), 'action') )); if($show_only_tmp) $ip = NULL; else $ip=$row["useip"]==1 ? $row["ip"] : "-"; if($show_only_tmp) $port = NULL; else $port = $row["port"]; if($show_only_tmp) $status = NULL; elseif($row["status"] == HOST_STATUS_MONITORED){ $text = S_MONITORED; if(check_right("Host","U",$row["hostid"])) { $text=new CLink($text,"hosts.php?hosts%5B%5D=".$row["hostid"]. "&disable=1".url_param("config").url_param("groupid"), "off"); } $status=new CCol($text,"off"); } else if($row["status"] == HOST_STATUS_NOT_MONITORED) { $text = S_NOT_MONITORED; if(check_right("Host","U",$row["hostid"])) { $text=new CLink($text,"hosts.php?hosts%5B%5D=".$row["hostid"]. "&activate=1".url_param("config").url_param("groupid"), "on"); } $status=new CCol($text,"on"); } else if($row["status"] == HOST_STATUS_TEMPLATE) $status=new CCol(S_TEMPLATE,"unknown"); else if($row["status"] == HOST_STATUS_DELETED) $status=new CCol(S_DELETED,"unknown"); else $status=S_UNKNOWN; if($show_only_tmp) $available = NULL; elseif($row["available"] == HOST_AVAILABLE_TRUE) $available=new CCol(S_AVAILABLE,"off"); else if($row["available"] == HOST_AVAILABLE_FALSE) $available=new CCol(S_NOT_AVAILABLE,"on"); else if($row["available"] == HOST_AVAILABLE_UNKNOWN) $available=new CCol(S_UNKNOWN,"unknown"); if($show_only_tmp) $error = NULL; elseif($row["error"] == "") $error = new CCol(SPACE,"off"); else $error = new CCol($row["error"],"on"); if(check_right("Host","U",$row["hostid"])) { $show = array( new CLink(S_ITEMS,"items.php?hostid=".$row["hostid"]), SPACE.":".SPACE, new CLink(S_TRIGGERS,"triggers.php?hostid=".$row["hostid"]), SPACE.":".SPACE, new CLink(S_GRAPHS,"graphs.php?hostid=".$row["hostid"]) ); } else { $show = SPACE; } $table->addRow(array( $host, $ip, $port, $status, $available, $error, $show)); } $footerButtons = array( $show_only_tmp ? NULL : new CButton('activate','Activate selected', "return Confirm('".S_ACTIVATE_SELECTED_HOSTS_Q."');"), $show_only_tmp ? NULL : SPACE, $show_only_tmp ? NULL : new CButton('disable','Disable selected', "return Confirm('".S_DISABLE_SELECTED_HOSTS_Q."');"), $show_only_tmp ? NULL : SPACE, new CButton('delete','Delete selected', "return Confirm('".S_DELETE_SELECTED_HOSTS_Q."');")); $table->SetFooter(new CCol($footerButtons)); $form->AddItem($table); $form->Show(); } } elseif($_REQUEST["config"]==1) { if(isset($_REQUEST["form"])) { insert_hostgroups_form(get_request("groupid",NULL)); } else { show_table_header(S_HOST_GROUPS_BIG); $form = new CForm('hosts.php'); $form->SetName('groups'); $form->AddVar("config",get_request("config",0)); $table = new CTableInfo(S_NO_HOST_GROUPS_DEFINED); $table->setHeader(array( array( new CCheckBox("all_groups",NULL,NULL, "CheckAll('".$form->GetName()."','all_groups');"), SPACE, S_NAME), S_MEMBERS)); $db_groups=DBselect("select groupid,name from groups order by name"); while($db_group=DBfetch($db_groups)) { $db_hosts = DBselect("select distinct h.host, h.status". " from hosts h, hosts_groups hg". " where h.hostid=hg.hostid and hg.groupid=".$db_group["groupid"]. " and h.status not in (".HOST_STATUS_DELETED.") order by host"); $hosts = array(""); if($db_host=DBfetch($db_hosts)){ $style = $db_host["status"]==HOST_STATUS_MONITORED ? NULL: ( $db_host["status"]==HOST_STATUS_TEMPLATE ? "unknown" : "on"); array_push($hosts,new CSpan($db_host["host"],$style)); } while($db_host=DBfetch($db_hosts)){ $style = $db_host["status"]==HOST_STATUS_MONITORED ? NULL: ( $db_host["status"]==HOST_STATUS_TEMPLATE ? "unknown" : "on"); array_push($hosts,", ",new CSpan($db_host["host"],$style)); } $table->AddRow(array( array( new CCheckBox("groups[]",NULL,NULL,NULL,$db_group["groupid"]), SPACE, new CLink( $db_group["name"], "hosts.php?form=update&groupid=".$db_group["groupid"]. url_param("config"),'action') ), $hosts )); } $footerButtons = array(); array_push($footerButtons, new CButton('activate','Activate selected', "return Confirm('".S_ACTIVATE_SELECTED_HOSTS_Q."');")); array_push($footerButtons, SPACE); array_push($footerButtons, new CButton('disable','Disable selected', "return Confirm('".S_DISABLE_SELECTED_HOSTS_Q."');")); array_push($footerButtons, SPACE); array_push($footerButtons, new CButton('delete','Delete selected', "return Confirm('".S_DELETE_SELECTED_GROUPS_Q."');")); $table->SetFooter(new CCol($footerButtons)); $form->AddItem($table); $form->Show(); } } elseif($_REQUEST["config"]==2) { show_table_header(S_TEMPLATE_LINKAGE_BIG); $table = new CTableInfo(S_NO_LINKAGES); $table->SetHeader(array(S_TEMPLATES,S_HOSTS)); $templates = DBSelect("select * from hosts where status=".HOST_STATUS_TEMPLATE. " order by host"); while($template = DBfetch($templates)) { $hosts = DBSelect("select * from hosts where templateid=".$template["hostid"]. " and status in (".HOST_STATUS_MONITORED.",".HOST_STATUS_NOT_MONITORED.")". " order by host"); // if(DBnum_rows($hosts) <= 0) continue; $host_list = array(); while($host = DBfetch($hosts)) { if($host["status"] == HOST_STATUS_NOT_MONITORED) { array_push($host_list, new CSpan($host["host"],"on")); } else { array_push($host_list, $host["host"]); } array_push($host_list,", "); } array_pop($host_list); // remove last ',' $table->AddRow(array( new CSpan(get_template_path($template["hostid"]).$template["host"],"unknown"), $host_list) ); } $table->Show(); } ?>