$ev = Yate::GetEvent(); /* If Yate disconnected us then exit cleanly */ if ($ev === false) { break; } /* Empty events are normal in non-blocking operation. This is an opportunity to do idle tasks and check timers */ if ($ev === true) { continue; } /* If we reached here we should have a valid object */ switch ($ev->type) { case "incoming": switch ($ev->name) { case "engine.timer": onTimer($ev->GetValue("time")); break; case "engine.command": $ev->handled = onCommand($ev->GetValue("line"), $ev->retval); break; case "sip.subscribe": $ev->handled = onSubscribe($ev); break; case "user.update": $ev->handled = onUserUpdate($ev); break; case "chan.update": $ev->handled = onChanUpdate($ev); break; case "call.cdr": $ev->handled = onCdr($ev);
onComplete($ev, $ev->GetValue("partline"), $ev->GetValue("partword")); } break; case "engine.help": $ev->handled = onHelp($ev->GetValue("line"), $ev->retval); break; } $ev->Acknowledge(); } if ($ev->type == "answer") { switch ($ev->name) { case "user.auth": $addr = $ev->GetValue("ip_host"); if ($addr != "") { updateAuth($addr, $ev->handled && $ev->retval != "-"); } break; case "user.authfail": $addr = $ev->GetValue("ip_host"); if ($addr != "") { updateAuth($addr, false); } break; case "engine.timer": onTimer(); break; } } } Yate::Output("banbrutes: bye!"); /* vi: set ts=8 sw=4 sts=4 noet: */