Mosquitto Eclipse – Um Broker MQTT de Software Livre

O Eclipse Mosquitto é um intermediário de mensagens de código-fonte aberto (licenciado por EPL / EDL) que implementa as versões 3.1 e 3.1.1 do protocolo MQTT. O Mosquitto é leve e adequado para uso em todos os dispositivos, desde computadores de mesa única de baixa potência até servidores completos.

O protocolo MQTT fornece um método leve de executar mensagens usando um modelo de publicação / assinatura. Isso o torna adequado para mensagens da Internet das Coisas, como sensores de baixa potência ou dispositivos móveis, como telefones, computadores embutidos ou microcontroladores.

O projeto Mosquitto também fornece uma biblioteca C para implementar clientes MQTT, e os populares clientes MQTT da linha de comando mosquitto_pub e mosquitto_sub.

O Mosquitto faz parte da Eclipse Foundation e é um projeto do iot.eclipse.org

Baixar

O Mosquitto é altamente portátil e está disponível para uma ampla gama de plataformas. Vá para a página de download dedicada para encontrar a origem ou os binários para sua plataforma.

Leia o log de alterações para saber mais sobre os lançamentos recentes.

Teste

Você pode ter sua própria instância do Mosquitto em execução em minutos, mas para tornar o teste ainda mais fácil, o Projeto Mosquitto executa um servidor de teste em test.mosquitto.org onde você pode testar seus clientes de várias maneiras: MQTT simples, MQTT sobre TLS , MQTT sobre TLS (com certificado de cliente , MQTT sobre WebSockets e MQTT sobre WebSockets com TLS.

plataformas.

Comunidade

Segurança

Use a página de segurança para descobrir como denunciar vulnerabilidades ou respostas a problemas de segurança anteriores.

Fonte

Downloads mais antigos estão disponíveis em http://mosquitto.org/files/

Instalação Binária

janelas

Veja o arquivo readme-windows.txt depois de instalar os detalhes e dependências específicos do Windows.

Mac

Mosquitto pode ser instalado a partir do projeto homebrew. Veja brew.sh e depois usebrew install mosquitto

Arch Linux

  • Mosquitto pode ser encontrado no repositório da comunidade.

CentOS

Baixe o arquivo de configuração do repositório para sua versão do CentOS a partir de baixo e copie-o para /etc/yum.repos.d/ Agora você poderá instalar e manter o mosquito atualizado usando as ferramentas normais de gerenciamento de pacotes.

Os pacotes disponíveis são: mosquito, mosquito-cliente, libmosquitto1, libmosquitto-devel, libmosquittopp1, libmosquittopp-devel, python-mosquitto. CentOS 7CentOS 6

Debian

  • O Mosquitto agora está no Debian. Haverá um pequeno atraso entre uma nova versão e ela aparecerá no Debian como parte dos procedimentos normais da Debian.
  • Existem também repositórios Debian fornecidos pelo projeto do mosquito, como descrito em http://mosquitto.org/2013/01/mosquitto-debian-repository>

Fedora

O Mosquitto está agora disponível diretamente no Fedora. Use yum install mosquittoou pesquise “mosquito” para encontrar os pacotes relacionados.

FreeBSD

Mosquitto está disponível para o FreeBSD: http://www.freshports.org/net/mosquitto/

Gentoo

Usar emerge mosquitto

openSUSE

Faça o download do arquivo de configuração do repositório para a sua versão do openSUSE abaixo e copie-o para /etc/zypp/repos.d/ Agora você poderá instalar e manter o mosquito atualizado usando as ferramentas normais de gerenciamento de pacotes.

As embalagens disponíveis são: mosquitto, mosquito-cliente, libmosquitto1, libmosquitto-devel, libmosquittopp1, libmosquittopp-devel, python-mosquitto.

OpenWrt

Se você estiver usando um instantâneo de tronco, use opkg update; opkg install mosquitto

Karl Palsson mantém um conjunto de feeds que podem ser mais atualizados do que a versão atual do OpenWrt:

Raspberry Pi

Mosquitto está disponível através do repositório principal.

Existem também repositórios Debian fornecidos pelo projeto do mosquito, como descrito em http://mosquitto.org/2013/01/mosquitto-debian-repository/

Redhat Enterprise Linux

Faça o download do arquivo de configuração do repositório para sua versão do RHEL a partir de baixo e copie-o para /etc/yum.repos.d/ Agora você poderá instalar e manter o mosquitto atualizado usando as ferramentas normais de gerenciamento de pacotes.

Os pacotes disponíveis são: mosquito, mosquito-cliente, libmosquitto1, libmosquitto-devel, libmosquittopp1, libmosquittopp-devel, python-mosquitto. RHEL 7RHEL 6

SUSE Linux Enterprise Server

Adicione o repositório apropriado à sua configuração de pacote na lista abaixo e instale o mosquitto a partir de suas ferramentas normais de gerenciamento de pacotes.

Ubuntu

O Mosquitto está disponível nos repositórios do Ubuntu para que você possa instalar como em qualquer outro pacote. Se você estiver em uma versão anterior do Ubuntu ou quiser uma versão mais recente do mosquitto, adicione o PPA mosquitto-dev à sua lista de repositórios – veja o link para detalhes. O mosquito pode então ser instalado a partir do gerenciador de pacotes.

  • sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
  • sudo apt-get update

Se o comando apt-add-repositorynão for reconhecido, ele poderá ser instalado com:

  • sudo apt-get install python-software-properties

Iphone

Você pode usar o libmosquitto (incluído no download da fonte) no iPhone para criar aplicativos MQTT. Ele compila como objective-c, ou você pode usar o projeto marquette que é um wrapper object-c e aplicativo de exemplo.

Fonte: https://mosquitto.org/download/

 .

Instalando o e-cidade a partir dos fontes no Linux CentOS 7

O e-cidade destina-se a informatizar a gestão dos Municípios Brasileiros de forma integrada. Esta informatização contempla a integração entre os entes municipais: Prefeitura Municipal, Câmara Municipal, Autarquias, Fundações e outros.
A economia de recursos é somente uma das vantagens na adoção do e-cidade, além da liberdade de escolha dos fornecedores e garantia de continuidade do sistema, uma vez apoiado pelo Ministério do Planejamento.

1. Instalação do CentOS 7.x

O CentOS, abreviação de Community ENTerprise Operating System, é uma distribuição Linux de classe Enterprise derivada de códigos fonte gratuitamente distribuídos pela Red Hat Enterprise Linux e mantida pelo CentOS Project. Como o uso em servidores pode exigir uma maior compatibilidade com o hardware, a versão indicada para o uso com esta documentação é a CentOS 7.x.

1.1 Obtendo a mídia de instalação

A mídia de instalação pode ser obtida diretamente do site do projeto e gravada em CD, DVD ou pendrive. No site http://www.centos.org/download/ esta disponível a versão mais recente, mas utilizaremos a versão 7 x86_64 disponível em http://mirror.globo.com/centos/7/isos/x86_64/ (CentOS-7-x86_64-Minimal-1611.iso) por questões de compatibilidade com o produto.

1.2 Instalando o CentOS 7.x

O processo de instalação do sistema operacional não é coberto por esta documentação, mas recomendamos a utilização da imagem mínima, em “pt_BR” Português do Brasil.

Dica: Maiores informações sobre a instalação e personalização do sistema operacional podem ser obtidas em:
http://wiki.centos.org/Documentation

1.3 Editando os arquivos de configuração

Durante o processo de configuração descrito nesta documentação, é necessário editar e modificar diversos arquivos de texto. Para realizar estas modificações, sugerimos a utilização do editor “vim”, mas você pode usar qualquer outro editor de texto de sua preferência.

Para instalar o editor de arquivos execute o comando:

[linux]# yum -y install vim

Dica: Mais informações sobre o editor de textos “vim” podem ser obtidas em:
http://www.vim.org/.

1.4 Desabilitando o SELinux

Atenção: Se você tiver problemas com a execução do Apache, certifique-se que o contexto de seus arquivos de configuração do Apache estão corretamente configurados no SELinux, ou altere o modo de execução do SELinux para permissivo, ou desative-o.

Para desativar o SELinux, edite o arquivo de configuração através do comando:

[linux]# vim /etc/selinux/config

Altere a linha de:

SELINUX=enforcing

Para:

SELINUX=disabled

Dica: Note que o valor correto é disabled, muitos usuários digitam apenas disable.

1.5 Instalando o repositório EPEL

Para instalar o repositório de Pacotes Adicionais para Enterprise Linux (EPEL), execute o comando abaixo:

[linux]# yum -y install epel-release

1.6 Instalando o repositório REMI

Para instalar o repositório, execute o comando abaixo:

[linux]# yum -y localinstall http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

1.7 Atualizando o sistema operacional

Após a instalação, recomendamos a atualização dos pacotes do sistema operacional, para realizar esta tarefa, execute o comando abaixo:

[linux]# yum -y update

1.8 Reinicie o servidor

Para reiniciar o servidor, utilize o comando:

[linux]# shutdown -r now

2. Instalação do PostgreSQL 9.5.x

PostgreSQL é um sistema gerenciador de banco de dados objeto relacional (SGBDOR), desenvolvido como projeto de código aberto sem custo de licença. Este é o programa que vai gerenciar e armazenar o banco de dados relacional utilizado pelo e-cidade.

Dica: Mais informações sobre o PostgreSQL podem ser obtidas em:
http://www.postgresql.org/.

2.1 Configurando o repositório

Para instalar o PostgreSQL 9.5.x e suas dependências, utilizaremos o gerenciador de pacotes yum, que nos prove as últimas atualizações dos pacotes requeridos através de um canal seguro e confiável.

2.1.1 Instale o repositório através do comando:
[linux]# yum -y localinstall https://yum.postgresql.org/9.5/redhat/rhel-7.2-x86_64/pgdg-centos95-9.5-3.noarch.rpm

Dica: Mais informações sobre o gerenciador de pacotes “yum” podem ser obtidas em:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-yum.html

2.2 Ajustando o encoding

2.2.1 Configurando e regerando o ‘locale’

Para o servidor do banco de dados, é necessário alterar a ordenação do locale, para realizar esta tarefa, edite o arquivo de configuração com o comando abaixo:

[linux]# vim /usr/share/i18n/locales/pt_BR

Localize o bloco de configuração LC_COLLATE e END LC_COLLATE, e adicione dentro do bloco as seguintes linhas:

reorder-after <U00A0>
<U0020><CAP>;<CAP>;<CAP>;<U0020>
reorder-end
2.2.2 Regerando o ‘locale’

Para criação do cluster do e-cidade precisamos ter o locale pt_BR ISO-8859-1 disponível no sistema, para regerar utilize o comando abaixo.

[linux]# localedef -i pt_BR -c -f ISO-8859-1 -A /usr/share/locale/locale.alias pt_BR.ISO-8859-1

2.3 Instalando o PostgreSQL 9.5.x

Para realizar a instalação do PostgreSQL 9.5.x através do gerenciador de pacotes execute os comandos:

[linux]# yum -y install postgresql95 postgresql95-contrib postgresql95-server

2.4 Criando e configurando o cluster

O e-cidade utiliza encoding LATIN1 (ISO-8859-1) no cluster do PostgreSQL 9.5.x. Por isso vamos criar e iniciar o cluster quer será utilizado pela aplicação.

Dica: Mais informações sobre a configuração do cluster:
http://www.postgresql.org/docs/9.5/static/sql-cluster.html

2.4.1 Vamos criar o novo cluster do banco de dados como LATIN1 usando os comandos:
[linux]# export LC_ALL=pt_BR.ISO-8859-1
[linux]# su - postgres -c "/usr/pgsql-9.5/bin/initdb -A trust -D /var/lib/pgsql/9.5/data -E LATIN1 --locale=pt_BR.ISO-8859-1 -U postgres"
2.4.2 Para a correta integração com o e-cidade, é necessário alterar algumas configurações do cluster criado através do comando:
[linux]# vim /var/lib/pgsql/9.5/data/postgresql.conf

Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.

Localize e altere as linhas do arquivo do arquivo de configuração, descomentando-as se necessário (remover o caractere # do início da linha), substituindo os valores correspondentes conforme a indicação abaixo.

listen_addresses = '*'
max_connections = 20
bytea_output = 'escape'
max_locks_per_transaction = 256
default_with_oids = on
escape_string_warning = off
standard_conforming_strings = off
2.4.3 Inicie o servidor PostgreSQL através do comando:
[linux]# systemctl start postgresql-9.5
2.4.4 Verifique o resultado da configuração usando o comando:
[linux]# psql -U postgres -h localhost -l

A saída do comando deve ser parecida com os valores abaixo.

   Nome    |   Dono   | Codificação |     Collate      |      Ctype       | Privilégios de acesso
-----------+----------+-------------+------------------+------------------+-----------------------
 postgres  | postgres | LATIN1      | pt_BR.ISO-8859-1 | pt_BR.ISO-8859-1 |
 template0 | postgres | LATIN1      | pt_BR.ISO-8859-1 | pt_BR.ISO-8859-1 | =c/postgres          +
           |          |             |                  |                  | postgres=CTc/postgres
 template1 | postgres | LATIN1      | pt_BR.ISO-8859-1 | pt_BR.ISO-8859-1 | =c/postgres          +
           |          |             |                  |                  | postgres=CTc/postgres
2.4.5 Adicione o serviço do PostgresSQL a inicialização do sistema operacional usando o comando:
[linux]# systemctl enable postgresql-9.5

2.5 Criando a estrutura de banco de dados para o e-cidade

Vamos criar os usuários necessários para o funcionamento do e-cidade através dos comandos:

Atenção: Em ambientes de produção, nunca utilize senhas que tenham o mesmo nome da conta de usuário. Mais informações sobre segurança de senhas podem ser obtidas em:
http://cartilha.cert.br/senhas/.

psql -U postgres -c "CREATE ROLE ecidade WITH SUPERUSER LOGIN PASSWORD 'ecidade';"
psql -U postgres -c "CREATE ROLE plugin WITH LOGIN PASSWORD 'plugin';"
psql -U postgres -c "CREATE ROLE dbseller WITH LOGIN PASSWORD 'dbseller';"

Em seguida, utilize o comando abaixo para criar o banco de dados:

psql -U postgres -c "CREATE DATABASE ecidade OWNER ecidade;"

3. Instalação do Apache

Apache é o servidor web mais usado em sistemas Linux. Servidores web são usados para servir páginas Web que, normalmente, são solicitadas pelos computadores clientes através de navegador, como o Firefox, Chromium, etc.

Dica: Mais informações sobre o Apache podem ser obtidas em:
http://www.apache.org/.

3.1 Instalando o Apache

Para realizar a instalação do servidor web Apache através do gerenciador de pacotes, execute o comando:

[linux]# yum -y install httpd

3.2 Configurando o Apache

3.2.1 Para a correta integração com o e-cidade, é necessário alterar algumas configurações do apache, edite o arquivo de configuração através do comando:
[linux]# vim /etc/httpd/conf/httpd.conf

Localize o bloco abaixo:

<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

E altere para:

<Directory "/var/www/html">
    Options -Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Require all granted
</Directory>

LimitRequestLine 16382
LimitRequestFieldSize 16382
Timeout 12000
AddDefaultCharset ISO-8859-1
SetEnv no-gzip 1

Localize o bloco abaixo:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

E altere para:

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

Dica: Mais informações sobre o VirtualHost podem ser obtidas em:
http://httpd.apache.org/docs/current/vhosts/examples.html.

3.3 Adicione o serviço do Apache a inicialização do sistema operacional usando o comando:

[linux]# systemctl enable httpd

4. Instalação do PHP 5.6 e PHP-FPM

PHP é uma linguagem interpretada livre, usada originalmente apenas para o desenvolvimento de aplicações presentes e atuantes no lado do servidor, capazes de gerar conteúdo dinâmico na World Wide Web.

O PHP-FPM é uma alternativa ao PHP FastCGI com muitas funcionalidades voltadas a sites com grande número de acessos e carga.

Dica: Mais informações sobre o PHP podem ser obtidas em:
http://www.php.net/ e http://php-fpm.org/

4.1 Instalando o PHP 5.6 e o PHP-FPM

Para realizar a instalação do PHP 5.6 através do gerenciador de pacotes, execute o comando:

[linux]# yum -y install php56 php56-php-cli php56-php-common php56-php-pear php56-php-pecl-jsonc php56-php-pecl-zip php56-php-process php56-php-xml php56-runtime php56-php-bcmath php56-php-gd php56-php-interbase php56-php-pecl-jsonc php56-php-mbstring php56-php-mcrypt php56-php-pgsql php56-php-soap php56-php-pecl-sqlite php56-php-xmlrpc php56-php-pecl-zip php56-php-fpm unzip zip xz xz-lzma-compat bzip2

4.2 Configurando o PHP 5.6 e o PHP-FPM

4.2.1 Habilitar as dependências de configuração através do comando:
[linux]# vim /etc/httpd/conf.d/php5.6-fpm.conf
<IfModule !mod_php5.c>
<IfModule proxy_fcgi_module>
    <IfModule setenvif_module>
    SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
    </IfModule>
    <FilesMatch ".+\.ph(p[3457]?|t|tml)$">
        SetHandler "proxy:fcgi://127.0.0.1:9000/"
    </FilesMatch>
    <Proxy "fcgi://127.0.0.1:9000/">
    </Proxy>
    <FilesMatch ".+\.phps$">
        Require all denied
    </FilesMatch>
    <FilesMatch "^\.ph(p[3457]?|t|tml|ps)$">
        Require all denied
    </FilesMatch>
</IfModule>
</IfModule>
4.2.2 Configurar o arquivo de pool do PHP-FPM através dos comandos:
[linux]# vim /opt/remi/php56/root/etc/php-fpm.d/www.conf

Localize as linhas abaixo:

php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on

E altere para:

;php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log
;php_admin_flag[log_errors] = on
4.2.3 Configurar o arquivo de log do PHP-FPM através dos comandos:
[linux]# touch /var/log/php_errors.log
[linux]# chown apache.apache /var/log/php_errors.log
4.2.4 Para a correta integração com o e-Cidade, é necessário alterar algumas configurações do PHP através do comando:
[linux]# vim /opt/remi/php56/root/etc/php.ini

Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.

Localize e altere as linhas do arquivo do arquivo de configuração, descomentando-as se necessário (remover o caractere ; do início da linha), substituindo os valores correspondentes conforme a indicação abaixo.

short_open_tag = On
session.gc_maxlifetime = 7200
date.timezone = "America/Sao_Paulo"
[linux]# ln -s /opt/remi/php56/root/usr/bin/php /usr/bin/php
4.2.6 Reinicie o serviço do PHP-FPM e do Apache usando os comandos:
[linux]# systemctl restart php56-php-fpm
[linux]# systemctl restart httpd

4.3 Adicione o serviço do PHP-FPM a inicialização do sistema operacional usando o comando:

[linux]# systemctl enable php56-php-fpm

5. Instalação do LibreOffice

O LibreOffice é uma suite de escritório livre compatível com as principais suítes de escritório do mercado. Oferece todas as funções esperadas de uma suite profissional: editor de textos, planilha, apresentação, editor de desenhos e banco de dados.
No e-cidade, o LibreOffice é utilizado para exportar documentos baseados em modelos de formulários.

Dica: Mais informações sobre o LibreOffice podem ser obtidas em:
https://pt-br.libreoffice.org/.

5.1 Instalando dependências

Antes de instalarmos o pacote do LibreOffice, devemos instalar uma dependência através do comando:

[linux]# yum -y localinstall https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm

5.2 Instalando o LibreOffice

Para realizar a instalação do LibreOffice através do gerenciador de pacotes, execute o comando:

[linux]# yum -y install libreoffice-writer

6. Instalação do e-cidade

6.1 Obtendo o pacote de instalação

O pacote de instalação pode ser obtido diretamente do site do Portal do Software Público. No endereço da comunidade do e-cidade (https://softwarepublico.gov.br/social/e-cidade) estão disponíveis as últimas versões e suas atualizações. Como estamos realizando uma nova instalação, você deve baixar o pacote completo, um exemplo de nome do pacote seria: e-cidade-x.x.xx-linux.completo.tar.bz2.

6.2 Configurando o servidor

6.2.1 Vamos criar um usuário administrativo para o e-cidade, neste exemplo criaremos o usuário dbseller através do comando:
[linux]# useradd -d /home/dbseller -g apache -G wheel -k /etc/skel -m -s /bin/bash dbseller
6.2.2 Em seguida, vamos definir uma senha para este novo usuário usando o comando:
[linux]# passwd dbseller

Dica: Neste exemplo, defina a senha como o mesmo nome de usuário, como “dbseller”.

Atenção: Em ambientes de produção, nunca utilize senhas que tenham o mesmo nome da conta de usuário. Mais informações sobre segurança de senhas podem ser obtidas em: http://cartilha.cert.br/senhas/.

6.2.3 Agora vamos habilitar a autenticação do grupo wheel editando o arquivo usando o comando:
[linux]# vim /etc/pam.d/su

Localize e descomente a linha como mostrado abaixo.

auth            required        pam_wheel.so use_uid
6.2.4 Para encaminhar os e-mails destinados ao usuário root para o usuário dbseller, edite o arquivo através do comando:
[linux]# vim /etc/aliases

Mova o cursor até o fim do arquivo e insira alinha como mostrado abaixo.

root:           dbseller

Em seguida, execute o comando:

[linux]# newaliases
6.2.5 Também devemos corrigir a máscara de criação de arquivos modificando os arquivos através dos comandos:
[linux]# vim /etc/login.defs

Atenção: Os demais parâmetros, não descritos aqui, não precisam ser alterados.

Localize e altere a linha do arquivo do arquivo de configuração, descomentando-a se necessário (remover o caractere # do início da linha), substituindo o valor correspondente conforme a indicação abaixo.

UMASK           002

Em seguida, execute o comando abaixo para ajustar os arquivos criados pelo apache:

[linux]# echo "umask 002" >> /etc/sysconfig/httpd

6.3 Instalando o e-cidade

6.3.1 Descompacte o pacote do e-cidade através do comando:
[linux]# tar xjf e-cidade-x.x.xx-linux.completo.tar.bz2
6.3.2 Copie o diretório do e-cidade para o diretório raiz do Apache usando o comando:
[linux]# cp -r e-cidade-x.x.xx-linux.completo/e-cidade /var/www/html/

6.4 Configurando o e-cidade

6.4.1 Crie o arquivo de configuração de acesso ao banco de dados através do comando:
[linux]# cp -a /var/www/html/e-cidade/libs/db_conn.php.dist /var/www/html/e-cidade/libs/db_conn.php

Utilize o seguinte comando para editar o arquivo de configuração:

[linux]# vim /var/www/html/e-cidade/libs/db_conn.php

Em seguida, atualize as configurações conforme o exemplo abaixo.

$DB_USUARIO = "ecidade";
$DB_SENHA = "ecidade";
$DB_SERVIDOR = "localhost";
$DB_PORTA = "5432";
$DB_PORTA_ALT = "5432";
$DB_BASE = "ecidade";
6.4.2 Crie o arquivo de configuração de acesso dos plugins através do comando:
[linux]# cp -a /var/www/html/e-cidade/config/plugins.json.dist /var/www/html/e-cidade/config/plugins.json

Utilize o seguinte comando para editar o arquivo de configuração:

[linux]# vim /var/www/html/e-cidade/config/plugins.json

Em seguida, atualize as configurações conforme o exemplo abaixo.

{
  "AcessoBase" : {
    "usuario" : "plugin",
    "senha" : "plugin"
  }
}
6.4.3 Configure o servidor de envio de e-mails do e-cidade através do comando:
[linux]# vim /var/www/html/e-cidade/libs/config.mail.php

Em seguida, atualize as configurações, com os dados do seu servidor de e-mail, conforme o exemplo abaixo.

$sClass = 3;
$sSslt  = ''; // qual o tipo de ssl q sera utilizados ( ex: tls), por padrao é vazio
$bAuth  = true; // autenticacao habilitada
$sUser  = 'exemplo@exemplo.com.br';
$sPass  = 'senhaexemplo';
$sHost  = 'smtp.exemplo.com.br';
$sPort  = '25';
6.4.4 Faça a carga do schema do e-cidade através do comando:
[linux]# psql -U ecidade -d ecidade -f e-cidade-x.x.xx-linux.completo/sql/e-cidade-x.x.xx.sql 2> /tmp/erros.txt

Após a carga, execute o comando abaixo para otimizar as consultas:

[linux]# psql -U ecidade -d ecidade -c "VACUUM ANALYZE VERBOSE;"
6.4.5 Ajuste as permissões dos diretórios através dos comandos:
[linux]# chown -R dbseller.apache /var/www/html/e-cidade
[linux]# chmod -R 775 /var/www/html/e-cidade
[linux]# chmod -R 777 /var/www/html/e-cidade/tmp

6.5 Agendando a migração da auditoria

6.5.1 Edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para migracao do acount para nova estrutura "db_auditoria"
*/30 * * * * cd /var/www/html/e-cidade/integracao_externa/auditoria; ./auditoria_migracao.sh 0 10 1 > log/auditoria_migracao.log 2>&1
*/10 * * * * cd /var/www/html/e-cidade/integracao_externa/auditoria; php -q auditoria_adiciona_fila.php > log/auditoria_adiciona_fila.log 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

6.6 Agendando a verificação do gerenciador de tarefas

6.6.1 Para criar o script de verificação execute os comandos:
[linux]# mkdir -p /opt/dbseller/scripts
[linux]# vim /opt/dbseller/scripts/ativadorGerenciadorTarefasEcidade.sh

Em seguida, adicione as linhas indicadas abaixo.

#!/bin/bash
sDiretorioEcidade="/var/www/html/e-cidade"
if [ ! -d $sDiretorioEcidade ]; then
  echo "Diretorio $sDiretorioEcidade nao existe"
  exit 1;
fi

sContador=$(ps aux | grep '<defunct>' | grep -v 'grep' | wc -l)
if [ "$sContador" -gt "5" ]; then
  sPid=$(ps aux | grep "con4_gerenciadortarefas002.php" | grep -v "grep" | awk '{print $2}');
  kill ${sPid}
fi

sTarefa=$(ps aux | grep "con4_gerenciadortarefas002.php" | grep -v "grep");
if [ "$sTarefa" == "" ]; then
  cd $sDiretorioEcidade;
  /usr/bin/php -q FrontIntegracaoExterna.php --executable con4_gerenciadortarefas002.php > tmp/log_gerenciador_tarefas.log 2> tmp/erros_gerenciador_tarefas.log &
fi

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

6.6.2 Antes de agendar o script de verificação, ajuste a permissão utilizando o seguinte comando:
[linux]# chmod +x /opt/dbseller/scripts/ativadorGerenciadorTarefasEcidade.sh

Em seguinda, edite o crontab do usuário root através do comando:

[linux]# crontab -e

E adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script de verificacao do gerenciador de tarefas
*/15 * * * * cd /opt/dbseller/scripts && su -s /bin/bash apache -c "bash ativadorGerenciadorTarefasEcidade.sh"

6.7 Acessando o e-cidade

Após finalizar os procedimentos de instalação e configuração, abra um navegador e acesse o e-cidade através do endereço IP ou nome do servidor. EX: http://ip_do_servidor/e-cidade, utilize como nome de usuário dbseller, e deixe o campo senha em branco.

Atenção: Certifique-se que o bloqueador de pop-up esteja permitindo o acesso ao endereço IP ou nome do servidor em que o e-cidade foi instalado.

7. Instalação do e-cidadeonline

7.1 Instalando o e-cidadeonline

7.1.1 Copie o diretório do e-cidadeonline para o diretório raiz do Apache usando o comando:
[linux]# cp -r e-cidade-x.x.xx-linux.completo/e-cidadeonline /var/www/html/

7.2 Configurando o e-cidadeonline

7.2.1 Crie o arquivo de configuração de acesso ao banco de dados através do comando:
[linux]# cp -a /var/www/html/e-cidadeonline/libs/db_conn.php.dist /var/www/html/e-cidadeonline/libs/db_conn.php

Utilize o seguinte comando para editar o arquivo de configuração:

[linux]# vim /var/www/html/e-cidadeonline/libs/db_conn.php

Em seguida, atualize as configurações conforme o exemplo abaixo.

$DB_INSTITUICAO = 1;
$DB_SERVIDOR = "localhost";
$DB_BASEDADOS = "ecidade";
$DB_USUARIO = "ecidade";
$DB_PORTA = "5432";
7.2.2 Configure o servidor de envio de e-mails do e-cidadeonline através do comando:
[linux]# vim /var/www/html/e-cidadeonline/libs/config.mail.php

Em seguida, atualize as configurações, com os dados do seu servidor de e-mail, conforme o exemplo abaixo.

$sClass = 3;
$sSslt  = ''; // qual o tipo de ssl q sera utilizados ( ex: tls), por padrao é vazio
$bAuth  = true; // autenticacao habilitada
$sUser  = 'exemplo@exemplo.com.br';
$sPass  = 'senhaexemplo';
$sHost  = 'smtp.exemplo.com.br';
$sPort  = '25';
7.2.3 Ajuste as permissões dos diretórios através dos comandos:
[linux]# chown -R dbseller.apache /var/www/html/e-cidadeonline
[linux]# chmod -R 775 /var/www/html/e-cidadeonline
[linux]# chmod -R 777 /var/www/html/e-cidadeonline/tmp

7.3 Acessando o e-cidadeonline

Após finalizar os procedimentos de instalação e configuração, abra um navegador e acesse o e-cidadeonline através do endereço IP ou nome do servidor. EX: http://ip_do_servidor/e-cidadeonline, utilize como nome de usuário dbseller, e deixe o campo senha em branco.

8. Configurando a carga de integrações

Dica: Preste atenção aos horários de agendamento do crontab de múltiplas integrações. Procure verificar o tempo de duração da execução de cada integração, ajustando o horário de excução conforme a necessidade.

Dica: Sempre que possível, execute manualmente a linha agendada para certificar o correto funcionamento do agendamento.

8.1 Configurando a integração de carga do cubo do BI

8.1.1 Crie o arquivo de configuração de acesso FTP para a carga do cubo do BI através do comando:
[linux]# cp -a /var/www/html/e-cidade/libs/db_cubo_bi_config.php.dist /var/www/html/e-cidade/libs/db_cubo_bi_config.php

Utilize o seguinte comando para editar o arquivo de configuração:

[linux]# vim /var/www/html/e-cidade/libs/db_cubo_bi_config.php

Em seguida, atualize as configurações conforme o exemplo abaixo.

$configCuboBi['ftp']['server']        = "endereco.ip.do.servidor";
$configCuboBi['ftp']['usuario']       = "nome-usuario-ftp";
$configCuboBi['ftp']['senha']         = "senha-do-usuario-ftp";
$configCuboBi['ftp']['diretorio']     = "diretorio-de-destino";
$configCuboBi['ftp']['passive_mode']  = true;

8.2 Configurando a integração de carga do Webservice HORUS BASICO

8.2.1 Crie o arquivo de configuração de através do comando:

Dica: Mais informações sobre o Werbservice HORUS BASICO podem ser obtidas em:
http://portalsaude.saude.gov.br/index.php/o-ministerio/principal/leia-mais-o-ministerio/218-sctie-raiz/daf-raiz/ceaf-sctie/qualifarsus-raiz/eixo-informacao/l1-eixo-informacao/8508-envio-de-dados-webservice

[linux]# cp -a /var/www/html/e-cidade/libs/db_config_horus.php.dist /var/www/html/e-cidade/libs/db_config_horus.php

Utilize o seguinte comando para editar o arquivo de configuração:

[linux]# vim /var/www/html/e-cidade/libs/db_config_horus.php

Em seguida, atualize as configurações conforme o exemplo abaixo.

Atenção: Consulte a documentação das URLs no portalsaude.saude.gov.br antes de utilizar a integração.

// Homologação
$sUrlWebService = "http://189.28.128.37/horus-ws-basico/RecebeDadosWS?wsdl";
$sLogin         = "nome-usuario-horus";
$sSenha         = "senha-do-usuario-horus";

8.3 Configurando as integrações de limpeza de cadastros duplos CGM e CGS

8.3.1 Para agendar a limpeza de cadastros duplos CGM, edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para limpeza de cadastro duplos CGM
0 22 * * * cd /var/www/html/e-cidade/ ; /usr/bin/php FrontIntegracaoExterna.php --executable duplos.php > duplos.log 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.3.2 Para agendar a limpeza de cadastros duplos CGS, edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para limpeza de cadastro duplos CGS
0 22 * * * cd /var/www/html/e-cidade/ ; /usr/bin/php FrontIntegracaoExterna.php --executable duploscgs.php > duploscgs.log 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.4 Configurando a integração GISS

O script de execução da integração GISS possui dois parametros de configuração:

1) Se o programa for agendado sem nenhum parâmetro, ou com o parametro 1, a integração processará somente os registros alterados.

.../iss4_gissonline002.php 1 > /dev/null 2>&1

2) Se o programa for agendado com o parâmetro 2, a integração processará todos os registros.

.../iss4_gissonline002.php 2 > /dev/null 2>&1
8.4.1 Edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para execução da integração GISS
0 22 * * * cd /var/www/html/e-cidade/ ; /usr/bin/php FrontIntegracaoExterna.php --dir integracao_externa/gissonline --executable integracao_externa/gissonline/iss4_gissonline002.php > /dev/null 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.5 Configurando a integração SIGCORP

8.5.1 Edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para execução da integração SIGCORP
0 22 * * * cd /var/www/html/e-cidade/ ; /usr/bin/php FrontIntegracaoExterna.php --dir integracao_externa/sigcorp --executable integracao_externa/sigcorp/iss4_sigcorp001.php > /dev/null 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.6 Configurando a integração WEBISS

8.6.1 Edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para execução da integração WEBISS
0 22 * * * cd /var/www/html/e-cidade/ ; /usr/bin/php FrontIntegracaoExterna.php --executable integracao_externa/webiss/iss4_webiss001.php > /dev/null 2>&1

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.7 Configurando a integração de geração das tabelas débitos

8.7.1 Para agendar a geração das tabelas débitos, edite o crontab do usuário dbseller através do comando:
[linux]# crontab -u dbseller -e

Em seguida, adicione o seguinte bloco ao final do arquivo:

# DBSeller - Agendamento do script para geração das tabelas débitos
0 20 * * * cd /var/www/html/e-cidade/integracao_externa/debitos ; ./debitos.sh &> /dev/null

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

8.7.2 Configurando a integração débitos

O script de execução da integração débitos necessita de um arquivo de configuração para ser executado.
Para criar o script de configuração, execute os comandos abaixo:

[linux]# cd /var/www/html/e-cidade/integracao_externa/debitos/libs
[linux]# cp -a debitos.conf.dist debitos.conf

Em seguida edite o arquivo através do comando:

[linux]# vim debitos.conf

Informe o valor das variáveis conforme as descrições abaixo:

# Permite definir a periodicidade com que a manutencao da tabela debitos
# sera executada. O valores permitidos sao: -1=desativa, 0=todos ou dia da semana (1=segunda, 2=terca ... 7=domingo).
#
# Exemplo:
# DEBITOS_PERIODO="7"
#
DEBITOS_PERIODO=""

# Permite definir o numero de dias no passado para manter os registros na debitos.
#
# Exemplo:
# DEBITOS_DIAS_MANTER="14"
#
DEBITOS_DIAS_MANTER=""

# Permite definir o codigo da(s) instituicao(oes) que deve(em) ser gerada debitos. Se houver
# mais de uma instituicao, os seus codigos devem ser separados por espa�o.
#
# Exemplo:
# DEBITOS_INSTITUICOES="1"
# DEBITOS_INSTITUICOES="1 3"
#
DEBITOS_INSTITUICOES=""

Atenção: Lembre-se de ajustar o caminho para o diretório do e-cidade conforme o ambiente em que foi instalado.

Glossário

Termo Significado
encoding http://en.wikipedia.org/wiki/Character_encoding
cluster http://www.postgresql.org/docs/8.2/interactive/creating-cluster.html
apt-get http://www.debian.org/doc/manuals/apt-howto
apt-get http://pt.wikipedia.org/wiki/Advanced_Packaging_Tool
vim http://www.vim.org
Firefox http://www.mozilla.org/firefox
DBSeller Sistemas http://www.dbseller.com.br
proxy http://pt.wikipedia.org/wiki/Proxy
squid http://pt.wikipedia.org/wiki/Squid

Firewall para sua rede doméstica com Raspberry Pi

Embora o Raspberry Pi 3 tenha sido anunciado recentemente , o Raspberry Pi 2 ainda tem muita vida e é mais do que adequado para muitas tarefas interessantes e úteis.

Eu tenho algumas poucas framboesas sentadas ao redor que eu tenho explorado para outros projetos interessantes, um dos quais é a possibilidade de substituir um servidor de rack Intel de núcleo único de 64 bits muito antigo que eu uso para o firewall primário e o roteador no borda da minha rede. Mas antes de interromper o firewall principal e o gateway da minha rede, queria testar o Pi um pouco e ver exatamente o que seria necessário para que isso acontecesse.

 

Substituindo uma torre

 

 

Eu também tenho uma torre Intel de núcleo duplo que uso como firewall e porta lateral para minha rede. Este computador é um exagero extremo para essa tarefa, e eu definitivamente posso usá-lo em um papel mais apropriado. Como este computador fornece acesso não crítico à minha rede, decidi substituí-lo por um Raspberry Pi 2 Model B como teste.

 

Fonte de energia

Eu usei o Raspberry Pi 2 Model B, mas um Raspberry Pi 3 também deveria funcionar. Eu instalei o Pi a partir de um bloco de energia USB de 5V 1.8 A de reposição em um cabo de extensão doméstico padrão que liguei um no-break para fornecer energia consistente. Eu usei um cabo USB muito pequeno para micro-USB do bloco de energia para o conector de alimentação no Pi.

Interruptor KVM

Eu tenho vários dos meus hosts de infraestrutura conectados a um switch KVM de 16 portas com entradas VGA e PS / 2. Eu queria usar o KVM para o Pi também. Liguei a entrada do teclado e do mouse do KVM ao Pi com um cabo adaptador USB / PS / 2. A extremidade USB se conecta ao Pi e aos conectores do plugue do cabo do comutador KVM nos conectores PS / 2 do adaptador. Eu encontrei no passado que algumas marcas do adaptador USB para PS / 2 não funcionam bem.

Para a conexão de vídeo, inicialmente usei um adaptador HDMI para VGA que é uma unidade única e sólida. Este dispositivo produziu muito calor, grande parte do qual foi transmitida para o Pi através do conector HDMI. Posteriormente, substituí a unidade única por um adaptador que tenha um curto comprimento de cabo entre o conector HDMI e o conversor VGA, além de uma unidade de conector que produz e transmite significativamente menos calor.

Instalando o CentOS

Eu uso o CentOS em meus outros servidores de infra-estrutura, então eu queria usá-lo no Pi também. Usando minha principal estação de trabalho Linux, baixei a distribuição ARM de 32 bits do CentOS Userland 7 para o Pi 2 do site do Wiki CentOS , que também contém imagens para outros computadores de placa pequena. Se você estiver usando o Raspberry Pi 3, você deve usar essa imagem em vez disso.

Observe que o nome da imagem pode mudar à medida que as imagens mais recentes são disponibilizadas. Você sempre deve usar a imagem mais recente. Descompusei o arquivo de imagem xz baixado (usando unxz) e usei o comando dd para instalar a imagem em um cartão microSD de 8GB.

dd if=CentOS-Userland-7-armv7hl-Minimal-1511-RaspberryPi2.img of=/dev/sdx

Certifique-se de especificar a localização correta da unidade microSD na sua máquina.

Não são necessárias etapas adicionais para que o cartão microSD seja inicializável. Eu inseri o cartão no slot do cartão microSD na placa Pi. Em seguida, liguei o conector micro-USB da fonte de alimentação ao conector de alimentação no Pi para inicializar até um prompt de login da interface de linha de comando.

Configuração inicial

Entrei como root usando a senha padrão de “centos” (sem as aspas) e alterei imediatamente a senha de root. Eu mudei o nome do host no / etc / hostname e segui as instruções em / root / README para expandir a partição raiz para preencher todo o espaço disponível no cartão microSD. Isso incluiu uma reinicialização.

Neste ponto, eu liguei o adaptador de rede de bordo à minha rede interna, então eu poderia instalar mais software e testar a funcionalidade da rede. Eu instalei vários utilitários que eu acho úteis, incluindo quais, tela, vim, rwhois, mlocate, Midnight Commander (mc), mailx, bind-utils, chrony e wget.

Alguns outros favoritos meus, como no topo e no htop, ainda não estão disponíveis no repositório do CentOS. Eu não instalei estes todos de uma só vez porque não sabia quais estavam faltando. Em vez disso, tive que enfrentar o problema de que uma ferramenta necessária não estava instalada e, em seguida, instalá-la à medida que progredi através das outras etapas desse processo. Felizmente, esta lista tornará as coisas um pouco mais fáceis para você. Claro, você pode usar algumas ferramentas que eu não faço, e eles também podem estar perdendo.

Eu uso chaves SSH para logins da minha rede, então copiei a chave pública SSH da minha estação de trabalho interna primária para o Pi usando ssh-copy-id .

Uma segunda interface de rede

Como este Pi deve ser usado como um firewall, eu precisava de outro adaptador de rede. Depois de tomar o eth0 down, adicionei um dumper ASIX AX88178 USB Gigabit Ethernet. Desconectei minha rede interna do adaptador de rede on-board e liguei-a ao dongle. Eu configurei o dongle como eth1 com um endereço estático na minha rede interna e configurei a Ethernet a bordo com um endereço externo estático e o conectei ao roteador do meu ISP. Certifique-se de usar a linha HWADDR = nos arquivos de configuração da interface para definir o endereço MAC ao qual o arquivo de configuração pertence. Eu também adicionei o endereço IP do gateway e pelo menos dois servidores de nomes para o arquivo de configuração da interface para o adaptador interno.

Eu trouxe ambos os adaptadores de rede e usou ifconfig e alguns comandos de ping para verificar se os adaptadores de rede estavam vinculados aos endereços IP corretos e funcionavam corretamente. Agora eu poderia entrar no Pi de uma sessão de terminal na minha estação de trabalho principal e continuar trabalhando a partir daí.

Atualizações e mais configuração

Agora era hora de instalar todas as atualizações e reiniciar – o que eu fiz. Eu acho interessante que ambas as versões atuais do CentOS para ARM usem coisas como firewalld e systemd, mas ainda usam yum em vez de dnf para gerenciamento de pacotes de alto nível.

Eu tenho alguns alias e comandos de inicialização que eu sempre adiciono ao meu ambiente quando eu instalar um novo host. Esses comandos podem ser adicionados ao / etc / bashrc , ou melhor ainda, como um arquivo separado, /etc/profile.d/mybash.sh . Qualquer arquivo em /etc/profile.d com uma extensão de nome de arquivo .sh é obtido por / etc / bashrc durante o login.

Data e hora

Esta versão do CentOS não possui nenhum tipo de sincronização de tempo instalada por padrão, então eu instalei chrony e configurei chrony.conf com o meu servidor de tempo local NTP. Eu comecei a cronograma e configure systemctl para iniciar o chronyd no arranque. Eu também configurei o link simétrico / etc / localtime para apontar para o arquivo de dados do fuso horário desejado.

Firewall

O novo  firewalld  é realmente exagerado para o meu ambiente, então instalei iptables-services e iptables-utils. Eu configurei um  arquivo padrão  / etc / sysconfig / iptables , então, depois de desativar a conexão de rede externa, parei firewalld e configure systemd para não iniciá-lo no arranque. Comecei o iptables e configure o systemd para iniciá-lo no arranque. Em seguida, eu trouxe a conexão de rede externa de volta.

Viola!

Uma vez que você alcança este ponto, o Pi é totalmente funcional como um firewall e porta lateral.

Seria fácil dar mais duas etapas e torná-lo num roteador. Primeiro, defina o conteúdo do arquivo / proc / sys / net / ipv4 / ip_forward para “1” e, em seguida, adicione ou defina a seguinte linha em /etc/sysctl.conf para “net.ipv4.ip_forward = 1” , o que torna seu computador um roteador. Em seguida, adicione linhas apropriadas para NATing de origem e encaminhamento para o firewall iptables.

Acabei de receber três novos computadores Raspberry Pi 3 ontem. Eu já tenho uma configuração com a imagem CentOS-Userland-7-armv7hl-Minimal-1602-RaspberryPi3.img e terminarei configurando-a nos próximos dias para me tornar meu principal firewall e roteador.

 

Regras IPTables

Uma pessoa perguntou nos comentários para ver as regras IPTables que eu usei para este projeto, e eu suspeito que outros também estão interessados, então aqui estão eles. É um conjunto mínimo bastante padrão que só permite entrada SSH.

 

# Gerado por iptables-save v1.4.16.2 on Thu Feb 21 14:51:28 2013 *filtro : INPUT ACCEPT [0: 0] : AVANÇAR ACEITAR [0: 0] : OUTPUT ACCEPT [0: 0] -A INPUT -m conntrack --ctstate RELACIONADO, ESTABELECIDO -j ACEITAR -A INPUT -p icmp -j ACEITAR -A INPUT -i lo -j ACEITE -A INPUT -i eth0 -j ACEITAR -A INPUT -p tcp -m conntrack --ctstate NOVO -m tcp --portado 22 -j ACEITAR -A INPUT -j REJECT --reject-with icmp-host-proibido -A FORWARD -j REJECT - rejeitar-com icmp-host-proibido COMMIT # Completado em Thu Feb 21 14:51:28 2013

Fonte:  https://opensource.com/life/16/3/firewall-your-home-network-raspberry-pi?utm_medium=Email&utm_campaign=weekly&sc_cid=701f2000000h39XAAQ