function admin_user_table($group_id, $members, $backlink) { global $conf_limit_loadavg_web; $assignments = $stats = $last_access = array(); $assignment_folder_regex = "/^(T|Z|ZSR)\\d+\$/"; // If we have a defined path, we will show the table just for this path $path_log = ""; if (isset($_REQUEST['path'])) { $path_log = $_REQUEST['path']; } $loadavg = `cat /proc/loadavg | cut -d " " -f 1`; if ($loadavg > $conf_limit_loadavg_web) { print "<p>Statistics per assignment is disabled due to high server load ({$loadavg})</p>"; } else { foreach ($members as $login => $fullname) { parse_stats($login, $assignments, $stats, $last_access, $path_log); //if ($_REQUEST['korisnik'] == "egagulic1") print_r($stats); } } ksort($assignments); // Table display $show_others = isset($_REQUEST['show_others']) || isset($_REQUEST['path']) && $_REQUEST['path'] != "TP" && $_REQUEST['path'] != "OR"; // FIXME ?> <table class="users-table <?php if (isset($_REQUEST['korisnik'])) { print "single-user"; } ?> " > <tr><th>Full name</th><th>Last access time</th><th>Options</th> <?php foreach ($assignments as $name => $data) { if ($show_others || preg_match($assignment_folder_regex, $name)) { print "<th>{$name}</th>"; } } if (!$show_others) { $url = "admin.php?"; foreach ($_REQUEST as $key => $value) { if ($url != "admin.php?") { $url .= "&"; } $url .= urlencode($key) . '=' . urlencode($value); } ?> <th>Others - <a href="<?php echo $url; ?> &show_others=true">expand</a></th> <?php } print "</tr>\n"; foreach ($members as $login => $fullname) { $time = $last_access[$login]; if ($time == 0) { $time = "Never"; $action = " "; } else { $time = date("d.m.Y H:i:s", intval($time)); } ?> <tr> <td><a href="?user=<?php echo $login; ?> &backlink=<?php echo $backlink; ?> "><?php echo $fullname; ?> </a></td> <td><?php echo $time; ?> </td> <td> <a href="admin.php?user=<?php echo $login; ?> &action=reset-conf&return=<?php echo $backlink; ?> " onclick="return potvrda('Reset user config', '<?php echo $fullname; ?> ');"> <img src="static/images/gear_wheel.png" width="16" height="16" alt="Reset" title="Reset user config"></a> <a href="admin.php?user=<?php echo $login; ?> &action=logout&return=<?php echo $backlink; ?> " onclick="return potvrda('Logout user', '<?php echo $fullname; ?> ');"><img src="static/images/logout.png" width="16" height="16" alt="Logout" title="Logout user from system"></a> <a href="admin.php?user=<?php echo $login; ?> &action=refresh-stats&return=<?php echo $backlink; ?> " onclick="return potvrda('Update statistics', '<?php echo $fullname; ?> ');"><img src="static/images/refresh.gif" width="16" height="16" alt="Update" title="Update user statistics"></a> <a href="admin.php?collaborate=<?php echo $login; ?> "><i class="fa fa-television"></i> </td> <?php $stats_others = 0; foreach ($assignments as $assignment_name => $data) { // Show assignments named Tn or Zn as they represent tutorials and homework if (!$show_others && !preg_match($assignment_folder_regex, $assignment_name)) { if (array_key_exists($login, $stats) && array_key_exists($assignment_name, $stats[$login])) { $stats_others += $stats[$login][$assignment_name]['time']; } continue; } if (array_key_exists($login, $stats) && array_key_exists($assignment_name, $stats[$login])) { if (isset($_REQUEST['path'])) { $assignment_path = $path_log . "/{$assignment_name}"; } else { $assignment_path = $assignment_name; } ?> <td><a href="?user=<?php echo $login; ?> &path=<?php echo $assignment_path; ?> &backlink=<?php echo $backlink; ?> "> <i class="fa fa-clock-o"></i> <?php echo round($stats[$login][$assignment_name]['time'] / 60, 2); ?> <?php if (array_key_exists('builds', $stats[$login][$assignment_name])) { print "<i class=\"fa fa-wrench\"></i> " . $stats[$login][$assignment_name]['builds']; } if (array_key_exists('builds_succeeded', $stats[$login][$assignment_name])) { print "<i class=\"fa fa-gear\"></i> " . $stats[$login][$assignment_name]['builds_succeeded']; } if (array_key_exists('test_results', $stats[$login][$assignment_name])) { print "<i class=\"fa fa-check\"></i> " . $stats[$login][$assignment_name]['test_results']; } ?> </a></td> <?php } else { print "<td>/</td>"; } } if (!$show_others) { ?> <td><a href="?user=<?php echo $login; ?> "><i class="fa fa-clock-o"></i> <?php echo round($stats_others / 60, 2); ?> </a></td> <?php } print "</th>"; } ?> </table> <p>LEGEND:<br> <i class="fa fa-clock-o"></i> Total time spent (minutes)<br> <i class="fa fa-wrench"></i> Number of builds<br> <i class="fa fa-gear"></i> Number of runs (successful builds)<br> <i class="fa fa-check"></i> Last test results (if user tested the code)</p> <script> var pathLog = '<?php echo $path_log; ?> '; var usersToLoad = [ <?php foreach ($members as $login => $fullname) { print "'{$login}', "; } ?> ]; var allUsers = usersToLoad; </script> <script type="text/javascript" src="/static/js/user_table.js"></script> <?php }
function parse() { $TimeFile = "/etc/artica-postfix/pids/exec.squid.interface-size.php.time"; $pidfile = "/etc/artica-postfix/pids/exec.squid.interface-size.php.pid"; $unix = new unix(); $pid = @file_get_contents($pidfile); if ($pid < 100) { $pid = null; } if ($unix->process_exists($pid, basename(__FILE__))) { $timepid = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["VERBOSE"]) { echo "{$pid} already executed since {$timepid}Mn\n"; } if ($timepid < 14) { return; } $kill = $unix->find_program("kill"); unix_system_kill_force($pid); } @file_put_contents($pidfile, getmypid()); if (!$GLOBALS["VERBOSE"]) { $time = $unix->file_time_min($TimeFile); if ($time < 14) { echo "Current {$time}Mn, require at least 14mn\n"; return; } } @unlink($TimeFile); @file_put_contents($TimeFile, time()); $sock = new sockets(); ThisMonthInterface(); Cached_websites(); $EnableSquidRemoteMySQL = intval($sock->GET_INFO("EnableSquidRemoteMySQL")); $date = date("YW"); $path = "/var/log/squid/{$date}_QUOTASIZE.db"; if (!PUSH_STATS_FILE($path)) { ParseDB_FILE($path); } if (!PUSH_STATS_FILE("/var/log/squid/UserAuthDB.db")) { parse_userauthdb("/var/log/squid/UserAuthDB.db"); } if (!PUSH_STATS_FILE("/var/log/squid/{$date}_size.db")) { parse_size_cache("/var/log/squid/{$date}_size.db"); } parse_stats(); }
$date = date("YW"); if (systemMaxOverloaded()) { events("FATAL! overloaded system: {$GLOBALS["SYSTEM_INTERNAL_LOAD"]} aborting task"); squid_admin_mysql(0, "Overloaded system: {$GLOBALS["SYSTEM_INTERNAL_LOAD"]} aborting task", null, __FILE__, __LINE__); die; } // --meta \"$TEMP_DIR/squidqsize.$uuid.db\" $uuid if ($argv[1] == "--meta") { parse_meta($argv[2], $argv[3]); exit; } if ($argv[1] == "--size") { die; } if ($argv[1] == "--stats-app") { parse_stats(); exit; } if ($argv[1] == "--month") { die; } if ($argv[1] == "--cached") { exit; } if ($argv[1] == "--cache-or-not") { events("Running directly Cache or not (CRON)"); CachedOrNot(); exit; } if ($argv[1] == "--rqs") { die;
header('Content-Type: text/json; charset=UTF-8'); if (isset($_SESSION['login'])) { $login = $_SESSION['login']; $session_id = $_SESSION['server_session']; if (preg_match("/[a-zA-Z0-9]/", $login)) { $logged_in = true; } } else { json(error("ERR001", "Not logged in")); } // Check if user is admin if (!in_array($login, $conf_admin_users)) { json(error("ERR007", "Insufficient privileges")); } if (!isset($_REQUEST['login'])) { json(error("ERR999", "Missing login")); } $assignments = $stats = $last_access = array(); parse_stats($_REQUEST['login'], $assignments, $stats, $last_access, $_REQUEST['path_log']); $result = array(); $result['success'] = "true"; $result['message'] = $msg; $result['data'] = array(); $result['data']['assignments'] = $assignments; $result['data']['stats'] = $stats; $result['data']['last_access'] = $last_access; if (defined("JSON_PRETTY_PRINT")) { print json_encode($result, JSON_PRETTY_PRINT); } else { print json_encode($result); }