menu.inc是一段采用PHP编写的菜单文件,位于/usr/share/ossim/include/classes/,该文件在OSSIM各个版本都会要用到,希望汉化OSSIM菜单的用户需要深入理解段代码的含义,为了便于代码维护和理解,作者对文件中关键代码进行了说明。之前没有汉化WebUI基础的学员可参考https://edu.51cto.com/video/2277.html,阅读本文需要用户具备一定PHP和HTML知识。
下面这是一组调用文件,用来导入信誉类定义、模板文件和av配置参数,建议不要轻易修改否则引起“fatal error”致命错误。 require_once 'classes/Reputation.inc'; require_once 'classes/template.inc'; require_once 'av_config.php';
//这是一个类构造函数 public function __construct($conn, 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->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_user_activity = this->menus['settings'] = array( "name" => _("Settings"),
// 设置名称 "enabled" => this->user->get_login() // 跳转链接 ), "current_sessions" => array( // 当前会话 "name" => _("Current Sessions"),
// 子菜单名称 "enabled" => TRUE, // 启用 "url" => "/userlog/opened_sessions.php"
// 跳转链接
"user_activity" => array(
// 活动用户 "name" => _("User Activity"),
// 设置子菜单名称 "enabled" => $perm_user_activity,
/ 根据权限设置是否启用 "url" => "/userlog/user_action_log.php" // 跳转链接 ) ) ) ) );
//定义Analysis的一级菜单。
菜单选项,包括一级导航和子菜单选项,其中包括 "Alarms" 和其子菜单 "List View" 和 "Group View"。
// 设置分析模块的菜单选项 $this->menus['analysis'] = array( "name" => _("Analysis"),
// 一级导航,菜单名称,用户可以修改,但不能使用中文字符。
"enabled" => $perm_m_analysis, "display" => TRUE, "submenu" => array(
/* Alarms */
"alarms" => array(
"name" => _("Alarms"), // 子菜单名称
"enabled" => $perm_alarms,
"hmenu" => array(
"alarms" => array(
"name" => _("List View"), // 子菜单选项名称
"enabled" => $perm_alarms,
"url" => "/alarm/alarm_console.php?hide_closed=1", // 子菜单跳转链接
"b_param" => "/alarm/alarm_detail.php?backlog=" //链接参数
),
"alarm_groups" => array(
"name" => _("Group View"), // 子菜单选项名称
"enabled" => $perm_alarms,
"url" => "/alarm/alarm_group_console.php?hide_closed=1" // 子菜单跳转链接
)
)
)
)
);
//下面这段代码定义资产环境的权限
/* 对五个下拉菜单的定义 */
/* Assets & Groups */
// 检查对环境菜单中的PolicyHosts、PolicyNetworks和ToolsScan的权限。
$perm_hosts =