zatree插件优化:优化左侧边栏

zatree是监控软件zabbix的一个插件,主要功能是提供host group的树形展示和在item里指定关键字查询及数据排序。

zatree项目地址https://github.com/spide4k/zatree,安装方法进到不同版本目录看readme

    又发现zatree的一个小问题:在zabbix_config.php配置Admin和密码后,任何普通用户在zatree的左侧栏能看到所有的主机组列表,包括没有权限的那些主机组。

    zatree是用zabbix_config.php中配置的用户和密码来获取主机组列表的,因为配置的是Admin超级用户,自然能获取到全部的主机组了。

    因此优化了zatree左侧边栏,使普通用户只能看到属于自己的主机组列表。原理是zabbix_ajax.php获取cookie中的sessionid,通过这个sessionid获取登录用户的主机组列表。

wKiom1PWE5qzNhesAAEDA8i2LmI205.jpg

    修改方法如下这里针对zatreezabbix-2.2.x版本做修改,方法同样适合zabbix-2.0.x版本

    进入zatree目录,修改以下两个文件:
    第一步:zabbix_ajax.php
传递$_COOKIE['zbx_sessionid']给hostgroupGet(),获取当前用户具有readable权限的主机组列表。

        $groups = $zabbixApi->hostgroupGet(array("output" => "extend", "monitored_hosts" => true));

修改为:

        if(isset($_COOKIE['zbx_sessionid'])){
            $groups = $zabbixApi->hostgroupGet(array("output" => "extend", "monitored_hosts" => true), '', $_COOKIE['zbx_sessionid']);
        } else {
            $groups = $zabbixApi->hostgroupGet(array("output" => "extend", "monitored_hosts" => true));
        }

    第二步:ZabbixApiAbstract.class.php
修改2594行hostgroupGet方法,添加$sessionid形参。当传入$sessionid参数时,设置$this->auth的值为$sessionid。

    public function hostgroupGet($params=array(), $arrayKeyProperty='')
    {
        // get params array for request
        $params = $this->getRequestParamsArray($params);

        // request
        return $this->request('hostgroup.get', $params, $arrayKeyProperty);
    }

修改为:

    public function hostgroupGet($params=array(), $arrayKeyProperty='', $sessionid='')
    {
        // get params array for request
        $params = $this->getRequestParamsArray($params);

        // request
        if (isset($sessionid))
            $this->auth = $sessionid;
        return $this->request('hostgroup.get', $params, $arrayKeyProperty);
    }

链接地址:https://github.com/spide4k/zatree/pull/2

   


你可能感兴趣的:(zabbix,zatree优化,zatree)