14 março, 2008 Postado por: jmartinez
Depois de algum tempo sem postar vou com uma coisa interessante.
Passei alguns dias pensando em como integrar toda minha estrutura em um único banco de dados, já tenho meus usuários autenticando samba, smtp, pop e imap no mysql.
Achei a solução para integrar meu squid, acabei fazendo o meu próprio autenticador.
Vamos ao código em c++:
#include
#include
#include
#include
using namespace std;
int main (int argc, char **argv) {
string user, pass;
/* Recebendo os argumentos de stdin na sequencia usuario, senha */
cin >> user;
cin >> pass;
try {
mysqlpp::Connection con("database","ip","user","password");
mysqlpp::Query query = con.query();
mysqlpp::Result res;
mysqlpp::Row::size_type i;
mysqlpp::Row response;
// Caso exista na base ele volta OK e o squid autoriza o usuario
query << "SELECT 'OK' FROM view_users WHERE email = '" <<
user << "' and password = md5('" << pass << "') ;";
res = query.store();
response = res.at(0);
cout << response.at(0) << endl;
} catch (mysqlpp::BadQuery err) {
cerr << err.what() << endl;
} catch (mysqlpp::EndOfResults) {
// Caso o select seja null cai aqui onde retorna
// o ERR para o squid e nega o acesso do usuario
cerr << "ERR" << endl;
} catch (mysqlpp::ConnectionFailed err) {
cerr << err.what() << endl;
}
return 0;
}
Pronto agora vamos compilar :D
g++ -lmysqlpp -I/usr/include/mysql++ $(mysql_config --libs) $(mysql_config --cflags) nauth_squid.C -o nauth_squid
Copie o binario gerado:
cp nauth_squid /usr/local/bin
Ok. Lembrando que para funcionar você deve ter os pacotes de dev de mysql e mysql++
Agora vamos editar o squid.conf e adicionar nosso novo autenticador. Na tag: auth_param do squid siga até o final comente as linhas referente a autenticação e troque por:
auth_param basic program /usr/local/bin/nauth_squid auth_param basic children 5 auth_param basic realm Squid proxy - caching web server auth_param basic credentialsttl 10 minutes
Pronto :D. Agora apenas fazendo um restart no squid já vai estar autenticando :D. Lembre de verificar se o usuario que roda o squid na sua maquina tem permissão para executar esse binário
Agora é só acertar suas acl’s e liberar as permissões por usuário :D
Categoria Code | Sem comentários »
Site feito por: Eduardo Medeiros, utilizando tecnologia Wordpress.
Melhor visualizado no Firefox/Safari/I.E 8.0
DOTMAC - 2005-2009 - Todos os direitos reservados.