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.