/** * Returns the singleton instance of this class. * * @return Snep_Logger */ public static function getInstance() { if (!isset(self::$instance)) { self::$instance = new self(); } return self::$instance; }
function log($message, $level = 1) { if (class_exists("Zend_Registry")) { $log = Snep_Logger::getInstance(); $log->log($message, $level); } }
/** * Checa se uma origem/destino casa com um numero * * @param string $type Tipo de origem/destino * @param string $expr Expressão do tipo, se houver * @param string $value Valor a ser confrontado com a expressão * @return boolean Resultado da checagem */ private function checkExpr($type, $expr, $value) { switch ($type) { case 'RX': // Expressão Regular return preg_match("/{$this->astrule2regex($expr)}/", $value); break; case 'G': if ($this->request->getSrcObj() instanceof Snep_Usuario) { return PBX_Usuarios::hasGroupInheritance($expr, $this->request->getSrcObj()->getGroup()); } else { return false; } break; case 'R': // Vinda de um Ramal específico return $value == $expr ? true : false; break; case 'S': // Sem destino - Válido somente para destinos (duh!). return $value == 's' ? true : false; break; case 'T': // Troncos $log = Snep_Logger::getInstance(); if ($this->request->getSrcObj() instanceof Snep_Trunk && $this->request->getSrcObj()->getId() == $expr) { return true; } else { return false; } break; case 'X': // Qualquer origem/destino return true; break; case 'CG': $db = Zend_Registry::get('db'); $select = $db->select()->from('contacts_names')->where("`group` = '{$expr}' AND (phone_1 = '{$value}' OR cell_1 = '{$value}')"); $stmt = $db->query($select); $groups = $stmt->fetchAll(); if (count($groups) > 0) { return true; } else { return false; } break; case "AL": $aliases = PBX_ExpressionAliases::getInstance(); $expression = $aliases->get((int) $expr); $found = false; foreach ($expression["expressions"] as $expr_value) { if (preg_match("/{$this->astrule2regex($expr_value)}/", $value)) { $found = true; break; } } return $found; break; default: throw new PBX_Exception_BadArg("Tipo de expressao invalido '{$type}' para checagem de origem/destino, cheque a regra de negocio {$this->parsingRuleId}"); } }
/** * Construtor da requisição. * * Para identificar o objeto de origem estamos considerando seu callerid * como número de ramal. Isso, obviamente, irá identificar somente ramais. * Importante ressaltar que a "falsidade ideológica" entre os canais é mais * fácil de ser praticada nesse sistema. * * @param int $origem * @param string $destino * @param string $contexto */ public function __construct($agi_request) { parent::__construct($agi_request); $log = Snep_Logger::getInstance(); // Descobrindo se esse canal criado pertence a alguma entidade // cadastrada no snep. $channel = $this->request['channel']; // removendo o hash de controle do asterisk // de TECH/ID-HASH para TECH/ID $channel = strpos($channel, '-') ? substr($channel, 0, strpos($channel, '-')) : $channel; $object = PBX_Interfaces::getChannelOwner($channel); if ($object instanceof Snep_Trunk && $object->allowExtensionMapping()) { try { $exten = PBX_Usuarios::get($this->origem); if ($exten->getInterface() instanceof PBX_Asterisk_Interface_VIRTUAL) { $object = $exten; } } catch (PBX_Exception_NotFound $ex) { // Ignore } } $this->setSrcObj($object); if (is_object($object)) { $classname = get_class($this->getSrcObj()); $log->info("Identified source: {$this->getSrcObj()} ({$classname})"); } }
* * You should have received a copy of the GNU General Public License * along with SNEP. If not, see <http://www.gnu.org/licenses/>. */ // Controle da exibição de erros error_reporting(E_ALL | E_STRICT); ini_set('display_startup_errors', 1); ini_set('display_errors', 1); require_once "Bootstrap.php"; new Bootstrap(); require_once "Snep/Config.php"; require_once "Snep/Logger.php"; require_once "PBX/Asterisk/AGI.php"; require_once "Zend/Console/Getopt.php"; $config = Snep_Config::getConfig(); $log = Snep_Logger::getInstance(); $asterisk = PBX_Asterisk_AGI::getInstance(); // Configuração das opções da linha de comando try { $opts = new Zend_Console_Getopt(array('version|v' => 'Prints version.', 'outgoing_number|o=s' => 'Define a outgoing number', 'xfer|x=s' => 'Replace the channel used for source identification.')); $opts->parse(); } catch (Zend_Console_Getopt_Exception $e) { $log->err($e->getMessage()); $log->err($e->getUsageMessage()); exit; } if ($opts->version) { echo "SNEP Version " . Zend_Registry::get('snep_version') . "\n"; exit; } if ($opts->xfer) {
protected function startLogger() { $asterisk = PBX_Asterisk_AGI::getInstance(); $config = Snep_Config::getConfig(); $log = Snep_Logger::getInstance(); Zend_Registry::set("log", $log); // Log em arquivo $writer = new Zend_Log_Writer_Stream($config->system->path->log . '/agi.log'); $format = sprintf("%%timestamp%% - %s -> %s - %%priorityName%% (%%priority%%):%%message%%", $asterisk->request['agi_callerid'], $asterisk->request['agi_extension']) . PHP_EOL; $formatter = new Zend_Log_Formatter_Simple($format); $writer->setFormatter($formatter); $log->addWriter($writer); // Log no console do Asterisk $console_writer = new PBX_Asterisk_Log_Writer($asterisk); $format = sprintf("%s -> %s %%priorityName%% (%%priority%%):%%message%%", $asterisk->request['agi_callerid'], $asterisk->request['agi_extension']) . PHP_EOL; $console_formatter = new Zend_Log_Formatter_Simple($format . PHP_EOL); $console_writer->setFormatter($console_formatter); $log->addWriter($console_writer); if (!$config->system->debug) { $writer->addFilter(new Zend_Log_Filter_Priority(Zend_Log::NOTICE)); $console_writer->addFilter(new Zend_Log_Filter_Priority(Zend_Log::INFO)); } }
protected function _initLogger() { $log = Snep_Logger::getInstance(); $config = Snep_Config::getConfig(); $writer = new Zend_Log_Writer_Stream($config->system->path->log . '/ui.log'); // Filtramos a 'sujeira' dos logs se não estamos em debug mode. if (!$config->system->debug) { $filter = new Zend_Log_Filter_Priority(Zend_Log::WARN); $writer->addFilter($filter); } $log->addWriter($writer); }