criando proxy através do ssh

Eu uso muito esta técnica para efetuar testes em sistemas simulando acesso vindo de redes externas.

Esta dica funciona com qualquer servidor ssh que não possua bloqueios na porta 80 e 443. Logo também é possível o uso em servidores compartilhados!

Pra quem usa linux, é muit fácil, basta executar o comando abaixo no terminal e configurar o navegador para acesso a internet via proxy socks na porta determinada no comando

syntaxe:

ssh -Nn -D PORTA USUARIO@SERVIDOR

exemplo:

ssh -Nn -D 4050 [email protected]

No exemplo acima, basta configurar o navegador para acesso via proxy socks5 na porta 4050

Função para validar cartões de crédito com detecção automática da bandeira

Função para validar cartões de crédito, com suporte a validação de CVC.

O primeiro parâmetro é o número do cartão e o segundo o CVC (opcional), os dados serão sanitizados, sendo filtrado somente os números.

A saida é um array de três posições, a primeira retorna false (em caso de erro) ou a bandeira, a segunda se o número do cartão é válido e a terceira se o CVC é válido.

 

/**
 * @author Felipe Braz
 * @website https://braz.dev/blog
 * @param int $cartao
 * @param int $cvc
 * @return array
 */
function valida_cartao($cartao, $cvc=false){
	$cartao = preg_replace("/[^0-9]/", "", $cartao);
	if($cvc) $cvc = preg_replace("/[^0-9]/", "", $cvc);

	$cartoes = array(
			'visa'		 => array('len' => array(13,16),    'cvc' => 3),
			'mastercard' => array('len' => array(16),       'cvc' => 3),
			'diners'	 => array('len' => array(14,16),    'cvc' => 3),
			'elo'		 => array('len' => array(16),       'cvc' => 3),
			'amex'	 	 => array('len' => array(15),       'cvc' => 4),
			'discover'	 => array('len' => array(16),       'cvc' => 4),
			'aura'		 => array('len' => array(16),       'cvc' => 3),
			'jcb'		 => array('len' => array(16),       'cvc' => 3),
			'hipercard'  => array('len' => array(13,16,19), 'cvc' => 3),
	);

	
	switch($cartao){
		case (bool) preg_match('/^(636368|438935|504175|451416|636297)/', $cartao) :
			$bandeira = 'elo';			
		break;

		case (bool) preg_match('/^(606282)/', $cartao) :
			$bandeira = 'hipercard';			
		break;

		case (bool) preg_match('/^(5067|4576|4011)/', $cartao) :
			$bandeira = 'elo';			
		break;

		case (bool) preg_match('/^(3841)/', $cartao) :
			$bandeira = 'hipercard';			
		break;

		case (bool) preg_match('/^(6011)/', $cartao) :
			$bandeira = 'discover';			
		break;

		case (bool) preg_match('/^(622)/', $cartao) :
			$bandeira = 'discover';			
		break;

		case (bool) preg_match('/^(301|305)/', $cartao) :
			$bandeira = 'diners';			
		break;

		case (bool) preg_match('/^(34|37)/', $cartao) :
			$bandeira = 'amex';			
		break;

		case (bool) preg_match('/^(36,38)/', $cartao) :
			$bandeira = 'diners';			
		break;

		case (bool) preg_match('/^(64,65)/', $cartao) :
			$bandeira = 'discover';			
		break;

		case (bool) preg_match('/^(50)/', $cartao) :
			$bandeira = 'aura';			
		break;

		case (bool) preg_match('/^(35)/', $cartao) :
			$bandeira = 'jcb';			
		break;

		case (bool) preg_match('/^(60)/', $cartao) :
			$bandeira = 'hipercard';			
		break;

		case (bool) preg_match('/^(4)/', $cartao) :
			$bandeira = 'visa';			
		break;

		case (bool) preg_match('/^(5)/', $cartao) :
			$bandeira = 'mastercard';			
		break;
	}

	$dados_cartao = $cartoes[$bandeira];
	if(!is_array($dados_cartao)) return array(false, false, false);

	$valid     = true;
	$valid_cvc = false;

	if(!in_array(strlen($cartao), $dados_cartao['len'])) $valid = false;
	if($cvc AND strlen($cvc) <= $dados_cartao['cvc'] AND strlen($cvc) !=0) $valid_cvc = true;
	return array($bandeira, $valid, $valid_cvc);
}

Ah, a minha esposa queria que eu botasse nesse post uma foto de gatinho, então lá vai:

Picture-86

Fonte: https://gist.github.com/erikhenrique/5931368

API para obter informações de geolocalização de um IP

O site http://ipinfo.io/ disponibiliza uma API pública e gratuita (até 1000 requisições/dia) para consulta de geolocalização.

O funcionamento é bem simples, basta fazer uma requisição usando file_get_contents(), curl ou o que mais a imaginação desejar para o endreço http://ipinfo.io/XXX.XXX.XXX.XXX/json o retorno é em json então basta usar algum json parser pra trabalhar com os dados.

Exemplo:

curl ipinfo.io/8.8.8.8/geo
{
  "ip": "8.8.8.8",
  "loc": "37.385999999999996,-122.0838",
  "city": "Mountain View",
  "region": "California",
  "country": "US",
}

Dica do Giuseppe

Ferramenta para detecção de problemas em rede wifi

Um verdadeiro canivete-suíço para redes wifi, contendo gráficos, informações das redes entre outras coisas úteis:

Link Para Download:
http://www.metageek.net/products/inssider/

inSSIDer em execução

Certificado SSL gratuito

Pra quem quer contratar um certificado SSL e não quer gastar grana.
https://www.startssl.com/

OBS: O certificado gratuito (level1) não permite o uso em sites de ecommerce, para este tipo de site eles possuem o level2 que é US$ 59,90 a cada dois anos, porém o certificado é emitido para *.dominio (wildcard) que é um preço que ta valendo a pena. =)

Could not initialize class org.eclipse.jface.preference.PreferenceConverter

Esse erro maldito do zendstudio/eclipse ocorre quando ele é fechado inesperadamente, seja um kill no processo principal ou um desligamento incorreto, aonde, na inicialização da IDE, é apresentado um dialogbox pedidndo pra verificar o arquivo de log.

Pra resolver o problema é bem fácil, basta remover o arquivo:

rm /home/USUARIO/Zend/workspaces/DefaultWorkspace/.metadata/.plugins/org.eclipse.core.resources/.snap