2021SC@SDUSC
os-sim/www源码分析之action.php
前言
在分析这个项目的源码时,我对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界面的设计,同时绑定了一些事件响应。
|