Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
 function log($message, $level = 1)
 {
     if (class_exists("Zend_Registry")) {
         $log = Snep_Logger::getInstance();
         $log->log($message, $level);
     }
 }
Beispiel #3
0
 /**
  * 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}");
     }
 }
Beispiel #4
0
 /**
  * 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})");
     }
 }
Beispiel #5
0
 *
 *  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) {
Beispiel #6
0
 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));
     }
 }
Beispiel #7
0
 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);
 }