/** * * @param string $psImagem * @param string $psDestino * @param int $pnLarguraMax * @param int $pnAlturaMax * @return boolean */ public static function gravarImagem($psImagem, $psDestino, $pnLarguraMax, $pnAlturaMax) { //Verificando se foi setada uma cor para preenchimento de fundo no config if (defined('IMAGE_BGCOLOR')) { $lsCorFundo = IMAGE_BGCOLOR; } else { $lsCorFundo = self::$csCorFundo; } //Verificando se foi setada a opção de esticar ou encolher imagem no config if (defined('IMAGE_STRETCH')) { $lbEsticarImagem = IMAGE_STRETCH; } else { $lbEsticarImagem = self::$cbEsticarImagem; } //Verificando se foi setada a opção de esticar ou encolher imagem no config if (defined('IMAGE_BORDER')) { $lbBorder = IMAGE_BORDER; } else { $lbBorder = self::$cbBorder; } Debug::debug("Cor de fundo: " . $lsCorFundo); Debug::debug("Esticar: " . $lbEsticarImagem); Debug::debug("Borda: " . $lbBorder); //Extraindo a extensão do nome da imagem $lsTipo = substr($psImagem, -3, 3); $lsTipo = strtolower($lsTipo); //Verificando qual o tipo da imagem e utilizando sua função específica de carregamento if ($lsTipo == "jpg" || $lsTipo == "peg") { $lrImg2 = ImageCreateFromJpeg($psImagem); } else { if ($lsTipo == "gif") { $lrImg2 = ImageCreateFromGif($psImagem); } } if ($lsTipo == "png") { $lrImg2 = ImageCreateFromPng($psImagem); } Debug::debug("Tipo: " . $lsTipo); //Se a imagem tiver sido carregada com sucesso, deve continuar o tratamento if (!empty($lrImg2)) { //Recuperando as dimensões da imagem $lnAlturaReal = ImageSY($lrImg2); $lnLarguraReal = ImageSX($lrImg2); if ($pnLarguraMax == "" || $pnLarguraMax == 0) { $lnLarguraMax = $lnLarguraReal; } else { $lnLarguraMax = $pnLarguraMax; } if ($pnAlturaMax == "" || $pnAlturaMax == 0) { $lnAlturaMax = $lnAlturaReal; } else { $lnAlturaMax = $pnAlturaMax; } //Criando um handle para tratamento da imagem nas dimensões da mesma $lrImg = imagecreatetruecolor($lnLarguraMax, $lnAlturaMax); //Explodindo definições de cor de fundo para pegar separadamente cada camada $laCorFundo = explode(',', $lsCorFundo); //Inicializando novas dimenções da imagem a partir da dimensão atual $lnAlturaNova = $lnAlturaReal; $lnLarguraNova = $lnLarguraReal; if ($lbBorder && !empty($pnAlturaMax) && !empty($pnLarguraMax)) { Debug::debug("com borda"); //Se a imagem puder ser esticada proporcionalmente if ($lbEsticarImagem) { //Se a largura atual ou nova for menor que a largura Máxima ou ideal if ($lnLarguraNova < $lnLarguraMax) { Debug::debug("esticando largura"); //A altura deve aumentar proporcionalmente em relação a largura máxima ou ideal $lnAlturaNova = $lnLarguraMax * ($lnAlturaNova / $lnLarguraNova); $lnLarguraNova = (int) $lnLarguraMax; //Aumenta para a largura máxima $lnAlturaNova = (int) $lnAlturaNova; //Aumenta para a altura máxima } } //Se a altura atual ou nova for maior que altura máxima if ($lnAlturaNova > $lnAlturaMax) { Debug::debug("reduzindo altura"); //A largura deve diminuir proporcionalmente em relação a altura máxima ou ideal $lnLarguraNova = $lnAlturaMax * ($lnLarguraNova / $lnAlturaNova); $lnAlturaNova = (int) $lnAlturaMax; //Diminui para a altura máxima $lnLarguraNova = (int) $lnLarguraNova; //Diminui para nova largura } //Se a largura atual ou nova for maior que a largura máxima if ($lnLarguraNova > $lnLarguraMax) { Debug::debug("reduzindo largura"); //A altura deve diminuir proporcionalmente em relação a largura máxima ou ideal $lnAlturaNova = $lnLarguraMax * ($lnAlturaNova / $lnLarguraNova); $lnLarguraNova = (int) $lnLarguraMax; //Diminui para a largura máxima $lnAlturaNova = (int) $lnAlturaNova; //Diminui para a nova altura } } else { Debug::debug("sem borda"); Debug::debug($lnAlturaNova . ">" . $lnAlturaMax); //Se a altura atual ou nova for maior que altura máxima if ($lnAlturaNova > $lnAlturaMax) { Debug::debug("reduzindo altura"); //A largura deve diminuir proporcionalmente em relação a altura máxima ou ideal $lnLarguraNova = $lnAlturaMax * ($lnLarguraNova / $lnAlturaNova); $lnAlturaNova = (int) $lnAlturaMax; //Diminui para a altura máxima $lnLarguraNova = (int) $lnLarguraNova; //Diminui para nova largura } Debug::debug($lnLarguraNova . ">" . $lnLarguraMax); //Se a largura atual ou nova for maior que a largura máxima if ($lnLarguraNova > $lnLarguraMax) { Debug::debug("reduzindo largura"); //A altura deve diminuir proporcionalmente em relação a largura máxima ou ideal $lnAlturaNova = $lnLarguraMax * ($lnAlturaNova / $lnLarguraNova); $lnLarguraNova = (int) $lnLarguraMax; //Diminui para a largura máxima $lnAlturaNova = (int) $lnAlturaNova; //Diminui para a nova altura } //Se a imagem puder ser esticada proporcionalmente if ($lbEsticarImagem) { //Se a largura atual ou nova for menor que a largura Máxima ou ideal if ($lnLarguraNova < $lnLarguraMax) { Debug::debug("esticando largura"); //A altura deve aumentar proporcionalmente em relação a largura máxima ou ideal $lnAlturaNova = $lnLarguraMax * ($lnAlturaNova / $lnLarguraNova); $lnLarguraNova = (int) $lnLarguraMax; //Aumenta para a largura máxima $lnAlturaNova = (int) $lnAlturaNova; //Aumenta para a altura máxima } //Se a altura atual ou nova for menor que a altura Máxima ou ideal if ($lnAlturaNova < $lnAlturaMax) { Debug::debug("esticando altura"); //A largura deve aumentar proporcionalmente em relação a altura máxima ou ideal $lnLarguraNova = $lnAlturaMax * ($lnLarguraNova / $lnAlturaNova); $lnAlturaNova = (int) $lnAlturaMax; //Aumenta para a altura máxima $lnLarguraNova = (int) $lnLarguraNova; //Aumenta para nova largura } } } //Centralizando imagem dentro do frame $lnPosX = ($lnLarguraMax - $lnLarguraNova) / 2; $lnPosY = ($lnAlturaMax - $lnAlturaNova) / 2; Debug::debug("Dimensão Original: " . $lnLarguraReal . "x" . $lnAlturaReal); Debug::debug("Dimensão Nova: " . $lnLarguraNova . "x" . $lnAlturaNova); if ($lsTipo == "png") { Debug::debug("criando png"); //Ativa a camada de transparência para a imagem imagealphablending($lrImg, true); //Aloca a cor transparente e preenche a nova imagem com isto. //Sem isto a imagem vai ficar com fundo preto ao invés de transparente. $loTransparent = imagecolorallocatealpha($lrImg, 0, 0, 0, 127); imagefill($lrImg, 0, 0, $loTransparent); //copia o frame na imagem final imagecopyresampled($lrImg, $lrImg2, $lnPosX, $lnPosY, 0, 0, $lnLarguraNova, $lnAlturaNova, $lnLarguraReal, $lnAlturaReal); imagealphablending($lrImg, false); //Salva a camada alpha (transparência) imagesavealpha($lrImg, true); } elseif ($lsTipo == "gif") { Debug::debug("criando gif"); //redimencionando a imagem e criando a imagem final imagecopyresized($lrImg, $lrImg2, $lnPosX, $lnPosY, 0, 0, $lnLarguraNova, $lnAlturaNova, $lnLarguraReal, $lnAlturaReal); } else { Debug::debug("criando jpg"); //definindo a cor de fundo da imagem e preenchendo a camada $lrFundo = imagecolorallocate($lrImg, $laCorFundo[0], $laCorFundo[1], $laCorFundo[2]); imagefill($lrImg, 0, 0, $lrFundo); //redimencionando a imagem e criando a imagem final imagecopyresized($lrImg, $lrImg2, $lnPosX, $lnPosY, 0, 0, $lnLarguraNova, $lnAlturaNova, $lnLarguraReal, $lnAlturaReal); } if ($lsTipo == "jpg" || $lsTipo == "peg") { //header("Content-Type: image/jpeg"); if (!imagejpeg($lrImg, $psDestino)) { Event::log(array("userId" => null, "class" => "Image", "method" => "gravarImagem", "msg" => "Create image JPG failed!"), Event::ERR); Debug::debug("Create image JPG failed!"); } } else { if ($lsTipo == "gif") { //header("Content-Type: image/gif"); if (!imagegif($lrImg, $psDestino)) { Event::log(array("userId" => null, "class" => "Image", "method" => "gravarImagem", "msg" => "Create image GIF failed!"), Event::ERR); Debug::debug("Create image GIF failed!"); } } else { if ($lsTipo == "png") { //header("Content-Type: image/png"); if (!imagepng($lrImg, $psDestino)) { Event::log(array("userId" => null, "class" => "Image", "method" => "gravarImagem", "msg" => "Create image PNG failed!"), Event::ERR); Debug::debug("Create image PNG failed!"); } } } } imagedestroy($lrImg); return true; } else { Event::log(array("userId" => null, "class" => "Image", "method" => "gravarImagem", "msg" => "Image truncated!"), Event::ERR); Debug::debug("Image truncated!"); return false; } }
public static function hasContextAccess($paUserContext = null) { $lsUserIp = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ""; $lsAppClient = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; $lsToken = isset($_SERVER['HTTP_TOKEN']) ? $_SERVER['HTTP_TOKEN'] : ""; $lbReturn = false; Debug::debug(array($lsUserIp, $lsAppClient, $lsToken)); $laConfigAcl = Config::getAppOptions('acl'); $laContext = isset($laConfigAcl['acl']['context']) ? $laConfigAcl['acl']['context'] : null; if ($paUserContext !== null) { $laContext = Config::merge($paUserContext, $laContext); } Debug::debug($laContext); if (is_array($laContext)) { foreach ($laContext as $lsIp => $laIpContext) { $lsIpPattern = preg_replace(array("/^!([\\d\\.?]*)\$/", "/\\./", "/\\?/"), array("[^\$1]", "\\.", "[\\d]*"), $lsIp); if (preg_match("/^{$lsIpPattern}\$/", $lsUserIp)) { Debug::debug("IP: {$lsUserIp}"); if (isset($laIpContext['denied']) && $laIpContext['denied'] == true) { $lbReturn = false; Debug::debug("IP [{$lsUserIp}] DENIED FOR {$lsIpPattern}"); break; } if (isset($laIpContext['user-agent'][$lsAppClient])) { Debug::debug("USER-AGENT: {$lsAppClient}"); if ($laIpContext['user-agent'][$lsAppClient] == $lsToken) { Debug::debug("TOKEN: {$lsToken}"); $lbReturn = true; break; } } elseif (isset($laIpContext['user-agent']['*'])) { Debug::debug("USER-AGENT: *"); if ($laIpContext['user-agent']['*'] == $lsToken) { Debug::debug("TOKEN: {$lsToken}"); $lbReturn = true; break; } } } else { Debug::debug("IP [{$lsUserIp}] DENIED FOR {$lsIpPattern}"); } } } else { $lbReturn = true; } return $lbReturn; }
/** * Metodo de requisição de serviço no servidor * * @param string $psService caminho do arquivo no servidor (modulo/controller ou service) * @param string $psAction metodo ou action a ser executada pelo service * @return string */ public function callService($psService = null, $psAction = null) { $lsQuery = ""; if (is_array($this->_aParams)) { $lsSeparate = ""; //Transformando array de parametros em string foreach ($this->_aParams as $lsVar => $lsValue) { $lsQuery .= $lsSeparate . urlencode($lsVar) . "=" . urlencode($lsValue); $lsSeparate = "&"; } } $psService = isset($psService) ? "/" . $psService : ""; $psAction = isset($psAction) ? "/" . $psAction : ""; $lsQuery = !empty($lsQuery) ? "/?" . $lsQuery : ""; $lsLink = $this->_sServer . $psService . $psAction . $lsQuery; Debug::debug($lsLink); return $this->urlrequest($lsLink); }
* @category PHP * @package Onion * @author Humberto Lourenço <*****@*****.**> * @copyright 2014-2016 Humberto Lourenço <*****@*****.**> * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License * @link http://github.com/m3uzz/onionfw */ namespace Access; use Onion\Application\Application; use Onion\Log\Debug; use Onion\Config\Config; use Onion\Log\Access; $gsAccessViewPath = __DIR__ . '/../view'; if (file_exists(CLIENT_DIR . '/module/Backend/view/access')) { $gsAccessViewPath = CLIENT_DIR . '/module/Backend/view'; } return array('controllers' => array('invokables' => array('Access\\Controller\\Access' => 'Access\\Controller\\AccessController')), 'router' => array('routes' => array('access' => array('type' => 'segment', 'options' => array('route' => '/access[/:action][/:id][/]', 'constraints' => array('action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[a-zA-Z0-9_-]+'), 'defaults' => array('__NAMESPACE__' => 'Access\\Controller', 'controller' => 'Access', 'action' => 'login'))))), 'view_manager' => array('template_path_stack' => array('access' => $gsAccessViewPath)), 'doctrine' => array('driver' => array('access_entities' => array('class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver', 'cache' => 'array', 'paths' => array(__DIR__ . '/../src/Access/Entity')), 'orm_default' => array('drivers' => array('Access\\Entity' => 'access_entities'))), 'authentication' => array('orm_default' => array('object_manager' => 'Doctrine\\ORM\\EntityManager', 'identity_class' => 'Access\\Entity\\AccessExtended', 'identity_property' => 'stUsername', 'credential_property' => 'stPassword', 'credential_callable' => function (Entity\Access $poUser, $psPasswordGiven) { $laOptions = Config::getAppOptions('settings'); if ($laOptions['criptPassword']) { Debug::debug('Encriptar password true'); $psPasswordGiven = md5($laOptions['staticSalt'] . $psPasswordGiven . $poUser->getPasswordSalt()); } if ($poUser->getPassword() === $psPasswordGiven) { return true; } else { $lsStatus = "WRONG PASSWORD"; Access::log($poUser, $lsStatus); return false; } }))));
/** * * @param unknown $poIdentity * @param unknown $psUrlFrom */ public function authentication($poAuthService, $poIdentity, $psUrlFrom = null, $poForm = null, $psType = 'onion') { $lsStatus = null; if ($poIdentity->getActive() == 1) { $laUserContext = null; if ($poIdentity->get('stIpContext') !== null) { $lsUserAgent = '*'; if ($poIdentity->get('stUserAgent') !== null) { $lsUserAgent = $poIdentity->get('stUserAgent'); } $laUserContext = array($poIdentity->get('stIpContext') => array('denied' => $poIdentity->get('isContextDenied'), $lsUserAgent => $poIdentity->get('stRegistrationToken'))); } if (Context::hasContextAccess($laUserContext)) { $loSession = new Session(); $loSession->clearRegister('OnionAuth'); $loSession->clearRegister('storage', 'Zend_Auth'); $poIdentity->getObject(); $poIdentity->set('stPassword', 'nono'); $poIdentity->set('stPasswordSalt', ''); $poIdentity->set('stAnswer', ''); $loSession->setRegister('OnionAuth', $poIdentity); $loIdentity = $loSession->getRegister('OnionAuth'); $poAuthService->getStorage()->write($poIdentity); if ($poForm->get('rememberme')->getValue() == 1) { $laOptions = Config::getAppOptions('settings'); $loSessionManager = new SessionManager(); $loSessionManager->rememberMe($laOptions['sessionLifeTime']); } Debug::debug($poIdentity->getUsername() . " [SUCCESS by {$psType}]"); Access::log($poIdentity, "SUCCESS by " . $psType); if ($psUrlFrom !== null) { if ('/' !== $psUrlFrom) { $psUrlFrom = base64_decode($psUrlFrom); } Debug::debug("Redirect to: ({$psUrlFrom})"); $this->redirect()->toUrl($psUrlFrom); } } else { $poForm->get('stUsername')->setMessages(array("Permissão negada para o contexto de acesso!")); $lsStatus = "CONTEXT DENIED"; } } else { $poForm->get('stUsername')->setMessages(array("Usuário desativado!")); $lsStatus = "USER DISABLED"; } return $lsStatus; }
public function sendAction() { $this->_sLayout = 'Frontend'; $this->_sWindowType = 'modal'; $this->_sResponse = 'ajax'; $this->_bPushMessage = true; $lsMsg = null; $loForm = Application::factory('ContactUs\\Form\\ContactUs2Form'); $loForm->setForm(); if ($this->requestIsPost()) { $loForm->setData($this->requestPost()); if ($loForm->isValid()) { $laData = $loForm->getData(); $laMsg = print_r($laData, true); $loSendMail = new SendMail(); try { $loSendMail->send(array($laData['fromMail'], $laData['fromName']), $laData['subject'], $laMsg); $lsMsg = Translator::i18n('Sua mensagem foi enviada com sucesso.'); } catch (Exception $e) { $lsMsg = sprintf('<strong>%s</strong><br/> %s<br/>%s', Translator::i18n('Opa!'), Translator::i18n('Algo de errado aconteceu. Por favor, tente novamente mais tarde.'), $e->getMessage()); } } else { Debug::display('not'); } } else { Debug::display('nao'); } $loView = new ViewModel(array('lsTitle' => $this->_sTitleS, 'lsRoute' => $this->_sRoute, 'loForm' => $loForm)); return $this->setResponseType($loView, $lsMsg); }
public function onRoute(EventInterface $poEvent) { $loApplication = $poEvent->getApplication(); $loRouteMatch = $poEvent->getRouteMatch(); $loServiceManager = $loApplication->getServiceManager(); $loEventManager = $loApplication->getEventManager(); $loEvents = $loEventManager->getSharedManager(); $loSession = new Session(); $loUser = $loSession->getRegister('OnionAuth'); $laMenu = Config::getAppOptions('menu'); $lsRole = Acl::DEFAULT_ROLE; //guest if ($loUser !== null) { $lnGroup = $loUser->get('UserGroup_id'); if (isset($laMenu['groups'][$lnGroup])) { $lsRole = $laMenu['groups'][$lnGroup]; } } $laMenu = $laMenu[$lsRole]; $loEvents->attach('Zend\\Mvc\\Controller\\AbstractActionController', 'dispatch', function ($event) use($laMenu, $loUser) { $loController = $event->getTarget(); $loController->layout()->laMenu = $laMenu; $loController->layout()->loUser = $loUser; $loController->layout()->loController = $loController; }, 100); $lsController = $loRouteMatch->getParam('__CONTROLLER__'); $lsAction = $loRouteMatch->getParam('action'); if (empty($lsController)) { $lsController = 'Index'; } if (empty($lsAction)) { $lsAction = 'index'; } $laConfigAcl = Config::getAppOptions('acl'); $loAcl = new Acl($laConfigAcl); if (!$loAcl->hasResource($lsController)) { throw new \Exception('Resource ' . $lsController . ' not defined'); } Debug::debug("Route: {$lsController}/{$lsAction}"); if (!$loAcl->isAllowed($lsRole, $lsController, $lsAction)) { if ($lsController != 'Index' && $lsAction != 'index') { $loFlashMessenger = new FlashMessenger(); $loFlashMessenger->addMessage(array('id' => 'Access-' . microtime(true), 'hidden' => false, 'push' => false, 'type' => 'danger', 'msg' => Translator::i18n('Você não tem permissão para executar esta ação!'))); } $lsUrl = $poEvent->getRouter()->assemble(array(), array('name' => 'access', 'query' => array('urlFrom' => base64_encode($_SERVER['REQUEST_URI'])))); $loResponse = $poEvent->getResponse(); $loResponse->getHeaders()->addHeaderLine('Location', $lsUrl); $loResponse->setStatusCode(302); $loResponse->sendHeaders(); exit; } }
/** * * @return string */ public function response() { if ($this->_sResoponseType == 'json') { header("Content-Type: application/json"); return Json::encode($this->_aResponse); } elseif ($this->_sResoponseType == 'stream') { header("Content-type: text/event-stream"); $lsResponse = Json::encode($this->_aResponse); return "data: " . $lsResponse . "\n\n"; } else { Debug::display($this->_aResponse); } }