<?php 
/* 
 * script for dashboard (backend) 
 * License: GNU 
 * Copyright 2016 WebAppFirewall RomanShneer <[email protected]> 
 */ 
session_start(); 
require_once "libs/db.inc.php"; 
 
require_once "libs/waf_report.class.php"; 
 
$WR=new WafReport; 
$segments=$WR->get_segments_statistics(); 
$vars=$WR->get_vars_statistics(); 
$from_date=isset($_GET['from_date'])?$_GET['from_date']:date('d-m-Y',strtotime("-30 days")); 
$to_date=isset($_GET['to_date'])?$_GET['to_date']:date("d-m-Y",strtotime("-1 day")); 
$reqs=$WR->get_dashboard_info($from_date,$to_date); 
#$is_mobile=true; 
#pre($is_mobile); 
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en" lang="en"> 
<head> 
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
<?php require_once "include/head.php"; ?> 
<?php if(!$is_mobile):?> 
<script type="text/javascript"> 
google.charts.load('current', {'packages':['corechart']}); 
 
google.charts.setOnLoadCallback(drawChart); 
function drawChart() { 
    //load segments         
    var data = google.visualization.arrayToDataTable([ 
        ['', ''], 
        ['Approved',     <?php echo $segments[1];?>], 
        ['Unknown',      <?php echo $segments[0];?>] 
    ]); 
    var chart = new google.visualization.PieChart(document.getElementById('segments')); 
    chart.draw(data, {title: '<?php echo array_sum($segments);?> Segments recorded for all time:',pieSliceText: 'label'}); 
    //load vars 
    var data = google.visualization.arrayToDataTable([ 
        ['', ''], 
        ['Approved',     <?php echo $vars[1];?>], 
        ['Unknown',      <?php echo $vars[0];?>] 
    ]); 
    var chart = new google.visualization.PieChart(document.getElementById('vars')); 
    chart.draw(data, {title: '<?php echo array_sum($vars);?> Variables recorded for all time:',pieSliceText: 'label'}); 
     
} 
</script> 
<?php endif;?> 
</head> 
<body> 
<?php include_once 'include/header.php';?>     
<div class="logs_search_form" style="text-align: center;background:#fff;"> 
                <form action="" method="GET">     
                        From Date: <input type="text" id="from_date" name="from_date" size="10" class="inset" value="<?php echo isset($_GET['from_date'])?$_GET['from_date']:date('d-m-Y',strtotime("-30 days"));?>" readonly> 
                        To Date: <input type="text" id="to_date" name="to_date" size="10" class="inset" value="<?php echo isset($_GET['to_date'])?$_GET['to_date']:date("d-m-Y",strtotime("-1 day"));?>" readonly> 
                    <input type="submit"    id="search_logs" value="Search">     
                </form> 
        </div>         
<table border="0" cellpadding="10" cellspacing="10" id="dashboard_tbl"> 
        <tr> 
                <td align="left"> 
                    <div id="segments" style="width: 400px; height: 200px;"><?php if($is_mobile):?><img src="//chart.googleapis.com/chart?cht=p&chd=t:<?php echo $segments[1];?>,<?php echo $segments[0];?>&chs=400x150&chl=Approved|Unknown&chco=0000FF,FF0000&chtt=<?php echo array_sum($segments).' Segments recorded for all time:';?>"><?php endif;?></div> 
                </td> 
                <td align="right"> 
                        <div id="vars" style="width: 400px; height: 200px;"><?php if($is_mobile):?><img src="//chart.googleapis.com/chart?cht=p&chd=t:<?php echo $vars[1];?>,<?php echo $vars[0];?>&chs=400x150&chl=Approved|Unknown&chco=0000FF,FF0000&chtt=<?php echo array_sum($vars).' Variables recorded for all time:';?>"><?php endif;?></div> 
                </td> 
        </tr> 
        <tr> 
                <td colspan="2">                    <?php $m_logs=max($reqs['logs']); $step_logs=pow(10,(strlen((string)$m_logs)-1)); ?> 
                    <div id="logs" style="width: 850px; height: 200px;"><?php if($is_mobile):?><img src="//chart.googleapis.com/chart?chs=830x200&cht=ls&chco=0077CC&chd=t:<?php echo implode(',',$reqs['logs'])?>&chtt=<?php echo array_sum($reqs['logs']);?> Attacks Blocked in last <?php echo count($reqs['logs']);?> days:&chxt=x,y&chxr=0,0,<?php echo count($reqs['logs']);?>,1|1,0,<?php echo $m_logs.",".$step_logs;?>"><?php endif;?></div> 
                </td> 
        </tr> 
        <tr> 
                <td colspan="2"> 
                        <?php 
                        $urls=Array();$nums=Array(); 
                         
                        foreach($reqs['logs_type'] as $lu) 
                        { 
                            $types[]=$lu['type']."   (".$lu['num'].")"; 
                            $type_nums[]=$lu['num']; 
                        } 
                        $m=count($type_nums)?min($type_nums):0;                         
                        if($m)for($z=0;$z<count($type_nums);$z++)$type_nums[$z]=ceil($type_nums[$z]/$m);                         
                        ?> 
                        <div id="logs_type_pie"><?php if($is_mobile):?><img src="//chart.googleapis.com/chart?cht=p&chs=800x220&chd=t:<?php echo implode(',',$type_nums)?>&chl=<?php echo implode('|',$types);?>&chdl=<?php echo implode('|',$types);?>&chco=fb0000,00fb1d,f9fb00,9300fb,00fbdb,1500fb&chtt=Attacks by type"><?php endif;?></div> 
                </td>         
        </tr> 
        <tr> 
                <td colspan="2"> 
                        <?php 
                        $urls=Array();$nums=Array(); 
                        if($reqs['logs_url']) 
                        foreach($reqs['logs_url'] as $lu) 
                        { 
                            $urls[]=$lu['url']."   (".$lu['num'].")";; 
                            $nums[]=$lu['num']; 
                        } 
                        $m=count($nums)?min($nums):0; 
                        if($m)for($z=0;$z<count($nums);$z++)$nums[$z]=ceil($nums[$z]/$m); 
                         
                        ?> 
                        <div id="logs_url_pie"><?php if($is_mobile):?><img src="//chart.googleapis.com/chart?cht=p&chd=s:Uf9a&chs=800x220&chd=t:<?php echo implode(',',$nums)?>&chdl=<?php echo implode('|',$urls)?>&chco=fb0000,00fb1d,f9fb00,9300fb,00fbdb,1500fb&chtt=Top 15 attacked scripts in last 30 days"><?php endif;?></div> 
                </td>         
        </tr> 
         
</table>         
<script> 
function load_logs(json_str){ 
    var logs=JSON.parse(json_str);  
    var dlogs=[['', '']]; 
    var attacks_sum=0; 
    var days=0; 
    for(l in logs) 
    { 
        dlogs.push([new Date(l),logs[l]]); 
        attacks_sum+=parseInt(logs[l]); 
        days++; 
    } 
    var data = google.visualization.arrayToDataTable(dlogs); 
 
        var options = { 
          title: attacks_sum+' Attacks Blocked in last '+days+' days:', 
          hAxis: { format: 'dd/MM', titleTextStyle: {color: '#333'}}, 
          vAxis: {minValue: 0} 
        }; 
 
        var chart = new google.visualization.AreaChart(document.getElementById('logs')); 
        chart.draw(data, options); 
} 
function load_logs_url(json_str){ 
    var logs=JSON.parse(json_str);  
    var dlogs=[['', '']]; 
    for(l in logs) 
    { 
        var url=(logs[l].url.length>0)?logs[l].url:'/'; 
        url+='\t'+'['+parseInt(logs[l].num)+']'; 
         dlogs.push([url,parseInt(logs[l].num)]); 
    } 
    
    var data = google.visualization.arrayToDataTable(dlogs); 
    
    var chart = new google.visualization.PieChart(document.getElementById('logs_url_pie')); 
    chart.draw(data, {title: 'Top 15 attacked scripts in last 30 days'}); 
} 
 
function load_logs_type(json_str){ 
    //load logs_url_pie 
        var logs=JSON.parse(json_str);  
    var dlogs=[['', '']]; 
    for(l in logs) 
    { 
      
         dlogs.push([logs[l].type,parseInt(logs[l].num)]); 
    } 
    
    var data = google.visualization.arrayToDataTable(dlogs); 
    
    var chart = new google.visualization.PieChart(document.getElementById('logs_type_pie')); 
    chart.draw(data, {title: 'Attacks by type',pieSliceText: 'label'}); 
} 
   $(function() { 
        
      $("#from_date" ).datepicker({'dateFormat':'dd-mm-yy',maxDate:0}); 
      $("#to_date" ).datepicker({'dateFormat':'dd-mm-yy',maxDate:0}); 
      google.charts.setOnLoadCallback(function (){ 
          load_logs('<?php echo json_encode($reqs['logs']);?>');            load_logs_type('<?php echo json_encode($reqs['logs_type']);?>');         
          load_logs_url('<?php echo json_encode($reqs['logs_url']);?>'); 
           
      }); 
     }); 
</script>         
</body> 
</html>
 
 |