OSSIM项目研究记录(十二)

2021SC@SDUSC


前言

在分析这个项目的源码时,我对php还不太了解,所以先了学习一些基础知识,然后根据代码自行理解遇到具体问题再去查阅。

PHP 是 PHP Hypertext Preprocessor(超文本与处理器)的首字母缩写。
PHP有多种用途,特别是web网站开发。快速,灵活,实用使得php能够更好的开发任何网站。
PHP 是一种 HTML 嵌入式的脚本语言。php文件以.php结尾。它的很多语法来自 C,Java 和 Perl,并具有几个 PHP 独有的特点。该语言的主要目标是让 Web 开发人员快速地书写动态生成的网页。
几个基本常识:

  • 指令分隔符 “;”
  • 输出语句:echo() 、 print()、 print_r()、var_dump()
  • 变量是弱类型的,即不需要实现声明类型、unset()函数释放指定的变量
  • 变量以$ 开始,常量不能加$
  • 脚本以<?php开始 ,以 ?>结束
  • 注释 // /* … */

一、php部分

<?php
require_once 'av_init.php';

Session::logcheck("configuration-menu", "PolicyActions");

// load column layout
require_once '../conf/layout.php';

$category    = "policy";
$name_layout = "actions_layout";
$layout      = load_layout($name_layout, $category);

?>

1、require_once()是php文件中作用是引入,此行为和require()语句类似,但区别是如果该文件中的代码已经被包含了,则不会再次包含。
2、Session::logcheck检查登录用户的访问权限
3、load_layout加载页面

二、html部分

2.1、head部分

1)

<title> <?php echo gettext("OSSIM Framework"); ?> </title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    	<meta http-equiv="Pragma" content="no-cache"/>
    	<meta http-equiv="X-UA-Compatible" content="IE=7" />
    	
    	<link rel="stylesheet" type="text/css" href="../style/av_common.css?t=<?php echo Util::get_css_id() ?>"/>
    	<link rel="stylesheet" type="text/css" href="../style/flexigrid.css"/>
    	
    	<script type="text/javascript" src="../js/jquery.min.js"></script>
    	<script type="text/javascript" src="../js/jquery.flexigrid.js"></script>
    	<script type="text/javascript" src="../js/urlencode.js"></script>
  • meta中的http-equiv="X-UA-Compatible"是针对IE8新加的一个设置,避免制作出的页面在IE8下面出现错误,将IE8使用IE7进行渲染。其余的信息,可以参考meta的使用文档。
  • link和script都是在引入.css文件和.js文件

2)style部分是页面渲染的内容,我对此进行略过,重点分析script部分。
scipt部分有五个function,分别对应五个不同功能

            function menu_action(com,id,fg,fp) 
            {
                if (com=='modify') 
                {
                    if (typeof(id) != 'undefined')
                    {
                        document.location.href = 'actionform.php?id='+id;
                    }
                    else
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
                }
                else if (com=='delete') 
                {
                    if (typeof(id) != 'undefined') 
                    {
                        if (confirm("<?php echo Util::js_entities(_('Are you sure you want to delete the selected action?')) ?>"))
                        {
                            $("#flextable").changeStatus('<?=_("Deleting action")?>...',false);
                            $.ajax({
                                type: "GET",
                                url: "deleteaction.php?id="+urlencode(id),
                                data: "",
                                success: function(msg) {
                                    $("#flextable").flexReload();
                                }
                            });
                        }
                    }
                    else 
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
                }
                else if (com == 'new')
                {
                    document.location.href = 'actionform.php';
                }
            }

负责目录修改和删除事件的响应。

        	function action(com,grid) 
        	{
        		var items = $('.trSelected', grid);
        		
        		if (com=='<?php echo _("Delete selected");?>') 
        		{
        			//Delete host by ajax
        			if (typeof(items[0]) != 'undefined') 
        			{
                        if (confirm("<?php echo Util::js_entities(_('Are you sure you want to delete the selected action?')) ?>"))
                        {
            				$("#flextable").changeStatus('<?=_("Deleting action")?>...',false);
            				
            				$.ajax(
            				{
        						type: "GET",
        						url: "deleteaction.php?id="+urlencode(items[0].id.substr(3)),
        						data: "",
        						success: function(msg) {
        							$("#flextable").flexReload();
        						}
            				});
                        }
        			}
        			else 
        			{
            			alert('<?php echo Util::js_entities(_("Action unselected"))?>');
        			}
        			     
        		}
        		else if (com=='<?php echo _("Modify");?>') 
        		{
                    if (typeof(items[0]) != 'undefined')
                    {
                        document.location.href = 'actionform.php?id='+urlencode(items[0].id.substr(3))	
                    } 
                    else 
                    {
                        alert('<?php echo Util::js_entities(_("Action unselected"))?>');
                    }
                    
        		}
        		else if (com=='<?php echo _("New");?>') 
        		{
        			document.location.href = 'actionform.php'
        		}
        	}
        	

负责修改和删除的实现。


            function apply_changes()
            {
                <?php $back = preg_replace ('/([&|?]msg=)(w+)/', '\1', $_SERVER["REQUEST_URI"]);?>
                document.location.href = '../conf/reload.php?what=policies&back=<?php echo urlencode($back);?>';
            }

切换到新的路由,且用 document.location.href切换后,可以退回到原页面。

2.2、body部分

实现了一个按钮

 <?php
            if (Web_indicator::is_on("Reload_policies"))
            {
                echo "<button class='button' οnclick='apply_changes()'>"._("Apply Changes")."</button>";
            }
        ?>

对应前文的修改删除等操作目录。

 <ul id="myMenu" class="contextMenu" style="width:110px">
            <li class="hostreport"><a href="#new" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_row_insert.png" align="absmiddle"/> <?=_("New Action")?></a></li>
            <li class="hostreport"><a href="#modify" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_edit.png" align="absmiddle"/> <?=_("Modify")?></a></li>
            <li class="hostreport"><a href="#delete" class="greybox" style="padding:3px"><img src="../pixmaps/tables/table_row_delete.png" align="absmiddle"/> <?=_("Delete")?></a></li>
        </ul>

总结

OSSIM本质上通过对各种探测器和监控产生的告警进行格式化处理,再进行关联分析,通过后期处理 ,通过图形化界面展示给用户。这里www目录主要实现web界面的设计,同时绑定了一些事件响应。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
)">
< <上一篇
下一篇>>