[FUGSPBR] Troca de senha pela browser
Augusto Fabiano Torres
torres em cle.unicamp.br
Ter Set 14 11:17:52 BRT 2004
Oi Pessoal,
Farei o seguinte ... Enviarei para a lista, o melhor repositório
intelectual que existe ;-)
Este é um script em python que portei do Linux (feito por Helio
Loureiro) para o FreeBSD.
Achei muito fácil de entender e pequeno.
= = = =
Instalação do poppassd
cd /usr/ports/mail/poppassd/
make install & clean
cd /etc
pico inetd.conf (ou editor preferido)
Inserir esta linha:
pop3pw stream tcp nowait root /usr/local/libexec/poppassd
poppassd
man poppassd (para saber mais sobre os comandos do poppassd)
Reinicialize o inetd:
maquina# ps -ax | grep inetd
maquina# kill -9 <pid> , onde <pid> e' o numero do processo
maquina# /usr/sbin/inetd
Agora faça um teste para ver se está rodando o poppassd:
maquina# telnel localhost 106
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
200 poppassd v1.2 hello, who are you?
(ok ... está rodando)
Bom agora o script:
Crie um arquivo com este script no cgi-bin
Crie um Formulário em html para coletar os dados e passar para o
mudasenha.cgi no método post,
passando os seguintes dados (login, senha, novasenha, novasenhavrf)
Sobre a questão de segurança:
É muito importante fazer uma conexão ssl para este arquivo. Assim v. se
assegura que este passa dados
encriptados pela rede.
Se já tem rodando então é so inrserir esta linha no httpd.conf
<VirtualHost _default_:80>
Redirect /troca-senha.htm https://www.cle.unicamp.br/troca-senha.htm
</VirtualHost>
Para saber mais sobre o https, dá uma olhada no histórico da lista que
tem um passo-a-passo que enviei
de como instalar via pacotes. Tem soluções através do ports também.
Boa sorte
[]'s
Augusto
------------------------------- (cut ) --------------------------
#! /usr/local/bin/python
# -*- coding: iso-latin-1 -*-
# $Id: mudasenha.cgi,2004/09/14 Augusto Torres $
#
# This program 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.
#
# This program 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 Library General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
#################
# Para rodar este aqui, é preciso ter o interpretador python e o
# poppasswd na porta 106 rodando.
class Main:
def __init__(self):
from sys import exit,stdout
import cgi
form = cgi.FieldStorage()
if not form.has_key("login"):
stdout.write("Content-type: text/html\n\n")
stdout.write('Faltou login<P>\n')
stdout.write("<P>Volte e tente novamente.")
exit(0)
elif not form.has_key("senha"):
stdout.write("Content-type: text/html\n\n")
stdout.write('Faltou senha\n')
exit(0)
elif not form.has_key("novasenha"):
stdout.write("Content-type: text/html\n\n")
stdout.write('Faltou a nova senha\n')
exit(0)
elif not form.has_key("novasenhavrf"):
stdout.write("Content-type: text/html\n\n")
stdout.write('Faltou a verificação de senha\n')
exit(0)
elif form['novasenha'].value != form['novasenhavrf'].value:
stdout.write("Content-type: text/html\n\n")
stdout.write('Senha não confere com verificação\n')
exit(0)
self.user=form['login'].value
self.passwd=form['senha'].value
self.newpass=form['novasenha'].value
# Echo client program
def pop_socket(self):
#from socket import *
import socket
import sys
from sys import exit,stdout
HOST = '127.0.0.1' # poppasswd server (hostname
or IP)
PORT = 106 # poppasswd port (106 default)
s = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
stdout.write("Content-type: text/html\n\n")
s = socket.socket(af, socktype, proto)
s.connect(sa)
data = s.recv(1024)
stdout.write(data)
stdout.write("<br>\nEnviando login...<br>\n")
s.send('user '+ self.user + '\n')
data = s.recv(1024)
stdout.write(data)
stdout.write("\n<Br>Enviando senha antiga...<br>\n")
s.send('pass ' + self.passwd + '\n')
data = s.recv(1024)
stdout.write(data)
stdout.write("\n<br>Enviando nova senha...<br>\n")
s.send('newpass ' + self.newpass + '\n')
data = s.recv(1024)
stdout.write(data)
s.send('quit\n')
data = s.recv(1024)
s.close()
stdout.write("<br>")
stdout.write(data)
except:
stdout.write("<p>")
stdout.write("Servidor não permitiu alteração de
senha")
stdout.write("<p>Entre em contato com o
administrador do sistema")
stdout.write("e informe o erro encontrado.<p>")
exit(1)
exit(0)
objeto=Main()
objeto.pop_socket()
from sys import stdout
stdout.write('Content-type: text/html\n\n')
stdout.write('Teste do python\n')
------------------------------- (cut ) --------------------------
Jefferson Pereira wrote:
> Alguem possui algum script ou programa para alterar a senha pelo
> browser ?
>
> Atenciosamente
>
> Jefferson Pereira
> jefferson em blong.com.br
> _______________________________________________________________
> Para enviar um novo email para a lista: fugspbr em fugspbr.org
> Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
> Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
--
=================================================================
Augusto Fabiano Torres e-mail: torres at cle.unicamp.br
Analista de Suporte / Administrador de Redes
Centro de Logica, Epistemologia e Historia da Ciência (CLE)
Universidade Estadual de Campinas (UNICAMP)
\_______________________________________________________________/
|" Nem sempre precisamos ser gênios em tudo que fazemos ... |
|algumas vezes ter um pouco de sorte já basta"(Autor - Eu mesmo)|
'==============================================================='
_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd