Понадобилось мне тут проверить толи мои блютуз устройства (колонка с микрофоном для мультирума) в онлайне или оффлайне (сел акумулятор или чтото подобное).
Да и еще модуль работает нормально - но я так и не добился быстрого срабатывания..
(Все срабатывает через время)
Немного поколупав код и посмотрев все что смог понять сделал такое -
1. Скопировал в папку apps комплект программ (архив прилагаю)..
2. Добавил функцию в general.class.php - (после функции пинга )
После вот таких строчек -
СпойлерПоказать
/**
* Ping host
* @param mixed $host Host address
* @return bool
*/
function ping($host)
{
if (IsWindowsOS())
exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
elseif (substr(php_uname(), 0, 7) === "FreeBSD")
exec(sprintf('ping -c 1 -t 5 %s', escapeshellarg($host)), $res, $rval);
else
exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
return $rval === 0 && preg_match('/ttl/is', join('', $res));
}
* Ping host
* @param mixed $host Host address
* @return bool
*/
function ping($host)
{
if (IsWindowsOS())
exec(sprintf('ping -n 1 %s', escapeshellarg($host)), $res, $rval);
elseif (substr(php_uname(), 0, 7) === "FreeBSD")
exec(sprintf('ping -c 1 -t 5 %s', escapeshellarg($host)), $res, $rval);
else
exec(sprintf('ping -c 1 -W 5 %s', escapeshellarg($host)), $res, $rval);
return $rval === 0 && preg_match('/ttl/is', join('', $res));
}
СпойлерПоказать
/**
* Ping bluetooth host
* @param mixed $host Host address
* @return bool
*/
function pingbt($host)
{
if (IsWindowsOS()){
$answer='';
$connect = shell_exec(SERVER_ROOT . '/apps/blutoothscan/btdiscovery -d%a%%c%');
$PCREpattern = '/\r\n|\r|\n/u';
$connected = preg_replace($PCREpattern, '', $connect);
$pos = stripos($connected, $host);
$answer = substr($connected, $pos+18,3); // возвращает "Yes or No"
if ($answer == "Yes") {
$result=1;
} else {
$result=0;
}
}
return $result;
}
* Ping bluetooth host
* @param mixed $host Host address
* @return bool
*/
function pingbt($host)
{
if (IsWindowsOS()){
$answer='';
$connect = shell_exec(SERVER_ROOT . '/apps/blutoothscan/btdiscovery -d%a%%c%');
$PCREpattern = '/\r\n|\r|\n/u';
$connected = preg_replace($PCREpattern, '', $connect);
$pos = stripos($connected, $host);
$answer = substr($connected, $pos+18,3); // возвращает "Yes or No"
if ($answer == "Yes") {
$result=1;
} else {
$result=0;
}
}
return $result;
}
вместо - Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL));
вставил - Define('DEF_TYPE_OPTIONS', '0=PING (HOST)|1=WEB PAGE (URL)|2=BLUETOOTH (MAC)');
и еще вместо такого
СпойлерПоказать
if (!$host['TYPE']) {
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} else {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} else {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
СпойлерПоказать
$online=0;
// checking
if ($host['TYPE']==0) {
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} elseif ($host['TYPE']==1) {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
} elseif ($host['TYPE']==2) {
$online =0;
$online=pingbt(processTitle($host['HOSTNAME']));
}
// checking
if ($host['TYPE']==0) {
//ping host
$online=ping(processTitle($host['HOSTNAME']));
} elseif ($host['TYPE']==1) {
//web host
$online=getURL(processTitle($host['HOSTNAME']), 0);
SaveFile("./cached/host_".$host['ID'].'.html', $online);
if ($host['SEARCH_WORD']!='' && !is_integer(strpos($online, $host['SEARCH_WORD']))) {
$online=0;
}
if ($online) {
$online=1;
}
} elseif ($host['TYPE']==2) {
$online =0;
$online=pingbt(processTitle($host['HOSTNAME']));
}
Теперь в модуле производится проверка подключенности устройства блютуз по МАК-адресу...
Для линукса - я думаю тоже стоит доработать эту функцию
Не обещаю но ставить и пробовать делать буду...
СПС за внимание...