menu.inc是一段采用PHP编写的菜单文件,在OSSIM各个版本都会要用到,对于希望汉化OSSIM菜单的用户需要深入理解段代码的含义,为了便于代码维护和理解,作者对文件中关键代码进行了说明。阅读本文需要用户具备一定PHP和HTML知识。
一、版权信息
* @package ossim-framework\Administration
* @autor AlienVault INC
* @license http://www.gnu.org/licenses/gpl-2.0.txt
* @copyright 2003-2006 ossim.net
* @copyright 2007-2013 AlienVault
* @link AT&T Cybersecurity | Managed Security Services for Network, XDR & more
二、权限设置
这一部分主要介绍定义菜单和模板的权限。下面这是一组调用文件,用来导入信誉类定义、模板文件和av配置参数,建议不要轻易修改否则引起“fatal error”致命错误。
require_once 'classes/Reputation.inc';
require_once 'classes/template.inc';
require_once 'av_config.php';
//这是一个类构造函数
public function __construct($conn, $login = '')
{
Ossim_db::check_connection($conn);
// 从数据库中获取用户信息
$this->user = Session::get_user_info($conn, $login);
if (empty($this->user))
{
$exp_msg = _('Error! Menu class not created. Logged user not found in the System');
Av_exception::throw_error(Av_exception::USER_ERROR, $exp_msg);
}
//获取管理员admin的菜单权限
// 初始化一个空数组,用于存储允许访问的菜单$this->allowed_menus = array();
// 如果用户不是管理员if (!$this->is_user_admin())
// 重新初始化为空数组,以确保不会受到任何预先设置的影响
$this->allowed_menus = array();
// 实例化一个模板对象,并从数据库加载模板数据
$template = new Template($conn, $this->user->get_template_id());
$template->load_from_db($conn);
// 获取模板的权限信息
$template_perms = $template->get_perms();
// 如果权限信息是数组且不为空
if (is_array($template_perms) && !empty($template_perms))
{
// 遍历权限信息,将权限数据存入allowed_menus数组
foreach($template_perms as $perm_data)
{
$perm_data = explode('###', $perm_data);
$this->allowed_menus[$perm_data[0]][$perm_data[1]] = 1;
}
}
}
下面这是对安全相关的部分,定义菜单权限。
$perm_m_settings = TRUE;
// 检查权限,根据用户日志工具设置用户活动权限
$perm_user_activity = $this->check_perm("settings-menu", "ToolsUserLog");
$this->menus['settings'] = array(
"name" => _("Settings"), // 设置名称
"enabled" => $perm_m_settings, // 设置是否启用
"display" => FALSE, // 设置是否显示
"submenu" => array(
"settings" => array( // 子菜单项
"name" => _("Settings"), // 子菜单名称
"enabled" => TRUE, // 子菜单是否启用
"hmenu" => array( // 子菜单列表
"my_profile" => array(
"name" => _("My Profile"), // 子菜单名称
"enabled" => TRUE, // 启用
"url" => "/session/user_form.php?login=".$this->user->get_login() // 跳转链接
),
"current_sessions" => array( // 当前会话
"name" => _("Current Sessions"), // 子菜单名称
"enabled" => TRUE, // 启用
"url" => "/userlog/opened_ses