associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

MagicVelox

Conector do velox - funciona no linux, windows, mac e onde mais vc conseguir instalar o python... Faz a autenticação e/ou lista os servidores diponíveis do Velox! Para quem tem que passar, assim como eu, por aquela autenticação infeliz do Velox, eu compartilho esta maravilha.

Baixe magic-velox.py ou crie um script chamado magic-velox.py com o código abaixo e veja como usar logo abaixo.

Código

   1 #!/usr/bin/python
   2 # -*- coding: utf-8 -*-
   3 
   4 import sys
   5 import socket
   6 from urllib import urlopen
   7 import re
   8 
   9 class magic_velox:
  10     """Estabelecer uma conexao automatica com o Velox.
  11 
  12     Os atributos velox, comercial, provedor, login, senha devem
  13     ser alterados para a necessidade de cada pessoa.
  14 
  15     Para vc saber qual valor utilizar para os atributos comercial e provedor,
  16     a configuracao e simples, a variavel "velox" recebe o valor 'r' para
  17     residencial e 'c' para comercial, se o "velox" for 'comercial', a
  18     variavel "comercial" devera ser alterada para o seu tipo de velox
  19     comercial, se o "velox" for 'residencial' a variavel "provedor" devera
  20     receber o valor de seu provedor, para saber qual seu provedor, execute
  21     "# python magic-velox.py -l" na linha de comando ou consulte o codigo
  22     fonte da pagina de autenticacao do Velox Para facilitar, estou postando
  23     alguns valores possiveis para a variavel "provedor".
  24 
  25     'SUPERIG3'    
  26     'GLOBO'
  27     'GLOBO3'
  28     'GLOBO6'
  29     """
  30 
  31     def __init__(self, debug=1):
  32         self.velox = 'r' # Alterar: define o tipo do velox
  33                          # pode ser 'r' para residencial
  34                          # ou 'c' para comercial
  35 
  36         self.comercial='AARJ'    # Alterar: caso velox igual a 'c'
  37                                  # (preciso de mais testes)
  38         self.provedor ='SUPERIG' # Altear: caso velox igual a 'r'
  39         self.login = 'seu_login' # Alterar: Login no Provedor
  40         self.senha = 'sua_senha' #Alterar: Senha no Provedor
  41 
  42         # Nao alterar mais nada, configurar somente ate aqui!
  43         self.url = self.post = self.data = ''
  44         self.objSock = None
  45         self.servidor = 'www.veloxzone.com.br'
  46         self.url_lst_servidor = \
  47               'http://www.veloxzone.com.br/user/pages/serviceList.jsp'
  48         self.porta = 80
  49         self.res_url = '/vfile/pages/serviceLogon.jsp'
  50         self.res_post = ('service=internet_%s&fcn=serviceLogon&ac=home' + \
  51                         '&usr=&username=%s&password=%s&OK=OK') % \
  52                         (self.provedor,self.login,self.senha)
  53 
  54         self.com_url='/serviceStart?service=internet_%s' % (self.comercial)
  55         self.com_post='confirmed=true'
  56         self.debug = debug
  57 
  58     def autentica(self):
  59         """Efetua a autenticacao com o Velox."""
  60 
  61         print '----------------------------------------------------------'
  62         print '************  Autenticacao Automatica do Velox ***********'
  63         print '----------------------------------------------------------'
  64         print '            magic-velox.py v1.0.0 [05/05/2005]            '
  65         print '     Marcel Portela, marcel{.}portela(a)gmail{.}com       '
  66         print '----------------------------------------------------------'
  67 
  68         if self.velox == 'r':
  69             if self.debug:
  70                 print ' - Modo Residencial'
  71                 print ' - Provedor: %s' % (self.provedor)
  72                 print ' - Login: %s' % (self.login)
  73 
  74             self.url = self.res_url
  75             self.post = self.res_post
  76 
  77         elif (self.velox=='c'): # necessito de mais testes neste
  78                                 # tipo de conexao
  79             if self.debug:
  80                 print ' - Modo Comercial'
  81                 print ' - Regiao : %s' % (self.comercial)
  82 
  83             self.url = self.com_url
  84             self.post = self.com_post
  85 
  86         else:
  87             if self.debug:
  88               print "  ** ERRO DE ATRIBUTO - variavel velox devera" + \
  89                     " ser 'r' ou 'c'"
  90 
  91         if self.url != '':
  92             try:
  93                 self.objSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  94 
  95                 self.objSock.connect((self.servidor, self.porta))
  96                 self.objSock.send('POST %s HTTP/1.0\r\n'% (self.url))
  97                 self.objSock.send('Content-Type: ' + \
  98                                   'application/x-www-form-urlencoded\r\n')
  99                 self.objSock.send('Host: %s\r\n' % (self.servidor))
 100                 self.objSock.send('Content-Length: %s\r\n'% (len(self.post))) 
 101                 self.objSock.send('\r\n%s\r\n\r\n\r\n'% (self.post)) 
 102 
 103                 self.data = self.objSock.recv(1024)
 104 
 105                 self.objSock.close()
 106                 self.objSock = None
 107 
 108                 # confirma conexao
 109                 if (self.data.find('veloxzone.com.br/home') > 0) :
 110                     return 1
 111                 else:
 112                     return -1
 113             except Exception,e:
 114                 if self.debug:
 115                     print '  ** ERRO - Servidor inacessivel - verifique ' +\
 116                           ' sua rede e/o edite este script!'
 117                     print e
 118 
 119                 try: # certifica-se que servidor foi desconectado
 120                     self.objSock.close()
 121                 except Exception,e:
 122                     pass
 123 
 124                 self.objSock = None
 125 
 126                 return -1
 127         else:
 128             return -1
 129 
 130     def retorna_servidores(self):
 131         """Retorna a lista dos servidores do Velox.
 132         O Velox deve estar desconectado para este metodo funcionar!
 133         """
 134 
 135         str_source = ''
 136         lista_achados = []
 137         padrao = re.compile("<option value='/.*internet_(.*)'",re.M|re.I)
 138 
 139         try:
 140             pagina = urlopen(self.url_lst_servidor)
 141             str_source = pagina.read()
 142         except Exception, e:
 143             if self.debug:
 144                 print '  ** ERRO - Falha ao obter lista de servidores, ' + \
 145                       'verifique sua conexao com a internet!'
 146 
 147         if str_source != '': # se recebeu a pagina dos servidores 
 148             lista_achados = padrao.findall(str_source)
 149 
 150             if lista_achados == [] and self.debug:
 151 
 152                 if (str_source.find('Desconectar') > 0):
 153                     print '  ** ERRO - Para obter a lista dos ' + \
 154                           'servidores o velox nao pode estar conectado!'
 155                 else:
 156                     # print str_source
 157                     print '  ** ERRO - Padrao nao encontrado  **'
 158 
 159         return lista_achados
 160 
 161 def print_uso():
 162     print "Erro, opcao invalida, para brincar:"
 163     print "$ python magic-velox.py -c --> (Conectar Velox)"
 164     print "$ python magic-velox.py -l --> (Listar Servidores" + \
 165           " - o velox deve estar desconectado)"
 166 
 167 def main():
 168     conectorVelox = magic_velox()
 169 
 170     if len(sys.argv) == 2:
 171         if sys.argv[1] == '-l':
 172             for i in conectorVelox.retorna_servidores():
 173                 print i
 174 
 175         elif sys.argv[1] == '-c':
 176 
 177             if (conectorVelox.autentica()==1):
 178                 print '  --=(  Velox conectado!  )=--'
 179             else:
 180                 print '  **  Problema conectando velox!  **'
 181 
 182         else:
 183             print_uso()
 184 
 185     else:
 186         print_uso()
 187 
 188     conectorVelox = None
 189     sys.exit(0)
 190 
 191 if __name__ == '__main__':
 192     main()

Exemplo de uso

Abra uma linha de comando e para conectar digite:

# python magic-velox.py -c

Para listar os servidores (o velox deverá estar desconectado, serve para saber qual o seu servidor):

# python magic-velox.py -l

Volta para CookBook.