diff options
author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-04 11:58:53 +0000 |
---|---|---|
committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-04 11:58:53 +0000 |
commit | 8850b23b07e03ea95cd335183f54ed305a5e00ba (patch) | |
tree | 03132ca7f924cb09c1f7437c889512bda4a885f9 /frontends/php/audit.php | |
parent | a96322ba711caad8f6e3681ebf0e44f02853b23f (diff) | |
download | zabbix-8850b23b07e03ea95cd335183f54ed305a5e00ba.tar.gz zabbix-8850b23b07e03ea95cd335183f54ed305a5e00ba.tar.xz zabbix-8850b23b07e03ea95cd335183f54ed305a5e00ba.zip |
- [DEV-124] screen actions moved to Audit, added filter for Audit (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5590 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/audit.php')
-rw-r--r-- | frontends/php/audit.php | 335 |
1 files changed, 261 insertions, 74 deletions
diff --git a/frontends/php/audit.php b/frontends/php/audit.php index ff0ac70e..6ce3e40b 100644 --- a/frontends/php/audit.php +++ b/frontends/php/audit.php @@ -21,109 +21,296 @@ <?php require_once "include/config.inc.php"; require_once "include/audit.inc.php"; + require_once "include/actions.inc.php"; + require_once "include/users.inc.php"; - $page["title"] = "S_AUDIT_LOG"; + $page["title"] = "S_AUDIT"; $page["file"] = "audit.php"; - $page['hist_arg'] = array(); + $page['hist_arg'] = array('prev','next'); + $page['scripts'] = array('calendar.js'); - define('ZBX_PAGE_DO_REFRESH', 1); + $page['type'] = detect_page_type(PAGE_TYPE_HTML); + + if(PAGE_TYPE_HTML == $page['type']){ + define('ZBX_PAGE_DO_REFRESH', 1); + } + + define("PAGE_SIZE", 100); + + $_REQUEST["config"] = get_request("config",get_profile("web.audit.config",0)); include_once "include/page_header.php"; - - $PAGE_SIZE = 100; ?> <?php // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields=array( - "start"=> array(T_ZBX_INT, O_OPT, P_SYS, BETWEEN(0,65535)."({}%".$PAGE_SIZE."==0)", NULL), + "config"=> array(T_ZBX_INT, O_OPT, P_SYS, IN("0,1"), NULL), + +// actions + "groupid"=> array(T_ZBX_INT, O_OPT, P_SYS|P_NZERO, DB_ID, NULL), + "hostid"=> array(T_ZBX_INT, O_OPT, P_SYS|P_NZERO, DB_ID, NULL), + "start"=> array(T_ZBX_INT, O_OPT, P_SYS, BETWEEN(0,65535)."({}%".PAGE_SIZE."==0)", NULL), "next"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), - "prev"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL) + "prev"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), + +// filter + "filter_rst"=> array(T_ZBX_INT, O_OPT, P_SYS, IN(array(0,1)), NULL), + "filter_set"=> array(T_ZBX_STR, O_OPT, P_SYS, null, NULL), + + "userid"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL), + + 'filter_timesince'=> array(T_ZBX_INT, O_OPT, P_UNSET_EMPTY, null, NULL), + 'filter_timetill'=> array(T_ZBX_INT, O_OPT, P_UNSET_EMPTY, null, NULL), + +//ajax + 'favobj'=> array(T_ZBX_STR, O_OPT, P_ACT, NULL, NULL), + 'favid'=> array(T_ZBX_STR, O_OPT, P_ACT, NOT_EMPTY, 'isset({favobj})'), + 'state'=> array(T_ZBX_INT, O_OPT, P_ACT, NOT_EMPTY, 'isset({favobj}) && ("filter"=={favobj})'), ); check_fields($fields); -?> -<?php - $start = get_request("start", 0); - $prev = get_request("prev", null); - $next = get_request("next", null); + validate_sort_and_sortorder(); + +/* AJAX */ + if(isset($_REQUEST['favobj'])){ + if('filter' == $_REQUEST['favobj']){ + update_profile('web.audit.filter.state',$_REQUEST['state']); + } + } + + if((PAGE_TYPE_JS == $page['type']) || (PAGE_TYPE_HTML_BLOCK == $page['type'])){ + exit(); + } +//-------- +/* FILTER */ + if(isset($_REQUEST['filter_rst'])){ + $_REQUEST['userid'] = 0; + + $_REQUEST['filter_timesince'] = 0; + $_REQUEST['filter_timetill'] = 0; + } + + $_REQUEST['userid'] = get_request('userid',get_profile('web.audit.filter.userid',0)); + + $_REQUEST['filter_timesince'] = get_request('filter_timesince',get_profile('web.audit.filter.timesince',0)); + $_REQUEST['filter_timetill'] = get_request('filter_timetill',get_profile('web.audit.filter.timetill',0)); + + if(($_REQUEST['filter_timetill'] > 0) && ($_REQUEST['filter_timesince'] > $_REQUEST['filter_timetill'])){ + $tmp = $_REQUEST['filter_timesince']; + $_REQUEST['filter_timesince'] = $_REQUEST['filter_timetill']; + $_REQUEST['filter_timetill'] = $tmp; + } + + if(isset($_REQUEST['filter_set']) || isset($_REQUEST['filter_rst'])){ + update_profile('web.audit.filter.userid',$_REQUEST['userid']); + + update_profile('web.audit.filter.timesince',$_REQUEST['filter_timesince']); + update_profile('web.audit.filter.timetill',$_REQUEST['filter_timetill']); + } +// -------------- - if($start > 0 && isset($prev)) $start -= $PAGE_SIZE; - if(isset($next)) $start += $PAGE_SIZE; + $config = $_REQUEST["config"]; + update_profile("web.hosts.config",$_REQUEST["config"]); + + + $_REQUEST["start"] = get_request("start", 0); + $_REQUEST["start"]-=(isset($_REQUEST["prev"]))?PAGE_SIZE:0; + $_REQUEST["start"]+=(isset($_REQUEST["next"]))?PAGE_SIZE:0; + $_REQUEST["start"]=($_REQUEST["start"])?$_REQUEST["start"]:0; + + - $limit = $start+$PAGE_SIZE; ?> <?php - global $USER_DETAILS; - - $result = DBselect("select u.alias,a.clock,a.action,a.resourcetype,a.details from auditlog a, users u". - " where u.userid=a.userid ". - ' and '.DBin_node('u.userid', get_current_nodeid(null, PERM_READ_ONLY)). - " order by clock desc", - $limit); - - $table = new CTableInfo(); - $table->setHeader(array(S_TIME,S_USER,S_RESOURCE,S_ACTION,S_DETAILS)); - for($i=0; $row=DBfetch($result); $i++) - { - if($i<$start) continue; - - switch($row["action"]){ - case AUDIT_ACTION_ADD: - $action = S_ADDED; - break; - case AUDIT_ACTION_UPDATE: - $action = S_UPDATED; - break; - case AUDIT_ACTION_DELETE: - $action = S_DELETED; - break; - case AUDIT_ACTION_LOGIN: - $action = S_LOGIN; - break; - case AUDIT_ACTION_LOGOUT: - $action = S_LOGOUT; - break; - case AUDIT_ACTION_ENABLE: - $action = S_ENABLED; - break; - case AUDIT_ACTION_DISABLE: - $action = S_DISABLED; - break; - default: - $action = S_UNKNOWN_ACTION; + $sql_cond=($_REQUEST['userid'])?(' AND a.userid='.$_REQUEST['userid'].' '):(''); + $sql_cond.=($_REQUEST['filter_timesince'])?' AND a.clock>'.$_REQUEST['filter_timesince']:' AND a.clock>100'; + $sql_cond.=($_REQUEST['filter_timetill'])?' AND a.clock<'.$_REQUEST['filter_timetill']:''; + + $frmForm = new CForm(); + $frmForm->SetMethod('get'); + + $cmbConf = new CComboBox("config",$_REQUEST["config"],"submit()"); + $cmbConf->AddItem(0,S_AUDIT_LOGS); + $cmbConf->AddItem(1,S_AUDIT_ACTIONS); + + $frmForm->AddItem($cmbConf); + + show_table_header(S_AUDIT_BIG, $frmForm); + + + if(0 == $config){ + $table = new CTableInfo(); + $table->setHeader(array( + make_sorting_link(S_TIME,'a.clock'), + make_sorting_link(S_USER,'u.alias'), + S_RESOURCE, + S_ACTION, + S_DETAILS)); + + $result = DBselect('SELECT u.alias,a.clock,a.action,a.resourcetype,a.details '. + ' FROM auditlog a, users u '. + ' WHERE u.userid=a.userid '. + $sql_cond. + ' AND '.DBin_node('u.userid', get_current_nodeid(null, PERM_READ_ONLY)). + order_by('a.clock,u.alias'), + $_REQUEST['start']+PAGE_SIZE); + + + for($i=0; $row=DBfetch($result); $i++){ + if($i<$start) continue; + + switch($row["action"]){ + case AUDIT_ACTION_ADD: + $action = S_ADDED; + break; + case AUDIT_ACTION_UPDATE: + $action = S_UPDATED; + break; + case AUDIT_ACTION_DELETE: + $action = S_DELETED; + break; + case AUDIT_ACTION_LOGIN: + $action = S_LOGIN; + break; + case AUDIT_ACTION_LOGOUT: + $action = S_LOGOUT; + break; + case AUDIT_ACTION_ENABLE: + $action = S_ENABLED; + break; + case AUDIT_ACTION_DISABLE: + $action = S_DISABLED; + break; + default: + $action = S_UNKNOWN_ACTION; + } + + $table->addRow(array( + date("Y.M.d H:i:s",$row["clock"]), + $row["alias"], + audit_resource2str($row["resourcetype"]), + $action, + $row["details"] + )); } + + show_table_header(S_AUDIT_LOGS,null); + } + else if(1 == $config){ + $table = get_history_of_actions($_REQUEST["start"], PAGE_SIZE, $sql_cond); + + show_table_header(S_AUDIT_ACTIONS,null); + } + +/************************* FILTER **************************/ +/***********************************************************/ - $table->addRow(array( - date("Y.M.d H:i:s",$row["clock"]), - $row["alias"], - audit_resource2str($row["resourcetype"]), - $action, - $row["details"] - )); + $prev = 'Prev 100'; + $next = 'Next 100'; + if($_REQUEST["start"] > 0){ + $prev = new Clink('Prev '.PAGE_SIZE, 'audit.php?prev=1'.url_param('start'),'styled'); } + + if($table->GetNumRows() >= PAGE_SIZE){ + $next = new Clink('Next '.PAGE_SIZE, 'audit.php?next=1'.url_param('start'),'styled'); + } - $form = new CForm(); - $form->SetMethod('get'); + $filterForm = new CFormTable(S_FILTER);//,'events.php?filter_set=1','POST',null,'sform'); + $filterForm->AddOption('name','zbx_filter'); + $filterForm->AddOption('id','zbx_filter'); + $filterForm->SetMethod('get'); + + $script = new CScript("javascript: if(CLNDR['audit_since'].clndr.setSDateFromOuterObj()){". + "$('filter_timesince').value = parseInt(CLNDR['audit_since'].clndr.sdt.getTime()/1000);}". + "if(CLNDR['audit_till'].clndr.setSDateFromOuterObj()){". + "$('filter_timetill').value = parseInt(CLNDR['audit_till'].clndr.sdt.getTime()/1000);}" + ); + $filterForm->AddAction('onsubmit',$script); + + $filterForm->AddVar('filter_timesince',($_REQUEST['filter_timesince']>0)?$_REQUEST['filter_timesince']:''); + $filterForm->AddVar('filter_timetill',($_REQUEST['filter_timetill']>0)?$_REQUEST['filter_timetill']:''); +//* + $clndr_icon = new CImg('images/general/bar/cal.gif','calendar', 16, 12, 'pointer'); + $clndr_icon->AddAction('onclick',"javascript: var pos = getPosition(this); pos.top+=10; pos.left+=16; CLNDR['audit_since'].clndr.clndrshow(pos.top,pos.left);"); - $form->AddVar("start",$start); + $filtertimetab = new CTable(); + $filtertimetab->AddOption('width','10%'); + $filtertimetab->SetCellPadding(0); + $filtertimetab->SetCellSpacing(0); - $btnPrev = new CButton("prev","<< Prev ".$PAGE_SIZE); - if($start <= 0) - $btnPrev->SetEnabled('no'); + $filtertimetab->AddRow(array( + S_FROM, + new CNumericBox('filter_since_day',(($_REQUEST['filter_timesince']>0)?date('d',$_REQUEST['filter_timesince']):''),2), + '/', + new CNumericBox('filter_since_month',(($_REQUEST['filter_timesince']>0)?date('m',$_REQUEST['filter_timesince']):''),2), + '/', + new CNumericBox('filter_since_year',(($_REQUEST['filter_timesince']>0)?date('Y',$_REQUEST['filter_timesince']):''),4), + new CNumericBox('filter_since_hour',(($_REQUEST['filter_timesince']>0)?date('H',$_REQUEST['filter_timesince']):''),2), + ':', + new CNumericBox('filter_since_minute',(($_REQUEST['filter_timesince']>0)?date('i',$_REQUEST['filter_timesince']):''),2), + $clndr_icon + )); + zbx_add_post_js('create_calendar(null,["filter_since_day","filter_since_month","filter_since_year","filter_since_hour","filter_since_minute"],"audit_since");'); - $btnNext = new CButton("next","Next ".$PAGE_SIZE." >>"); - if($i < $limit) - $btnNext->SetEnabled('no'); + $clndr_icon->AddAction('onclick',"javascript: var pos = getPosition(this); pos.top+=10; pos.left+=16; CLNDR['audit_till'].clndr.clndrshow(pos.top,pos.left);"); + $filtertimetab->AddRow(array( + S_TILL, + new CNumericBox('filter_till_day',(($_REQUEST['filter_timetill']>0)?date('d',$_REQUEST['filter_timetill']):''),2), + '/', + new CNumericBox('filter_till_month',(($_REQUEST['filter_timetill']>0)?date('m',$_REQUEST['filter_timetill']):''),2), + '/', + new CNumericBox('filter_till_year',(($_REQUEST['filter_timetill']>0)?date('Y',$_REQUEST['filter_timetill']):''),4), + new CNumericBox('filter_till_hour',(($_REQUEST['filter_timetill']>0)?date('H',$_REQUEST['filter_timetill']):''),2), + ':', + new CNumericBox('filter_till_minute',(($_REQUEST['filter_timetill']>0)?date('i',$_REQUEST['filter_timetill']):''),2), + $clndr_icon + )); + zbx_add_post_js('create_calendar(null,["filter_till_day","filter_till_month","filter_till_year","filter_till_hour","filter_till_minute"],"audit_till");'); + + zbx_add_post_js('addListener($("filter_icon"),"click",CLNDR[\'audit_since\'].clndr.clndrhide.bindAsEventListener(CLNDR[\'audit_since\'].clndr));'. + 'addListener($("filter_icon"),"click",CLNDR[\'audit_till\'].clndr.clndrhide.bindAsEventListener(CLNDR[\'audit_till\'].clndr));' + ); + + $filterForm->AddRow(S_PERIOD, $filtertimetab); +//*/ + $filterForm->AddVar('userid',$_REQUEST['userid']); + + if(isset($_REQUEST['userid']) && ($_REQUEST['userid']>0)){ + $user = get_user_by_userid($_REQUEST['userid']); + } + else{ + $user['alias'] = ''; + } + $row = new CRow(array( + new CCol(($config)?S_RECIPIENT:S_USER,'form_row_l'), + new CCol(array( + new CTextBox("user",$user['alias'],32,'yes'), + new CButton("btn1",S_SELECT,"return PopUp('popup.php?"."dstfrm=".$filterForm->GetName()."&dstfld1=userid&dstfld2=user"."&srctbl=users&srcfld1=userid&srcfld2=alias&real_hosts=1');",'T') + ),'form_row_r') + )); + + $filterForm->AddRow($row); - $form->AddItem(array( - $btnPrev, - $btnNext - )); + $reset = new CButton("filter_rst",S_RESET); + $reset->SetType('button'); + $reset->SetAction('javascript: var uri = new url(location.href); uri.setArgument("filter_rst",1); location.href = uri.getUrl();'); - show_table_header(S_AUDIT_LOG_BIG,$form); + $filterForm->AddItemToBottomRow($reset); + $filterForm->AddItemToBottomRow(new CButton("filter_set",S_FILTER)); + + $navigation = array( + new CSpan(array('« ',$prev),'textcolorstyles'), + new CSpan(' | ','divider'), + new CSpan(array($next,' »'),'textcolorstyles')); + + $filter = create_filter(S_FILTER,$navigation,$filterForm,'tr_filter',get_profile('web.audit.filter.state',0)); + $filter->Show(); +//------- $table->show(); + + show_thin_table_header(SPACE,$navigation); ?> <?php |