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

Diferenças para "MagicVelox"

Diferenças entre as versões de 7 e 8
Revisão 7e 2005-05-25 02:51:14
Tamanho: 7752
Comentário:
Revisão 8e 2005-05-25 14:44:37
Tamanho: 7741
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
#pragma section-numbers off
= Receita: magic-velox.py =

Conector do velox.
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 [attachment:magic-velox.py magic-velox.py] ou crie um script chamado magic-velox.py com o código abaixo e veja como usar logo abaixo...
Conector do velox. 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 [attachment:magic-velox.py] ou crie um script chamado {{{magic-velox.py}}} com o código abaixo e veja como usar logo abaixo.
Linha 13: Linha 8:
#!python
Linha 15: Linha 10:
Linha 23: Linha 17:

Linha 26: Linha 18:
Linha 29: Linha 20:
    

    o
s atributos velox, comercial, provedor, login, senha devem

ser alterados para a necessidade de cada pessoa
    Os atributos velox, comercial, provedor, login, senha devem
    ser alterados para a necessidade de cada pessoa.
Linha 36: Linha 24:
    a configuracao e simples, a variavel "velox" recebe o valor 'r' para residencial
   
e 'c' para comercial, se o "velox" for 'comercial', a variavel "comercial"
    devera ser alterada para o seu tipo de velox
comercial, se o "velox" for
    'residencial' a variavel "provedor" devera
receber o valor de seu provedor,
   
para saber qual seu provedor, execute "#python magic-velox.py -l" na linha
   
de comando ou consulte o codigo fonte da pagina de autenticacao do velox

   
Para facilitar, estou postando alguns valores possiveis para a variavel "provedor"
    a configuracao e simples, a variavel "velox" recebe o valor 'r' para
    residencial
e 'c' para comercial, se o "velox" for 'comercial', a
    variavel "comercial" devera ser alterada para o seu tipo de velox
   
comercial, se o "velox" for 'residencial' a variavel "provedor" devera
   
receber o valor de seu provedor, para saber qual seu provedor, execute
   
"# python magic-velox.py -l" na linha de comando ou consulte o codigo
   
fonte da pagina de autenticacao do Velox Para facilitar, estou postando
   
alguns valores possiveis para a variavel "provedor".
Linha 50: Linha 37:

Linha 54: Linha 39:
       def __init__(self,debug=1):

          
self.velox = 'r' #Alterar: define o tipo do velox

                         #pode ser 'r' para residencial

                         #
ou 'c' para comercial

                         


        self.comercial='AARJ' #Alterar: caso velox igual a 'c' (preciso de mais testes)
         

        self.provedor ='SUPERIG' #Altear: caso velox igual a 'r'
         

        self.login = 'seu_login' #Alterar: Login no Provedor
        
    def __init__(self, debug=1):
        self.velox = 'r' # Alterar: define o tipo do velox
                         # pode ser 'r' para residencial
                         #
ou 'c' para comercial

        self.comercial='AARJ'    # Alterar: caso velox igual a 'c'
                                 #
(preciso de mais testes)
        self.provedor ='SUPERIG' # Altear: caso velox igual a 'r'
        self.login = 'seu_login' # Alterar: Login no Provedor
Linha 78: Linha 49:
        
        #Nao alterar mais nada, configurar somente ate aqui!

        # Nao alterar mais nada, configurar somente ate aqui!
Linha 83: Linha 52:
Linha 85: Linha 53:
Linha 87: Linha 54:
        self.url_lst_servidor = 'http://www.veloxzone.com.br/user/pages/serviceList.jsp'
        self.url_lst_servidor = \
             
'http://www.veloxzone.com.br/user/pages/serviceList.jsp'
Linha 90: Linha 57:

self.res_url='/vfile/pages/serviceLogon.jsp'

self.res_post='service=internet_%s&fcn=serviceLogon&ac=home&usr=&username=%s&password=%s&OK=OK' % (self.provedor,self.login,self.senha)
        self.res_url = '/vfile/pages/serviceLogon.jsp'
        self.res_post = ('service=internet_%s&fcn=serviceLogon&ac=home' + \
                        '
&usr=&username=%s&password=%s&OK=OK') % \
                       
(self.provedor,self.login,self.senha)
Linha 96: Linha 63:
Linha 98: Linha 64:
Linha 101: Linha 66:

Linha 104: Linha 67:
Linha 107: Linha 69:
       
Linha 110: Linha 70:
Linha 112: Linha 71:
Linha 114: Linha 72:
Linha 116: Linha 73:
Linha 118: Linha 74:
Linha 121: Linha 76:
        if (self.velox=='r'):

            if self.debug:
        if self.velox == 'r':
            if self.debug:
Linha 126: Linha 79:
Linha 128: Linha 80:
Linha 131: Linha 82:
            self.url=self.res_url

self.post=self.res_post

        elif (self.velox=='c'): #necessito de mais testes neste tipo de conexao

            if self.debug:
            self.url = self.res_url
            self.post = self.res_post

        elif (self.velox=='c'): # necessito de mais testes neste
                                #
tipo de conexao
            if self.debug:
Linha 140: Linha 89:
Linha 143: Linha 91:
            self.url=self.com_url

            self.post=self.com_post
            self.url = self.com_url
            self.post = self.com_post
Linha 148: Linha 95:

if self.debug:

print ' **  ERRO DE ATRIBUTO - variavel velox devera ser \'r\' ou \'c\'  **'

        if (self.url != ''):
            if self.debug:
              print " ** ERRO DE ATRIBUTO - variavel velox devera" +
                    "
ser 'r' ou 'c'"

        if self.url != '':
Linha 156: Linha 101:
Linha 160: Linha 104:
Linha 162: Linha 105:

self.objSock.send('Content-Type: application/x-www-form-urlencoded\r\n')
                self.objSock.send('Content-Type: ' + \
                                  '
application/x-www-form-urlencoded\r\n')
Linha 166: Linha 108:
Linha 168: Linha 109:
Linha 174: Linha 114:
Linha 177: Linha 116:
                

                if (self.data.find('veloxzone.com.br/home') > 0) : #confirma conexao
                # confirma conexao
                if (self.data.find('veloxzone.com.br/home') > 0) :
Linha 182: Linha 119:
Linha 184: Linha 120:
Linha 186: Linha 121:

                     
Linha 190: Linha 122:
Linha 192: Linha 123:

print ' **  ERRO - Servidor inacessivel - verifique sua rede e/o edite este script!'
                    print ' ** ERRO - Servidor inacessivel - verifique ' +\
                          '
sua rede e/o edite este script!'
Linha 197: Linha 127:
                try: #certifica-se que servidor foi desconectado
                try: # certifica-se que servidor foi desconectado
Linha 200: Linha 129:
Linha 202: Linha 130:
Linha 208: Linha 135:
Linha 210: Linha 136:
Linha 215: Linha 140:

o velox deve estar desconectado para este metodo funcionar!
        O Velox deve estar desconectado para este metodo funcionar!
Linha 218: Linha 142:
Linha 221: Linha 146:
Linha 226: Linha 152:
                print ' **  ERRO - Falha ao obter lista de servidores, verifique sua conexao com a internet!  **'

        if (str_source != ''):#se recebeu a pagina dos servidores
                print ' ** ERRO - Falha ao obter lista de servidores, ' + \
                      '
verifique sua conexao com a internet!'

        if str_source != '': # se recebeu a pagina dos servidores
Linha 230: Linha 157:
            if ((lista_achados == []) and (self.debug)):
if lista_achados == [] and self.debug:
Linha 233: Linha 161:
                    print ' ** ERRO - Para obter a lista dos servidores o velox nao pode estar conectado! **'                     print ' ** ERRO - Para obter a lista dos ' + \
                          '
servidores o velox nao pode estar conectado!'
Linha 235: Linha 164:
                    #print str_source                     # print str_source
Linha 243: Linha 172:
    print "$ python magic-velox.py -l --> (Listar Servidores - o velox deve estar desconectado)"     print "$ python magic-velox.py -l --> (Listar Servidores" + \
          "
- o velox deve estar desconectado)"
Linha 247: Linha 177:
    if (len(sys.argv) == 2):
        if (sys.argv[1] == '-l'):

if len(sys.argv) == 2:
        if sys.argv[1] == '-l':
Linha 251: Linha 182:
        elif (sys.argv[1] == '-c'):
elif sys.argv[1] == '-c':
Linha 253: Linha 186:
Linha 255: Linha 187:
Linha 257: Linha 188:
Linha 259: Linha 189:
Linha 261: Linha 192:
Linha 262: Linha 194:
Linha 264: Linha 195:
Linha 267: Linha 199:

if (__name__=='__main__'):
if __name__ == '__main__':
Linha 270: Linha 201:
Linha 275: Linha 205:
Abra uma linha de comando e digite:
Abra uma linha de comando e para conectar digite:
Linha 280: Linha 209:

   #python magic-velox.py -c
# python magic-velox.py -c
Linha 288: Linha 215:

   #python magic-velox.py -l
# python magic-velox.py -l
Linha 294: Linha 219:

----

MarcelPortela

Conector do velox. 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 [attachment: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: Para conectar:

# 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.