#!/usr/bin/php -Cq $val ) { $time_now = time(); if ( ( $time_now - $users[$key]['timeClient'] ) < DISCONNECT_AFTERWARDS_OF ) { readSocket($users, $key); } else { if((($time_now - $users[$key]['timeClient']) / DISCONNECT_AFTERWARDS_OF) > 2 ) { $users[$key]['jabber']->disconnect(); unset($users[$key]); } else { readSocket($users, $key); } } } } exit(0); function connect(&$pUsers, $pSession) { global $users; $sessionpath = explode(';', session_save_path()); foreach ( $sessionpath as $path ) { $path = ( strrpos($path, '/') == strlen($path) - 1 ) ? $path : $path . '/'; if ( file_exists($path . 'sess_' . $pSession) ) { session_id($pSession); ob_start(); session_start(); ob_clean(); ob_end_flush(); $is_user = isset($_SESSION['phpgw_info']['instant_messenger']['user']) and isset($_SESSION['phpgw_info']['instant_messenger']['passwd']); if ( $is_user ) { $_user = $_SESSION['phpgw_info']['instant_messenger']['user']; $_pass = $_SESSION['phpgw_info']['instant_messenger']['passwd']; $_server = $_SESSION['phpgw_info']['instant_messenger']['name_jabber']; $_port = $_SESSION['phpgw_info']['instant_messenger']['port_jabber']; $_resource = $_SESSION['phpgw_info']['instant_messenger']['resource_jabber']; $_time = time(); $_SESSION['phpgw_info']['instant_messenger']['timeClient'] = $_time; $_SESSION['phpgw_info']['instant_messenger']['timeServer'] = $_time; $_SESSION['phpgw_info']['instant_messenger']['socket'] = NULL; $_SESSION['phpgw_info']['instant_messenger']['socket']['in'] = NULL; $_SESSION['phpgw_info']['instant_messenger']['socket']['out'] = array(); $_SESSION['phpgw_info']['instant_messenger']['socket']['out']['message'] = NULL; $_SESSION['phpgw_info']['instant_messenger']['socket']['block'] = false; session_write_close(); $a = new Jabberd2; if ( ($a->connect($_user . '@' . $_server . '/' . $_resource . ':' . $_port, $_pass)) ) { $pUsers[$pSession] = array(); $pUsers[$pSession]['jabber'] = $a; $pUsers[$pSession]['timeClient'] = $_time; } else { unset($a); } break; } session_write_close(); } } } function close($pUser) { global $users; $users[$pUser]['jabber']->disconnect(); unset($users[$pUser]); } function readSocket(&$pUsers, $pSession) { global $send; $sessionpath = explode(';', session_save_path()); foreach ( $sessionpath as $path ) { $path = ( strrpos($path, '/') == strlen($path) - 1 ) ? $path : $path . '/'; if ( file_exists($path . 'sess_' . $pSession) ) { session_id($pSession); ob_start(); session_start(); ob_clean(); ob_end_flush(); $is_user = isset($_SESSION['phpgw_info']['instant_messenger']['user']) and isset($_SESSION['phpgw_info']['instant_messenger']['passwd']); if ( $is_user ) { $pUsers[$pSession]['timeClient'] = $_SESSION['phpgw_info']['instant_messenger']['timeClient']; $_SESSION['phpgw_info']['instant_messenger']['timeServer'] = time(); $readSocket = @$pUsers[$pSession]['jabber']->readSocket(); $connection_close_timeout = strpos($readSocket, ""); if ( ($readSocket !== false) && ($connection_close_timeout === false ) && ($connection_close_server === false )) { $_SESSION['phpgw_info']['instant_messenger']['IM_disconnect'] = false; if ( !empty($readSocket) ) { $_SESSION['phpgw_info']['instant_messenger']['socket']['in'] .= $readSocket; } if ( $_SESSION['phpgw_info']['instant_messenger']['socket']['out'] ) foreach ( $_SESSION['phpgw_info']['instant_messenger']['socket']['out'] as $action => $value ) { if ( $action === 'message' ) { if ( !is_null($value) ) { $pUsers[$pSession]['jabber']->writeSocket($value); $_SESSION['phpgw_info']['instant_messenger']['socket']['out']['message'] = NULL; } } else if ( $action === 'vcard' ) { if ( !empty($value) ) { foreach ( $value as $key => $val ) { $pUsers[$pSession]['jabber']->getVcard($val); unset($_SESSION['phpgw_info']['instant_messenger']['socket']['out']['vcard'][$key]); } } } else { if ( method_exists($pUsers[$pSession]['jabber'], $action) ) if ( $value ) $pUsers[$pSession]['jabber']->$action($value); else $pUsers[$pSession]['jabber']->$action(); unset($_SESSION['phpgw_info']['instant_messenger']['socket']['out'][$action]); } } } else { $_SESSION['phpgw_info']['instant_messenger']['IM_disconnect'] = true; close($pSession); } break; } else { close($pSession); } break; } } session_write_close(); } ?>