<?php error_reporting(E_ALL | E_STRICT); require '../lib/cli.php'; require '../lib/factory.php'; F::init(); F::$dbo->setProfiling(false); $fields = array('conn' => array('processed' => 0, 'fields' => cli::CAT_FIELDS_CONN), 'rule' => array('processed' => 0, 'fields' => cli::CAT_FIELDS_RULE)); $_l = new nCurse(0, 40, 0, 0); $_l->reset('Process status'); $_l->refresh(); $_r = new nCurse(0, 0, 0, 40); $_r->reset('Process log'); $_r->refresh(); $totals = F::$dbo->fetch('SELECT cat_name, count(id) AS cnt FROM raw_log WHERE cat_name IN ("' . strtoupper(implode('","', array_keys($fields))) . '") GROUP BY cat_name'); foreach ($totals as $tRow) { $_l->sprintf(' %s: 0 of %s', $tRow['cat_name'], number_format($tRow['cnt'], 0)); } $_l->refresh(); foreach ($fields as $cat => $info) { $_r->println('Truncate table `cat_' . $cat . '`'); $_r->refresh(); F::$dbo->query('TRUNCATE `cat_' . $cat . '`'); $_r->println(' Collecting RAW data'); $_r->refresh(); $q = F::$dbo->query('SELECT id, remote_ip, datetime, data FROM raw_log WHERE cat_name = "' . strtoupper($cat) . '" ORDER BY id ASC'); $_r->println(' Processing'); $_r->refresh(); foreach ($q as $row) { $msgRaw = array(); foreach (explode("\n", $row['data']) as $value) {
ksort($gates); } $cats[$catName]++; $gates[$from]++; $_wLeft->reset($fullDate); $_wLeft->println(str_pad('=[Routers]', 23, '=')); foreach ($gates as $ip => $count) { $_wLeft->println(($ip == $from ? ' >' : ' ') . $ip . ': ' . $count); } $_wLeft->println(str_pad('=[Category Rating]', 23, '=')); foreach ($cats as $cat => $count) { $_wLeft->println(($cat == $catName ? ' >' : ' ') . $cat . ': ' . $count); } $_wLeft->println(' ' . str_repeat('=', 21)); $_wLeft->println(' TOTAL: ' . array_sum($cats)); $_wRight->reset('FROM: ' . $from); $_wRight->println($msg); $data = array(); $data['datetime'] = F::$dbo->escape($fullDate, true); $data['d_year'] = $date[0]; $data['d_month'] = $date[1]; $data['d_day'] = $date[2]; $data['d_hour'] = $date[3]; $data['d_minute'] = $date[4]; $data['d_second'] = $date[5]; $data['cat_id'] = $catId; $data['cat_name'] = F::$dbo->escape($catName, true); $data['mark'] = F::$dbo->escape($mark, true); $data['remote_ip'] = F::$dbo->escape($from, true); $data['remote_port'] = $port; $data['data'] = F::$dbo->escape(implode("\n", $msg), true);