últimos posts

Autenticando o squid no mysql

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 »


Deixe uma resposta

top 10 posts

últimos comentários


  • Bruno Zaneti: Excelente dica. Comprei o box e apresentou este problema. Seguindo os passos foi imediato. Já...
  • dotmac: Boa! não sabia dessa. Valeu!
  • Fabio: Nesses casos utilizo o unzip no Terminal: unzip -x nome_arquivo.zip
  • jean: obrigado
  • Francisco Medeiros: Ótima dica! ;)

Site feito por: Eduardo Medeiros, utilizando tecnologia Wordpress.
Melhor visualizado no Firefox/Safari/I.E 8.0
DOTMAC - 2005-2009 - Todos os direitos reservados.

rss Valid XHTML 1.0 Transitional