看懂OSSIM的WebUI菜单源码文件

时间:2024-01-23 22:19:59

       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, Extra open brace or missing close brace 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->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;
    }
}

}

//定义菜单权限

Double subscripts: use braces to clarify perm_m_settings = TRUE; // 检查权限,根据用户日志工具设置用户活动权限 perm_user_activity = this->menus['settings'] = array( "name" => _("Settings"),

// 设置名称 "enabled" => Double subscripts: use braces to clarify 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_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 =