Esempio n. 1
0
 function handler_logs_sessions($page)
 {
     $iter = XDB::iterator('SELECT  id, uid, host, ip, forward_ip, forward_host,
                                    browser, suid, flags, start
                              FROM  log_sessions
                          ORDER BY  start DESC
                             LIMIT  50');
     $sessions = array();
     $users = new Collection('User');
     while ($session = $iter->next()) {
         $user = $users->addget($session['uid']);
         $sessions[$session['id']] = array('user' => $user, 'host' => $session['host'], 'ip' => uint_to_ip($session['ip']), 'forward_host' => $session['forward_host'], 'forward_ip' => uint_to_ip($session['forward_ip']), 'browser' => $session['browser'], 'suid' => $session['suid'], 'flags' => $session['flags'], 'start' => new FrankizDateTime($session['start']));
     }
     $users->select(UserSelect::base());
     $page->assign('title', "Logs des sessions");
     $page->assign('sessions', $sessions);
     $page->changeTpl('admin/logs_sessions.tpl');
 }
Esempio n. 2
0
 function handler_ipwatch($page, $action = 'list', $ip = null)
 {
     $page->changeTpl('admin/ipwatcher.tpl');
     $states = array('safe' => 'Ne pas surveiller', 'unsafe' => 'Surveiller les inscriptions', 'dangerous' => 'Surveiller tous les accès', 'ban' => 'Bannir cette adresse');
     $page->assign('states', $states);
     switch (Post::v('action')) {
         case 'create':
             if (trim(Post::v('ipN')) != '') {
                 S::assert_xsrf_token();
                 Xdb::execute('INSERT IGNORE INTO ip_watch (ip, mask, state, detection, last, uid, description)
                                       VALUES ({?}, {?}, {?}, CURDATE(), NOW(), {?}, {?})', ip_to_uint(trim(Post::v('ipN'))), ip_to_uint(trim(Post::v('maskN'))), Post::v('stateN'), S::i('uid'), Post::v('descriptionN'));
             }
             break;
         case 'edit':
             S::assert_xsrf_token();
             Xdb::execute('UPDATE ip_watch
                          SET state = {?}, last = NOW(), uid = {?}, description = {?}, mask = {?}
                        WHERE ip = {?}', Post::v('stateN'), S::i('uid'), Post::v('descriptionN'), ip_to_uint(Post::v('maskN')), ip_to_uint(Post::v('ipN')));
             break;
         default:
             if ($action == 'delete' && !is_null($ip)) {
                 S::assert_xsrf_token();
                 Xdb::execute('DELETE FROM ip_watch WHERE ip = {?}', ip_to_uint($ip));
             }
     }
     if ($action != 'create' && $action != 'edit') {
         $action = 'list';
     }
     $page->assign('action', $action);
     if ($action == 'list') {
         $sql = "SELECT  w.ip, IF(s.ip IS NULL,\n                                     IF(w.ip = s2.ip, s2.host, s2.forward_host),\n                                     IF(w.ip = s.ip, s.host, s.forward_host)),\n                            w.mask, w.detection, w.state, a.hruid\n                      FROM  ip_watch  AS w\n                 LEFT JOIN  log_sessions AS s  ON (s.ip = w.ip)\n                 LEFT JOIN  log_sessions AS s2 ON (s2.forward_ip = w.ip)\n                 LEFT JOIN  accounts  AS a  ON (a.uid = s.uid)\n                  GROUP BY  w.ip, a.hruid\n                  ORDER BY  w.state, w.ip, a.hruid";
         $it = Xdb::iterRow($sql);
         $table = array();
         $props = array();
         while (list($ip, $host, $mask, $date, $state, $hruid) = $it->next()) {
             $ip = uint_to_ip($ip);
             $mask = uint_to_ip($mask);
             if (count($props) == 0 || $props['ip'] != $ip) {
                 if (count($props) > 0) {
                     $table[] = $props;
                 }
                 $props = array('ip' => $ip, 'mask' => $mask, 'host' => $host, 'detection' => $date, 'state' => $state, 'users' => array($hruid));
             } else {
                 $props['users'][] = $hruid;
             }
         }
         if (count($props) > 0) {
             $table[] = $props;
         }
         $page->assign('table', $table);
     } elseif ($action == 'edit') {
         $sql = "SELECT  w.detection, w.state, w.last, w.description, w.mask,\n                            a1.hruid AS edit, a2.hruid AS hruid, s.host\n                      FROM  ip_watch  AS w\n                 LEFT JOIN  accounts  AS a1 ON (a1.uid = w.uid)\n                 LEFT JOIN  log_sessions AS s  ON (w.ip = s.ip)\n                 LEFT JOIN  accounts  AS a2 ON (a2.uid = s.uid)\n                     WHERE  w.ip = {?}\n                  GROUP BY  a2.hruid\n                  ORDER BY  a2.hruid";
         $it = Xdb::iterRow($sql, ip_to_uint($ip));
         $props = array();
         while (list($detection, $state, $last, $description, $mask, $edit, $hruid, $host) = $it->next()) {
             if (count($props) == 0) {
                 $props = array('ip' => $ip, 'mask' => uint_to_ip($mask), 'host' => $host, 'detection' => $detection, 'state' => $state, 'last' => $last, 'description' => $description, 'edit' => $edit, 'users' => array($hruid));
             } else {
                 $props['users'][] = $hruid;
             }
         }
         $page->assign('ip', $props);
     }
 }