Archive for February, 2009

PHP: Listando arquivos e pastas de um diretório

Monday, February 16th, 2009

Quando o assunto é manipulação de arquivos dentro de um servidor, muita coisa pode ser feita. Inclusive para os administradores, alguns scripts são realmente úteis, como o que vamos ver a seguir.

O script que vou apresentar, é uma forma prática de listar as pastas e arquivos de um diretório (diretório este, que deverá ser remoto, ou seja, online), mostrando visualmente o que é pasta, e o que é arquivo.
Facilidade esta, que pode ser adicionada à um script de download, envio por email, etc.

Vou trabalhar aqui, com algumas funções pouco utilizadas, ou melhor dizendo, pouco exploradas.
São elas:
getcwd: http://www.php.net/manual/pt_BR/function.getcwd.php
opendir: http://www.php.net/manual/pt_BR/function.opendir.php
readdir: http://www.php.net/manual/pt_BR/function.readdir.php
sort: http://www.php.net/manual/pt_BR/function.sort.php
is_dir: http://www.php.net/manual/pt_BR/function.is-dir.php

getcwd: obtém o diretório atual
opendir: abre o diretório informado no getcwd
readdir: lê o diretório abe rto

Então esta é a primeira parte:

<?php
// pega o endereço do diretório
$diretorio = getcwd();
// abre o diretório
$ponteiro  = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
    $itens[] = $nome_itens;
}

O que fizemos aqui, foi justamente, pegar o diretório, abri-lo e lê-lo.

Continuando, vamos usar:

sort: ordena os vetores (arrays), de acordo com os parâmetros informados. Aqui estou ordenando por pastas e depois arquivos

// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas 
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
   if ($listar!="." && $listar!=".."){

// checa se o tipo de arquivo encontrado é uma pasta
   		if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
			$pastas[]=$listar;
		} else{
// caso FALSO adiciona o item à variável de arquivos
			$arquivos[]=$listar;
		}
   }
}

Vimos acima, a expressão is_dir, indicando que as ações devem esntão ser executadas, ali mesmo, no diretório que já foi aberto e lido. As ações que executamos ali, foram: ver se tem pastas, listar. Ver se tem arquivos, listar.

Agora, se houverem pastas, serão apresentadas antes dos arquivos, em odem alfabética.
Se não houverem, serão apresentados apenas os arquivos, na mesma ordem.
E se houverem os dois, serão mostrados igualmente.

// lista as pastas se houverem
if ($pastas != "" ) {
foreach($pastas as $listar){
   print "Pasta: <a href='$listar'>$listar</a><br>";}
   }
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
   print " Arquivo: <a href='$listar'>$listar</a><br>";}
   }
?>

Para ver este script funcionando, clique aqui: http://www.flaviajobs.com.br/sistemas/revistaphp/listadir.php

O que você pode fazer, para melhorar um código como este: adicionar links às pastas e arquivos, podendo então fazer download, ou enviar um deles por email, por exemplo.
Também poderá adicionar um contador, para saber quantos arquivos tem, quantas pastas também.
Ou ainda: calcular o espaço que os arquivos estão tomando neste diretório, utilizando conjugadamente as funções filesize (ler tamanho do artigo) e disk_total_space (ver tamanho total do diretório) – Ambas funções, abordarei em outro artigo.

Fonte: http://www.revistaphp.com.br/artigo.php?id=48

Liberando o parent path para um domínio no plesk 9 ou 8

Monday, February 16th, 2009

É muito simples e rápido! Se você está desejando liberar o parent path para algum domínio no plesk (ressalto que isto não é uma política amigável de segurança – nada mesmo, mas se você precisa…) basta seguir os passos abaixo:

1 -> Acesse a lista de domínios no plesk e procure pelo domínio o qual deseja-se a liberação.

2 -> Clique neste domínio.

3 -> Clique em File e escolhe web directories (isso no 9, no 8 já tem web directories).

4 -> Assim que for aberto procure por Directory Properties, clique nele.

Procure a opção que ordena a liberação do parent path.

Confirme e seja feliz!

?:P

Criando uma maquina virtual Windows no Xen

Sunday, February 15th, 2009

Considerações iniciais

Para a execução dos procedimentos deste howto, estou considerando que o leitor já tenha instalado o Xen 3.2.0 ou mais recente em seu ambiente. Caso ainda não tenha feito, siga os passos para a sua plataforma usando o howto Compilando o Xen 3.2 no Debian Etch.

Checando seu Hardware

Para usar o Windows com o Xen, você precisa de um hardware com suporte a virtualização, flags VMX (para a plataforma Intel) ou SVM (para a plataforma AMD), para verificar corretamente se o seu processador tem suporte a essa flag, uses o comando abaixo:

  egrep -i "vmx|svm" /proc/cpuinfo

Se retorna algo, sorria, você tem a suporte a virtualização no seu processador.

Preparando os discos

LVM

Antes de partimos para o uso da instalação, crie um volume lógico no seu grupo de volumes do LVM. Neste exemplo, estou sugerindo o nome do grupo de volumes do LVM como servidores e o volume lógico como w2k:

  lvcreate -L 10G -n w2k servidores

Disco de boot do Windows

O Windows utilizado foi um Windows 2003 Server.

Iremos primeiramente ter que fazer uma imagem do CD de instalação, use o comando abaixo para gerar a imagem:

 dd if=/dev/CDROM of=$HOME/win2003.iso

Obs.: O /dev/CDROM deve ser trocado pelo local do seu drive de cdrom.

Arquivo de configuração

Vamos criar um arquivo de configuração para o Xen poder “bootar” o Windows 2003.

Abaixo uma réplica do arquivo /etc/xen/windows utilizado nesse exemplo:

  kernel = "/usr/lib/xen/boot/hvmloader"
  device_model = '/usr/lib/xen/bin/qemu-dm'
  builder='hvm'
  memory = 1024
  shadow_memory = 16
  name = "windows"
  vif = [ 'type=ioemu, mac=00:16:3E:78:CD:EC, bridge=xenbr0' ]
  disk = [ 'file:/home/gustavo/win2003.iso,hdd:cdrom,r', 'phy:/dev/servidores/w2k,hda,w']
  boot="dc"
  sdl=0
  vnc=1
  vnclisten="0.0.0.0"
  vncdisplay=5
  vncconsole=0
  vncpasswd='sua_senha_aqui'
  stdvga=0
  serial='pty'

Acessando

Primeiro ative a vm com o comando:

 xm create windows

Utilize o seu cliente vnc para acessar a dom0 no display 5 (este é o valor da variável vncdisplay do arquivo de configuração).

 vncviewer xxx.xxx.xxx.xxx:0:5

Obs.: xxx.xxx.xxx.xxx é o endereço IP do servidor Xen (dom0).

Aparecerá uma tela de password, digite SUASENHA que está também no arquivo de configuração que é a variável vncpasswd.

Finalizando

Após a instalação do windows ter sido concluída, pare a vm com o comando:

 xm shutdown windows

E em seguida altere o arquivo /etc/xen/windows nas linhas:

 disk = [ 'file:/home/gustavo/win2003.iso,hdd:cdrom,r', 'phy:/dev/servidores/w2k,hda,w']
 boot="dc"

Para:

 disk = ['phy:/dev/servidores/w2k,hda,w']
 boot="c"

Obs.: Na nova configuração como mostrado acima, nós estamos alterando a ordem do boot para o disco local (c) ao invés do cdrom (d), e também estamos desabilitando a imagem do cd do windows 2003, pois, não será mais necessário.

Re-crie a vm com o comando e acesse sua maquina virtual pelo protocolo VNC, lembrando que xxx.xxx.xxx.xxx é o endereço IP do servidor Xen (dom0):

xm create windows
vncviewer xxx.xxx.xxx.xxx:0:5

Telas

Tela de Boot.

Ampliar

Tela de Boot.

IDE online para PHP e outras linguagens!

Friday, February 13th, 2009

Pois é meu amigo, a Mozilla tem o navegar mais seguro e agora tem o ide mais versátil que a web poderia disponibilizar. Estou falando do Bespin, uma ferramenta COLABORATIVA, grátis e online que serve para desenvolvimento.

Uma espécia de revolução mesmo, e afirmo, isto sim é que é cloud computing e não vendagem de vps.

Desenvolve-se em tempo real, se um amigo seu desenvolvedor estiver fazendo códigos você o vê em tempo real.

Um show!

https://bespin.mozilla.com/

Os caracteres especiais da tabela ISO 8859 Latin-1

Thursday, February 12th, 2009
&Aelig; Æ
&Aacute; Á
&Acirc; Â
&Agrave; À
&Aring; Å
&Atilde; Ã
&Auml; Ä
&Ccedil; Ç
&ETH; Ð
&Eacute; É
&Ecirc; Ê
&Egrave; È
&Iacute; Í
&Icirc; Î
&Igrave; Ì
&Iuml; Ï
&Ntilde; Ñ
&Oacute; Ó
&Ocirc; Ô
&Ograve; Ò
&Oslash; Ø
&Otilde; Õ
&Ouml; Ö
&THORN; Þ
&Uacute; Ú
&Ucirc; Û
&Ugrave; Ù
&Uuml; Ü
&Yacute; Ý
&aacute; á
&acirc; â
&aelig; æ
&agrave; à
&aring; å
&atilde; ã
&auml; ä
&ccedil; ç
&eacute; é
&ecirc; ê
&egrave; è
&eth; ð
&euml; ë
&iacute; í
&icirc; î
&igrave; ì
&iuml; ï
&ntilde; ñ
&oacute; ó
&ocirc; ô
&ograve; ò
&oslash; ø
&otilde; õ
&ouml; ö
&szlig; ß
&thorn; þ
&uacute; ú
&ucirc; û
&ugrave; ù
&uuml; ü
&yacute; ý
¡ ¡
¢ ¢
£ £
¥ ¥
¦ ¦
§ §
¨ ¨
© © &copy; (Netscape)
ª ª
« «
­ ­
® ® &reg; (Netscape)
¯ ¯
° º
± ±
² ²
³ ³
´
µ µ
· ·
¸ ¸
¹ ¹
º º
» »
¼ ¼
½ ½
¾ ¾
¿ ¿
× ×
Þ Þ
÷ ÷
&amp; &
&lt; <
&gt; >
&quot;

Realidade dolorosa

Thursday, February 12th, 2009

Dizem que uma imagem vale mais que mil palavras… não comento, nem tag vou colocar (exceto a que realmente merece estar)…

fonte: http://nerdson.com/blog/workaholic/

Anti-Vírus Grátis: Proteja seu computador sem por a mão no bolso!

Wednesday, February 11th, 2009

Estes dias estive pensando em bolar um post como este, indicando ferramentas de anti-vírus grátis que eu usei e aprovei em muitos aspectos. Abaixo vou dar algumas dicas e links de downloads, mas vale a pena utilizar algumas das ferramentas. E mais uma coisa, se você também é um nerd e sabe que há outra ferramenta grátis, não deixe de nos avisar para que possamos testar e indicar também, e claro, deixar claro no blog que foi você quem nos reportou.

Anti-vírus e etc (malwares, bots…)

Spyware Terminator

Esta é uma das iniciativas que mais gostei, pois ele lembra muito o estilo Kaspersky (hoje eu tenho), Monitora processos, monitora tráfego, monitora plugins para o browser, monitora todos os passos do usuário.

Vantagens: Muito eficaz em seu padrão de verdadeiro ou falso, muito completo, com recursos de toolbar para o browser, visando a proteção contra exploits vindos direto da web para explorar vulnerabilidades no Browser.

Desvantagens: É MUITO (ressalto a caixa alta) pesado, sendo às vezes comparado com o antigo Norton (quem lembra?).

link de download -> http://www.spywareterminator.com/pt/download/download.aspx

Spybot

Esse carinha é um show, limpa cookies contaminados, processos maliciosos, processamento utilizado é razoável, grátis e muito fácil de usar. Uma das poucas ferramentas disponíveis que vai além do comum, tanto que se o trojan for auto inicializado e estiver com registros no Windows para se restaurar, spybot solicita reboot para tratar exatamente disto.

Vantagens:
É muito fácil de utilizar e tem resultados impressionantes.

Desvantagens: Muito lento o repositório para updates.

link para download -> http://www.safer-networking.org/pt/download/index.html

ClamWin

Sem dúvidas, esta é uma das iniciativas mais interessantes que vi.
Muito leve, muito estável e grátis. Surgiu da iniciativa Clamav, um respeitado anti-vírus gratuito feito para unix-like.

Vantagens: Talvez o anti-vírus mais leve já criado, ótima detecção.

Desvantagens: A detecção e precisão as vezes é duvidosa, retirando de alguns a confiança, mas para mim funciona muito corretamente.

link para download -> http://downloads.sourceforge.net/clamwin/clamwin-0.94.1-setup.exe

Kaspersky Grátis

A última alternativa é Trial, é mais usada para limpar as coisas quando já não dá mais para tentar, então faça o seguinte:

http://esd.element5.com/demoreg.html?productid=300299803

Esse link serve para cadastro do Kaspersky trial, e eu afirmo, este anti-vírus é Muito bacana, pena que é pesado.

Mas é isto.
Se alguém tem uma sugestão, dê um toque aí!

=]

Reparando seu sistema operacional windows XP, técnicas de otimização

Monday, February 9th, 2009

Estou utilizando Windows XP para postar essa notícia, o mesmo contém o service pack 3, mas quero deixar claro que não foi só o sistema que se manteve tanto tempo online (2 anos).

Coisas, ou melhor dizendo, rotinas simples podem ajudar a manter o seu pc rápido, funcional e extremamente amigável.

Vou colocar algumas dicas que pratico, acredito que isto possa ajudar na estabilidade de seu sistema operacional Windows XP:

1 – Se o seu sistema operacional corrompeu-se por algum evento indesejado, algo como quedas de energia, vírus e coisas do gênero, para reparar o mesmo de maneira simples tenha em mãos o CD do Windows XP (o seu CD que você instalou o sistema). Dê o boot no disco, assim que os drivers default do windows forem carregados (aquela tela azul que mostra dispositivos em uma faixa clara embaixo) ele perguntará se você quer reparar (apertando R), confirme e você estará em uma tela preta.
Somente aplique a senha de administrador (se esta realmente foi configurada, do contrário deixar em branco) e escolher a instalação (normalmente é 1).
Fazendo isto sua tela ficará no prompt de comando, e você vai operar para o restore do seu sistema assim:

chkdsk c: /r (o r é para sistemas pt_br, se for inglês use /i)

Isto vai girar em torno de 30 minutos (varia muito de disco, buffer de disco e etc).

Normalmente isto já vai dar êxito.

A Microsoft indica essa operação 1 vez ao mês.

2 – Uma coisa muito simples que pode ser feita é a limpeza de arquivos temporários, então basta fazer assim:
Ligue seu PC, abra o windows, assim que for inicializado clique em iniciar -> Programas -> Acessórios -> Ferramentas de Sistema -> limpeza de disco.
Escolha a unidade ( normalmente é o disco C: ) e clique em Ok.
O sistema vai procurar por muitas coisas, desde temporários da internet até resíduos de instalações de aplicativos como Office, por exemplo.
Assim que for terminado marque todos, exceto compactação de arquivos e ordene a limpeza.

3 – Uma outra dica é rodar o bom e velho scandisk, basta abrir o seu windows explorer, clicar com o botão direito sobre o disco principal ( geralmente é C: ) e clicar em propriedades. Na aba ferramentas escolha a primeira opção -> Verificação de Erros (clicando em Verificar Agora), assim que a janela for aberta marque as 2 opções e reinicie o pc.
Isto fará com que seu sistema operacional verifique áreas importantes do disco e aplique as correções que achar necessária.
Assim que o sistema reiniciar ele mostrará uma opção de apertar alguma tecla para interromper o scandisk, não aperte nada.

4 – Uma maravilhosa ferramenta que pode ser usada para otimizar coisas em seu Windows é o bom e velho desfragmentador (defrag).
Para utilizar o mesmo basta abrir o seu Windows explorer, clicar com o botão direito sobre o disco principal ( geralmente é C: ) e clicar em propriedades. Na aba ferramentas escolha a opção Desfragmentar Agora. Na janela que será aberta NÃO escolha analisar, escolha Desfragmentar.
Aguarde uma média de 30 minutos e verá alguns ajustes.

5 – Uma coisa (não muito comum) é ajustar seu Windows para não incializar coisas desnecessárias, mas afirmo que isto depende de seu conhecimento. Então segue a dica:
Clique em iniciar -> executar -> msconfig
Assim que for aberta a janela acesse a aba Inicializar e lá DESMARQUE o que você NÃO quer que seja carregado na inicialização do Windows.

Tenho outras dicas, mas tá bom por hoje né? Quer que eu tenha tendinite com minha nerdice é?

Abraços.
=]

S1 Ponto: Sistema de controle de ponto Open Source para Linux

Sunday, February 8th, 2009

Nesse artigo abordarei a instalação do programa S1 Ponto na distribuição Slackware Linux 12.1. O S1 Ponto é um software de controle de ponto Open Source em fase inicial de desenvolvimento. Atualmente ele contém módulo de cadastro de funcionários, marcações de ponto e e emissão de relatórios.

O S1 Ponto foi iniciado a pedido de minha esposa, que não queria mais gastar dinheiro com cadernos de ponto na empresa onde trabalha. É um projeto em fase inicial, mas que já possui o básico de um sistema de controle de ponto.

O S1 Ponto usa a biblioteca libfprint[1] para reconhecimento de impressões digitais, o que torna o software compatível com mais de 40 leitores de impressão digital.

O cadastro de funcionários e impressão de relatórios usa interface web desenvolvida com framework django.

Página do projeto: http://s1ponto.opens1.com/

1. A biblioteca libfprint já foi matéria de artigo aqui no Viva o Linux: fprint: Biometria livre, completa e total!

Instalando as dependências

O presente artigo abordará a instalação do S1 Ponto na distribuição Slackware Linux 12.1, no entanto nada impede que o mesmo seja instalado em qualquer outra distribuição, uma vez que todas as dependências sejam resolvidas.

Eis a lista de dependências e seu respectivos sites:

Baixando e instalando o Django, framework de desenvolvimento web/python: $ wget ‘http://s1ponto.opens1.com/download/django-1.0-noarch-1_SBo.tgz?attredirects=0′ -O django-1.0-noarch-1_SBo.tgz
# upgradepkg –install-new django-1.0-noarch-1_SBo.tgz

Baixando e instalando o PySqlite2, pacote com os bindings em Python para base de dados SQLite:

$ wget ‘http://s1ponto.opens1.com/download/pysqlite2-2.3.5-i486-1_SBo.tgz?attredirects=0′ -O pysqlite2-2.3.5-i486-1_SBo.tgz
# upgradepkg –install-new pysqlite2-2.3.5-i486-1_SBo.tgz

Baixando e instalando o SQLite, engine de banco de dados padrão do S1 Ponto (por ser desenvolvido em Django, o sistema pode usar opcionalmente outras bases com MySQL, PostgreSQL ou Oracle).

$ wget ‘http://s1ponto.opens1.com/download/sqlite-3.6.2-i486-1_SBo.tgz?attredirects=0′ -O sqlite-3.6.2-i486-1_SBo.tgz
# upgradepkg –install-new sqlite-3.6.2-i486-1_SBo.tgz

Baixando e instalando o mod_python, módulo do Apache para interpretação de scripts Python:

$ wget ‘http://s1ponto.opens1.com/download/mod_python-3.3.1-i486-1_SBo.tgz?attredirects=0′ -O mod_python-3.3.1-i486-1_SBo.tgz
# upgradepkg –install-new mod_python-3.3.1-i486-1_SBo.tgz

Baixando e instalando a LibFprint, biblioteca Open Source de captura e reconhecimento de impressões digitais:

$ wget ‘http://s1ponto.opens1.com/download/libfprint-0.0.6-i486-1_SBo.tgz?attredirects=0′ -O libfprint-0.0.6-i486-1_SBo.tgz
# upgradepkg –install-new libfprint-0.0.6-i486-1_SBo.tgz

Baixando e instalando o Swig, uma interface de compilação que integra C/C++ com linguagens de script:

$ wget ‘http://s1ponto.opens1.com/download/swig-1.3.35-i486-1_SBo.tgz?attredirects=0′ -O swig-1.3.35-i486-1_SBo.tgz
# upgradepkg –install-new swig-1.3.35-i486-1_SBo.tgz

Baixando e instalando o PyFprint, pacote com os bindings em Python para a biblioteca LibFprint.

$ wget -O ‘http://s1ponto.opens1.com/download/pyfprint-0.0-noarch-1_tla.tgz?attredirects=0′ pyfprint-0.0-noarch-1_tla.tgz
# upgradepkg –install-new pyfprint-0.0-noarch-1_tla.tgz


Instalando o S1 Ponto

Para instalar o S1 Ponto faça o download do software:

$ wget ‘http://sites.google.com/a/opens1.com/s1ponto/download/s1ponto-0.0.1.tar.gz?attredirects=0′ -O s1ponto-0.0.1.tar.gz

Descompacte o arquivo:

$ tar -xpzvf s1ponto-0.0.1.tar.gz

Entre na pasta:

$ cd s1ponto

Como super usuário execute o script “install.sh”, ele perguntará em qual usuário o instalador deverá colocar o ícone no Desktop:

$ su
# sh install.sh

Instalando S1 Ponto:

Criar ícone no Desktop do usuário:
1) ftp
2) teste
#? 2

Configurando o sistema para o uso do software:

* Permitindo acesso ao leitor de impressões digitais.

Para que usuários do grupo “plugdev” tenham acesso ao dispositivo será necessário editar o arquivo: /etc/udev/rules.d/50-udev-default.rules

Alterando a linha que contém SUBSYSTEM==”usb” adicionando os parâmetros MODE=”0664″ e GROUP=”plugdev”. Deixe-a assim:

SUBSYSTEM==”usb”, ACTION==”add”, ENV{DEVTYPE}==”usb_device”, NAME=”bus/usb/$env{BUSNUM}/$env{DEVNUM}”, MODE=”0664″, GROUP=”plugdev”

Configurando o Apache:

Edite o arquivo /etc/httpd/httpd.conf, após a linha:

LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

Adicione a seguinte linha:

LoadModule python_module lib/httpd/modules/mod_python.so

Após o bloco:

<Directory “/srv/httpd/htdocs”>

</Directory>

Adicione o seguinte bloco:

<Directory “/opt”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

E por último descomente a linha:

Include /etc/httpd/extra/httpd-vhosts.conf

Edite o arquivo /etc/httpd/extra/httpd-vhosts.conf, remova todo seu conteúdo e adicione o seguinte:

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /opt/s1ponto/media

<Location “/”>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE s1ponto.settings
PythonDebug On
PythonPath “['/opt','/opt/s1ponto'] + sys.path”
</Location>

<Location “/media”>
SetHandler None
</Location>

<Location “/arquivos”>
SetHandler None
</Location>

</VirtualHost>

Após todos estes passos configure o Apache para iniciar automaticamente e inicie o mesmo:

# chmod +x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

O programa S1 Ponto está pronto para ser usado!

Para cadastrar os funcionários e emitir os relatórios, use a interface web.

Endereço: http://localhost/
Usuário: s1ponto
Senha: s1ponto

Para cadastrar as impressões digitais, abra o sistema de ponto através do ícone no Desktop e use o atalho Ctrl+Shift+L.
Usuário: s1ponto
Senha: s1ponto

Bom proveito a todos e aguardo contribuições e ideias.

Veja abaixo um pequeno vídeo de demonstração do software:

fonte: http://www.vivaolinux.com.br/artigo/S1-Ponto-Sistema-de-controle-de-ponto-Open-Source-para-Linux?pagina=1

Ferro-Velho, “a verdadeira casa dos Geeks”!

Thursday, February 5th, 2009

Você pode até estar se perguntando o por que deste título.
De fato é algo estranho, juro que não vou mentir em uma palavra sequer do meu post aqui, mas até foto tenho do que realmente vi.

Semana passada o dono do estabelecimento do qual presto consultoria me chamou para irmos ao ferro-velho, isto devido o fato de um amigo (o dono do ferro-velho) ter arrematado um lote de informática gigantesco, e que possivelmente acharíamos algo interessante.

Topei, mas dentro de mim aquela interrogação:

- Como alguém pode encontrar um parafuso que funcione em um computador no meio de um lugar como este que iremos visitar?

Talvez esta seria sua pergunta também, e concordAVA com você até o momento em que pisei lá.

Assim que chegamos atentei para uma pilha gigantesca de máquinas Itautec.
Corri atrás daquela pilha e comecei uma busca de apenas 4 dias úteis corridos.
Ah, em meio a tantas coisas impressionantes, sabe o que achei de bom? Sim existe algo de bom, mas sabe o que achei?

Nada de ter uma taquicardia hein?

1 – Um kit Celeron 2,5 ghz + 512 ddr 333 Samsung + Placa Asus
2 – Um kit pcchips Duron 750 mhz + 256 pc133 + hd 20 gb Seagate
3 – Um kit Celeron 566 mhz + 256 pc 133 + hd Seagate 20gb.

Entre muitas coisas.

Sabe quanto custou o trio acima citado?

R$ 300 reais.

Abaixo segue foto do Celeron 2.5 ghz + placa de rede 3com (achada lá também):

05-02-09_1417

05-02-09_1418

Sabe o que ele vai ser?

Servidor Slave de Banco de Dados e vai rodar Ubuntu Server 8.04!
Para os amantes de tecnologia antiga, achei um server Itautec 100mhz, só que tinha pouca memória e o hd scsi era muito pequeno, senão levava para casa!

Abraços.

=]

Ubuntu Server, usei e confiei

Thursday, February 5th, 2009

Boa tarde a todos,

Não vim aqui como xiita ou como “cannonizador”, muito pelo contrário, vim deixar a minha adimiração por uma das distribuições mais amigáveis que já vi em toda a minha vida.

Sou um amante do Slackware Gnu/Linux e um observador do CentOs (+ fedora/rhel), todavia eu conheço o poderoso Debian, que tem sua “fatia” no mercado Gnu/Linux.

A Questão maior aqui é -> Por que escolhi, por que confiei e por que recomendo?

Vamos lá!

Em 2007 eu já estava afinado com o ubuntu Desktop e havia sido divulgado que o Ubuntu teve um repositório invadido (pacotes comprometidos e coisas do gênero).

Fiquei com um pé atrás e deixei a versão server “ir catar coquinhos”!

No ano de 2008 resolvi dar uma chance a esta versão (detalhe, já utilizava há muito tempo o Slackware em servidores), foi quando baixei o Ubuntu 8.04 Server 32 bits e instalei em uma máquina muito poderosa, a saber segue uma foto da mesma:

16-07-08_1244

Pois é, de posse da imagem você já deve saber que isto aí é uma SLI Premium + athlon x2 + 2 gb de ram + sata 2 + nvidia pci express.

Esse “tornado aí” também está “gemendo” em sua missão dolorosa, o mesmo opera com os serviços:

apache 2,
mysql 5,
php 5.2.6,
zoneminder (current),
Samba (current),
proxy-cache,
firewall + gateway de internet.

Vou colar o load da “criança”:

top – 14:43:29 up 72 days, 32 min,  1 user,  load average: 37.34, 37.36, 37.44
Tasks: 255 total,   1 running, 219 sleeping,   0 stopped,  35 zombie
Cpu(s):  4.0%us,  4.5%sy,  0.0%ni,  0.0%id, 91.0%wa,  0.0%hi,  0.5%si,  0.0%st
Mem:   2074460k total,  2023356k used,    51104k free,   125968k buffers
Swap:  6072528k total,      216k used,  6072312k free,  1471032k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
7499 www-data  20   0  139m  12m  10m S    2  0.6  14:26.22 /usr/local/bin/zma -m 9
7511 www-data  20   0  139m  12m  10m S    2  0.6  14:08.16 /usr/local/bin/zma -m 6
7503 www-data  20   0  139m  12m  10m S    1  0.6  14:30.52 /usr/local/bin/zma -m 7
7507 www-data  20   0  139m  12m  10m S    1  0.6  14:05.84 /usr/local/bin/zma -m 8
7566 www-data  20   0  184m  56m  53m S    1  2.8   3:17.83 /usr/local/bin/zmc -d /dev/video0
24880 root      20   0  1920  808  592 D    1  0.0   1:34.47 /bin/cp -rp /var/www/zm/events/ /home2/camera
24913 root      20   0  1920  808  592 D    1  0.0   1:34.49 /bin/cp -rp /var/www/zm/events/ /home2/camera
24925 root      20   0  1920  816  592 D    1  0.0   1:34.82 /bin/cp -rp /var/www/zm/events/ /home2/camera
24938 root      20   0  1920  812  592 D    1  0.0   1:29.43 /bin/cp -rp /var/www/zm/events/ /home2/camera

Sinceramente, um verdadeiro warrior, visto que um load tolerável é algo girando em torno de 1.5 ou 1.6.
Utilizando o mesmo desta forma, já contemplo a plataforma 5 meses online sem sequer travar ou demonstrar instabilidade.

Quando trabalhava para uma conhecida instituição eu usei muito o slackware, mas agora confesso que sinto-me tentado na hora de montar um servidor.

Mas vai minha humilde dica:
Use slackware se realmente você sabe o que quer e se você realmente sabe utilizar/configurar os recursos necessários para sua demanda. Slackware é muito enxuto, por isso cuidado com o que vai instalar, por que possivelmente você pode não estar munido de libs, e aí meu caro, ./configure –… copiou a idéia?

Use ubuntu seguindo o pensamento anterior, porém com a certeza do aptitude ou apt-get estarem sempre disponíveis para tirar você da lama!

Abraços…

bye
=]

Datacenter Custo/Benefício para Desenvolvedores e empresas de pequeno/médio/grande porte

Wednesday, February 4th, 2009

Quem me conhece sabe que apelo de mais com a qualidade de servidores dedicados, coisa que muitos não atentam e de tabela se ferram por causa de um hd morto ou coisa do gênero. Hoje NÃO vendo mais hospedagem de sites e coisas do gênero, vivo de desenvolvimento web, gerenciamento de servidores e consultoria em informática nas empresas da região aonde moro.

Estes dias criei um projeto bem simples e amigável, o LiBPHP, e de tabela necessitava de um servidor dedicado, tanto para rodar as aplicações do projeto como a aplicação que o projeto apóia, o ISPConfig.

Aluguei um server junto a Server4you, empresa simples, de suporte amigável e de máquinas muito baratas. Passei 2 meses na estrutura deles, sem problemas de hardware e coisas do tipo. Amei… mas nem tudo é uma flor linda e maravilhosa, pelo contrário, a latência e o valor do dedicado não estavam “andando em conformidade com as leis de hosting”, rsrsrs, decidi que o projeto LiBPHP seria hospedado em outra empresa, uma que me desse mais leveza na mensalidade e que fosse confiável.
De cara pensei em outras como softlayer e theplanet, mas o valor (projeto LiBPHP vive de donativos) não estava no orçamento, então decidi voltar “a boa e velha casa”.
A Hostdime foi uma empresa especial na minha vida, foi o lugar aonde comecei a carreira de hosting e conheci pessoas como desenvolvedores e outros que (por fórum) administram servidores gnu/linux, bsd e coisas do gênero. Trabalhei lá pouco tempo e tive que sair.
Decidi ver como andava a “casa dos servidores dedicados”, e acredite, estou postando com satisfação o que encontrei lá, então segue meu overview:

1 – A entrega: Falaram que o server viria em 72 hs úteis (eu precisava para 2 dias), o server chegou em 1 dia útil corrido.

2 – Servidor + hd duplo = R$ 139,90 (muito bom o preço), cobrado em real, em uma empresa 100% nacional (diferente da server4you que tinha a mensalidade em R$ 220,00) .

3 – Latência muito baixa (150ms ~180ms),

4 – Reboots rápidos,

5 – Hds sem badblocks, com ciclos baixíssimos,

6 – Suporte respondendo dúvidas com 2 minutos (se quiserem mostro o printscreen),

7 – Pessoal te liga para saber das coisas burocráticas (não fica nos tickets).

8 – Técnicos adentrando no server que vem com muitas políticas de segurança legais, somente para avaliar a estrutura.

9 – (repetindo) – valor muito baixo, mensal.

Para servidores dedicados eu indico:

- Softlayer,
-Theplanet,
-Hostdime,
-Server4you.

Conectar no DSL (comando) no ubuntu

Wednesday, February 4th, 2009

/usr/sbin/pppd call dsl-provider

Como decompilar programas em Delphi – How to Decompiler Delphi application decompilar delphi

Wednesday, February 4th, 2009

PRESTE ATENÇÃO em TODO o artigo para depois não dizer que o NerdBlog cometeu crime ou que “não souberam passar o macete”.
Irei mostrar a parte “burocrática da coisa” e a parte expert da “coisa”.

O texto abaixo foi tirado do link (logo após a nossa avaliação): http://www.ramosdainformatica.com.br/art_recentes01.php?CDA=45

Questão/Problema:

Aqui vou esclarecer porque não é possível decompilar aplicações desenvolvidas em Delphi. E apresentar as ferramentas existentes que prometem fazer isso.

Resposta:

Sempre encontramos pessoas interessadas em decompilar programas desenvolvidos em Delphi, sempre com desculpas de perda dos Fontes, ou perda de Disco Rígido.

O que é Decompilação? É muito simples, é o inverso de compilação. É a transformação de um Executável, em seu código fonte, no caso do Delphi, formulários e os fontes.

Suponha-se que você desenvolveu um Sistema que levou meses e até anos para estar pronto, derrepente você perde todos os fontes, ficando com apenas o executável. Qual a solução? Utilizar a engenharia reversa (decompilação) para recuperar todo seu trabalho (os fontes).

Uhhmm, então quer dizer que posso decompilar o projeto de outras pessoas? Bem, sim e não…

Então é possível Decompilar um programa?

Não, claro que não. Total decompilação não é possível – não exatamente como ele foi desenvolvido, ou seja, com o fonte original….

Quando um projeto em Delphi é compilado e linkado, para produzir um executável, a maioria dos nomes usados no programa é convertido em endereços. Na decompilação, se você observar em seus fontes originais, com os fontes de um executável decompilado, você irá perceber a troca de nomes em constantes, variáveis e procedures.

Porque e quando usar:

A engenharia reversa, pode ser usada por várias razões, eis algumas:

Ø Recuperação de Código Perdido;
Ø Migração de Aplicações para uma plataforma de Hardware nova;
Ø Determinação de existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;
Ø Recuperação dos fontes de outra pessoa;

Mas é Legal?

Engenharia Reversa NÃO é cracking, embora as vezes é difícil traçar um panorama entre os dois. Programas de computador são protegidos por direitos autorais e leis de marca registrada. Em alguns países são permitidos, como por exemplo a Rússia.

Na Rússia, se você compra um programa, ele é seu, pode-se fazer o que quiser com ele, inclusive aplicar a engenharia reversa. Recentemente um russo, decompilou alguns programas da Macromedia, alterou-os e distribuiu gratuitamente pela Internet, e a Macromedia não pode fazer nada contra isso, pois conforme as Leis da Rússia, o programa, uma vez alterado (não importa o que) passa ser de propriedade do indivíduo que o alterou.

Mas atenção, isso é apenas na Rússia. No Brasil, deve-se tomar bastante cuidado, por isso recomendo consultar um advogado, antes de realizar algum tipo de engenharia reversa, seja ela qual for.

Algumas leis que permitem a engenharia reversa:

Ø Suspeita da existência de Vírus e/ou código fonte malicioso;
Ø Correção de erros, quando o dono da aplicação não está disponível para fazer a correção;

Mas existem outras leis, mas deve ser consultado com especialistas antes de sua execução.

Para escrever este texto, tive que consultar um advogado, o qual me falou que não haveria problemas, uma vez que é somente para estudos, e que os exemplos de decompilação de programas, sejam feitos com um programa por mim desenvolvido.

Por enquanto, os produtos da Inprise, não possui nenhum produto capaz de decompilar um arquivo executável (.exe) ou a “Delphi Compiled Unit” (DCU), volta para o código original (.PAS).

Delphi compiled unit: DCU

Quando um projeto Delphi é compilado, os arquivos .pas são convertidos para .dcu. Armazenando assim, em arquivos binários os fontes do projeto. Ou seja, unit1.dcu é igual a unit1.pas.

Isso significa que se você tem somente os DCU do projeto pode decompilar e obter os fontes do projeto. Errado. O arquivo com formato DCU não é documentado, e muda de versão para versão.

Após a Compilação: Engenharia Reversa no Delphi

Para quem quer tentar decompilar um projeto desenvolvido em Delphi. Eis algumas coisas que deveria saber:

Os programas desenvolvidos em Delphi, tem seus arquivos divididos em dois tipos de formatos: Código ASCII (.pas, .dpr) e arquivos de recursos (resource files) (.res, .rc, .dfm, .dcr).

Os arquivos DFM, contém os detalhes (Propriedades) dos objetos contidos em um formulário. Quando criamos um executável, o Delphi armazena as informações dos Formulários em um arquivo DFM para a geração do EXE.

Todas informações de um componente dos formulários, suas propriedades, localização e até mesmo nome, são armazenados em um arquivo DFM pelo Delphi. (Não os códigos de procedimento de eventos, esses são armazenados em arquivos .pas e .dcu.). Para se obter o arquivo DFM de um executável, é necessário conhecer a fundo como funciona um executável Win32.

Todos os programas compilados pelo Delphi, possuem as seguintes seções: CODE, DATA, BSS, .idata, tls, .rdata, .rsrc. O mais importante ponto de vista de decompilação são os códigos e seções de .rsrc.

Entre muitos recursos que são armazenados em um arquivo executável, o RT_RCDATA segura as informações que estavam armazenadas em arquivos DFM, antes da compilação.

Alguns Decompiladores Existentes no Mercado

A arte da Engenharia Reversa, é uma área para técnicos, acostumados com a linguagem Assembler e Debugers, No entanto há diversas ferramentas que ajudam qualquer pessoa a realizar a engenharia reversa em Delphi.

Se você está interessado em aplicar a engenharia reversa em seus programas, aconselho a dar uma olhada nestes programas de Decompilação para Delphi:

DeDe (www.balbaro.com/dede/index.html )

DeDe é um grande programa de decompilação de programas desenvolvidos em Delphi. Ele analisa todo o executável, e fornece o seguinte:

Ø Todos os DFM, podendo ser alterados pelo Delphi;
Ø Todos os Fontes, .pas, .res, .dfm, etc… Todos comentados com os fontes em Assembler.
Ø Muito bom, se não fosse os arquivos .pas serem em Assembler, às vezes não podendo ser recompilado.

Reverendepro (www.puthoon.com/Revendepro/index.html )

Reverendepro acha quase todas estruturas (classes, types, procedures, etc) no programa e gera a representação de pascal e procedures escritas em Assembler. Devido a algumas limitações do Assembler, às vezes pode não ser recompilado. Os códigos fontes deste decompilador é livre. Devido a algumas limitações deste decompilador eu não pude explorar ele mais a fundo.

MRIP ( www.delphi32.com/vcl/4549/ )

Este programa procura e extraí arquivos de outros arquivos. MRIP pode pegar mais de 100 formatos de arquivos. O mais importante para nós é que o MRIP pode decompilar qualquer executável Delphi. Esta ferramenta pode extrair todos os recursos de uma aplicação Delphi: Cursores, Ícones que o DFM arquiva, arquivos .pas e outros. Nos arquivos PAS não contém os procedimentos de eventos. MRPI é uma aplicação DOS.

DfmExplorer (www.instinct.org/fravia/aitodelp.htm )

Isso é o que o DfmExplorer faz (Inclui os Fontes): Ele procura e separa todos os arquivos DFM do executável.

Exe2Dpr (www.instinct.org/fravia/aitodelp.htm )

Este programa é talvez o mais utilizado na decompilação de aplicações Delphi, mas ele só pega o DPR de um Executável.

CONCLUSÃO

A engenharia reversa (decompilação), é possível no Delphi? Sim, mas não 100%.

Então vamos acabar agora com este mito de decompilação de executáveis Delphi. Mas aconselho a você explorar todas as ferramentas aqui citadas, como uma forma de aprendizagem e curiosidade, e fazendo com que você mesmo, tire as suas próprias conclusões.

É isso aí, espero ter esclarecido este tabu, que sempre acompanha milhares de programadores.
++++++++++++++++++++++++++++++++++++++++++++++++

Agora entra a parte maliciosa da coisa (aonde o NerdBlog entra).

Já que entendemos como funciona a legislação brasileira sobre decompilação nós agora podemos tentar “salvar o mundo”… rsrsrs.

Primeiro passo
Ache o programa Certo!
Isto mesmo, testei a sistemática da situação e só obtive bons resultados com a seguinte ferramenta:

- reshacker em: http://angusj.com/resourcehacker/

O que ela me “rendeu” e como fiz?
Primeiro tive que decompilar a aplicação delphi que é o sistema da empresa, no caso, aquele EXE do tamanho do mundo.
Abrindo o reshacker a sua única dificuldade será  apontar a origem e o destino da decompilação.
Feito isto, quando o processo começar será gerado todo o fonte (inclusive arquivos de imagem bmp, por exemplo, tais arquivos retornam também).
Terminada a decompilação você terá em mãos o fonte.
Abra o projeto com o delphi e tente compilar (para localizar algum erro), caso consiga sucesso, parabéns, agora você tem o fonte do sistema, caso contrário o que você terá de problemas são os componentes ou erro de caracters (sendo muito fácil a correção, para este caso).

Acabou tudo, isto quer dizer que não posso mais concluir o meu projeto de decompilação delphi com sucesso?
NADA DISSO, faça como o carinha do site (aquele tosco de camisa do hacker),  o que você vai fazer é -> Buscar os componentes que “podem” ser os que você precisa.
O podem entre aspas duplas significa que nem sempre você vai encontrar todos os componentes necessários, até por que algumas pessoas vendem componentes feitos sob demanda de um cliente importante, em outras palavras, algo customizado, então trate de preparar seu cliente torrent e seu emule + limewire para pegar fogo com suas pesquisar e mandar ver. Antes iremos fazer uma busca básica nos sites:

http://inf.unisul.br/~osmarjr/delphi/componentes.htm
http://www.webmundi.com/delphi/dfuncaoc.asp?SubTipo=Visuais

Pronto, dependendo de sua aplicação a agonia acabará aí, mas a minha foi além… rsrsrs… mas houve triunfo.

De posse disto, instale os componentes no delphi e veja a necessidade que as units estão declarando e etc, em outras palavras, veja se lhe faltará algo mais e BINGO!

Zoneminder no Ubuntu ou Debian – Serviço de Câmeras Web (cftv)

Wednesday, February 4th, 2009

Bom, vamos falar sobre a instalação do Zoneminder e algumas dicas e truques para o mesmo funcionar adequadamente.

Como tudo começou:

Meu chefe me passou a url do programa dizendo que seria uma boa solução para o controle das imagens geradas pelas câmeras internas. Pediu pra eu testar.

Equipamentos:

Placa de Captura com chipset bttv. Como já havia visto uma funcionando, indiquei a Pico2000. Que pode ser encontrada em média de 50 reais no mercado livre (http://www.mercadolivre.com.br).

Computador com slot pci, e os cabos para ligar as câmeras a placa.

E o sistema operacional usado será o Linux, distribuição Ubuntu.

A escolha da distribuição pesou devido ao fato de que todos os desktops da empresa rodarem Ubuntu, então pra não ficar inventando moda resolvi usar a mesma coisa para padronizar. E provavelmente o servidor que vamos colocar em produção vai ser Debian, não vai haver grandes mudanças na hora da instalação para produção.

Vamos ao que interessa.

ara fazer a verificação se o sistema detectou a placa, faça o seguinte procedimento:

# dmesg | grep bttv

Deve aparecer a seguinte saída:

Com isso já guarde as seguintes informações:

[ 82.180611] bttv0: registered device video0
[ 82.180792] bttv0: registered device vbi0

Instalações

Agora vamos a parte boa, instalar o que é necessário.

Vamos fazer a instalação por partes:

1. Apache, MySQL e PHP:

# apt-get update
# apt-get install apache2 mysql-server mysql-client php5-mysql php5-gd php5-cgi php-pear libgd-tools php5-dev libmysql++-dev libmysqlclient15-dev

Depois dessa instalação, já vai estar com seu servidor web pronto para o serviço.

2. Codecs de vídeo:

# apt-get update
# apt-get install libavcodec-dev libavcodec1d libavformat-dev libavformat1d libavutil-dev libavutil1d ffmpeg libavifile-0.7c2

3. As demais dependências:

# apt-get update
# apt-get install g++ make netpbm libssl-dev libjpeg62-dev libmime-perl libwww-perl libarchive-tar-perl libdate-manip-perl libarchive-zip-perl libmime-lite-perl libdbi-perl libdbd-mysql-perl libpcre3-dev libgnutls-dev

Feito isso seu sistema já vai estar pronto para receber o Zoneminder, após claro a pequena compilação dele.

Instalação do Zoneminder

Tendo instalado todos os programas anteriores, essa parte é mais simples pois provavelmente não vai dar erro agora.

Baixe o source pelo site:

# wget -c http://www2.zoneminder.com/downloads/ZoneMinder-1.23.2.tar.gz
# tar czf ZoneMinder-1.23.2.tar.gz
# cd ZoneMinder-1.23.2

Agora vem o pulo do gato, se você fizer sem alterar nada vai dar erro no make, se quiser testar, fique a vontade, se quiser fazer o trem funcionar de primeira edite o arquivo src/zm_mpeg.cpp e na linha 280 altere de:

#if ZM_FFMPEG_SVN

Para:

#if !ZM_FFMPEG_SVN

Isso mesmo, só adicionar um “!” ali depois do if.

Agora proceda com a instalação:

# ./configure –with-webdir=/var/www/zm –with-cgidir=/usr/lib/cgi-bin –with-webuser=www-data –with-webgroup=www-data
# make
# make install

Agora vamos usar o script para criar o banco de dados:

# mysql mysql < db/zm_create.sql -p

E agora logar no mysql para dar permissão ao usuário criado:

# mysql -u root -p
mysql> grant select,insert,update,delete on zm.* to ‘zmuser’@localhost identified by ‘zmpass’;
mysql> flush privileges;

Prontinho, prontinho, prontinho…

Script de inicialização

Crie um arquivo chamado zoneminder e coloque dentro dele as seguintes linhas para a criação de um script de inicialização “automágica”:

#!/bin/sh
# description: Control ZoneMinder as a Service
# chkconfig: 2345 35 15

# Source function library.
#. /etc/rc.d/init.d/functions

prog=ZoneMinder
ZM_PATH_BIN=”/usr/bin”
command=`which zmpkg.pl`

start() {
echo -n “Starting $prog: ”
$command start
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && touch /var/lock/zm
return $RETVAL
}
stop() {
echo -n $”Stopping $prog: ”
#
# Why is this status check being done?
# as $command stop returns 1 if zoneminder
# is stopped, which will result in
# this returning 1, which will stuff
# dpkg when it tries to stop zoneminder before
# uninstalling . . .
#

result=`$command status`
if [ ! "$result" = "running" ]; then
echo “Zoneminder already stopped”
echo
RETVAL=0
else
$command stop
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && rm -f /var/lock/zm
fi
}
status() {
result=`$command status`
if [ "$result" = "running" ]; then
echo “ZoneMinder is running”
RETVAL=0
else
echo “ZoneMinder is stopped”
RETVAL=1
fi
}

case “$1″ in
‘start’)
start
;;
‘stop’)
stop
;;
‘restart’ | ‘force-reload’)
stop
start
;;
‘status’)
status
;;
*)
echo “Usage: $0 { start | stop | restart | status }”
RETVAL=1
;;
esac
exit $RETVAL

De acordo com sua distribuição, coloque o script no local adequado, dê permissão 775 para ele ser executado e reinicie sua máquina para fazer o teste.

Se for no Ubuntu também:

- copie para o diretório /etc/init.d
- faça os links simbólicos:

# ln -s /etc/init.d/zoneminder /etc/rc0.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc1.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc2.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc3.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc4.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc5.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc6.d/K20zoneminder

- pronto, ele irá iniciar sozinho.

Depois de feito todo o procedimento anterior, verifique se o apache está rodando, se sim acesse:

http://localhost/zm

Agora o resto é simples, para as configurações iniciais só clicar em Opções (ou Options se ele não pegar o idioma pt-br). Como na imagem abaixo:

Na primeira tela você pode escolher a linguagem da forma que achar melhor:

Na aba caminhos você edita onde deseja salvar os arquivos capturados:

Na aba imagens você escolhe como deseja que seja feito o streaming de vídeo e também o caminho do ffmpeg.

O resto das opções são bem intuitivas, basta ler. Isso vou deixar com você.

Dicas e conclusão

Dicas (Onde eu tropecei):

  • Verificar o padrão da câmera se é PALM ou NTSC.
  • Colocar pra gravar os dados em outra partição separada.
  • Ler os manuais

Conclusões

Esse artigo foi escrito com a finalidade de dar uma luz pra quem esta ralando nessa área e não quer mexer com esses GEOVISION. Então está aí pra mostrar o caminho, o resto depende de cada um. Qualquer dúvida, estamos aqui pra saná-la.

fonte: http://www.vivaolinux.com.br/artigo/Ubuntu-+-Zoneminder-=-Solucao-Livre-para-CFTV/?pagina=1

Segurança Patrimonial com o ZoneMinder no Slackware Linux

Wednesday, February 4th, 2009

Introdução

Esse artigo vem a explicar a instalação e configuração do ZoneMinder, um sistema fantástico para monitoramento com câmeras de vigilância tanto locais (analógicas) quando pela rede (câmeras IP). O ZoneMinder da suporte até 32 câmeras analógicas, e tantas quantas seu hardware aguentar para câmeras IP.

Duas características muito interessante do ZoneMinder são os métodos de Monitoramento, como apenas monitorar, gravar, detectar movimentos, gravar ao detectar movimentos, etc e também o fato de gerar arquivos em diferente extensões (mpg, swf, avi, mov, etc) e armazena-los podendo utilizar qualquer programa para gravar-los em uma mídia e poder reproduzi-la posteriormente.

Usei como sistema base a distribuição Slackware 11 com o kernel 2.6.

Pré-requisitos

Instalar as seguintes CPANs:

  • Archive::Zip
  • Compress::Zlib
  • Date::Manip
  • DBD::mysql
  • DBI
  • IO::Stringy
  • MIME::Lite
  • MIME::Tools
  • MIME::Entity
  • LWP::UserAgent
  • PHP::Serialization
  • X10::ActiveHome
  • Module::Load

Baixe os seguintes pacotes do site http://www.linuxpackages.net

  • a52dec-0.7.4-i686-1jto.tgz
  • faad2-2.5p1-i486-1kjz.tgz
  • faac-1.25p1-i486-1kjz.tgz
  • lame-3.97-i686-1jto.tgz
  • xvidcore-1.1.2-i486-1kjz.tgz
  • x264-20070418-i486-1kjz.tgz
  • ffmpeg-20070419-i486-1kjz.tgz

Verifique se os seguintes pacotes estão instalados no Slackware, se não tiver isntale-os pelo slackpkg:

  • libogg
  • fontconfig
  • gnutls
  • xproto
  • renderproto
  • kbproto
  • libX11
  • libXau
  • libXdmcp
  • libXpm
  • libgcrypt
  • libgpg-error
  • libtheora
  • libvorbis
  • libxcb
  • libXrender
  • sdl

Estando tudo OK, instale usando o installpkg os tgzs que baixou anteriormente deixando o ffmpeg-20070419-i486-1kjz.tgz por último.

Tenha instalado e rodando o Apache, PHP e o MySQL.

Instalação

Baixe do site do http://www.zoneminder.com o tar.gz descompacte-o e entre na pasta src e edite o arquivo zm_mpeg.h e acrescente a seguinte linha #define INT64_C salve o arquivo. Depois edite o arquivo zm_mpeg.cpp na lina 281 e acrescente um & na frente de ofc deixando a linha desse jeito url_fclose(&ofc->pb); Volte para a pasta do ZoneMinder faça os paços a seguir:

# ./configure \
–prefix=/usr/local/zm \
–with-mysql=/usr/lib/mysql \
–with-webdir=/var/www/htdocs/zm \
–with-cgidir=/var/www/cgi-bin \
–with-ffmpeg=/usr \
–with-webuser=apache \
–with-webgroup=apache

Fiquem a vontade para alterar o configure.

# cd db
# mysql -u root -p

Logo abaixo cria-se o banco de dados e o usuário. deixei padrão, mas alterem pelo menos a senha!

mysql> \. zm_create.sql
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON zm.* to zmuser@localhost IDENTIFIED BY ‘zmpass’;
mysql> flush privileges;
mysql> exit;

# cd ..
# make
# make install

Precisamos instalar um pacote chamado Cambozola, que serve para um determinado tipo de streaming do ZoneMinder. Baixe o Cambozola do site http://www.charliemouse.com/code/cambozola/ e para instala-lo basta descompacta-lo e copiar o arquivo que está dentro da pasta dist chamado cambozola.jar para a raiz da pasta da web do ZoneMinder. Depois mude a permissão dele para 777 e o dono do arquivo e o grupo para nobody.

Se até aqui não houve nenhum erro, o ZoneMinder já está funcionando no seu http://localhost/zm

Configuração

Na primeira tela do ZoneMinder do lado superior direito, você pode alterar as opções do ZoneMinder. Abaixo segue as principais opções e seus valores.

Aba Path

ZM_PATH_ZMS = /cgi-bin/zms

Aba Web

ZM_WEB_RESIZE_CONSOLE = false

Aba Config

ZM_CAPTURES_PER_FRAME = 2 (Usando cameras analógicas, com placas com mais de um chip)

Aba Image

ZM_CAM_STREAM = auto
ZM_STREAM_METHOD = jpeg (Usando o Cambozola)
ou
ZM_STREAM_METHOD = mpeg (Usando o Flash)
ZM_MPEG_LIVE_FORMAT = asf (usando o Cambozola)
ZM_MPEG_REPLAY_FORMAT = asf (Usando o Cambozola)
ou
ZM_MPEG_LIVE_FORMAT = swf (Usando o Flash)
ZM_MPEG_REPLAY_FORMAT = swf (Usando o Flash)

ZM_OPT_CAMBOZOLA = true (Usando o Cambozola)
ZM_FFMPEG_FORMATS = Acrescentar o swf no final
ZM_OPT_MPEG = ffmpeg
ZM_PATH_FFMPEG = /usr/bin/ffmpeg

Aba Network

ZM_OPT_REMOTE_CAMERAS = true (Usando Cameras IP)
ZM_NETCAM_REGEXPS = false
ZM_HTTP_VERSION = 1.0

Existem outras opções, mas perceba que do lado de cada opção tem um (?) onde se tem a explicação de cada opção.

Placa de captura (Bt878)

Na minha experiência tenho 2 servidores rodando com o ZoneMinder configurado em um para câmeras IP e outra para câmeras analógicas. No primeiro servidor tenho 6 câmeras IP rodando e no segundo 22 câmeras locais rodando.

Utilizo no segundo servidor duas placas com chips Conexant baseados no Bt878 chamada Kodicom 4400R que da suporte cada uma a 16 câmeras e utiliza o drive bttv do kernel do Linux.

Placa Pico 2000 (4 câmeras)

Acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:

options bttv gbuffers=16 card=77

Não esquecer de dar um ENTER no final da linha para dar uma quebra de linha

Placa Kodicom 4400R (16 Câmeras)

Para 1 placa, acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:

options bttv gbuffers=16 card=133,132,133,133

Para 2 placas, acrescentar a seguinte linha no modprobe.conf ou acrescente-a no arquivo /etc/modprobe.d/bttv:

options bttv gbuffers=32 card=133,132,133,133,133,132,133,133

Não esquecer de dar um ENTER no final da linha para dar uma quebra de linha

Browser (Navegador)

Recomendo e muito a utilização do Mozilla Firefox. Porém “funciona” em qualquer navegador.

No caso do FireFox tem que modificar dois parâmetros para que funcione corretamente a exibição de todas as câmeras em uma janela só (conhecida como Montagem no ZoneMinder). Entre no about:config e edite os seguintes parâmetros:

network.http.max-connections-per-server de 8 para 32
network.http.max-persistent-connections-per-server de 2 para 32

Adicionando a câmera

Clique em Add New Monitor

Aba General

NAME = Nome para a câmera
SOURCE TYPE = Local (câmeras analógicas) ou Remote (câmeras IP)
FUNCTION = Monitor (exibe as imagens das câmeras), Modect (aciona o sensor de movimento e gera Alarmes), Record (grava o tempo todo a imagem das câmeras) e Modect (grava apenas quando acionado o sensor de movimento)

Aba Source

Se escolher LOCAL:
DEVICE PATH = /dev/video0 ou /dev/video1 ou /dev/video2 ou …
DEVICE CHANNEL = Canal que vai variar de acordo com a quantidade de cameras
DEVICE FORMAT = PAL ou NTSC (geralmente NTSC)
CAPTURE WIDTH (pixels) = 320 (geralmente, depende da câmera)
CAPTURE HEIGHT (pixels) = 240 (geralmente, depende da câmera)

Se escolher REMOTE:
REMOTE HOST NAME = IP da camera IP
REMOTE HOST PORT = 80 (pode mudar de acordo com a câmera
REMOTE HOST PATH = video.cgi (no caso da minha câmera TrendNet)
REMOTE IMAGE COLORS = 24 bits
CAPTURE WIDTH (pixels) = 320 (geralmente, depende da câmera)
CAPTURE HEIGHT (pixels) = 240 (geralmente, depende da câmera)

Considerações Finais e Referências

O ZoneMinder é um sistema fantástico e serve para aplicações básicas (monitoramento residencial) ou até mesmo para aplicações empresárias (Bancos, Supermercados, etc).

No requisito hardware percebi que quanto maior é a quantidade câmeras maior a quantidade de memória (diretamente proporcional). No meu servidor com 22 câmeras só ficou legal com 2 GB de RAM.

Segue alguns sites que TÊM que ser visitado para implementar o ZoneMinder:

Documentação ZoneMinder:
http://www.zoneminder.com/fileadmin/downloads/README.html

Fórum ZoneMinder (IMPORTANTE):
http://www.zoneminder.com/forums/

Placas de Captura:
http://www.zoneminder.com/forums/viewtopic.php?t=8766&highlight=modprobe+conf+kodcon
http://www.linuxtv.org/v4lwiki/index.php/Kodicom_4400R
http://www.zoneminder.com/wiki/index.php/Kodicom_4400r

FONTE: http://www.utilidadelinux.com/2007/06/segurana-patrimonial-com-o-zoneminder.html

Lutando por um software “menos problemático”!

Tuesday, February 3rd, 2009

Uma coisa interessante que observei hoje foi o quão importante é o software REALMENTE livre.

Na instituição que presto serviço de consultoria o dono da empresa comprou um software mais ou menos naquele estilo “embutido”, aonde os compradores pagam por algo não customizado, ou seja, enlatado.

Não por ter algo contra Delphi, até por que conheço ótimos desenvolvedores nesta linguagem, mas pelo fonte fechado (após compilação).

Uma coisa que a maior parte dos “desenvolvedores” não faz é documentar o fonte e pior, não testa sua aplicação. Foi mais ou menos nisto que “clamei” para ter o fonte do sistema criado em Delphi e “enlatado”.

Minha ira concretizou-se quanto tentei gerar um relatório de produtos com uma marca X, o qual, no momento em que instruí o sistema para tal feito recebi uma mensagem (bug) com erros da aplicação, resultante de que?

Adivinhe -> Software mal debuggado.

Segue a fotinha “maldita”:

tabajaraengine

Sem mais reclamações, somente lamentando por não poder ver o fonte e fazer modificações que possam ajudar na usabilidade deste software.

Lamentável.

Hello world!

Monday, February 2nd, 2009

Esse termo Hello World é interessante, por que se observarmos o cidadão torna-se bem vindo ao mundo… rsrsrs, sem graça não é? Sim, mas faz sentido aqui em 2 situações:

Hello Nerd World and Hello Program World.

Seja bem vindo ao nosso site de How Tos e “contos de TI”.
Divirta-se ou aprenda algo interessante.

Prometemos How tos sobre Redes, PHP, Mysql, Postgres, Windows, BSD e Gnu/Linux, sem contar notícias sobre Apple, Sun, IBM e outros “monstrinhos” do mercado de TI, como Red Hat e a “pequenina” GOOGLE.

Obrigado por nos prestigiar.