Compartilhando arquivos com seu PS4 e Xbox One com Minidlna usando Debian

A forma mais fácil de compartilhar arquivos com seu PS4 e XBOX One é com o minidlna. No exemplo a seguir ensinarei como montar um servidor DLNA para compartilhar vídeos, músicas e fotos com seu PS4, Xbox One ou qualquer outro dispositivo que tenha suporte a este tipo de protocolo.

Hardware
Hardware utilizado
Motherboard Gigabyte E7500
4GB DDR3 ( RAM )
Processador Intel Core 2 Duo
02 discos de 1 TB SATA

*OBS Lembrando que as configuração acima são apenas para nossos testes. Sua configuração deve se adequar ao projeto que irá realizar.

Software
Sistema Operacional Linux Debian 7.3
MiniDlna

Instalando e configurando

1. Abra o terminal e execute o comando abaixo
sudo apt-get install minidlna

2. Edite o arquivo /etc/minidlna.conf e procure pelas linhas
media_dir=/

3. Reinicie o serviço com o comando abaixo
# minidlna -d -R

4. Você pode verificar quantos arquivos foram indexados em seu servidor apontando para
http://localhost:8200 ou apontando para o ip do seu servidor

Desabilitando arquivos temporários do Office no Samba

Caso seus usuários estiverem reclamando dos arquivos temporários gerados pelo Microsoft Office ( Word, Excel, Powerpoint ) a solução está abaixo.

Abra o arquivo /etc/samba/smb.conf e adicione as seguintes linhas

hide files=/~*/
veto files=/~*/

Faça isto para cada pasta compartilhada ou então na parte GLOBALS do Samba

Utilizando o Festival Text-to-Speach no Linux

O recurso de Text-to-Speach pode ser utilizado com facilidade no Linux através do software Festival. A aplicação possibilita que você leia a saída de um arquivo com voz utilizando o recurso de TTS.

Post em inglês

Introduction

Using Festival Text-to-Speech in Ubuntu doesn’t work after the install. Here are some steps I took to fix it. Also, some changes to make it useful in everyday work.

Getting Festival to Work

Festival is the free text-to-speech engine that is extremely popular.

Here’s how to get it:

sudo apt-get install festival

Here’s how to test it:

echo "hello world"|festival --tts

You may see this error:

Linux: can't open /dev/dsp

If so, add the following lines to your .festivalrc file:

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)

Getting it to read the clipboard

Now, if you want it to read info from your clipboard, install this:

sudo apt-get install xclip

And type this:

xclip -o|festival --tts

Now, you can go a step further and create a shortcut key for reading text. Here’s a good one:

#!/bin/bash

#This script reads the information from the clipboard outloud.

#Look for festival being run.
running=$(pgrep festival)

if [ -z $running ]
then
    #read it
    xclip -o|festival --tts
else
    #kill it
    killall festival;killall aplay;sleep .1;killall aplay
fi

I call it talk.sh. Be sure to do a chmod +x talk.sh to it.

Assigning a Shortcut

Now, to assign to a shortcut key. I’m using Ubuntu which uses GNOME. if you use something else..you’re on your own. Otherwise, click System->Keyboard Shortcuts. Then add the path to the script and assign a shortcut.

I assigned it to the Windows-A keystroke. You can click it once to start and again to stop. Unfortunately, the script assumes you only have one instance of festival.

Adjusting the Playback Speed

If you want it to read faster, change the .festivalrc file:

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $(($SR*140/100)) $FILE")

The 140/100 means 140% of original speed which seems about right to me for most texts.

Improving Voices

The default voices in Festival do not sound great. Here’s a bash script to add new voices. These are the best I could find anywhere:

#Setup
cd
dir=nitech_us
mkdir $dir
cd $dir

#Download the voices
for voice in awb bdl clb rms slt jmk
do
  wget "http://hts.sp.nitech.ac.jp/archives/2.0.1/festvox_nitech_us_"$voice"_arctic_hts-2.0.1.tar.bz2" done   #Unpack tar xvf *.bz2   #Install sudo mkdir -p /usr/share/festival/voices/us sudo mv lib/voices/us/* /usr/share/festival/voices/us/ sudo mv lib/hts.scm /usr/share/festival/hts.scm

Setting a Default Voice

The default voice in Festival is configurable, but it doesn’t seem to work. It was necessary to change/usr/share/festival/voices.scm directly. Simply update the default-voice-priority-list. It should like something like this:

(defvar default-voice-priority-list
'(nitech_us_slt_arctic_hts
kal_diphone cmu_us_bdl_arctic_hts cmu_us_jmk_arctic_hts cmu_us_slt_arctic_hts cmu_us_awb_arctic_hts ; cstr_rpx_nina_multisyn ; restricted license (lexicon) ; cstr_rpx_jon_multisyn ; restricted license (lexicon) ; cstr_edi_awb_arctic_multisyn ; restricted license (lexicon) ; cstr_us_awb_arctic_multisyn ked_diphone don_diphone rab_diphone en1_mbrola us1_mbrola us2_mbrola us3_mbrola gsw_diphone ;; not publically distributed el_diphone ) "default-voice-priority-list List of voice names. The first of them available becomes the default voice.")

Notice how I put nitech_us_slt_arctic_hts at the top. This is my favorite voice.

Javascript: resgatando parametros de url e disparando eventos em Jquery

Imagine a seguinte situação:

Você possui um parametro que é passado via url exemplo http://teste.com/teste?msg=1 e você queira disparar um evento quando encontrar o parametro msg=1 na url

Para isto execute o exemplo abaixo poderá te ajudar:

Proxy transparante Squid + Iptables ( tutorial completo )

A junção do proxy Squid com o Iptables é algo realmente incrível para os Sysadmin que precisam uma solução poderosa e de baixo custo para controle de acesso a internet. Imagine a seguinte situação, você possui uma empresa que é dividida por departamentos e alguns departamentos precisam de acesso a internet com mais ou menos recursos que os outros. Exemplo sua área de produção precisa ter acesso simplesmente a documentos técnicos que é disponibilizado online e do outro lado você têm a diretoria que deve ter acesso full.

Para esta função teremos o proxy transparente que é o Iptables redirecionamento as solicitações da porta 80 para o Squid e o sistema de proxy fará o controle de acesso necessário.

Hardware necessário
Há aquela questão que todo sysadmin fala que Linux roda em qualquer hardware até mesmo em máquinas como o milenar Pentium 200 MMX. A verdade é que de fato customizado ele roda mas para funções de firewall com proxy transparente a cenário muda um pouco. Quanto mais regras você adicionar, e maior o tráfego de dados que passarão através das NICs isto implicará em maior poder de processamento e storage.

Sendo assim utilizaremos uma máquina não tão parruda mas que aguenta o tranco de 60 máquinas com acesso controlado e filtros específicos por departamento. Então o hardware que utilizaremos será:

PC Desktop c/ Processador Intel ATOM
2 GB RAM
HD 250 GB
02 NICs 10/100/1000 MBps

Sistema Operacional
O SO que iremos utilizar é o Ubuntu Server 12.0. Por que não mais o Debian ? Bom na verdade ainda temos rodando servidores e firewalls Debian mas o Ubuntu chegou em um grau de maturidade que podemos confiar. O Debian é uma distro fantástica que deu origem ao Ubuntu Knoppix entre outras distros mas focaremos no Ubuntu neste tutorial.

Instalando os pacotes necessários
Como estaremos utilizando o Ubuntu Linux poderemos centralizar a instalação dos pacotes no Apt-Get. Estarei levando em consideração que você tenha alguma experiência de shell para utilização dos comandos que falaremos a partir de agora OK ?

Pacotes necessários:
Squid3
Squid3-common
Sarg
Iptables

Abra o termina e entre com os comandos a seguir

apt-get install squid3 squid3-common

Entre no diretório /etc/squid3/

Vamos fazer um backup do arquivo de configuração do Squid

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default

Para a configuração do Squid utilizaremos como base o arquivo squid.conf que pode ser baixado com o comando abaixo

wget http://jaccon.com.br/downloads/squid/squid.conf.zip

Neste arquivo de configuração estaremos considerando que sua rede trabalha no range 192.168.0.0/24 e teremos algumas regras específicas para o departamento que estaremos chamando de produção

Descompacte o arquivo dentro da /etc/squid3/squid.conf

unzip squid.conf.zip

Edite o arquivo com o aplicativo de sua preferência em nosso caso estaremos utilizando o poderoso Vi:

vi /etc/squid3/squid.conf

Fizemos uma pequena alteração neste arquivo no qual mudaremos a porta padrão do Squid 3148 para 8888. Caso queira manter a porta padrão fica por seu critério. O Squid para funcionar corretamente precisa de poucas linhas. As customizações poderão ser adicionadas na sequência:

http_port 8888 transparent
visible_hostname firewall.bluesystems
error_directory /usr/local/blue.firewall/proxy/errors/
cache_mem 64 MB
maximum_object_size_in_memory 7192 KB
maximum_object_size 700 MB
minimum_object_size 10 KB
cache_dir ufs /var/spool/squid3 1024 16 256
refresh_pattern ^ftp: 10 20% 570
refresh_pattern ^gopher: 10 20% 570
refresh_pattern . 10 20% 570
cache_access_log /var/log/squid3/access.log
cache_mgr suporte@bluesystems.com.br
dns_nameservers 208.67.220.220
dns_nameservers 8.8.8.8
# acls
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow all

Explicando as principais linhas do arquivo
http_port 8888 transparent
Porta TCP no qual o Squid irá rodar o daemon. A flag transparent diz que o Squid trabalhará em modo Proxy transparente.

acl all src 0.0.0.0/0.0.0.0
Estamos dizendo que todo o tráfego que passar pela interface local poderá ser cacheada pelo Squid.

Criando uma regra de controle de sites bloqueados por IP
Eu acho mais organizado criar uma pasta chamada acls dentro do diretório de configuração do Squid para deixar todos os arquivos de acls. Sendo assim caso queira seguir meu exemplo entre com o comando abaixo

mkdir -p /etc/squid3/acls

Vamos criar o arquivo /etc/squid3/acls/full_allow_ipaddress.acl onde adicionaremos os ips que poderão ter acesso full aos sites que passarão pelo squid. O arquivo é simples basta adicionar os IPs um abaixo do outro e você pode usar ainda o comando echo para apendar os ips sem a necessidade de abrir com seu editor padrão:

echo “192.168.0.1” >> /etc/squid3/acls/full_allow_ipaddress.acl
echo “192.168.0.2” >> /etc/squid3/acls/full_allow_ipaddress.acl
echo “192.168.0.3” >> /etc/squid3/acls/full_allow_ipaddress.acl

Agora adicionaremos uma ACL que levará os domínios dos sites que gostaríamos de bloquear. Para isto adicione em seu squid.conf as linhas abaixo:

# deny access
acl blockeddomain dstdomain “/etc/squid3/acls/blocked.domains.acl”
http_access deny blocked domain

No arquivo /etc/squid3/acls/blocked.domains.acl deve conter todos os domínios dos sites que gostaría de bloquear para os usuários. Só os usuário da acl full_allow_ipaddress não passarão por esta regra.

echo “.facebook.com” >> /etc/squid3/acls/blocked.domains.acl
echo “orkut.com” >> /etc/squid3/acls/blocked.domains.acl
echo “twitter.com” >> /etc/squid3/acls/blocked.domains.acl

Bloqueando o download de arquivos através do mimetype
Uma prática simples que pode ser adicionada é o controle de downloads de arquivos como .exe , .com, .bat etc..

Para isto adicone as seguintes linhas de comando no seu squid.conf

# filter files
acl blockfiles urlpath_regex “/etc/squid3/blocked.files.acl”
# Deny all blocked extension
#deny_info ERR_BLOCKED_FILES blockfiles
http_access deny blockfiles

Dentro do arquivo utilize expressões regulares para especificar os mimetypes dos arquivos como no exemplo abaixo:

\.[Aa][Vv][Ii]$
\.[Mm][Pp][Gg]$
\.[Mm][Pp][Ee][Gg]$
\.[Mm][Pp]3$
\.[Pp][Ii][Ff]$
\.[Bb][Aa][Tt]$
\.[Ee][Xx][Ee]$
\.[Mm][Ss][Tt]$
\.[Tt][Oo][Rr][Rr][Ee][Nn][Tt]$
\.[Rr][Aa][Rr]$

Traduzindo: MPG, MPEG, MP3, PIF, BAT, EXE, MST, TORRENT, RAR

Criando regras de controle por departamento
Digamos que o departamento de produção terá acesso apena a um determinado site e todos os demais serão bloqueados. Para isto adicione a acl abaixo em seu arquivo squid.conf

# CTM ACLS
acl acl_ctm_ips src “/etc/squid3/acls/producao_ips.acl”
acl acl_ctm_allow_urls url_regex “/etc/squid3/acls/producao_allow_urls.acl”
http_access deny acl_ctm_ips !acl_ctm_allow_urls

Dentro do arquivo producao_ips.acl vamos adicionar os endereços IP das máquinas que fazem parte da produção. Siga o exemplo do ítem anterior. No arquivo producao_allow_urls.acl você deve adicionar os domínios dos sites que os usuáios da produção poderão ter acesso.

Proxy transparente
Agora que temos parte de nossas regras no Squid podemos fazer o Prerouting da porta 80 para 8888 pelo Iptables. Entre com os seguintes comandos abaixo.

iptables -A PREROUTING -t nat -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 8888
iptables -A INPUT -p tcp –dport 8888 -i eth0 -j DROP
iptables -A FORWARD -p tcp –dport 8888 -i eth0 -j DROP

A primeira linha diz para que todo o tráfego da porta 80 seja enviada para 8888 ( Squid ). Na segunda linha estamos informando que todo o tráfego que for destinada a interface eth0 ( internet ) na porta 8888 seja dropada. A terceira linha é um complemento que diz que todo o tráfego que entrar ou sair da interface eth0 que destinada a porta 8888 seja dropada.

Agora que temos todas as regras adicionadas execute

service squid3 stop
service squid3 start

Para testar se está funcionando entre com o comando

tail -f /var/log/squid3/access.log

Utilize a internet normalmente e veja as saídas dos acessos pelo arquivo de log. Esperamos que tenham gostado.

Para dúvida entre em contato conosco através do e-mail jaccon at gmail.com

Desabilitando a execução de scripts em diretório no Apache usando .htaccess

O grande problema de utilizar scripts com suporte a escrita em servidores web são os problemas de segunça que isto pode trazer. Caso seu script tenha alguma falha e possibilite um injection um usuário mal intensionado pode fazer o upload de um CMD ( scripts que possibilitam o gerenciamento de seu servidor web ).
Continue reading

Sincronizando base de dados do Things To do List com Dropbox ( Things+Dropbox )

O aplicativo Things não suporte nativamente que você sincronize sua base de dados utilizando aplicativos como DropBOX. Pensando nisto desenvolvi uma aplicativo Shell/Automator para OSX no qual possibilita que você sincronize seu Things To do List com qualquer máquina que tenha o Dropbox instalado.
Continue reading

Creating Expandable Banners with Flash and Javascript

In this tutorial, we are going to create the expandable banner by following 3 steps:

  1. Create a Flash banner with the original size and the expanded animation.
  2. Build a expandable area for the banner with HTML & CSS.
  3. Develop a small javascript to enable communication between the Flash banner and the HTML file. Continue reading