Como voce quer apenas o usuario logado na maquina que esta acessando o
site, pode usar o seguinte script (que usa sockets). Ele recebe como
parametro o endereco IP da maquina que voce quer saber quem esta
usando e isso voce pode tirar do REQUEST.

from socket import *

def getUserInfoByIP(IP=None):
  """
  Essa funcao estabelece uma conexao com o IP informado na porta 137,
  envia um pacote especial e espera um pacote que contem username,
  hostname e dominio como resposta. A seguir extrai essas informacoes
  e as entrega no formato de dicionario.
  """

  if IP is None:
    return None

  HOST = IP
  PORT = 137

  s = socket(AF_INET, SOCK_DGRAM)
  s.settimeout(2)
  s.connect((HOST, PORT))

  # Envia um pacote especial
  s.send('\x80b\0\0\0\1\0\0\0\0\0\0 CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\0\0!\0\1')
  try:
    data = s.recv(256)
  except:
    return None
  s.close()

  # Obtem a quantidade de registros contidos no pacote netbios
  qtdereg = ord(data[56])

  # Percorre os registros e obtem dominio, hostname e username
  dict = {}

  for i in range(1, qtdereg+1):

    offset = 18 * i;
    pos = 57 + offset
    byte = ord ( data[72 + offset] )

    if(byte == 0x00):
      # Hostname or Domain
      if not dict.has_key('hostname'):
        dict['hostname'] = data[pos: pos + 15]

    if( byte == 0x03):
      # Username
      dict['username'] = data[pos: pos + 15]

    if(byte == 0x1E):
      # Domain
      dict['domain'] = data[pos: pos + 15]

    if(byte == 0x20):
      # Hostname
      dict['hostname'] = data[pos: pos + 15]

  d = {}
  for k, v in dict.items():
    d[k] = v.strip()
  return d

for ip, nome in [('10.10.110.198', 'Fabio'),
           ('10.10.110.169', 'Rodrigo'),
           ('10.10.110.197', 'Rafael'),
           ('10.10.111.153', 'Xiru')]:
    print nome, getUserInfoByIP(IP=ip)

On 9/27/05, Gisele Borges <[EMAIL PROTECTED]> wrote:
> Caro Sidnei,
>
> Tô precisando somente de pegar a variável de ambiente (USERNAME), pois
> neste caso o usuário já está logado.
> Nós já usamos o NTLM Authetication Proxy, mas não me retorna o username.
>
> Tem alguma dica?
>
> Obrigada,
> Gi
>
>
> --- Em zope-pt@yahoogrupos.com.br, Sidnei da Silva <[EMAIL PROTECTED]> 
> escreveu
> > On Mon, Sep 26, 2005 at 07:55:05PM -0000, Gisele Borges wrote:
> > | É a segunda opção: quero buscar o usuário que está logado na máquina.
> >
> > Bem ai eh que complica. Um 'script simples' nao resolve o seu
> > problema, pq o script roda no servidor e nao na maquina.
> >
> > Se vc tem:
> >
> >   a) uma rede windows
> >   b) active directory
> >
> > E vc quer:
> >
> >   a) autenticar com a mesma senha que logou no windows
> >   b) sem precisar digitar a senha novamente
> >
> > Entao o que vc quer eh autenticacao NTLM.
> >
> > O jeito mais facil de fazer isso eh usar o Enfold Server:
> >
> >   http://www.enfoldsystems.com/Products/Server
> >
> > O jeito mais dificil eh procurar um tal de 'NTLM Authetication Proxy',
> > que eh um proxy escrito em python.
> >
> > --
> > Sidnei da Silva
> > Enfold Systems, LLC.
> > http://enfoldsystems.com
>
>
>
>
> Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
> Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED]
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>


--
Fabiano Weimar dos Santos
Plone Developer and Consultant


Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a