alexmontoanelli

a little fun!

ZendFramework – Usando parâmentros nas Actions

Para quem usa o ZendFramework, em modo MVC, sabe que o modo para pegar uma váriavel  passada por GET/POST/COOKIE, deve ser realizada através dos métodos: getRequest()->getParam(‘nome_da_variavel’), do objeto Zend_Coontroller_Action.

Abaixo mostro uma implementação, que extende a classe Zend_Action para que seja usado os parâmentros no corpo da função.

Hoje você utiliza da seguinte forma:

<?php
class IndexController extends Zend_Controller_Action {

public function indexAction(){

//obterá o parâmentro GET/POST teste
 echo $this->getRequest()->getParam('teste');

}

}

A nova forma será:

<?php
class IndexController extends My_Action {

public function indexAction(string $teste){

//obterá o parâmentro GET/POST teste
 echo $teste;

}

}

Abaixo a classe My_Action.

Abraços

—————

<?php                                                                                                                                  
/**                                                                                                                                    
 * Map request parameters to action method                                                                                             
 * @author Albert Varaksin                                                                                                             
 * @licence public domain                                                                                                              
 */                                                                                                                                    
class My_Action extends Zend_Controller_Action                                                                           
{                                                                                                                                      
 /**                                                                                                                                
 * Dispatch the requested action                                                                                                   
 *                                                                                                                                 
 * @param string $action Method name of action                                                                                     
 * @return void                                                                                                                    
 */                                                                                                                                
 public function dispatch($action)                                                                                                  
 {                                                                                                                                  
 // Notify helpers of action preDispatch state                                                                                  
 $this->_helper->notifyPreDispatch();                                                                                           

 $this->preDispatch();
 if ($this->getRequest()->isDispatched()) {
 if (null === $this->_classMethods) {  
 $this->_classMethods = get_class_methods($this);
 }                                                   

 // preDispatch() didn't change the action, so we can continue
 if ($this->getInvokeArg('useCaseSensitiveActions')
|| in_array($action, $this->_classMethods)) {
 if ($this->getInvokeArg('useCaseSensitiveActions')) {                                       
 trigger_error('Using case sensitive actions without word separators is deprecated;
please do not rely on this "feature"');
 }                                                                                                                             

 $reflMethod = new Zend_Reflection_Method($this, $action);                                                                     
 $actionParams = $reflMethod->getParameters();                                                                                 
 $requestParams = $this->_request->getParams();                                                                                
 $args = array ();                                                                                                             
 foreach ($actionParams as $param)
 {
 // get parameter type
 if (($reflClass = $param->getClass()) instanceof Zend_Reflection_Class) {
 $type = $reflClass->getName();
 } else if ($param->isArray()) {
 $type = 'array';
 } else {
 $type = $param->getType();
 }

 // get passed parameter
 $name = $param->getName();
 if (isset($requestParams[$name])) {
 $value = $requestParams[$name];
 } else if ($param->isDefaultValueAvailable()) {
 $value = $param->getDefaultValue();
 $type = '';
 } else {
 $docBlock = $reflMethod->getDocblock();
 if (($tagRefl = $docBlock->getTag("require_$name"))
instanceof Zend_Reflection_Docblock_Tag) {
 $tryClass = trim($tagRefl->getDescription());
 if (class_exists($tryClass, true))
 throw new $tryClass("Missing value for argument $name");
 else
 throw new Zend_Controller_Action_Exception("Missing value for argument $name");
 }
 $value = null;
 }

 // fix value type
 $basicTypes = array(
 'int', 'integer', 'bool', 'boolean',
 'string', 'array', 'object',
 'double', 'float'
 );
 if (in_array($type, $basicTypes)) settype($value, $type);
 else if (strlen($type) && class_exists($type, true)) $value = new $type($value);

 $args[] = $value;
 }
 // dispatch the action
 call_user_func_array(array($this, $action), $args);
 } else {
 $this->__call($action, array());
 }
 $this->postDispatch();
 }

 // whats actually important here is that this action controller is
 // shutting down, regardless of dispatching; notify the helpers of this
 // state
 $this->_helper->notifyPostDispatch();
 }
}
October 17th, 2009 by alexm

[VideoSet] DJ RicaTelles ClipMix (2009) Vol02

[VideoSet] DJ RicaTelles ClipMix (2009) Vol02
## Este novo VideoSet soma alguns sucessos do Volume 1 + super lançamentos!!! ##

DJ_RicaTelles_ClipMix_2009_Vol02_[HouseSessions].mkv – 350MB
Este arquivo segue um novo padrão escolhido para este e os próximos releases do DJ RicaTelles, qual retrata o melhor custoXbenefício em Áudio e Vídeo para Internet da atualidade, denominado “.MKV” (Matroska); Outro fator adotado é o Set com time aproximado de 30 minutos e o tamanho do arquivo fixo de 350MB para facilitar os downloads.

Baixe agora mesmo o VideoSet Volume 2

emule http mp3

— DJ RicaTelles ClipMix 2009 Volume 2 [House Sessions] —
01 Voxis vs Dj Andi – To The Moon
02 David Deejay ft Dony – So Bizzare
03 Sander Van Doorn vs Robbie Williams – Close My Eyes
04 Edward Maya ft Vika Jigulina – Stereo Love
05 Akcent – That’s My Name
06 Morris – Desire
07 David Deejay ft Dony – Nasty Dream
08 Nick Kamarera ft Deepside Deejays – Beautiful Days
09 Bob Taylor ft Inna – Deja Vu
10 Inna – Love
11 Play and Win – Only
12 Fonzerelli – Dreamin

Abraços

September 22nd, 2009 by alexm
Posted in outros | 1 Comment »

Threads no PHP

Exemplo básico de utilização de threads no PHP

$pid = pcntl_fork();

if ($pid == -1) {

     die('Erro ao lançar thread');

} else if ($pid) {

     // thread principal
     //aguardamos a thread child terminar
     pcntl_wait($status); 

     echo "Processo child terminado\n";

     exit(0);

} else {

     //thread secundario
     //mudamos para um usuário não privilegiado
     posix_setuid(1000);
     posix_setgid(1000);

     //colocamos a thread para fazer algo,
     //ate que uma condição seja satisfeita e ela termine
	$i=0;
	while(true){	

           if (file_exists('/tmp/stop')){
		echo "Terminado thread";
		exit(0);
	   }

	   echo "Iteração : ". ++$i . "\n";
	   sleep(2);

	}

}

 

Mais informações aqui.

Abraços e até.

August 29th, 2009 by alexm
Posted in php | No Comments »

Squid Multiple Remote Denial of Service Vulnerabilities

Bugtraq ID:35812
Class:Unknown
CVE: CVE-2009-2621 – CVE-2009-2622
Remote:Yes
Local:No
Published: Jul 27 2009 12:00AM
Updated: Jul 28 2009 06:15PM

Credit: Alex Montoanelli of www.unetvale.net, Rob Middleton of Centenary Institute, Tuomo Untinen, Ossi Herrala, and Jukka Taimisto from the CROSS project at Codenomicon Ltd.

Vulnerable: Squid Web Proxy Cache 3.1 5,Squid Web Proxy Cache 3.1 4,Squid Webroxy Cache 3.0,Squid Web Proxy Cache 3.1.0.11,Squid Web Proxy Cache 3.1,
Squid Web Proxy Cache 3.0.STABLE7,Squid Web Proxy Cache 3.0.STABLE6,Squid Web Proxy Cache 3.0.STABLE5,Squid Web Proxy Cache 3.0.STABLE4,Squid Web Proxy Cache 3.0.STABLE3,Squid Web Proxy Cache 3.0.STABLE2,Squid Web Proxy Cache 3.0.STABLE16,Squid Web Proxy Cache 3.0.STABLE13,Squid Web Proxy Cache 3.0.STABLE12,Squid Web Proxy Cache 3.0.STABLE1,MandrakeSoft Linux Mandrake 2009.1 x86_64,MandrakeSoft Linux Mandrake 2009.1,MandrakeSoft Linux Mandrake 2009.0 x86_64,MandrakeSoft Linux Mandrake 2009.0,MandrakeSoft Linux Mandrake 2008.1 x86_64,MandrakeSoft Linux Mandrake 2008.1,Debian Linux 5.0 sparc,Debian Linux 5.0 s/390,Debian Linux 5.0 powerpc,Debian Linux 5.0 mipsel,Debian Linux 5.0 mips,Debian Linux 5.0 m68k,Debian Linux 5.0 ia-64,Debian Linux 5.0 ia-32,Debian Linux 5.0 hppa,
Debian Linux 5.0 armel,Debian Linux 5.0 arm,Debian Linux 5.0 amd64,Debian Linux 5.0 alpha,Debian Linux 5.0

Not Vulnerable: Squid Web Proxy Cache 3.1.0.12,Squid Web Proxy Cache 3.0.STABLE17

Reference: SecurityFocus

July 29th, 2009 by alexm
Posted in linux | No Comments »

IPP2P for Recent Kernels

After several hours of work on the code, here is a version that can be compiled
into a new kernel – 2.6.29 to be precise. No compatibility with older versions – sorry –.

http://alexm.unetvale.com.br/ipp2p-0.8.2_KERNEL_2.6.29_1.tar.gz

Later.

July 26th, 2009 by alexm
Posted in linux | 3 Comments »

Criptografia RSA em PHP em poucas linhas – the simple way

Abaixo descrevo os passos para implantar um sistema de chaves baseada em RSA,para que sua aplicação posso trocar dados de forma transparente.

Utilizei o procedimento para assinar um cookie,  na máquina do usuário e depois validá-lo, em um sistema de auto-login.

Você vai precisar do arquivo RSA.php, disponível em http://scripts.ringsworld.com/development-tools/rsa1.3/:

Após isso, vamos  passar por tres etapas, a geração das chaves, a assinatura dos dados, e por úlitmo a decodificação dos dados assinados.

Para gerar um par de chaves, e encriptar e decriptar os dados, usaremos o bloco de código abaixo comentado como exemplo.

<?php
require_once ‘RSA.php’;

//Iremos ter em $keys, um par de chaves, a pública e a privada,a
//a qual você deverá guardar para poder decriptar os dados mais tarde.
$keys = generate_keys ();

//com a chave sgerada iremos assinar uma string com a
//chave pública para futura comparação
$string_secreta = "Minha informação sigilosa";
$encoded = rsa_encrypt ($string_secreta,  $keys[1],  $keys[0]); 

//OK, nossa ‘informação sigilosa’ esta agora encriptada,
//e pode ser distribuida,porem apenas quem tiver o valor de $keys
//poderá ver o conteudo, entao é importante manter a chave geradada
//em um local seguro

//Podemos agora decriptar o valor,
//e verificar se tudo ocorreu certinho:
$decoded = rsa_decrypt($encoded,  $keys[2],  $keys[0]);
$result = ($decoded === $message);

//$result será um boolean onde se a mensagem
//decodifica foi igual a mensagem original
// retornará true } else { retornará false; }

 

Abraços

July 22nd, 2009 by alexm
Posted in php | No Comments »

TwitterFeed

Bom inauguro minha expêriencia no twitter, divulgando o excelente serviço  http://twitterfeed.com/, quem tem como objetivo, auxiliar bloqueiros de plantão, na divulgação de seus trabalhos.

tweetefeed

Em 2 simples passos você configura o serviço, para que poste automaticamente no seu twitter oque for publicado no seu blog.

O serviço usa autenticação OpenID, ou seja não requer cadastro.

Uma mão na roda pra que vive postando e não tem tempo nem saco, pra divulgar em todos os locais.

Enjoy.

July 22nd, 2009 by alexm

Divulgação – Dj RicaTelles

Segue links de um vídeoclip mixado pelo meu grande amigo Ricardo.

parte1

parte2

parte3

just audio

emule – versão dvd

——–

Set DJ RicaTelles ClipMix (2009) [ElectroHouse]

Este é o primeiro set que publico aos amantes da House Music e suas vertentes...

A novidade é que este set foi mixado em Áudio e Vídeo,
para curtir o som e assistir ao clip!

PlayList:

01 - nick kamarera ft deepside deejays - beautiful days

02 - david_deejay ft dony - nasty dream

03 - morris - desire

04 - skreatch & Joe Smooth - promised milkshake

05 - guru josh project - infinity

06 - tikaro j louis and ferran ft clarence - shine on me

07 - desaparecidos vs walter master j - ibiza

08 - tomer g - i like it

09 - eddy wata - i love my people

10 - jesse mccartney - leavin

11 - rihanna - dont stop the music

12 - cyndi lauper - into the nightlife

13 - ne-yo - because of you

14 - timbaland ft one republic - apologize

15 - bodyrox & luciana - what planet you on

16 - eva jane - spinning around

17 - mondotek - alive

18 - elektronique - move that thing

19 - rank1 - led (there be light)

20 - markus schulz - the new world

21 - deadmau5 by tiesto - not exactly

Críticas e sugestões são bem vindas!!!

Em breve, um novo set...

(Censura 14 anos)

Link da Comunidade do DJ RicaTelles

http://www.orkut.com.br/Main#Community.aspx?cmm=91419553
July 6th, 2009 by alexm

Projeto Natal – O fim do Nintendo Wii ?

Hello, vi este vídeo que foi apresentando na E3 desse ano, e fiquei de queixo caído. Sera a morte do Wii ?

Abraços

June 21st, 2009 by alexm
Posted in outros | 1 Comment »

N97 demo video

June 18th, 2009 by alexm