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

attachment:magic-velox.py de MagicVelox

Arquivo anexado 'magic-velox.py'

Download

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

Arquivos Anexados

Para se referir aos anexos de uma página, use attachment:filename, como mostrado abaixo na lista de arquivos. NÃO use a URL do link [get], já que a mesma está sujeita a alterações, e pode facilmente se tonar inválida.
  • [obter | ver] (2013-01-12 01:35:10, 6.6 KB) [[attachment:magic-velox.py]]
 Todos os arquivos | Arquivos Selecionados: excluir mover para página

Você não tem permissão para anexar arquivos a esta página.