sexta-feira, 28 de janeiro de 2011
quarta-feira, 26 de janeiro de 2011
FreeBSD: Finding Your Application
# whereis lsof
lsof: /usr/ports/sysutils/lsof
This tells us that lsof (a system utility) can be found in the /usr/ports/sysutils/lsof directory.
Additionally, you can use a simple echo(1) statement to find where a port exists in the ports tree. For example:
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
http://www.freebsd.org/doc/handbook/ports-finding-applications.html
lsof: /usr/ports/sysutils/lsof
This tells us that lsof (a system utility) can be found in the /usr/ports/sysutils/lsof directory.
Additionally, you can use a simple echo(1) statement to find where a port exists in the ports tree. For example:
# echo /usr/ports/*/*lsof*
/usr/ports/sysutils/lsof
http://www.freebsd.org/doc/handbook/ports-finding-applications.html
segunda-feira, 24 de janeiro de 2011
Squid autenticar em MySQL - Part 2
Olá povo!
Mais uma vez aqui para mais uma aventurazinha =P
Na faculdade surgiu um trabalho de final de ano que agruparia várias matérias num único projeto, chamado Projeto Integrador, o qual consistia em fazer um autenticador (helper) para o Squid em C para autenticar no MySQL.
Me baseando num outro projeto[1] que já existia. Como era pra faculdade eu dei uma melhorada na sintaxe e deixei ele verboso pois o professor de C queria um log bem bonito (rs).
How it works:
1. Instalando o Squid, MySQL, GCC e libs.
2. Source do Helper.
3. Compilando o Helper.
4. Estrutura do banco Squid.
5. Configurando o Squid.
6. Inserindo e testando usuários.
7. Considerações.
8. Links
1. Instalando o SQUID.
Na faculdade os professores pediram para usar o Debian (apesar de gostar mais do FreeBSD), os caras mandam (rs). Depois do linux instalado na máquina e também
# apt-get install squid
# apt-get install mysql-server
# apt-get install libmysqlclient15-dev
# apt-get install libmysqlclient15off
# apt-get install gcc
2. Source do Helper
#include
#include
#include
#include
#define HOST "localhost"
#define USER "root"
#define PASS "root"
#define DB "squid"
#define TAB "usuarios"
#define USER_TAB "login"
#define PASS_TAB "senha"
#define ACT_TAB "status"
main() {
char query[255], *senha, *user;;
MYSQL_RES *resp;
MYSQL conexao;
FILE *log;
char buffer[255];
int res;
if((log=fopen("/var/log/mysql_auth.log","a")) == NULL ) {
(void)printf("ERR\n");
}
/* joga a saida pro standart out pro squid ler */
if( (setvbuf(stdout, NULL, _IOLBF, 0)) != 0 ) {
return;
}
mysql_init(&conexao);
while(1) {
if((log=fopen("/var/log/mysql_auth.log","a")) == NULL ) {
(void)printf("ERR\n");
}
if(mysql_real_connect(&conexao, HOST,USER,PASS,DB,0,NULL,0)) {
if((fgets(buffer, 255, stdin)) == NULL ) {
break;
}
/* encontra a quebra de linha e aponta a senha */
if((senha = strchr(buffer, '\n')) != NULL ) {
*senha = '\0';
}
if((senha = strchr(buffer, ' ')) == NULL ) {
(void) printf("ERR\n");
fprintf(log,"Senha vazia\n");
}
*senha++='\0';
sprintf(query, "SELECT " USER_TAB " FROM " TAB " WHERE " USER_TAB "='%s' AND " PASS_TAB "=PASSWORD('%s') AND " ACT_TAB "='1'",buffer, senha);
fprintf(log,"Conectado ao banco\n");
if((res = mysql_query(&conexao, query)) == 0) {
fprintf(log,"Select Efetuado com Sucesso:\n %s\n", query);
resp = mysql_store_result(&conexao);
fprintf(log,"resposta da consulta: %i\n", resp);
} else {
(void) printf("ERR\n");
fprintf(log,"Erro %d: %s\n", mysql_errno(&conexao),mysql_error(&conexao));
continue;
}
if(resp -> row_count != 0) { // verifica se o objeto row_count dentro de resp eh diferente de zero pra responder
(void) printf("OK\n");
fprintf(log,"Usuário %s login: OK\n",buffer);
mysql_free_result(resp);
mysql_close(&conexao);
} else {
(void) printf("ERR\n");
fprintf(log,"Usuário %s login : Denied\n", buffer);
}
fclose(log);
exit(0);
} else {
(void) printf("ERR\n");
fprintf(log,"Erro %d: %s\n", mysql_errno(&conexao),mysql_error(&conexao));
}
}
}
Porém como o blogspot não respeita identação ¬¬ está tudo fora do lugar. Caso queiram baixem o fonte em http://neo.bs2.com.br/integrador/autenticador.c
3. Compilando o helper
É muito simples:
# gcc -l mysqlclient autenticador.c -o autenticador
mova-o para uma pasta onde o squid tem acesso ex.: /etc/squid/
4. Estrutura do banco MySQL para o Squid:
CREATE DATABASE IF NOT EXISTS squid;
USE squid;
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE `usuarios` (
`login` varchar(40) NOT NULL,
`senha` varchar(255) NOT NULL,
`status` int(11) NOT NULL default '1',
UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Salve-o como banco.sql.
Insira-o no banco com o comando:
# mysql -uroot -proot -e"source banco.sql"
5. Configurando o Squid.
Tomando como padrão que a sua rede seja 192.168.0.0, será necessário colocar as seguintes linhas no squid.conf
auth_param basic program "/etc/squid/autenticador"
auth_param basic realm "Proxy - Digite usuário/senha"
auth_param basic children 5
auth_param basic casesensitive off
acl senha proxy_auth REQUIRED
acl rede src 192.168.0.0./24
http_access allow rede senha
6. Inserindo e testando usuários.
Vamos inserir um usuário teste:
# mysql -uroot -proot squid
> INSERT INTO usuarios VALUES ('teste',PASSWORD('teste'),1);
> QUIT
Crie o arquivo de LOG e dê permissão para que o squid grave nele
# touch /var/log/mysql_auth.log
# chmod 777 /var/log/mysql_auth.log
Inicialize o SQUID:
# /etc/init.d/squid start
Configure seu navegador com o IP e porta do proxy e faça o teste.
No banco se você quiser apenas desativar um usuário sem deletá-lo basta trocar o valor no campo status para 0 (zero).
Facilitei a sua vida? esse software está sobre a Licensa BeerWare... ou seja me paga uma cerveja =]
7. Considerações
Como é um trabalho para a faculdade achei interessante documentar, apesar de não ter tido tempo de escrever este artigo antes de entregar (pois, poderia usá-lo no trabalho), foi bacana desenvolver isso.
Espero que ajude outras pessoas também, que precisem de uma solução como esta onde precisa-se buscar os usuários do squid no banco MySQL.
8. Links
[1] http://www.devet.org/squid/proxy_auth/
Mais uma vez aqui para mais uma aventurazinha =P
Na faculdade surgiu um trabalho de final de ano que agruparia várias matérias num único projeto, chamado Projeto Integrador, o qual consistia em fazer um autenticador (helper) para o Squid em C para autenticar no MySQL.
Me baseando num outro projeto[1] que já existia. Como era pra faculdade eu dei uma melhorada na sintaxe e deixei ele verboso pois o professor de C queria um log bem bonito (rs).
How it works:
1. Instalando o Squid, MySQL, GCC e libs.
2. Source do Helper.
3. Compilando o Helper.
4. Estrutura do banco Squid.
5. Configurando o Squid.
6. Inserindo e testando usuários.
7. Considerações.
8. Links
1. Instalando o SQUID.
Na faculdade os professores pediram para usar o Debian (apesar de gostar mais do FreeBSD), os caras mandam (rs). Depois do linux instalado na máquina e também
# apt-get install squid
# apt-get install mysql-server
# apt-get install libmysqlclient15-dev
# apt-get install libmysqlclient15off
# apt-get install gcc
2. Source do Helper
#include
#include
#include
#include
#define HOST "localhost"
#define USER "root"
#define PASS "root"
#define DB "squid"
#define TAB "usuarios"
#define USER_TAB "login"
#define PASS_TAB "senha"
#define ACT_TAB "status"
main() {
char query[255], *senha, *user;;
MYSQL_RES *resp;
MYSQL conexao;
FILE *log;
char buffer[255];
int res;
if((log=fopen("/var/log/mysql_auth.log","a")) == NULL ) {
(void)printf("ERR\n");
}
/* joga a saida pro standart out pro squid ler */
if( (setvbuf(stdout, NULL, _IOLBF, 0)) != 0 ) {
return;
}
mysql_init(&conexao);
while(1) {
if((log=fopen("/var/log/mysql_auth.log","a")) == NULL ) {
(void)printf("ERR\n");
}
if(mysql_real_connect(&conexao, HOST,USER,PASS,DB,0,NULL,0)) {
if((fgets(buffer, 255, stdin)) == NULL ) {
break;
}
/* encontra a quebra de linha e aponta a senha */
if((senha = strchr(buffer, '\n')) != NULL ) {
*senha = '\0';
}
if((senha = strchr(buffer, ' ')) == NULL ) {
(void) printf("ERR\n");
fprintf(log,"Senha vazia\n");
}
*senha++='\0';
sprintf(query, "SELECT " USER_TAB " FROM " TAB " WHERE " USER_TAB "='%s' AND " PASS_TAB "=PASSWORD('%s') AND " ACT_TAB "='1'",buffer, senha);
fprintf(log,"Conectado ao banco\n");
if((res = mysql_query(&conexao, query)) == 0) {
fprintf(log,"Select Efetuado com Sucesso:\n %s\n", query);
resp = mysql_store_result(&conexao);
fprintf(log,"resposta da consulta: %i\n", resp);
} else {
(void) printf("ERR\n");
fprintf(log,"Erro %d: %s\n", mysql_errno(&conexao),mysql_error(&conexao));
continue;
}
if(resp -> row_count != 0) { // verifica se o objeto row_count dentro de resp eh diferente de zero pra responder
(void) printf("OK\n");
fprintf(log,"Usuário %s login: OK\n",buffer);
mysql_free_result(resp);
mysql_close(&conexao);
} else {
(void) printf("ERR\n");
fprintf(log,"Usuário %s login : Denied\n", buffer);
}
fclose(log);
exit(0);
} else {
(void) printf("ERR\n");
fprintf(log,"Erro %d: %s\n", mysql_errno(&conexao),mysql_error(&conexao));
}
}
}
Porém como o blogspot não respeita identação ¬¬ está tudo fora do lugar. Caso queiram baixem o fonte em http://neo.bs2.com.br/integrador/autenticador.c
3. Compilando o helper
É muito simples:
# gcc -l mysqlclient autenticador.c -o autenticador
mova-o para uma pasta onde o squid tem acesso ex.: /etc/squid/
4. Estrutura do banco MySQL para o Squid:
CREATE DATABASE IF NOT EXISTS squid;
USE squid;
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE `usuarios` (
`login` varchar(40) NOT NULL,
`senha` varchar(255) NOT NULL,
`status` int(11) NOT NULL default '1',
UNIQUE KEY `login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Salve-o como banco.sql.
Insira-o no banco com o comando:
# mysql -uroot -proot -e"source banco.sql"
5. Configurando o Squid.
Tomando como padrão que a sua rede seja 192.168.0.0, será necessário colocar as seguintes linhas no squid.conf
auth_param basic program "/etc/squid/autenticador"
auth_param basic realm "Proxy - Digite usuário/senha"
auth_param basic children 5
auth_param basic casesensitive off
acl senha proxy_auth REQUIRED
acl rede src 192.168.0.0./24
http_access allow rede senha
6. Inserindo e testando usuários.
Vamos inserir um usuário teste:
# mysql -uroot -proot squid
> INSERT INTO usuarios VALUES ('teste',PASSWORD('teste'),1);
> QUIT
Crie o arquivo de LOG e dê permissão para que o squid grave nele
# touch /var/log/mysql_auth.log
# chmod 777 /var/log/mysql_auth.log
Inicialize o SQUID:
# /etc/init.d/squid start
Configure seu navegador com o IP e porta do proxy e faça o teste.
No banco se você quiser apenas desativar um usuário sem deletá-lo basta trocar o valor no campo status para 0 (zero).
Facilitei a sua vida? esse software está sobre a Licensa BeerWare... ou seja me paga uma cerveja =]
7. Considerações
Como é um trabalho para a faculdade achei interessante documentar, apesar de não ter tido tempo de escrever este artigo antes de entregar (pois, poderia usá-lo no trabalho), foi bacana desenvolver isso.
Espero que ajude outras pessoas também, que precisem de uma solução como esta onde precisa-se buscar os usuários do squid no banco MySQL.
8. Links
[1] http://www.devet.org/squid/proxy_auth/
Squid autenticar em MySQL
Se alguem tiver interesse eu tenho isso em php e uso a mesma base do email
para autenticar o squid e o email pegando o campo de nome e senha a senha
pode estar em crypt, a função crypt do mysql,md5, e blowfish todos essas
padroe de senha eu ja testei com o php e funciona sem problema
segue o codigo logo abaixo do mysql_auth que é só copiar e dar pemição de
execução, ele funciona em linux,windows,freebsd
#!/usr/local/bin/php
No squid.conf
auth_param basic program /usr/local/bin/mysql_auth
auth_param basic children 5
auth_param basic realm Login Proxy Cache
auth_param basic credentialsttl 2 hour
acl autenticar proxy_auth REQUIRED
http_access allow autenticar
esse esquema é so para o login as acl eu faço por arquivo que edito via php
e via sudo dou o reload no squid
talvez na~oseja a molhar opção mais pode lhe atender !!
para autenticar o squid e o email pegando o campo de nome e senha a senha
pode estar em crypt, a função crypt do mysql,md5, e blowfish todos essas
padroe de senha eu ja testei com o php e funciona sem problema
segue o codigo logo abaixo do mysql_auth que é só copiar e dar pemição de
execução, ele funciona em linux,windows,freebsd
#!/usr/local/bin/php
No squid.conf
auth_param basic program /usr/local/bin/mysql_auth
auth_param basic children 5
auth_param basic realm Login Proxy Cache
auth_param basic credentialsttl 2 hour
acl autenticar proxy_auth REQUIRED
http_access allow autenticar
esse esquema é so para o login as acl eu faço por arquivo que edito via php
e via sudo dou o reload no squid
talvez na~oseja a molhar opção mais pode lhe atender !!
quinta-feira, 20 de janeiro de 2011
FreeBSD: Dica Rápida
Dicas Rápidas:
Quer saber todos os arquivos que um dado port instalou? Use pkg_info -L. Quer reler a mensagem de pós-instalação de um port já instalado? Use pkg_info -D . Quer consultar informações de um port sem precisar mencionar seu nome e versão exatamente como registrados? Use pkg_info -x , por exemplo, pkg_info -L -x perl
Quer saber todos os arquivos que um dado port instalou? Use pkg_info -L
quarta-feira, 19 de janeiro de 2011
Netmask Converter
Bitmask (Bits) Dotted Decimal Hexadecimal Binary
/0 0.0.0.0 0x00000000 00000000 00000000 00000000 00000000
/1 128.0.0.0 0x80000000 10000000 00000000 00000000 00000000
/2 192.0.0.0 0xc0000000 11000000 00000000 00000000 00000000
/3 224.0.0.0 0xe0000000 11100000 00000000 00000000 00000000
/4 240.0.0.0 0xf0000000 11110000 00000000 00000000 00000000
/5 248.0.0.0 0xf8000000 11111000 00000000 00000000 00000000
/6 252.0.0.0 0xfc000000 11111100 00000000 00000000 00000000
/7 254.0.0.0 0xfe000000 11111110 00000000 00000000 00000000
/8 255.0.0.0 0xff000000 11111111 00000000 00000000 00000000
/9 255.128.0.0 0xff800000 11111111 10000000 00000000 00000000
/10 255.192.0.0 0xffc00000 11111111 11000000 00000000 00000000
/11 255.224.0.0 0xffe00000 11111111 11100000 00000000 00000000
/12 255.240.0.0 0xfff00000 11111111 11110000 00000000 00000000
/13 255.248.0.0 0xfff80000 11111111 11111000 00000000 00000000
/14 255.252.0.0 0xfffc0000 11111111 11111100 00000000 00000000
/15 255.254.0.0 0xfffe0000 11111111 11111110 00000000 00000000
/16 255.255.0.0 0xffff0000 11111111 11111111 00000000 00000000
/17 255.255.128.0 0xffff8000 11111111 11111111 10000000 00000000
/18 255.255.192.0 0xffffc000 11111111 11111111 11000000 00000000
/19 255.255.224.0 0xffffe000 11111111 11111111 11100000 00000000
/20 255.255.240.0 0xfffff000 11111111 11111111 11110000 00000000
/21 255.255.248.0 0xfffff800 11111111 11111111 11111000 00000000
/22 255.255.252.0 0xfffffc00 11111111 11111111 11111100 00000000
/23 255.255.254.0 0xfffffe00 11111111 11111111 11111110 00000000
/24 255.255.255.0 0xffffff00 11111111 11111111 11111111 00000000
/25 255.255.255.128 0xffffff80 11111111 11111111 11111111 10000000
/26 255.255.255.192 0xffffffc0 11111111 11111111 11111111 11000000
/27 255.255.255.224 0xffffffe0 11111111 11111111 11111111 11100000
/28 255.255.255.240 0xfffffff0 11111111 11111111 11111111 11110000
/29 255.255.255.248 0xfffffff8 11111111 11111111 11111111 11111000
/30 255.255.255.252 0xfffffffc 11111111 11111111 11111111 11111100
/31 255.255.255.254 0xfffffffe 11111111 11111111 11111111 11111110
/32 255.255.255.255 0xffffffff 11111111 11111111 11111111 11111111
http://www.pawprint.net/designresources/netmask-converter.php
/0 0.0.0.0 0x00000000 00000000 00000000 00000000 00000000
/1 128.0.0.0 0x80000000 10000000 00000000 00000000 00000000
/2 192.0.0.0 0xc0000000 11000000 00000000 00000000 00000000
/3 224.0.0.0 0xe0000000 11100000 00000000 00000000 00000000
/4 240.0.0.0 0xf0000000 11110000 00000000 00000000 00000000
/5 248.0.0.0 0xf8000000 11111000 00000000 00000000 00000000
/6 252.0.0.0 0xfc000000 11111100 00000000 00000000 00000000
/7 254.0.0.0 0xfe000000 11111110 00000000 00000000 00000000
/8 255.0.0.0 0xff000000 11111111 00000000 00000000 00000000
/9 255.128.0.0 0xff800000 11111111 10000000 00000000 00000000
/10 255.192.0.0 0xffc00000 11111111 11000000 00000000 00000000
/11 255.224.0.0 0xffe00000 11111111 11100000 00000000 00000000
/12 255.240.0.0 0xfff00000 11111111 11110000 00000000 00000000
/13 255.248.0.0 0xfff80000 11111111 11111000 00000000 00000000
/14 255.252.0.0 0xfffc0000 11111111 11111100 00000000 00000000
/15 255.254.0.0 0xfffe0000 11111111 11111110 00000000 00000000
/16 255.255.0.0 0xffff0000 11111111 11111111 00000000 00000000
/17 255.255.128.0 0xffff8000 11111111 11111111 10000000 00000000
/18 255.255.192.0 0xffffc000 11111111 11111111 11000000 00000000
/19 255.255.224.0 0xffffe000 11111111 11111111 11100000 00000000
/20 255.255.240.0 0xfffff000 11111111 11111111 11110000 00000000
/21 255.255.248.0 0xfffff800 11111111 11111111 11111000 00000000
/22 255.255.252.0 0xfffffc00 11111111 11111111 11111100 00000000
/23 255.255.254.0 0xfffffe00 11111111 11111111 11111110 00000000
/24 255.255.255.0 0xffffff00 11111111 11111111 11111111 00000000
/25 255.255.255.128 0xffffff80 11111111 11111111 11111111 10000000
/26 255.255.255.192 0xffffffc0 11111111 11111111 11111111 11000000
/27 255.255.255.224 0xffffffe0 11111111 11111111 11111111 11100000
/28 255.255.255.240 0xfffffff0 11111111 11111111 11111111 11110000
/29 255.255.255.248 0xfffffff8 11111111 11111111 11111111 11111000
/30 255.255.255.252 0xfffffffc 11111111 11111111 11111111 11111100
/31 255.255.255.254 0xfffffffe 11111111 11111111 11111111 11111110
/32 255.255.255.255 0xffffffff 11111111 11111111 11111111 11111111
http://www.pawprint.net/designresources/netmask-converter.php
segunda-feira, 10 de janeiro de 2011
Mudar favicon
#Vou usar o meu endereço real e você muda para onde está localizado o seu .ico.
#
#Copiei e cola as duas linhas logo abaixo do seu
#
#
#Depois pegue sua logomarca (Em PNG, JPG ou GIF) e converta para .ico nesse site: #http://www.prodraw.net/favicon/index.php
#Salve o seu .ico convertido como “favicon.ico” e jogue na raiz do seu FTP.
#Teste se o caminho do seu ico está correto: http://www.danosse.com/favicon.ico
#E pronto!
#A “mulesta do cachorro” do INTERNET EXPLORER agora consegue entender que é para trocar #o icone padrão pela sua logomarca, toda vez que o site carregar!
#
#Copiei e cola as duas linhas logo abaixo do seu
#
#
#Depois pegue sua logomarca (Em PNG, JPG ou GIF) e converta para .ico nesse site: #http://www.prodraw.net/favicon/index.php
#Salve o seu .ico convertido como “favicon.ico” e jogue na raiz do seu FTP.
#Teste se o caminho do seu ico está correto: http://www.danosse.com/favicon.ico
#E pronto!
#A “mulesta do cachorro” do INTERNET EXPLORER agora consegue entender que é para trocar #o icone padrão pela sua logomarca, toda vez que o site carregar!
Assinar:
Postagens (Atom)