Criando e editando arquivos htpasswd com ruby

May 16th, 2007 | by Gustavo Lichti |


Constantemente eu tenho que alterar, inserir e remover usuários de arquivos de senhas htpasswd, mas estava cansado de fazer essas alterações por linda de comando $ htpasswd /path/to/file/senha.htpasswd user , resolvi desenvolver um front-end usando rails.

Para isso usei a Lib WEBrick

require 'webrick'
include WEBrick

Esta biblioteca é muito simples, Veja:

Abre o arquivo senhas.htpasswort. Se não existir cria o mesmo
htpd = HTTPAuth::Htpasswd.new('senhas.htpasswd')

Seta a senha para o usuário, caso o usuário não exista, cria o mesmo
htpd.set_passwd(nil, 'lichti', 'senhasecreta')
htpd.set_passwd(nil, 'guest', '123mudar') # fazendo humor com a senha da uol padrão de muitos anos, hoje usam senhas aleatórias
htpd.set_passwd(nil, 'others', 'mariobros')

Salva as alterações no arquivo de senhas
htpd.flush

Grava a senha do usuário lichti na variavel senha
senha=htpd.get_passwd(nil,'lichti', false)

Restorna se a senha armazenada é igual a senha digitada
puts senha=='senhasecreta'.crypt(senha[0,2])

Listando os usuários e suas respectivas senhas
htpd.each {|user,senha| puts "#{user}:#{senha}"}

Removendo um usuário
htpd.delete_passwd(nil,'others')

Funciona 100%, agora só falta eu implementar isso aqui na minha aplicação rails, a aplicação que eu tenho não é só para esta finalidade, pois seria um um disperdicio de recursos do servidor e neste caso poderia fazer em php, mas estou gerando um front-end geral da minhas tarefas constantes e status do servidor, e então vou adicionar mais esta a minha aplicação interna

Tags: , ,

  1. One Response to “Criando e editando arquivos htpasswd com ruby”

  2. By paulo on Jul 9, 2008 | Reply

    gostaria de saber aonde colocar o arquivo com senhas, pois consequi instalar o htaccess mais não sei aonde colocar o arquivo htpasswd..

    me de umas dicas…

Post a Comment