segunda-feira, 7 de outubro de 2013

Tutorial OpenVpn no Linux com Cliente Windows

Olá pessoal, esse tutorial é bem simples.
O lance é, configurar o OpenVpn num servidor Linux e conectar usando o Cliente Windows.
Esse tutorial vai ser apresentando usando o Debian Lenny
1. Passo Instalar OpenVpn
# apt-get install openvpn
2. Adcionar o driver Tun nos modulos do Linux
# echo tun >> /etc/modules
3. Levantar modulo TUN
# modprob tun
4. Criar chave de acesso
# cd /etc/openvpn/
# openvpn –genkey –secret chave.key
5. Criar arquivo de configuração dentro do diretório
# cd /etc/openvpn
# touch server.conf
5.1. Que deverá ter esse conteúdo.
dev tun
ifconfig 10.0.0.1 10.0.0.2
secret chave.key
port 5000
comp-lzo
keepalive 10 120
float
verb 3
5.2. Explicação
Dev Tun –> Modulo de tunelamento
ifconfig –> Endereçamento a ser utilizado, primeiro o do Servidor depois do Cliente
secret.key –> A chave que criamos
port 5000 –> Porta de comunicação UDP (Obs ser for TCP deverá ser especificado)
comp-lzo –> Biblioteca de criptográfia
keepalive 10 120 –> Monitora a conexão e reestabelece caso caia
float –> Caso use ip dinâmico, mantem o tunel aberto caso ocorra a mudaça de IP
verb3 –> Nivel de log
6. Otimo agora nosso servidor está configurado faça o teste
# openvpn –config /etc/openvpn/server.conf
6.1. – Aguarde essa mensagem
Wed Nov 17 21:59:58 2010 OpenVPN 2.1_rc11 i486-pc-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Sep 18 2008
Wed Nov 17 21:59:58 2010 /usr/sbin/openvpn-vulnkey -q chave
Wed Nov 17 21:59:58 2010 Static Encrypt: Cipher ‘BF-CBC’ initialized with 128 bit key
Wed Nov 17 21:59:58 2010 Static Encrypt: Using 160 bit message hash ‘SHA1′ for HMAC authentication
Wed Nov 17 21:59:58 2010 Static Decrypt: Cipher ‘BF-CBC’ initialized with 128 bit key
Wed Nov 17 21:59:58 2010 Static Decrypt: Using 160 bit message hash ‘SHA1′ for HMAC authentication
Wed Nov 17 21:59:58 2010 LZO compression initialized
Wed Nov 17 21:59:58 2010 TUN/TAP device tun0 opened
Wed Nov 17 21:59:58 2010 TUN/TAP TX queue length set to 100
Wed Nov 17 21:59:58 2010 /sbin/ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 mtu 1500
Wed Nov 17 21:59:58 2010 Data Channel MTU parms [ L:1545 D:1450 EF:45 EB:135 ET:0 EL:0 AF:3/1 ]
Wed Nov 17 21:59:58 2010 Local Options hash (VER=V4): ’099d04aa’
Wed Nov 17 21:59:58 2010 Expected Remote Options hash (VER=V4): ‘f1025742′
Wed Nov 17 21:59:58 2010 Socket Buffers: R=[111616->131072] S=[111616->131072]
Wed Nov 17 21:59:58 2010 UDPv4 link local (bound): [undef]:5000
Wed Nov 17 21:59:58 2010 UDPv4 link remote: [undef]
Ok, muito bacana, agora temos um servidor esperando conexão.
7. Realizer o download do cliente para Windows no site da OpenVpn.net
http://openvpn.net/index.php/open-source/downloads.html
8. Após instalado, navegue em
C:\Arquivos de programas\OpenVPN\config
9. Crie um arquivo com o bloco de notas chamado client.ovpn, lembrando que não pode ser client.ovpn.txt nem client.txt.ovpn tem que ser client (ou nome que quizer dar).ovpn . OK?
10. Adcione o seguinte contúdo dentro do arquivo criado
remote minha.empresa.com.br
dev tun
proto udp
port 5000
comp-lzo yes
secret chave.key
route 192.168.0.0 255.255.255.0 10.0.0.1
ifconfig 10.0.0.2 10.0.0.1
11. Vamos as explicações
remote –> Endereço do servidor VPN
dev tun –> O mesmo modelo do servidor
proto udp –> Define Protocolo
port 5000 –> A memsa porta que configuramos no servidor
comp-lzo yes –> Habilita a biblioteca lzo
secret chave.key  –> Chave de acesso que criamos no servidor
route 192.168.0.0 255.255.255.0 10.0.0.1 –> Quando estabelecer conexão cria rota da sua rede para a rede da VPN
ifconfig 10.0.0.2 10.0.0.1 –> Endereçamento a ser utilizado primeiro o seu IP depois o do Servidor
12. Ótimo, já estamos quase no fim, agora pegamos o conteúdo do arquivo chave.key que criamos no servidor, e copiaremos para a pasta config do cliente windows.
# cat /etc/openvpn/chave.key
Teremos algo parecido com isso.
#
# 2048 bit OpenVPN static key
#
—–BEGIN OpenVPN Static key V1—–
63ab006b9b0eef9a1ab4033c7cfd7039
70e6d189689179a1ec73096d85ffb545
95c487654806785f61e3399d5669bcd6
32c813e57a3cfb1aa02ff54a3e0108a4
d4ab3756f129f8c0d65f81e6d79ef1bc
b62811e14dcad4c05761efd1bfdba582
—–END OpenVPN Static key V1—–
13. Crie um arquivo chamado chave.keu dentro de :
C:\Arquivos de programas\OpenVPN\config\
Cole o conteúdo do chave.key que criamos no servidor.
14. Ficou assim então.
Criamos os arquivos de configuração no servidor;
Criamos os arquivos de configuração no cliente windows;
Testamos o arquivo com comando # openvpn –config /etc/openvpn/server.conf
15. Vamos adicionar rota no servidor.
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -s 10.0.0.2 -A POSTROUTING -o eth0 -j MASQUERADE
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.1 dev tun0
15.1. Vamos as explicações
echo 1 > /proc/sys/net/ipv4/ip_forward –> Habilita roteamento no kernel
iptables -t nat -s 10.0.0.2 -A POSTROUTING -o eth0 -j MASQUERADE –> permite que dados vindo do cliente possa trafegar pela internet
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.1 dev tun0 –> Adiciona uma rota na tabela dizendo que que o cliente os computadores da rede local (192.168.1.0/24) pode ter acesso a rede 10.0.0.1 usando o adptador tun0
16. Assim que terminado tudo isso, acesse a pasta config no seu windows, clique com o botão direito em cima do client.ovpn vá na opção:
Start OpenVpn using this config file.
17. Nesse momento você ja deve ter uma sessão vpn, com rota para o servidor.

segunda-feira, 2 de setembro de 2013

Como instalar a última versão do LibreOffice

O Li­bre­Of­fice é uma suite de es­cri­tório que dis­po­ni­bi­liza apli­ca­ções para pro­ces­sa­mento de texto, fo­lhas de cál­culo, fun­ci­o­na­li­dades para apre­sen­ta­ções, de­senho ve­to­rial, entre ou­tras. De uma forma geral, estas apli­ca­ções são equi­va­lentes às do Mi­cro­soft (MS) Of­fice, res­pe­ti­va­mente: MS Word, MS Ex­cell e MS Power­Point.
Este ar­tigo re­quer:



Ubuntu 12.04+

O Li­bre­Of­fice vem já ins­ta­lado por pa­drão nos Ubuntus atuais, no en­tanto com ver­sões um pouco de­sa­tu­a­li­zadas. Assim neste ar­tigo ex­plica-se como ins­talar a úl­tima versão do Li­bre­Of­fice. Para além disso, o mé­todo ex­pli­cado neste ar­tigo ainda per­mite que se tenha sempre o Li­bre­Of­fice atu­a­li­zado através do sis­tema de atu­a­li­za­ções do Ubuntu (através do re­po­si­tório ofi­cial do Li­bre­Of­fice).

LibreOffice4 no Ubuntu
A suite de es­cri­tório Li­bre­Of­fice é um con­junto de pro­gramas bas­tante com­pletos e com­ple­ta­mente li­vres. Para além disso, o facto desta suite ser a imagem da enorme co­mu­ni­dade que a apoia está a fazer dela algo bas­tante atra­tivo, fun­ci­onal e oti­mi­zado em termos de per­for­mance.
Grafico do desenvolvimento do libreOffice
A prova destes factos anun­ci­ados no pa­rá­grafo an­te­rior é seu de­sen­vol­vi­mento que está a crescer de uma ma­neira in­crível. Tal como pode com­provar por esta pá­gina, que contém vá­rias es­ta­tís­ticas do de­sen­vol­vi­mento (esta imagem à di­reita foi re­ti­rada de lá), a quan­ti­dade de có­digo oti­mi­zado é enorme. Aliás, essa quan­ti­dade é de tal forma grande que a média mensal de atu­a­li­za­ções está na ordem dos mi­lhares.

O que traz a suite Li­bre­Of­fice?

O nú­mero de fun­ci­o­na­li­dades que o Li­bre­Of­fice dispõe é enorme, por isso, não serão abor­dadas todas elas neste ar­tigo, até porque não é esse o ob­je­tivo deste ar­tigo. No en­tanto, de se­guida apre­senta-se uma breve des­crição do que pode en­con­trar com esta suite.
z_writerMO pro­ces­sador de texto (Li­bre­Of­fice Writer) per­mite re­digir do­cu­mentos nos for­matos que de­sejar. Para além disso, e apesar de serem for­matos fe­chados (que não dis­po­ni­bi­lizam o con­teúdo li­vre­mente), o pro­ces­sador de texto abre os fi­cheiros com a ex­tensão .doc e .docx. Todo o tipo de fun­ci­o­na­li­dades deste tipo de apli­ca­ções estão já im­ple­men­tadas: é pos­sível es­crever textos, for­matá-los, criar ín­dices, in­serir grá­ficos e ima­gens, criar ro­dapés, entre muitas ou­tras fun­ci­o­na­li­dades. Para além disso, deve-se ainda des­tacar o sis­tema de co­men­tá­rios que é bas­tante fun­ci­onal.
z_calcM
A Folha de Cál­culo (Li­bre­Of­fice Calc) per­mite fazer grande parte das fun­ci­o­na­li­dades do MS Excel. Para além disso ainda per­mite vi­su­a­lizar e editar fi­cheiros com a ex­tensão .xls e xlsx, no en­tanto, ao con­trário do Writer, a com­pa­ti­bi­li­dade falha um pouco prin­ci­pal­mente quando existe ma­cros, algo muito uti­li­zado nestes fi­cheiros. Aparte da com­pa­ti­bi­li­dade, toda a apli­cação fun­ciona muito bem e traz todas as fun­ci­o­na­li­dades que po­derá pre­cisar: desde uma enorme quan­ti­dade de fór­mulas, for­ma­ta­ções, pos­si­bi­li­dade de im­por­tação de dados es­tru­tu­rados, in­serção se grá­ficos, entre muitas ou­tras fun­ci­o­na­li­dades.
z_ImpressMRe­la­ti­va­mente à apli­cação que per­mite criar apre­sen­ta­ções, cha­mada de Li­bre­Of­fice Im­press, esta apesar de contar com muitas fun­ci­o­na­li­dades im­por­tantes é mais li­mi­tada em re­lação à sua con­cor­rência (MS Power­Point). Apesar de ser com­pa­tível com fi­cheiros .ppt e .pptx, a ver­dade é que os re­sul­tados não são ótimos prin­ci­pal­mente ao nível es­té­tico. Um outro por­menor que o MS Power­Point tem van­tagem é aquando das apre­sen­ta­ções em que se se houver dois mo­ni­tores um deles fica com a apre­sen­tação e outro fica com dados im­por­tantes para o orador, no­me­a­da­mente tempo de­cor­rido, lem­bretes e até uma pré-vi­su­a­li­zação do pró­ximo di­a­po­si­tivo. De resto, o Li­bre­Of­fice Im­press fun­ciona nor­mal­mente sendo pos­sível criar di­a­po­si­tivos, uti­lizar tem­plates, in­serir ima­gens, textos, efeitos, entre muitos ou­tros por­me­nores.
z_drawM
Quanto à apli­cação de de­senho, o Li­bre­Of­fice Draw, apesar de não ter um po­ten­cial tão ele­vado como o Inks­cape, esta apre­senta uma in­ter­face muito boa para re­a­lizar ra­pi­da­mente de­se­nhos sim­ples. Para além desses de­se­nhos li­vres, esta apli­cação é também ideal para criar ra­pi­da­mente di­a­gramas, o que é algo também im­por­tante para pos­te­ri­or­mente ex­portar para do­cu­mentos. de texto.

z_baseM
Por fim, esta suite ainda apre­senta uma apli­cação cha­mada Li­bre­Of­fice Base que ba­si­ca­mente serve para gestão de base de dados. É algo si­milar ao MS Ac­cess e per­mite criar e gerir bases de dados, pre­parar for­mu­lá­rios e re­la­tó­rios que per­mitem aos uti­li­za­dores fi­nais vi­su­a­li­zarem a in­for­mação. Esta apli­cação pode ser uti­li­zada como in­ter­face de bases de dados Ac­cess (JET), MySQL e até Post­greSQL.

Ins­tale a úl­tima versão do Li­bre­Of­fice

Se o seu Ubuntu é atual, ou seja pos­te­rior à versão Ubuntu 12.04 Pre­cise Pan­golin, então a ins­ta­lação da úl­tima versão do Li­bre­Of­fice não é mais que a adição do seu re­po­si­tório ofi­cial. De­pois disso, apenas pre­cisa de pro­ceder às atu­a­li­za­ções au­to­má­ticas do Ubuntu. Quanto a este re­po­si­tório, ele apenas dis­po­ni­bi­liza ver­sões es­tá­veis e ofi­ciais do Li­bre­Of­fice.
Assim, co­mece por abrir o ter­minal e es­creva o co­mando se­guinte que adi­ci­onar o re­po­si­tório:
sudo add-apt-re­po­si­tory ppa:li­bre­of­fice/ppa -y && sudo apt-get up­date
De­pois do pro­cesso estar con­cluído, pro­va­vel­mente o Ubuntu irá avisar (por in­ter­médio da sua apli­cação de atu­a­li­za­ções) que pre­cisa de o atu­a­lizar. Como esta atu­a­li­zação é grande e usa um con­junto vasto de de­pen­dên­cias novas, é al­ta­mente re­co­men­dável que uti­lize o co­mando do ter­minal abaixo para atu­a­lizar:
sudo apt-get dist-up­grade
Por fim, esta ins­ta­lação faz com que o Li­bre­Of­fice fique com o idioma In­glês. Para pôr o idioma em Por­tu­guês, de­verá mudar as con­fi­gu­ra­ções do Li­bre­Of­fice tal como é ex­pli­cado neste sim­ples ar­tigo:

Moca: um conjunto de ícones ao estilo do iOS 7

Conjunto de ícones MOCA, para Ubuntu
Neste ar­tigo apre­sen­tamos um con­junto de ícones para o Ubuntu cha­mado Moca. Este con­junto de ícones ca­rac­te­riza-se por ter um vi­sual muito con­ciso entre quase todos os ícones: cantos ar­re­don­dados e com um vi­sual o mais sim­ples pos­sível. Apesar de o autor não as­so­ciar de forma al­guma estes ícones ao iOS 7, de­nota-se que existe al­guma si­mi­la­ri­dade. Na ver­dade, seja si­milar ou não, todos nós que­remos ter um Ubuntu bo­nito e mo­derno e o Moca pro­mete isso mesmo!
Este con­junto de ícones está a ser de­sen­vol­vido de forma muito ativa, quase di­a­ri­a­mente! Por esse mo­tivo, neste ar­tigo mos­tramos-lhe uma ma­neira muito sim­ples de ins­talar a úl­tima versão dos ícones Moca, via re­po­si­tório do pro­jeto. Através deste re­po­si­tório, você po­derá de­pois manter-se sempre atu­a­li­zado, através da gestão normal de atu­a­li­za­ções do Ubuntu.

O pro­jeto Moca está a ser de­sen­vol­vido por Sam Hewitt, um de­signer geek que gosta do mundo open-source. Apesar de ainda ser um pro­jeto re­la­ti­va­mente novo, o autor tem tra­ba­lhado re­gu­lar­mente na me­lhoria deste con­junto de ícones, dis­po­ni­bi­li­zando sempre as mo­di­fi­ca­ções através de novas atu­a­li­za­ções.
Ao nível es­té­tico, este con­junto de ícones tem al­guns as­petos bem in­te­res­santes de se ana­lisar. Em pri­meiro lugar, em termos de ícones de ta­manho pe­queno, que nor­mal­mente são uti­li­zados nas barras de fer­ra­mentas e também no painel su­pe­rior do Ubuntu, segue a mesma li­nhagem da mai­oria dos con­juntos de ícones para o Ubuntu: ícones sem cor, ou seja, mo­no­cro­má­ticos.
Barras do Ubuntu com os ícones Moca
Por outro lado, os ícones das apli­ca­ções re­ce­beram cores vivas, que tornam o vi­sual do Ubuntu mais atra­tivo, mo­derno. Claro que isto é uma questão de gosto, que é ex­tre­ma­mente re­la­tivo, mas os seus por­me­nores es­té­ticos co­lo­ridos e ao mesmo tempo ele­gantes/sim­ples tornam o vi­sual con­vi­da­tivo:
Aplicações com os ícones MOCA para o Ubuntu
Quanto às pastas, estas se­guem uma co­lo­ração mais suave, com o clás­sico bege dos capas/ar­quivos fí­sicos onde se guarda fo­lhas:
moka_icon_theme_by_hewittsamuel-d6dq3v9 (cópia)M
Apesar destes ícones Moca não terem o mesmo es­ta­tuto e idade de por exemplo os ícones Fa­enza, eles mos­tram um claro po­ten­cial para se tor­narem nuns ícones muito uti­li­zados pelos amantes da per­so­na­li­zação do Ubuntu. Atu­al­mente já tem um vasto con­junto de ícones que abrange quase todas as apli­ca­ções mais usadas pelos uti­li­za­dores “nor­mais” do Ubuntu.
In­fe­liz­mente, há al­gumas apli­ca­ções co­nhe­cidas que ainda não têm ícone e acabam por uti­lizar o ícone pa­drão que vem de origem no Ubuntu. Por exemplo o Gimp, o Inks­cape e o Li­ferea ainda não têm a sua “cara de Moca”.

Existe duas ver­sões do Moca!

O con­junto de ícones Moca traz duas ver­sões muito pa­re­cidas, que apenas va­riam na co­lo­ração dos ícones mais pe­quenos, nos ícones mo­no­cro­má­ticos. Estas duas ver­sões servem es­sen­ci­al­mente para pôr o con­junto de ícones com­pa­tível tanto para am­bi­entes es­curos como am­bi­entes claros:
Conjunto de icones Moca no Unity sem películas Moca-Dark
Assim, o con­junto de ícones “Moca” serve para temas mais es­curos, como o Am­bi­ance (o tema pa­drão do Ubuntu que você pode ver na imagem acima à es­querda). Por outro lado, o con­junto “Moca-Dark”, tem ícones mo­no­cro­má­ticos es­curos, para fi­carem per­ce­tí­veis em temas mais claros, tal como pode ver pela imagem acima à di­reita.

Como ins­talar os ícones Moca

Estes ícones Moca têm re­ce­bido inú­meras atu­a­li­za­ções de forma re­gular, por isso é al­ta­mente re­co­men­dável que você ins­tale estes ícones através do re­po­si­tório ofi­cial do pro­jeto. Assim, ao fazê-lo, você irá re­ceber sempre as atu­a­li­za­ções de novos ícones. Em todo o caso, se você pre­ferir ins­talar de forma ma­nual vi­site a pá­gina do pro­jeto.
Ao con­trário da ins­ta­lação ma­nual, a ins­ta­lação via re­po­si­tório é pra­ti­ca­mente au­to­má­tica. Assim, co­mece por adi­ci­onar o re­po­si­tório do pro­jeto exe­cu­tando o se­guinte co­mando no ter­minal:
 
sudo add-apt-re­po­si­tory ppa:snwh/moka-icon-theme-daily && sudo apt-get up­date

Quando o pro­cesso es­tiver ter­mi­nado, sim­ples­mente clique no botão se­guinte ou exe­cute o co­mando se­guinte para ins­talar o con­junto de ícones Moca:
 
sudo apt-get ins­tall -y moka-icon-theme

Como re­fe­rido, existe uma versão al­ter­na­tiva, para am­bi­entes claros, onde a barra su­pe­rior do Ubuntu ao ser muito clara exige que os ícones sejam es­curos. Para esses casos, re­co­men­damos vi­va­mente que ins­tale a versão Moca-Dark, cli­cando no botão se­guinte ou es­cre­vendo o co­mando se­guinte no ter­minal:
 
sudo apt-get ins­tall -y moka-icon-theme-dark

Quando a ins­ta­lação ter­minar, uti­lize o pro­grama Gnome-Tweak-Tool para mo­di­ficar o con­junto de ícones do seu Ubuntu!

Adicione um menu de aplicativos estilo GNOME no Ubuntu 13.04, 12.10 ou 12.04

Se você usa o Ubuntu com Unity e sente falta de um menu de aplicativos, aprenda a instalar o Classic Menu Indicator no Ubuntu 13.04, 12.10 ou 12.04 e resolva seu problema.
classic2
Apesar do Dash encontrar aplicativos rapidamente, nem todo mundo se acostuma com ele. Pensando nessas pessoas, será mostrado no passo a passo abaixo, como adicionar um menu de aplicativos estilo GNOME no Ubuntu 13.04, 12.10 ou 12.04.

Instalando um menu de aplicativos estilo GNOME no Ubuntu 13.04, 12.10 ou 12.04

Para instalar um menu de aplicativos estilo GNOME no Ubuntu 13.04, 12.10 ou 12.04, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Adicione o repositório do aplicativo com o seguinte comando:
sudo add-apt-repository ppa:diesch/testing
Passo 3. Atualize o Apt digitando o comando:
sudo apt-get update
Passo 4. Agora instale o programa com o comando:
sudo apt-get install classicmenu-indicator
Observe que os comandos acima aplicam-se apenas ao Ubuntu 13.04, 12.10 ou 12.04.

Instalando um menu de aplicativos estilo GNOME no Ubuntu 13.10

Para instalar um menu de aplicativos estilo GNOME no Ubuntu 13.10, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Baixe o pacote do aplicativo com o seguinte comando:
wget -c http://www.florian-diesch.de/software/classicmenu-indicator/dist/classicmenu-indicator_0.07_all.deb
Passo 3. Instale o pacote baixado com o comando:
sudo dpkg -i classicmenu-indicator_0.07_all.deb
Passo 4. Para completar a instalação, execute esse comando:
sudo apt-get install -f

Instalando um menu de aplicativos estilo GNOME em outras distribuições

Quem estiver usando outra distribuição, pode dar uma olhada no site do desenvolvedor do aplicativo acessando esse link. Lá tem um pacote com o código fonte do programa. Seguindo as instruções do site, é possível instalar ele em qualquer distribuição Linux.

Dashboard para OcoMon

Depois de várias buscas por um Dashboard para o OcoMon, resolvi criar um a partir da API Google Chart. Embora este seja um Dashboard bem simples, pretendo melhorá-lo em breve.


Instalação do Dashboard

Foram realizados os testes e desenvolvimento a partir do OCOMON_2.0-RC6.1, é possível que funcione nas versões anteriores, mas não foi homologado.

1. Crie um arquivo "dashboard.php" dentro do diretório raiz do sistema OcoMon e cole o código a seguir:

<?php

/*                        Copyright 2005 Flávio Ribeiro

         This file is part of OCOMON.

         OCOMON is free software; you can redistribute it and/or modify
         it under the terms of the GNU General Public License as published by
         the Free Software Foundation; either version 2 of the License, or
         (at your option) any later version.

         OCOMON is distributed in the hope that it will be useful,
         but WITHOUT ANY WARRANTY; without even the implied warranty of
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
         GNU General Public License for more details.

         You should have received a copy of the GNU General Public License
         along with Foobar; if not, write to the Free Software
         Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
session_start();

    include ("PATHS.php");
    //include ("".$includesPath."var_sessao.php");
    include ("includes/functions/funcoes.inc");
    include ("includes/javascript/funcoes.js");

    include ("includes/queries/queries.php");
    include ("".$includesPath."config.inc.php");
   // ("".$includesPath."languages/".LANGUAGE."");
    include ("".$includesPath."versao.php");

    include("includes/classes/conecta.class.php");
    include("includes/classes/auth.class.php");



    if ($_SESSION['s_logado']==0)
    {
            print "<script>window.open('index.php','_parent','')</script>";
        exit;
    }


    $conec = new conexao;
    $conec->conecta('MYSQL');

    $_SESSION['s_page_home'] = $_SERVER['PHP_SELF'];

    print "<html>";
    print "<head>";
    print "<title>OCOMON ".VERSAO."</title>";
    print "<link rel=stylesheet type='text/css' href='includes/css/estilos.css.php'>";

    $auth = new auth;
    $auth->testa_user($_SESSION['s_usuario'],$_SESSION['s_nivel'],$_SESSION['s_nivel_desc'],3);

   //Todas as áreas que o usuário percente
    $uareas = $_SESSION['s_area'];
    if ($_SESSION['s_uareas']) {
        $uareas.=",".$_SESSION['s_uareas'];
    }

    $qryTotal = "select a.sistema area, a.sis_id area_cod from ocorrencias o left join sistemas a on o.sistema = a.sis_id".
            " left join `status` s on s.stat_id = o.status where o.sistema in (".$uareas.") and s.stat_painel in (1,2) ";
    $execTotal = mysql_query($qryTotal) or die (TRANS('MSG_ERR_TOTAL_OCCO'). $qryTotal);
    $regTotal = mysql_num_rows($execTotal);

   //Todas as áreas que o usuário percente
    $qryAreas = "select count(*) total, a.sistema area, a.sis_id area_cod from ocorrencias o left join sistemas a on o.sistema = a.sis_id".
            " left join `status` s on s.stat_id = o.status where o.sistema in (".$uareas.") and s.stat_painel in (1,2) ".
            "group by a.sistema";
    $execAreas = mysql_query($qryAreas) or die(TRANS('MSG_ERR_RESCUE_ALL_OCCO'). $qryAreas);
    $regAreas = mysql_num_rows($execAreas);


    print "<br>";
    print "<TABLE border='0' cellpadding='5' cellspacing='0' align='center' width='100%'>";

    print "<tr><td style='{padding-left:5px;}'><div id='geral' >";//style='{display:none}'

    $a = 0;
    $b = 0;

    print "<td><div id='chart_div2'></div><div id='chart_div'></div></td></tr>"; //geral
    print "</table>";
    ?>
    <SCRIPT LANGUAGE=javaScript>
    <!--
        function invertView(id) {
            var element = document.getElementById(id);
            var elementImg = document.getElementById('img'+id);
            var address = './includes/icons/';

            if (element.style.display=='none'){
                element.style.display='';
                elementImg.src = address+'close.png';
            } else {
                element.style.display='none';
                elementImg.src = address+'open.png';
            }
        }

    //-->
    </script>






    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
        <script type='text/javascript'>
              google.load('visualization', '1', {packages:['gauge']});
              google.setOnLoadCallback(drawChart);
              function drawChart() {
                var data = google.visualization.arrayToDataTable([
                  ['Label', 'Value'],

<?php

       $qryStatus1 = "select LEFT(s.status,16) status, count(*) total from ocorrencias o left join status s on o.status = s.stat_id where o.sistema = 39 and s.stat_painel in (1,2) and s.stat_id not in (1,2) group by s.status";
       $execStatus1 = mysql_query($qryStatus1) or die (TRANS('MSG_ERR_QRY_STATUS'). $qryStatus1);


          $cont = mysql_num_rows($execStatus1);
                $i=1;
             //  print ".$cont.";
                while ($rowStatus1 = mysql_fetch_array($execStatus1)) {
                        if ( $i < $cont ){
                        print "['".$rowStatus1['status']."',".$rowStatus1['total']."],";
                        } else {
                        print "['".$rowStatus1['status']."',".$rowStatus1['total']."]";
                        }
                $i++;
                }




?>

                ]);

                var options = {
                  width: 400, height: 400,
                  redFrom: 75, redTo: 100,
                  yellowFrom:50, yellowTo: 75,
                  minorTicks: 5
                };

                var chart = new google.visualization.Gauge(document.getElementById('chart_div'));
                        chart.draw(data, options);
              }
         </script>










    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
        <script type='text/javascript'>
              google.load('visualization', '1', {packages:['gauge']});
              google.setOnLoadCallback(drawChart);
              function drawChart() {
                var data = google.visualization.arrayToDataTable([
                  ['Label', 'Value'],

<?php

       $qryStatus2 = "select LEFT(s.status,16) status, count(*) total from ocorrencias o left join status s on o.status = s.stat_id where o.sistema = 39 and s.stat_painel in (1,2) and s.stat_id in (1,2) group by s.status";
       $execStatus2 = mysql_query($qryStatus2) or die (TRANS('MSG_ERR_QRY_STATUS'). $qryStatus2);


          $cont = mysql_num_rows($execStatus2);
                $i=1;
             //  print ".$cont.";
                while ($rowStatus2 = mysql_fetch_array($execStatus2)) {
                        if ( $i < $cont ){
                        print "['".$rowStatus2['status']."',".$rowStatus2['total']."],";
                        } else {
                        print "['".$rowStatus2['status']."',".$rowStatus2['total']."]";
                        }
                $i++;
                }


?>

                ]);

                var options = {
                  width: 400, height: 400,
                  redFrom: 10, redTo: 60, max: 60,
                  yellowFrom:5, yellowTo: 10,
                  minorTicks: 5
                };

                var chart = new google.visualization.Gauge(document.getElementById('chart_div2'));
                chart.draw(data, options);
              }
         </script>








    <?php

print "</body>";
print "</html>";
?>

Resultado final

Segue o print com o resultado final do dashboard:
Linux: Dashboard para OcoMon

Fonte: Google Charts — Google Developers

Joomla! no GNU/Linux em 4 passos

Recentemente, fiz um cursinho de 24 horas sobre Joomla! no Windows. Resolvi pesquisar como instalar Joomla! no GNU/Linux, então, criei essa dica que resume e facilita todo o processo.

Dica testada com:
  • Distribuição Linux Mint 15 64-bit (Xfce)
  • Joomla! 3.1.5

Passo 1:

Instale os pacotes necessários:

$ sudo apt-get install apache2 php5 mysql-server phpmyadmin

Quando perguntado a senha, escolha uma. E quando perguntado se quer usar "phpmyadmin" ou "lighttpd", escolha phpmyadmin.

Passo 2:

Prepare o diretório do Jooma!, colocando seu usuário no grupo "www-data":

$ sudo mkdir /var/www/joomla
$ sudo gpasswd -a [seu usuário] www-data


Passo 3:

Baixe uma versão do Joomla! em joomla.org/download e extraia o conteúdo para o diretório do Jooma! e altere o dono e o grupo:

$ sudo unzip Downloads/Joomla*.zip -d /var/www/joomla
$ sudo chown -R www-data.www-data /var/www/joomla/


Obs.: esse comando considera que o arquivo foi salvo no diretório D"ownloads" do seu usuário.

Passo 4:

Modifique o arquivo "php.ini" colocando off em "output_buffering":

$ sudo sed -i '/;/!s/4096/off/g' /etc/php5/apache2/php.ini

Obs.: o comando acima apenas troca o "4096" por "off" na linha que NÃO começa com ";" (que são os comentários) dentro do arquivo "php.ini". Isso é uma recomendação do Joomla!.

Parabéns! Joomla! instalado e pronto para ser configurado.

Basta acessar o endereço: http://localhost/joomla
Linux: Joomla! no GNU/Linux em 4 passos

Abraço!

Referências

Conexão Wireless via linha de comando

Segue uma forma, simples e rápida, de conexão a uma rede via linha de comando.

Comandos para conexão via wireless:

1. Primeiro, dê um scan para verificar o SSID da rede e a disponibilidade dela:

# iwlist scan

2. Com as informações da rede que vamos conectar, dê os comandos a seguir alterando as informações, conforme for:

# wpa_passphrase ssid_da_rede senha_da_rede > /etc/wpa_supplicant.conf
# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B -D wext


Uma ressalva: wext refere-se ao driver da placa. Geralmente, este driver funciona para todas as placas, apenas a Atheros costuma não funcionar. Neste caso, troque o wext por madwifi, se mesmo assim não resolver, então baixe o driver da placa.

3. Agora faça as configurações da rede:

# ifconfig wlan0 172.16.22.18 netmask 255.255.255.0 up
# iwconfig wlan0 ap 00:02:6F:4D:BC:43 (mac do ap)
# iwconfig wlan0 mode managed
# iwconfig wlan0 key off
# rout add default gw 172.16.22.1 dev wlan0


4. Altere o arquivo "/etc/resolv.conf" e pronto.

Algumas considerações importantes:
  • Foi usado o "wpa_passphrase" porque o iwconfig não funciona com WPA e WPA2 sem essa configuração. Se a senha for WEP, não precisa da primeira parte.
  • Esses comandos servem para qualquer distribuição.

Reduza o tamanho de arquivos ISO com ISOMaster

ISO Master é um editor gráfico, de código-fonte aberto e fácil de usar,  de imagens de CD/DVD no formato ISO para Linux e BSD. Basicamente, você pode usar este programa para extrair arquivos de uma ISO, adicionar arquivos de uma ISO, e criar  ISOs de boot – tudo usando uma interface gráfica. Ele também pode abrir os arquivos ISO e NRG, mas só pode salvar como ISO.





isomaster01

Por exemplo, você tem uma OpenSUSE 13.1 bit edição DVD 32 (atenção, é só um exemplo), que tem tamanho de 4.1GB e quer instalar o openSUSE em seu PC, mas você tem apenas pendrive USB de 4GB. O que você faz agora?. Você pode reduzir o tamanho da imagem ISO para caber em seu drive USB e torná-lo inicializável com software Unetbootin e instalar o OpenSUSE.

Instalando o ISOMaster no Ubuntu

A boa notícia é que o ISOMaster está disponível nos repositórios padrão do Ubuntu. Por isso, Para instalar ele, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Agora instale o programa com o comando:
sudo apt-get install isomaster
Passo 3. Execute o ISOMaster a partir do seu Dash ou de um menu. Se ele não estiver presente em nenhuma dessas opções, inicie o programa a a partir de um terminal usando o comando:
isomaster
Passo 4. Selecione e abra o arquivo ISO que você deseja personalizar e remova pacotes indesejáveis até que você tenha o tamanho necessário. Por exemplo, se você estiver mexendo numa imagem de instalação de uma distribuição Linux e não for usar o ambiente desktop KDE, exclua todos os pacotes relacionados a ele (que geralmente têm o kde no nome). Exclua os pacotes indesejados para reduzir o tamanho da ISO e certifique-se de que você não excluiu quaisquer pacotes importantes, tais como pacotes relacionados ao kernel.
Passo 5. Quando o arquivo estiver no tamanho que deseja , vá em File -> Save as (Arquivo -> Salvar como) e digite o nome para sua imagem ISO e se precisar, torne a imagem bootável (inicializável) com o Unetbootin ou qualquer outro software equivalente.

Instale TrueCrypt com suporte a Ubuntu AppIndicator


Pro padrão, o atual Ubuntu não suporta ícones na bandeja, e o recurso que poderia ser usado por aplicativos para usar a bandeja do sistema, o systray whitelist, foi removido com o Ubuntu 13.04.
truecrypt-ubuntu-appindicator
Isso é muito ruim para o TrueCrypt, um aplicativo de criptografia de disco de código aberto, que ainda usa um ícone na bandeja e não vem com suporte a Ubuntu AppIndicator, porque não podemos ter a caixa de diálogo de montar/desmontar depois que você fecha a janela principal. Para resolver isso, Stefan Sundin criou um pacote TrueCrypt com suporte a Ubuntu AppIndicator, que foi corrigido para usar um Ubuntu AppIndicator em vez de um ícone na bandeja.

Instalando o TrueCrypt com suporte a Ubuntu AppIndicator no Ubuntu

Para instalar o TrueCrypt com suporte a Ubuntu AppIndicator no Ubuntu, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Adicione o repositório do aplicativo com o seguinte comando:
sudo add-apt-repository ppa:stefansundin/truecrypt
Passo 3. Atualize o Apt digitando o comando:
sudo apt-get update
Passo 4. Agora instale o programa com o comando:
sudo apt-get install truecrypt
O AppIndicator sai quando escondido (encerramento) a janela principal do TrueCrypt – para corrigir isso, abra as preferências do TrueCrypt (preferences) e na guia “Background Task” (tarefa em segundo plano), desmarque a opção “Exit when there are no mounted volumes” (Sair quando há não volumes montados).

Como habilitar exFAT no Ubuntu

Atualmente existem vários tipos de filesystems  (Sistema de Arquivos). Podemos citar o HFS (Apple), FAT, FAT32, NTFS, EXT4 entre outros. Para quem usa o Windows Vista/7 um outro tipo pode ser utilizado: o exFAT. Esse modo é muito superior aos métodos anteriores usados pela Microsoft entregando um alto desempenho na transferência de arquivos e armazenamento.
Por ser um filesystem proprietário, o nosso Ubuntu (e as outras distros), não podem implementar isso por padrão. Mas, para quem já tem pendrives com esse sistema ou quem quer simplesmente experimentar, vamos ver como habilitar a leitura/escrita em nosso Oneiric Ocelot (11.10). Primeiro:  vamos adicionar os repositórios necessários, digite o seguinte comando no terminal:
  1. apt-add-repository ppa:relan/exfat
Comando sudo apt-add-respository ppa:relan/exfat
Não se esqueça de aceitar/enter para as perguntas que forem feitas e de digitar a sua senha, pois para que os comandos funcionem, eles devem ser digitados pelo usuário root.
Segundo: depois de adicionar o repositório, vamos atualizar as listas de software com o seguinte comando:
  1. sudo apt-get update
Comando sudo apt-get update
Terceiro:agora nós podemos finalmente instalar os pacotes, com o seguinte comando:
  1. $ sudo apt-get install fuse-exfat
Comando sudo apt-get install fuse-exfat
Pronto! Agora é só plugar o dispositivo e sair usando.
Bom, vamos aos poréns.
Apenas com o Windows XP(com atualização), Vista/7 você pode formatar dispositivos para o filesystem exFat. E até o Ubuntu 11.04, você precisa sempre montar o dispositivo via terminal (pois a versão Natty não monta automaticamente, o que já não acontece no Ubuntu 11.10).
Dúvidas, sugestões ou reclamações? Use a seção de comentários do site!

sexta-feira, 23 de agosto de 2013

Instale LinSSID: um escaner de redes wireles para Linux com interface gráfica

Está procurando uma ferramenta para encontrar redes wireless e ver mais detalhes delas? Experimente o LinSSID.
LinSSID

LinSSID é graficamente e funcionalmente semelhante ao iwscanner (Linux) e o Inssider (Windows). Ele é escrito em C + + utilizando ferramentas wireless para Linux e Qt4. Veja abaixo mais detalhes do aplicativo.

Características do LinSSID

  • Possui várias colunas de informações diferentes;
  • Possui colunas classificáveis e móveis;
  • Permite ajustar a velocidade;
  • Atualização em tempo real;
  • Mostra gráficos de intensidade de sinal por canal e ao longo do tempo;
  • Funciona em canais de 2,4 GHz e 5 GHz.

Instalando o LinSSID no Ubuntu

Para instalar o LinSSID no Ubuntu, faça o seguinte:
Passo 1. Abra um terminal (Usando o Dash ou pressionando as teclas CTRL+ALT+T);
Passo 2. Adicione o repositório do aplicativo com o seguinte comando:
sudo add-apt-repository ppa:wseverin/ppa
Passo 3. Atualize o Apt digitando o comando:
sudo apt-get update
Passo 4. Agora instale o programa com o comando:
sudo apt-get install linssid

Instalando o LinSSID em outras distribuições

Quem estiver usando outra distribuição, pode dar uma olhada no site do desenvolvedor do aplicativo acessando esse link. Lá tem as instruções, e possivelmente, um pacote para instalar ele em outras distribuições Linux. Apesar de estar em inglês, as instruções são bem simples. Se quiser pode tentar uma versão traduzida pelo Google Translator clicando aqui. Mas cuidado com os comandos, eles não devem ser traduzidos.

segunda-feira, 19 de agosto de 2013

VLsub: baixando legendas pelo VLC

Cansado de ficar puto perder aquele tempo pesquisando legendas para vídeos que baixou da Internet? Seus problemas acabaram! O VLsub é uma extensão para o VLC que permite facilmente pesquisar e baixar legendas diretamente do player. E mais: ela suporta perfeitamente o download de legendas no nosso idioma :-)
VLsub: baixando legendas pelo VLC
Depois de instalado, o VLsub fica disponível no menu Exibir do VLC
Criada em 2010 pelo desenvolvedor francês Guillaume Le Maout, a extensão é distribuída sob licença GPLv2 e foi desenvolvida usando a já conhecida linguagem de programação brasileira Lua.

Instalando o VLsub no Linux

Para efetuar a instalação é simples, basta abrir o terminal e digitar os comandos abaixo:
mkdir -p ~/.local/share/vlc/lua/extensions && cd $_
wget https://raw.github.com/exebetche/vlsub/master/vlsub.lua
Feito isso, basta abrir o VLC e acessar o VLsub por meio do menu Exibir, simples assim :-) Na janela que abriu, basta mudar o idioma para Portuguese-BR, clicar em pesquisar pelo nome ou hash, selecionar a legenda desejada e, por fim, clicar em Download selection. Pronto, a legenda será baixada e carregada em tempo real!
VLsub: baixando legendas pelo VLC
Dica: o filme usado na imagem acima chama-se Away from Keyboard, e pode ser baixado gratuitamente aqui. Conta um pouco da história do mais popular site de torrents da Internet, o The Pirate Bay, e, por consequência, da história dos torrents :-)

Manual traduzido do Squid

Introdução

Tradução livre do Squid.

Talvez, tenha alguns erros de digitação ou de tradução, mas nada que impeça o entendimento.

Será feita em séries, uma vez que o manual do Squid tem 191 páginas.

Welcome to Squid 3.3.3

Esta é a documentação do arquivo de configuração do Squid. Esta documentação também pode ser encontrada online em:
Veja a página do Squid e Wiki para encontrar o FAQ e outras documentações:
Esta documentação mostra os padrões para várias diretivas. Se você não precisa mudar o padrão, é só não alterar seu squid.conf, na maioria dos casos.

Em alguns casos, "none" significa que não há nenhuma configuração padrão, enquanto em outros casos, refere-se ao valor da opção. Os comentários indicarão quando for o caso.

Opções de configuração podem ser incluídas usando a diretiva "include". "include" recebe uma lista de arquivos a serem incluídos. Citações e curingas são suportados.

Por exemplo:

include /path/to/included/file/squid.acl.config


As inclusões podem ser aninhadas até uma profundidade embutida de 16 níveis.

Esta restrição arbitrária é para evitar referências recursivas do Squid, fazendo-o entrar em um loop infinito, enquanto tenta carregar os arquivos de configuração.

Configuração condicional

Declarações "if" podem ser usadas para fazer diretivas de configuração. Dependem das condições:

if <CONDITION>
    ... regular configuration directives ...
[else
    ... regular configuration directives ...]
endif


"else" é opcional. As palavras "if", "else" e "endif", devem ser digitadas em suas próprias linhas, como se fossem diretivas regulares de configuração.

* Nota: a condição "else-if" não é suportada.

Estas condições individuais são suportadas:
  • true :: sempre avaliada como verdadeira.
  • false :: sempre avaliada como falsa.
  • <integer> = <integer> :: comparação de igualdade de dois números inteiros.

SMP - Macros relacionadas

As seguintes macros SMP relacionadas com o pré-processador de macros podem ser usadas:
  • ${process_name} :: expande para o "name" do processo atual, (ex.: squid1, squid2 ou cache1).
  • ${process_number} :: expande para o identificador do processo atual do Squid, que é um número inteiro (por exemplo, 1, 2, 3) único para os processos do Squid.

  • TAG: broken_vary_encoding :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: error_map :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: external_refresh_check :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: ignore_ims_on_miss :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: location_rewrite_program :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: refresh_stale_hit :: esta opção ainda não é suportada pelo Squid3.
  • Default: none

  • TAG: storeurl_access :: esta opção ainda não é suportada por esta versão do Squid3.
  • Default: none

  • TAG: ignore_expect_100 :: remova esta linha. O recurso HTTP/1.1 agora é totalmente suportado por padrão.
  • Default: none

  • TAG: dns_v4_fallback :: remova esta linha. O Squid executa um algoritmo "'Happy Eyeballs ", o algoritmo "fallback" não é mais relevante.
  • Default: none

  • TAG: ftp_list_width :: remova esta linha. Configure a exibição de página FTP usando os controles de CSS em errorpages.css.
  • Default: none

  • TAG: maximum_single_addr_tries :: substituído pelo connect_retries. O comportamento foi alterado, por favor, leia a documentação antes de alterar.
  • Default: none

  • TAG: update_headers :: remova esta linha. O recurso é suportado por padrão nos tipos de armazenamento onde a atualização é implementada.
  • Default: none

  • TAG: url_rewrite_concurrency :: remova esta linha. Defina a opção "concurrency=" na tag url_rewrite_children.
  • Default: none

  • TAG: dns_testnames :: remova esta linha. O DNS não é mais testado na inicialização.
  • Default: none

  • TAG: extension_methods :: remova esta linha. Todos os métodos válidos para HTTP são aceitos por padrão.
  • Default: none

  • TAG: zero_buffers
  • Default: none

  • TAG: incoming_rate
  • Default: none

  • TAG: server_http11 :: remova esta linha. HTTP/1.1 é suportado por padrão.
  • Default: none

  • TAG: upgrade_http0.9 :: remova esta linha. O protocolo de straming ICY/1.0 é suportado por padrão.
  • Default: none

  • TAG: zph_local :: altere essas entradas. Use a diretiva qos_flows.
  • Default: none

  • TAG: header_access :: desde o Squid-3.0 substituir por request_header_access ou reply_header_access, dependendo se você deseja corresponder pedidos de clientes ou respostas do servidor.
  • Default: none

  • TAG: httpd_accel_no_pmtu_disc :: desde o Squid-3.0 é usada a flag "disable-pmtu-discovery".
  • Default: none

  • TAG: wais_relay_host :: substitua essa linha pela configuração "cache_peer".
  • Default: none

  • TAG: wais_relay_port :: substitua essa linha pela configuração "cache_peer".
  • Default: none 

Opções de autenticação I

TAG: auth_param :: opções utilizadas para definir os vários parâmetros suportados pelo Squid3 para diferentes esquemas de autenticações.
Formato: auth_param scheme parameter [setting]

A ordem em que são apresentados os esquemas de autenticação para o cliente é dependente da ordem em que o esquema aparece pela primeira vez no arquivo de configuração.

Isto é, tem um bug (não é compatível com a RFC 2617) em que ele vai usar o esquema básico que se constitui da primeira entrada apresentada, mesmo se esquemas mais seguros forem utilizados.

Utilize a ordem nas configurações recomendadas abaixo.

Se outros navegadores têm dificuldades (não reconhecem os esquemas oferecidos, mesmo se você estiver usando o esquema básico) ou se você colocar primeiro o básico, ou desativar os outros esquemas (comentando sua linha de entrada).

Uma vez que um esquema de autenticação esteja totalmente configurado, ele só pode ser desligado fechando o Squid3 e/ou reiniciando. As alterações podem ser feitas com o Squid3 funcionando e ativadas com "reconfigure", isto é, você pode mudar para um suporte diferente, mas não desconfigurar o suporte completamente.

Por favor, note que esta diretiva define como o Squid processa a autenticação, porém, não ativa automaticamente a autenticação.

Para usar a autenticação, você deve, além disso, utilizar ACLs baseadas no login em http_access (proxy_auth, proxy_auth_regex or external with %LOGIN used in the format tag). O navegador tentará autenticar de acordo com a primeira ACL encontrada em http_access e também será desafiado para novo login com credenciais se a requisição estiver sendo negada por uma ACL do tipo proxy_auth.

* Atenção: a autenticação não pode ser usada em um proxy transparente interceptador, no qual o cliente pensa que está falando com o servidor de origem. Esta é uma limitação do protocolo TCP/IP para proxy transparente interceptando na porta 80. Não é uma limitação do Squid. As opções "transparent", "intercept" ou "tproxy", desabilitam a autenticação.

Parâmetros para o esquema básico

"program" cmdline :: especifica o comando para o autenticador externo. O programa lê uma linha contendo "username password" e responde "OK" ou "ERR" em um loop infinito.

Respostas do tipo "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página de erro retornado. Se você usar autenticação, tenha certeza de ter pelo menos uma ACL do tipo proxy_auth.

Por padrão, o esquema de autenticação básico não é usado, a menos que um programa seja especificado.

Se você quiser usar a tradicional autenticação NCSA de proxy, defina esta linha para algo como:

auth_param basic program /etc/squid3/libexec/ncsa_auth /etc/squid3/etc/passwd


"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de processos para autenticar.

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N, em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=", define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez.

Configurando-o para um número maior que 0 altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param basic children 20 startup=0 idle=1


"realm" realmstring :: especifica o nome que será comunicado ao cliente para o esquema básico de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param basic realm Squid proxy-caching web server


"credentialsttl" timetolive :: especifica para o Squid3 por quanto tempo é válido o "username:password", em outras palavras, muitas vezes o programa auxiliar é chamado para esse usuário. Defina um valor baixo para forçar a revalidação com senhas curtas.

Note que definir um valor alto, não tem impacto sobre a sua suscetibilidade para repetir os ataques, a menos se você estiver usando uma senha de uso único no sistema (como SecureID). Se você estiver usando tal sistema, estará vulnerável a ataques de repetição, a menos que você use a ACL "max_user_ip" em uma regra "http_access".

"casesensitive" on|off :: especifica se nomes de usuários são case sensitive. A maioria dos bancos de dados de usuários são case sensitive permitindo que o mesmo nome de usuário possa ser escrito usando letras maiúsculas e minúsculas. Faz uma grande diferença para o processamento da ACL user_max_ip.

auth_param basic casesensitive off


Parâmetros para o esquema Digest

"program" cmdline :: especifica o comando para o autenticador externo. Um programa lê uma linha contendo "username":"realm" e responde com o valor apropriado hexadecimal H (A1) ou "ERR", se o usuário (ou o seu hash H (A1)) não existe.

Veja RFC 2616 para a definição de H (A1).

As respostas "ERR" podem, opcionalmente, ser seguidas por uma descrição de erro disponível como %m na página retornada.

Por padrão, o esquema de autenticação Digest não é usado, a menos que um programa seja especificado.

Se for usar um autenticador Digest, defina esta linha como, por exemplo:

auth_param digest program /etc/squid3/bin/digest_pw_auth /etc/squid3/etc/digpass


"utf8" on|off :: HTTP usa iso-latin-1 como conjunto de caracteres, enquanto alguns back-ends de autenticação, como LDAP, usam UTF-8.

Se for definido como "on", o Squid3 traduzirá o HTTP charset iso-latin-1 para UTF-8 antes de enviar o nome de usuário e senha para o suporte.

"children" numberofchildren [startup=N] [idle=N] [concurrency=N] :: número máximo de autenticações para autenticar (padrão 5).

Se você iniciar com um valor baixo, o Squid3 terá que esperar por eles para processar um backlog de cálculos de H (A1), e vai diminuir a velocidade.

Quando os cálculos H (A1) forem feitos através de uma rede (lenta), é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre acima do máximo das necessidades.

A opção "concurrency=" define o número de requisições simultâneas que o Squid3 pode processar. O padrão 0 é utilizado para suportar apenas uma requisição por vez. Configurando-o para um número maior que 0, altera o protocolo usado para incluir um número de canal na primeira linha do request/response, permitindo que vários pedidos possam ser enviados em paralelo mesmo sem esperar a resposta.

Não deve ser definida, a menos que tenha suporte para isso.

auth_param digest children 20 startup=0 idle=1


"realm" realmstring :: especifica o nome que será comunicado ao clliente para o esquema Digest de autenticação de proxy (parte do texto que o usuário vai ver quando for solicitado seu nome de usuário e senha). Não há padrão.

auth_param digest realm Squid proxy-caching web server


"nonce_garbage_interval" timeinterval :: especifica o intervalo de "nonces" emitidos para checar a validade dos clients_agent's. "Nonce" refere-se a um 'número usado uma vez'.

Geralmente, é um número aleatório (ex.:, autenticação MD5).

"nonce_max_duration" timeinterval :: especifica o tempo máximo que um dado nonce será válido.

"nonce_max_count" number :: especifica o número máximo de vezes que um dado nonce pode ser usado.

"nonce" é um número usado uma vez. Geralmente, é um número pseudo-aleatório, emitido em um protocolo de autenticação para garantir que comunicações antigas não possam ser reutilizadas em 'ataques de repetição'.

"nonce_strictness" on|off :: determina se o Squid3 requer um comportamento estrito de incremento-por-1 para a contagem de nonce, ou apenas incremento (off - para uso quando agentes geram contagem nonce que ocasionalmente decrementam um (isto é, 1,2,4,6)). O padrão é off.

"check_nonce_count" on|off :: esta diretiva, se definida como off, torna possível desativar a verificação da contagem nonce para contornar implementações de buggy digest qop em certas versões de navegadores.

O padrão é on, para verificar a contagem nonce e proteger de ataques de repetição de autenticação.

"post_workaround" on|off :: esta é uma solução para bug de certos navegadores que enviam uma requisição digest incorreta em pedidos POST, quando reutilizam o mesmo nonce que adquiriram antes em uma requisição GET.

Opções de autenticação II

Opções de esquema NTLM

"program" cmdline :: especifica o comando para o autenticador NTLM externo. Este programa lê troca de pacotes NTLMSSP com o navegador via Squid3 até que a autenticação seja concluída.

Se você usar um autenticador NTLM, certifique-se que tem uma ACL do tipo proxy_auth tipo. Por padrão, o NTLM authenticator_program não é utilizado.

auth_param ntlm program /etc/squid3/bin/ntlm_auth


"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta,) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=" permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param ntlm children 20 startup=0 idle=1


"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param ntlm keep_alive on


Opções de configuração NEGOTIATE

"program" cmdline :: especifica o comando para o autenticador NEGOTIATE externo. Este protocolo é utilizado no Microsoft Active Directory com as configurações habilitadas no Microsoft Internet Explorer ou no Mozilla Firefox.

Seu principal objetivo, é a troca de credenciais com o proxy Squid3 usando os mecanismos Kerberos. Se você usar um autenticador Negotiate, certifique-se de ter pelo menos uma ACL do tipo proxy_auth ativa. Por padrão, o authenticator_program Negotiate não é utilizado.

O único programa suportado para esta regra é o ntlm_auth, programa distribuído como parte do Samba, versão 4 ou superior.

auth_param negotiate program /etc/squid3/bin/ntlm_auth --helper-protocol=gss-spnego


"children" numberofchildren [startup=N] [idle=N] :: número máximo de processos para autenticar (O padrão é 5).

Se você iniciar com um valor baixo, o Squid3 vai ter que esperar por eles para processar um backlog de verificação de credenciais, e isto vai diminuir a velocidade. Quando as verificações de senha são feitas através de uma rede (lenta) é provável que você precise de muitos processos autenticadores.

As opções "startup=" e "idle=", permitem uma distorção na quantidade exata de execução. O mínimo startup=N será usado durante a inicialização e o reconfigure do Squid3.

Squid3 irá iniciar em grupos de até idle=N em uma tentativa de atender às necessidades do tráfego e manter idle=N livre, acima do máximo das necessidades.

auth_param negotiate children 20 startup=0 idle=1


"keep_alive" on|off :: se você tiver problemas com requisições PUT/POST ao usar o esquema de negociação de autenticação, então, você pode tentar definir isso como off.

Isso fará com que o Squid3 force o fechamento da conexão nas requisições iniciais, onde o navegador solicita os esquemas que são suportados pelo proxy.

auth_param negotiate keep_alive on


Exemplos:

#Configuração mínima recomendada por esquema:
#auth_param negotiate program < descomente e complete esta linha para ativar >
#auth_param negotiate children 20 startup=0 idle=1
#auth_param negotiate keep_alive on
#
#auth_param ntlm program < descomente e complete esta linha para ativar >
#auth_param ntlm children 20 startup=0 idle=1
#auth_param ntlm keep_alive on
#
#auth_param digest program < descomente e complete esta linha >
#auth_param digest children 20 startup=0 idle=1
#auth_param digest realm Squid proxy-caching web server
#auth_param digest nonce_garbage_interval 5 minutes
#auth_param digest nonce_max_duration 30 minutes
#auth_param digest nonce_max_count 50
#
#auth_param basic program <descomente e complete esta linha>
#auth_param basic children 5 startup=5 idle=1
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours

Default:
none


TAG: authenticate_cache_garbage_interval :: período de tempo da coleta de lixo em todo o cache do nome de usuário.

Este é um trade-off entre a utilização da memória (intervalos longos - digamos 2 dias) e CPU (intervalos curtos - digamos 1 minuto).

Mude somente se você tiver boas razões para isso.

Default: authenticate_cache_garbage_interval 1 hour

TAG: authenticate_ttl :: tempo que um usuário fica logado com as suas credenciais. Quando o intervalo de coleta de lixo ultrapassa o tempo, todas as credenciais dos usuários passadas pelo TTL são removidas da memória.

Default: authenticate_ttl 1 hour

TAG: authenticate_ip_ttl :: se você usar a autenticação de proxy com uma ACL do tipo "max_user_ip" esta diretiva controla por quanto tempo o Squid3 mantém o endereço IP associado com cada usuário.

Use um pequeno valor (por exemplo, 60 segundos) se os usuários alteram os endereços IP rapidamente, como é o caso de dial-up. Você pode utilizar um valor maior (por exemplo, 2 horas) em uma LAN corporativa com atribuições de endereços IP estáticos.

Default: authenticate_ip_ttl 0 seconds


Controles de acesso

TAG: external_acl_type :: esta opção define ACLs externas usando um programa de ajuda para procurar o status.

external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]


Opções:
  • ttl=n :: TTL em segundos para resultados em cache (o padrão é 3600 para uma hora)
  • negative_ttl=n :: TTL para pesquisas negativas em cache (o padrão é o mesmo que ttl)
  • children-max=n :: número máximo de ACLs externas de processos auxiliares (Default: 20).
  • children-startup=n :: número mínimo de ACLs externas de processos auxiliares que inicializam (Default 0).
  • children-idle=n :: número de ACLs de processos auxiliares para se manter à frente do trafego. O Squid3 usará esta diretiva sempre que os processos existentes ultrapassarem a carga de tráfego. Até o valor máximo de children-max. (default 1)
  • concurrency=n :: nível de concorrência por processo. Deve ser usado apenas quando tiver suporte para processar mais do que uma consulta por vez.
  • cache=n :: limita o tamanho do cache, o padrão é ilimitado.
  • grace=n :: percentual remanescente do TTL quando uma atualização de entrada de cache for iniciada sem a necessidade de espera por uma nova resposta. (o padrão é n).
  • protocol=2.5 :: modo de compatibilidade para ACLs externas do Squid-2.5. Os protocolos utilizados nesta comunicação são o IPv4 e IPv6. O padrão é auto-detectar o IPv6, e usá-lo quando disponível.

Formato das especificações:
  • %LOGIN :: nome de login de usuário autenticado.
  • %EXT_USER :: nome de usuário para uma ACL externa.
  • %EXT_LOG :: detalhes de log para uma ACL externa.
  • %EXT_TAG :: tag de uma ACL externa.
  • %IDENT :: identidade do nome de usuário.
  • %SRC cliente IP.
  • %SRCPORT :: porta de origem do cliente.
  • %URI :: URL requerida.
  • %DST :: HOST requerido.
  • %PROTO :: protocolo requerido.
  • %PORT :: porta requerida.
  • %PATH :: caminho de URL requerido (incluindo string de consulta, se houver.
  • %METHOD :: método requerido.
  • %MYADDR :: endereço da interface do Squid3.
  • %MYPORT :: número da http_port do Squid3.
  • %USER_CERT :: certificado SSL do usuário no formato PEM.
  • %USER_CERTCHAIN :: cadeia de certificados SSL do usuário no formato PEM.
  • %USER_CERT_xx :: usuário certificado SSL com atributo xx de sujeito.
  • %USER_CA_xx :: usuário certificado SSL com atributo xx de emissor.

  • %>{Header} :: HTTP cabeçalho de requisição "Header".
  • %>{Hdr:member} :: HTTP cabeçalho de requisição "Hdr" lista de membros "member".
  • %>{Hdr:;member} :: HTTP cabeçalho de requisição da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.

  • %<{Header} :: HTTP resposta de cabeçalho "Header".
  • %<{Hdr:member} :: HTTP resposta de cabeçalho "Hdr" da lista de membros "member".
  • %<{Hdr:;member} :: HTTP resposta de cabeçalho da lista de membros usando ";" como separador; pode ser usado qualquer caractere não-alfanumérico.

  • %% :: sinal de percentual. Útil para ajudas que precisam um formato imutável.

Além do acima referido, qualquer string especificada na referenciação ACL, também será incluída na linha de requisição depois dos formatos especificados (veja a diretiva "acl external").

O helper recebe as linhas pela especificação do formato acima, e retorna as linhas começando com OK ou ERR, indicando a validade da requisição e, opcionalmente, seguidas por outras palavras-chave com mais detalhes.

Sintaxe do resultado geral: OK/ERR keyword=value ...

Keywords definidas:
  • user= :: nome do usuário (login).
  • password= :: senha do usuário (para login= cache_peer option).
  • message= :: mensagem descrevendo o motivo. Disponível como %o na página de erros.
  • tag= :: aplica uma tag na requisição (em ambos ERR e OK). Apenas define uma tag semalterar tags existentes.
  • log= :: String registrada no access.log. Disponível como %ea nas especificações do logformat.

Se o protocolo for 3.0 (protocol=3.0, o padrão), então a URL de escape é usada para proteger as requisições e as repostas.

Se usar protocol=2.5, então, todos os valores precisam estar entre aspas se contiver espaços em branco escapados com a barra invertida \.

Quando usar a opção "concurrency=", o protocolo é alterado introduzindo-se uma tag do canal de consulta na frente das requisições/respostas (request/response). A tag do canal de consulta é um número entre 0 e concurrency-1.

Default:
none

TAG: acl :: definido uma lista de acesso.

Toda definição da lista de acesso deve começar com "aclname" e "acltype", seguidos por quaisquer tipos de argumentos específicos, ou o arquivo, ou o caminho de um arquivo que será lido pela ACL.

acl aclname acltype argument ...
acl aclname acltype "file" ...


Quando usar um arquivo, o arquivo deve conter um item por linha.

Por padrão, as expressões regulares são case-sensitive (diferenciam maiúsculas de minúsculas).

Para torná-las insensitives, use a opção "-i". Para voltar para maiúsculas, use a opção "+ i" entre os padrões, ou faça uma nova ACL sem "-i".

Alguns tipos de ACL requerem a suspensão da requisição atual para poder acessar uma fonte de dados externa. Aquelas que são marcadas com a tag [slow] são lentas, aquelas que são marcadas com a tag [fast] são rápidas, e aquelas não marcadas são rápidas.

Para mais informações, veja: SquidFaq/SquidAcl - Squid Web Proxy Wiki

 

Tipos de ACLs disponíveis

acl aclname src ip-address/mask ... :: clients IP address [fast]
acl aclname src addr1-addr2/mask ... :: range of addresses [fast]
acl aclname dst ip-address/mask ... :: URL host's IP address [slow]
acl aclname localip ip-address/mask ... :: IP address the client connected to (endereço IP de cliente conectado a) [fast]

acl aclname arp   mac-address ... (xx:xx:xx:xx:xx:xx notação)

A ACL arp requer a opção "--enable-arp-acl", além disso, ACLs arp não são portáveis para todos os sistemas operacionais.

Funciona em GNU/Linux, Solaris, Windows, FreeBSD e algumas outras variantes do *BSD.
[fast]

* Nota: o Squid3 só pode determinar o endereço MAC para os clientes que estão na mesma sub-rede. Se o cliente estiver em uma sub-rede diferente, então o Squid3 não pode descobrir o endereço MAC.

acl aclname srcdomain .foo.com ... :: reverse lookup, from client IP [slow]
acl aclname dstdomain .foo.com ... :: Destination server from URL [fast]
acl aclname srcdom_regex [-i] \.foo\.com ... :: regex matching client name [slow]
acl aclname dstdom_regex [-i] \.foo\.com ... :: regex matching server [fast]

Para "dstdomain" e "dstdom_regex", uma pesquisa inversa é tentada se o IP baseado na URL não for encontrado. O nome "none" é usado se a pesquisa inversa falhar.

acl aclname src_as number ...
acl aclname dst_as number ... :: [fast]


Exceto para controle de acesso, números AS podem ser usados para encaminhamento das requisições de caches específicos. Abaixo, tem um exemplo para encaminhar todos os pedidos de "AS#1241" e só para aqueles em "mycache.mydomain.net":

# acl asexample dst_as 1241
# cache_peer_access mycache.mydomain.net allow asexample
# cache_peer_access mycache_mydomain.net deny all


acl aclname peername myPeer ... :: [fast] corresponde com a entrada cache_peer setando name= on na linha cache_peer lines para uso confiável.

  • acl aclname time [day-abbrevs] [h1:m1-h2:m2]

  • [fast]
  • day-abbrevs:
  • S - Sunday
  • M - Monday
  • T - Tuesday
  • W - Wednesday
  • H - Thursday
  • F - Friday
  • A - Saturday
  • h1:m1 deve ser menor do que h2:m2

Coloque sempre os dias na ordem, você pode omitir dias, mas coloque na ordem.

acl aclname url_regex [-i] ^http:// ... :: regex (expressão regular) corresponde a todas as URLs [fast]
acl aclname urllogin [-i] [^a-zA-Z0-9] ... :: regex corresponde ao campo de login na URL
acl aclname urlpath_regex [-i] \.gif$ ... :: regex que corresponde ao caminho da URL [fast]

acl aclname port 80 70 21 0-1024... :: porta TCP de destino [fast]. Intervalos são permitidos.
acl aclname localport 3128 ... :: porta TCP de conexão [fast]. NP: para o modo "intercept" é usualmente '80'
acl aclname myportname 3128 ... :: porta http(s)_port (quando usar https coloque uma porta diferente de http_port) [fast]
acl aclname proto HTTP FTP ... :: requisição de protocolo [fast]
acl aclname method GET POST ... :: requisição de método HTTP [fast]
acl aclname http_status 200 301 500- 400-403 ... :: código do status na resposta [fast]
acl aclname browser [-i] regexp ... :: o padrão corresponde ao cabeçalho User_Agent (veja também req_header abaixo) [fast]
acl aclname referer_regex [-i] regexp ... :: o padrão corresponde ao cabeçalho refererr [fast]. referer é pouco confiável, então use com cuidado.

acl aclname ident username ...
acl aclname ident_regex [-i] pattern ... :: a string corresponde à saída ident [slow] use REQUIRED para aceitar qualquer ident não-nulo.

acl aclname proxy_auth [-i] username ...
acl aclname proxy_auth_regex [-i] pattern ... :: autenticação HTTP verifica se o login e a senha digitados conferem com o login e a senha cadastrados [slow] e recebe uma lista de nomes de usuários permitidos.

Use REQUIRED para aceitar qualquer nome de usuário válido. Utilize a autenticação de proxy em cenários forward-proxy e autenticação HTTP simples em cenários reverse-proxy.

NOTAS:
  • Quando um cabeçalho de autenticação de proxy é enviado, mas não é necessário na checagem da ACL, então o nome do usuário NÃO será registrado no access.log.
  • proxy_auth requer um programa de autenticação EXTERNO para checar as combinações de login e senha (veja a diretiva auth_param).
  • proxy_auth não pode ser usado em um proxy transparent/intercep. O navegador precisa ser configurado para usar um proxy e responder à autenticação.

acl aclname snmp_community string ... :: comunhão de strings para limitar o acesso ao agente SNMP [fast]

Exemplo:

acl snmppublic snmp_community public


acl aclname maxconn number :: será correspondido quando o endereço IP do cliente tem mais do que <number> conexões TCP estabelecidas. [fast]

* Nota: só mede conexões TCP diretas, então X-Forwarded-For para clientes indiretos não serão contadas.

acl aclname max_user_ip [-s] number :: corresponde quando o usuário tenta logar mais de uma vez com IPs diferentes. O parâmetro "authenticate_ip_ttl" controla o tempo de espera nas entradas. [fast]

Se "-s" for especificado, o limite é rigoroso, negando a navegação de outros endereços IP até que o TTL expire. Sem "-s", o Squid3 vai irritar o usuário negando requisições aleatoriamente (o contador é zerado cada vez que o limite é atingido e um pedido for negado).

* Nota: no modo de aceleração, ou onde haja um mix de proxies, os clientes podem parecer vir de múltiplos endereços, se forem passando por muitos proxies, então, um limite de 1, nesse caso, pode causar problemas para os usuários.

acl aclname random probability :: corresponde pseudo-aleatoriamente as requisições, com base na probabilidade dada.

A probabilidade pode ser escrita como um decimal (0,333), como fração (1/3) ou como razão de matches:non-matches (3:5).

acl aclname req_mime_type [-i] mime-type ... :: a regex corresponde com o tipo mime da requisição gerada pelo cliente. Pode ser usada para detectar upload de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: NÃO coincide com a resposta. Você não pode usar para saber o tipo de arquivo retornado.

acl aclname req_header header-name [-i] any\.regex\.here :: A regex corresponde com qualquer um dos cabeçalhos de requisição conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname rep_mime_type [-i] mime-type ... :: a regex corresponde com o tipo mime da resposta recebida pelo Squid3. Pode ser usada para detectar download de arquivos em alguns tipos de requisições HTTP por tunelamento [fast]

* Nota: não tem nenhum efeito nas regras http_access. Só tem efeito nas regras que afetam o fluxo de dados de resposta como "http_reply_access".

acl aclname rep_header header-name [-i] any\.regex\.here :: a regex corresponde com qualquer um dos cabeçalhos de resposta conhecidos. Pode ser vista como um super-conjunto de "browser", "referer" e "mime-type" ACLs [fast]

acl aclname external class_name [arguments...] :: ACL externa de pesquisa por meio de uma classe auxiliar definida pela diretiva external_acl_type [slow]

acl aclname user_cert attribute values... :: corresponde com os atributos do usuário no certificado SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

acl aclname ca_cert attribute values... :: corresponde com os atributos do usuário no certificado CA SSL sendo um dos DN/ C/ O/ CN/ L/ ST [fast]

# acl aclname ext_user username ...
# acl aclname ext_user_regex [-i] pattern ...
:: a string corresponde com o nome de usuário retornado pela ACL externa [slow]. Use REQUIRED para aceitar qualquer nome de usuário não-nulo.

acl aclname tag tagvalue ... :: a string corresponde com a tag retornada pela ACL externa.

acl aclname hier_code codename ... :: a string corresponde com o código de hierarquia do Squid3 [fast]. Por exemplo, DIRECT, PARENT_HIT, NONE, etc.

* Nota: não tem nenhum efeito nas regras "http_access". Só tem efeito nas regras que afetam fluxo de dados de resposta, como "http_reply_access".

Exemplos:

acl macaddress arp 09:00:2b:23:45:67
acl myexample dst_as 1241
acl password proxy_auth REQUIRED
acl fileupload req_mime_type -i ^multipart/form-data$
acl javascript rep_mime_type -i ^application/x-javascript$


Default:

ACLs all, manager, localhost, e to_localhost são predefinidas.