예제 #1
0
파일: Image.php 프로젝트: m3uzz/onionfw
 /**
  * 
  * @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;
     }
 }
예제 #2
0
파일: Context.php 프로젝트: m3uzz/onionfw
 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;
 }
예제 #3
0
 /**
  * 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);
 }
예제 #4
0
 * @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;
    }
}))));
예제 #5
0
 /**
  *
  * @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;
 }
예제 #6
0
 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);
 }
예제 #7
0
파일: Module.php 프로젝트: m3uzz/module
 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;
     }
 }
예제 #8
0
 /**
  *
  * @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);
     }
 }